The root frame of a scene (OpenFrames' FrameManager). The frame is not owned: it must stay alive while managed.
| Type | Visibility | Attributes | Name | Initial | |||
|---|---|---|---|---|---|---|---|
| class(ReferenceFrame), | private, | pointer | :: | root | => | null() |
the scene's root frame (not owned) |
| real(kind=wp), | private | :: | updated_time | = | 0.0_wp |
the time of the last one |
|
| integer, | private | :: | updates | = | 0 |
scene updates so far |
The FrameManager constructor: FrameManager(...) makes one (see new_frame_manager for its
arguments).
A frame manager for the scene with root frame (optional).
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(ReferenceFrame), | intent(in), | optional, | target | :: | frame |
the root frame (not owned) |
The root frame (null if none).
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(FrameManager), | intent(in) | :: | self |
Number of scene updates so far (update).
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(FrameManager), | intent(in) | :: | self |
Set the root frame of the scene (not owned: it must stay alive while managed). (The scene is for a window: this also starts loading the Vulkan driver for the first one, in the background, which can take a few tenths of a second.)
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(FrameManager), | intent(inout) | :: | self | |||
| class(ReferenceFrame), | intent(in), | target | :: | frame |
the root frame (not owned) |
Update the scene for time t (followed trajectories, artists) and copy
the frames' positions and attitudes to the renderer, unless another
window already did for this time since this window's last frame.
seen is the window's own: the number of updates at its last frame.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(FrameManager), | intent(inout) | :: | self | |||
| real(kind=wp), | intent(in) | :: | t |
simulation time |
||
| integer, | intent(inout) | :: | seen |
the window's own: updates at its last frame (updated) |
type, public :: FrameManager private class(ReferenceFrame), pointer :: root => null() !! the scene's root frame (not owned) integer :: updates = 0 !! scene updates so far real(wp) :: updated_time = 0.0_wp !! the time of the last one contains procedure :: set_frame => fm_set_frame procedure :: frame => fm_frame procedure :: update => fm_update, num_updates => fm_num_updates end type FrameManager