public override void skipTo(float timelineTime) { MDISceneViewWindow window = TimelineController.SceneViewController.findWindow(CameraName); if (window != null) { if (timelineTime <= EndTime) { Vector3 translation = window.Translation; Vector3 lookAt = window.LookAt; Vector3 finalTrans = window.computeAdjustedTranslation(CameraPosition); Vector3 finalLookAt = CameraPosition.LookAt; float percent = 1.0f; float currentTime = timelineTime - StartTime; if (Duration != 0.0f) { percent = currentTime / Duration; } CameraPosition immediatePos = new CameraPosition() { Translation = translation.lerp(ref finalTrans, ref percent), LookAt = lookAt.lerp(ref finalLookAt, ref percent) }; window.immediatlySetPosition(immediatePos); float time = Duration - currentTime; if (time <= 0.001f) { time = 0.001f; } CameraPosition cameraPosition = new CameraPosition(CameraPosition) { Translation = finalTrans, }; window.setPosition(cameraPosition, time); } else { Vector3 finalTrans = window.computeAdjustedTranslation(CameraPosition); CameraPosition immediatePos = new CameraPosition() { Translation = finalTrans, LookAt = CameraPosition.LookAt }; window.immediatlySetPosition(immediatePos); } } }
public override void started(float timelineTime, Clock clock) { MDISceneViewWindow window = TimelineController.SceneViewController.findWindow(CameraName); if (window != null) { window.setPosition(CameraPosition, Duration); } else { SceneViewWindow sceneViewWindow = TimelineController.SceneViewController.ActiveWindow; if (sceneViewWindow != null) { sceneViewWindow.setPosition(CameraPosition, Duration); } } }