//add clone... public override object Clone() { PawnCamera3D clone = new PawnCamera3D("clone - " + this.ID, this.ObjectType, (Transform3D)this.Transform3D.Clone(), //deep copy (ProjectionParameters)this.ProjectionParameters.Clone(), //deep copy - contains "copy by value" types this.Viewport); //shallow or deep? for (int i = 0; i < this.controllerList.Count; i++) { IController cloneController = (IController)this.controllerList[i].Clone(); cloneController.SetParentActor(clone); clone.Add(cloneController); } return clone; }
private void InitializeCamera() { Camera3D clone = null; Camera3D camera = null; PawnCamera3D pawnCamera = null; camera = new FreeLookCamera3D("full", ObjectType.FirstPersonCamera, new Transform3D(new Vector3(-10, 5, 30), -Vector3.UnitZ, Vector3.UnitY), ProjectionParameters.StandardMediumFourThree, this.graphics.GraphicsDevice.Viewport, GameData.CameraSpeed); #region Fullscreen this.cameraManager.Add("FirstPersonFullScreen", camera); #endregion #region RailCharacterFollow pawnCamera = new PawnCamera3D("RailCamera1", ObjectType.RailCamera, (Transform3D)Transform3D.Zero.Clone(), ProjectionParameters.StandardMediumFourThree, this.graphics.GraphicsDevice.Viewport); pawnCamera.Add(new RailCharacterFollowController("rail character follow controller 1", pawnCamera, true, new RailParameters("r1", new Vector3(-148, 34, 0), new Vector3(145, 34, 0)), playerActor, 50)); this.cameraManager.Add("FullScreen", pawnCamera); pawnCamera = new PawnCamera3D("RailCamera2", ObjectType.RailCamera, (Transform3D)Transform3D.Zero.Clone(), ProjectionParameters.StandardMediumFourThree, this.graphics.GraphicsDevice.Viewport); pawnCamera.Add(new RailCharacterFollowController("rail character follow controller 2", pawnCamera, true, new RailParameters("r2", new Vector3(0, 34, 60), new Vector3(0, 34, -120)), playerActor, 50)); this.cameraManager.Add("FullScreen", pawnCamera); pawnCamera = new PawnCamera3D("RailCamera3", ObjectType.RailCamera, (Transform3D)Transform3D.Zero.Clone(), ProjectionParameters.StandardMediumFourThree, this.graphics.GraphicsDevice.Viewport); pawnCamera.Add(new RailCharacterFollowController("rail character follow controller 3", pawnCamera, true, new RailParameters("r3", new Vector3(0, 34, -60), new Vector3(0, 34, 120)), playerActor, 50)); this.cameraManager.Add("FullScreen", pawnCamera); #endregion #region RotateCamera pawnCamera = new PawnCamera3D("RotateCamera", ObjectType.ZoomOnDoorCamera, new Transform3D(new Vector3(50,100,50), new Vector3(300, -300, 0), Vector3.UnitY), ProjectionParameters.StandardMediumFourThree, this.graphics.GraphicsDevice.Viewport); pawnCamera.Add(new RotatorController("rotate camera controller 1", pawnCamera, true, this.rotator)); this.cameraManager.Add("FullScreen", pawnCamera); #endregion #region ZoomOnDoor pawnCamera = new PawnCamera3D("ZoomOnDoor", ObjectType.ZoomOnDoorCamera, new Transform3D(new Vector3(100, 126, 0), new Vector3(100,-51,0), Vector3.UnitY), ProjectionParameters.StandardMediumFourThree, this.graphics.GraphicsDevice.Viewport); pawnCamera.Add(new ShakeController("shaker1", pawnCamera, true)); this.cameraManager.Add("FullScreen", pawnCamera); #endregion //set the default layout this.cameraManager.SetCameraLayout("FullScreen"); }