/// <summary> /// Attaches this controller to a user /// </summary> /// <param name="user">User to attach to</param> /// <param name="camera">Camera to control. Can be null</param> public FirstPersonCameraController( ICommandUser user, FirstPersonCamera camera ) { Arguments.CheckNotNull( user, "user" ); user.CommandTriggered += HandleCommand; InteractionUpdateTimer.Instance.Update += OnInteractionUpdate; Camera = camera; }
/// <summary> /// Creates the camera used by the main display /// </summary> private ICamera CreateCamera( ICommandUser user ) { FirstPersonCamera camera = new FirstPersonCamera( ); camera.PerspectiveZNear = 1.0f; camera.PerspectiveZFar = 15000.0f; Units.Metres cameraPos = BuilderState.Instance.SpherePlanet.PlanetModel.Radius; if ( BuilderState.Instance.SpherePlanet.PlanetModel.TerrainModel != null ) { cameraPos += BuilderState.Instance.SpherePlanet.PlanetModel.TerrainModel.MaximumHeight; } else { cameraPos += new Units.Metres( 1000000 ); } camera.Position = new UniPoint3( cameraPos.ToUniUnits, 0, 0 ); new FirstPersonCameraController( user, camera ); testDisplay.OnBeginRender += delegate { InteractionUpdateTimer.Instance.OnUpdate( ); }; CommandControlInputSource.StartMonitoring( user, testDisplay, FirstPersonCameraCommands.DefaultBindings ); return camera; }