public LookatCamera(LookatCamera cpy) { this.Lookat = cpy.Lookat; this.Up = cpy.Up; this.AspectRatio = cpy.AspectRatio; this.FOV = cpy.FOV; }
protected override void StartEffectivePerform() { base.StartEffectivePerform(); oldCamera = (Graphics.LookatCamera)Game.Instance.Camera; camera = new Graphics.LookatCartesianCamera { AspectRatio = oldCamera.AspectRatio, FOV = oldCamera.FOV, ZFar = oldCamera.ZFar }; Game.Instance.Camera = camera; position = new Common.Interpolator3(); lookat = new Common.Interpolator3(); up = new Common.Interpolator3(); if (StartCameraAngle != null) { position.Value = Game.Instance.Map.GetCameraAngle(StartCameraAngle).Position; lookat.Value = Game.Instance.Map.GetCameraAngle(StartCameraAngle).Lookat; up.Value = Game.Instance.Map.GetCameraAngle(StartCameraAngle).Up; } else { position.Value = oldCamera.Position; lookat.Value = oldCamera.Lookat; up.Value = oldCamera.Up; } var endPositionKey = new Common.InterpolatorKey<Vector3> { Time = EffectiveDuration - EndDelay, TimeType = Common.InterpolatorKeyTimeType.Relative, }; var endLookatKey = new Common.InterpolatorKey<Vector3> { Time = EffectiveDuration - EndDelay, TimeType = Common.InterpolatorKeyTimeType.Relative, }; var endUpKey = new Common.InterpolatorKey<Vector3> { Time = EffectiveDuration - EndDelay, TimeType = Common.InterpolatorKeyTimeType.Relative, }; if (EndCameraAngle != null) { endPositionKey.Value = Game.Instance.Map.GetCameraAngle(EndCameraAngle).Position; endLookatKey.Value = Game.Instance.Map.GetCameraAngle(EndCameraAngle).Lookat; endUpKey.Value = Game.Instance.Map.GetCameraAngle(EndCameraAngle).Up; } else { endPositionKey.Value = oldCamera.Position; endLookatKey.Value = oldCamera.Lookat; endUpKey.Value = oldCamera.Up; } position.AddKey(endPositionKey); lookat.AddKey(endLookatKey); up.AddKey(endUpKey); ((Graphics.SortedTestSceneRendererConnector)Game.Instance.SceneRendererConnector).ForceCull = true; ((Graphics.SortedTestSceneRendererConnector)Game.Instance.SceneRendererConnector).ForceShadowCull = true; }
protected override void EndPerform(bool aborted) { base.EndPerform(aborted); if (RestoreCameraWhenDone && oldCamera != null) { Game.Instance.Camera = oldCamera; oldCamera = null; } ((Graphics.SortedTestSceneRendererConnector)Game.Instance.SceneRendererConnector).ForceCull = true; ((Graphics.SortedTestSceneRendererConnector)Game.Instance.SceneRendererConnector).ForceShadowCull = true; }
protected override void StartEffectivePerform() { base.StartEffectivePerform(); oldCamera = (Graphics.LookatCamera)Game.Instance.Camera; camera = new Graphics.LookatCartesianCamera { AspectRatio = oldCamera.AspectRatio, FOV = oldCamera.FOV, ZFar = oldCamera.ZFar }; startZFar = endZFar = oldCamera.ZFar; if (StartZFar > 0) startZFar = StartZFar; if (EndZFar > 0) endZFar = EndZFar; startFov = endFov = oldCamera.FOV; if (StartFOV > 0) startFov = StartFOV; if (EndFOV > 0) endFov = EndFOV; Game.Instance.Camera = camera; if (PositionPointStart != null) positionStart = Game.Instance.Scene.GetByName(PositionPointStart).Translation; else positionStart = oldCamera.Position; if (PositionPointEnd != null) positionEnd = Game.Instance.Scene.GetByName(PositionPointEnd).Translation; else positionEnd = oldCamera.Position; if (LookatPointStart != null) lookatStart = Game.Instance.Scene.GetByName(LookatPointStart).Translation; else lookatStart = oldCamera.Lookat; if (LookatPointEnd != null) lookatEnd = Game.Instance.Scene.GetByName(LookatPointEnd).Translation; else lookatEnd = oldCamera.Lookat; acc = 0; ((Graphics.SortedTestSceneRendererConnector)Game.Instance.SceneRendererConnector).ForceCull = true; ((Graphics.SortedTestSceneRendererConnector)Game.Instance.SceneRendererConnector).ForceShadowCull = true; }
protected override void StartEffectivePerform() { base.StartEffectivePerform(); oldCamera = (Graphics.LookatCamera)Game.Instance.Camera; camera = new Graphics.LookatCartesianCamera { AspectRatio = oldCamera.AspectRatio, FOV = oldCamera.FOV, ZFar = oldCamera.ZFar }; Game.Instance.Camera = camera; position = new Common.Interpolator3(); lookat = new Common.Interpolator3(); up = new Common.Interpolator3(); for(int i=0; i < Setup.Count; i++) { var v = Setup[i]; if (v.CameraAngle == "GameCamera") { position.AddKey(new Common.InterpolatorKey<Vector3> { TimeType = Common.InterpolatorKeyTimeType.Relative, Time = v.Time, ValueProvider = () => oldCamera.Position //LeftControlPoint = Vector3.Zero, //RightControlPoint = Vector3.Zero, //Type = Common.InterpolatorKeyType.CubicBezier }); lookat.AddKey(new Common.InterpolatorKey<Vector3> { TimeType = Common.InterpolatorKeyTimeType.Relative, Time = v.Time, ValueProvider = () => oldCamera.Lookat, //LeftControlPoint = Vector3.Zero, //RightControlPoint = Vector3.Zero, //Type = Common.InterpolatorKeyType.CubicBezier }); up.AddKey(new Common.InterpolatorKey<Vector3> { TimeType = Common.InterpolatorKeyTimeType.Relative, Time = v.Time, ValueProvider = () => oldCamera.Up, //LeftControlPoint = Vector3.Zero, //RightControlPoint = Vector3.Zero, //Type = Common.InterpolatorKeyType.CubicBezier }); } else { var angle = Game.Instance.Map.GetCameraAngle(v.CameraAngle); position.AddKey(new Common.InterpolatorKey<Vector3> { TimeType = Common.InterpolatorKeyTimeType.Relative, Time = v.Time, Value = angle.Position, //LeftControlPoint = Vector3.Zero, //RightControlPoint = Vector3.Zero, //Type = Common.InterpolatorKeyType.CubicBezier }); lookat.AddKey(new Common.InterpolatorKey<Vector3> { TimeType = Common.InterpolatorKeyTimeType.Relative, Time = v.Time, Value = angle.Lookat, //LeftControlPoint = Vector3.Zero, //RightControlPoint = Vector3.Zero, //Type = Common.InterpolatorKeyType.CubicBezier }); up.AddKey(new Common.InterpolatorKey<Vector3> { TimeType = Common.InterpolatorKeyTimeType.Relative, Time = v.Time, Value = angle.Up, //LeftControlPoint = Vector3.Zero, //RightControlPoint = Vector3.Zero, //Type = Common.InterpolatorKeyType.CubicBezier }); } } }