예제 #1
0
 public LookatCamera(LookatCamera cpy)
 {
     this.Lookat      = cpy.Lookat;
     this.Up          = cpy.Up;
     this.AspectRatio = cpy.AspectRatio;
     this.FOV         = cpy.FOV;
 }
예제 #2
0
        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;
        }
예제 #3
0
        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;
        }
예제 #4
0
        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;
        }
예제 #5
0
        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
                    });
                }
            }
        }
예제 #6
0
 public LookatCamera(LookatCamera cpy)
 {
     this.Lookat = cpy.Lookat;
     this.Up = cpy.Up;
     this.AspectRatio = cpy.AspectRatio;
     this.FOV = cpy.FOV;
 }