protected override void SetupContent()
{
// setup some basic lighting for our scene
SceneManager.AmbientLight = new ColorEx( 0.3f, 0.3f, 0.3f );
SceneManager.CreateLight( "CameraTrackLight" ).Position = new Vector3( 20, 80, 50 );
SceneManager.SetSkyBox( true, "Examples/MorningSkyBox", 5000 );
// create an ogre head entity and attach it to a node
Entity head = SceneManager.CreateEntity( "Head", "ogrehead.mesh" );
SceneNode headNode = SceneManager.RootSceneNode.CreateChildSceneNode();
headNode.AttachObject( head );
CameraManager.setStyle( CameraStyle.Manual );// we will be controlling the camera ourselves, so disable the camera man
Camera.SetAutoTracking( true, headNode );// make the camera face the head
// create a camera node and attach camera to it
SceneNode camNode = SceneManager.RootSceneNode.CreateChildSceneNode();
camNode.AttachObject( Camera );
// set up a 10 second animation for our camera, using spline interpolation for nice curves
Animation anim = SceneManager.CreateAnimation( "CameraTrack", 10 );
anim.InterpolationMode = InterpolationMode.Spline;
// create a track to animate the camera's node
NodeAnimationTrack track = anim.CreateNodeTrack( 0, camNode );
// create keyframes for our track
track.CreateNodeKeyFrame( 0 ).Translate = new Vector3( 200, 0, 0 );
track.CreateNodeKeyFrame( 2.5f ).Translate = new Vector3( 0, -50, 100 );
track.CreateNodeKeyFrame( 5 ).Translate = new Vector3( -500, 100, 0 );
track.CreateNodeKeyFrame( 7.5f ).Translate = new Vector3( 0, 200, -300 );
track.CreateNodeKeyFrame( 10 ).Translate = new Vector3( 200, 0, 0 );
// create a new animation state to track this
animState = SceneManager.CreateAnimationState( "CameraTrack" );
animState.IsEnabled = true;
base.SetupContent();
}
}