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) |
subroutine fm_update(self, t, seen) class(FrameManager), intent(inout) :: self real(wp), intent(in) :: t !! simulation time integer, intent(inout) :: seen !! the window's own: updates at its last frame (updated) if (.not. associated(self%root)) return if (.not. (self%updates > 0 .and. t == self%updated_time .and. seen /= self%updates)) then call self%root%update(t) call self%root%late_update(t) ! (all frames at their positions for t) call self%root%sync() self%updates = self%updates + 1 self%updated_time = t end if seen = self%updates end subroutine fm_update