/// <summary> /// Load all graphical content. /// </summary> protected override void LoadContent() { // Load the rigid model rigidModel = Content.Load <Model>("AnimatedCube"); rigidWorld = Matrix.CreateScale(.05f, .05f, .05f); // Create animation players/clips for the rigid model ModelData modelData = rigidModel.Tag as ModelData; if (modelData != null) { if (modelData.RootAnimationClips != null && modelData.RootAnimationClips.ContainsKey("Take 001")) { rigidRootClip = modelData.RootAnimationClips["Take 001"]; rigidRootPlayer = new RootAnimationPlayer(); rigidRootPlayer.Completed += new EventHandler(rigidPlayer_Completed); rigidRootPlayer.StartClip(rigidRootClip, 1, TimeSpan.Zero); } if (modelData.ModelAnimationClips != null && modelData.ModelAnimationClips.ContainsKey("Take 001")) { rigidClip = modelData.ModelAnimationClips["Take 001"]; rigidPlayer = new RigidAnimationPlayer(rigidModel.Bones.Count); rigidPlayer.Completed += new EventHandler(rigidPlayer_Completed); rigidPlayer.StartClip(rigidClip, 1, TimeSpan.Zero); } } // Load the skinned model skinnedModel = Content.Load <Model>("DudeWalk"); skinnedWorld = Matrix.CreateScale(.025f, .025f, .025f) * Matrix.CreateRotationY((float)(-Math.PI / 2)); // Create animation players for the skinned model modelData = skinnedModel.Tag as ModelData; if (modelData != null) { if (modelData.RootAnimationClips != null && modelData.RootAnimationClips.ContainsKey("Take 001")) { skinnedRootClip = modelData.RootAnimationClips["Take 001"]; skinnedRootPlayer = new RootAnimationPlayer(); skinnedRootPlayer.Completed += new EventHandler(skinnedPlayer_Completed); } if (modelData.ModelAnimationClips != null && modelData.ModelAnimationClips.ContainsKey("Take 001")) { skinnedClip = modelData.ModelAnimationClips["Take 001"]; skinnedPlayer = new SkinnedAnimationPlayer(modelData.BindPose, modelData.InverseBindPose, modelData.SkeletonHierarchy); skinnedPlayer.Completed += new EventHandler(skinnedPlayer_Completed); } } // Create the projection/view matrix we'll use for rendering projection = Matrix.CreatePerspectiveFieldOfView(MathHelper.ToRadians(45.0f), GraphicsDevice.Viewport.AspectRatio, .01f, 200.0f); view = Matrix.CreateLookAt(new Vector3(0, 1, 4), new Vector3(0, 1, 0), Vector3.Up); spriteBatch = new SpriteBatch(GraphicsDevice); font = Content.Load <SpriteFont>("font"); }
public void Update(GameTime time) { float ts = TimeScale * 6.0f * 0.0167f; if (ts > 0) { GameTime gameTime = new GameTime(TimeSpan.Zero, TimeSpan.FromSeconds(ts), TimeSpan.Zero, TimeSpan.FromSeconds(ts)); if (!playingSkinned) { skinnedPlayer.StartClip(skinnedClip, 1, TimeSpan.Zero); rigidPlayer.StartClip(rigidClip, 1, TimeSpan.Zero); playingSkinned = true; if (skinnedRootPlayer != null && skinnedRootClip != null) { skinnedRootPlayer.StartClip(skinnedRootClip, 1, TimeSpan.Zero); } if (rigidRootPlayer != null && rigidRootClip != null) { rigidRootPlayer.StartClip(rigidRootClip, 1, TimeSpan.Zero); } } // If we are playing skinned animations, update the players if (playingSkinned) { if (skinnedRootPlayer != null) { skinnedRootPlayer.Update(gameTime); } if (rigidRootPlayer != null) { rigidRootPlayer.Update(gameTime); } skinnedPlayer.Update(gameTime); rigidPlayer.Update(gameTime); } } }
protected override void Update(GameTime gameTime) { // Get the current gamepad state and store the old lastGamePadState = currentGamePadState; currentGamePadState = GamePad.GetState(PlayerIndex.One); lastKeyboardState = currentKeyboardState; currentKeyboardState = Keyboard.GetState(); // Allows the game to exit if (currentGamePadState.Buttons.Back == ButtonState.Pressed || currentKeyboardState.IsKeyDown(Keys.Escape)) { Exit(); } // When the A button is pressed and we aren't playing the rigid animations, play them if ((IsNewButtonPress(Buttons.A) || IsNewKeyPress(Keys.A)) && playingRigid == false) { if (rigidPlayer != null && rigidClip != null) { rigidPlayer.StartClip(rigidClip, 1, TimeSpan.Zero); playingRigid = true; } if (rigidRootPlayer != null && rigidRootClip != null) { rigidRootPlayer.StartClip(rigidRootClip, 1, TimeSpan.Zero); playingRigid = true; } } // When the B button is pressed and we aren't playing the skinned animations, play them if ((IsNewButtonPress(Buttons.B) || IsNewKeyPress(Keys.B)) && playingSkinned == false) { if (skinnedPlayer != null && skinnedClip != null) { skinnedPlayer.StartClip(skinnedClip, 1, TimeSpan.Zero); playingSkinned = true; } if (skinnedRootPlayer != null && skinnedRootClip != null) { skinnedRootPlayer.StartClip(skinnedRootClip, 1, TimeSpan.Zero); playingSkinned = true; } } // If we are playing rigid animations, update the players if (playingRigid) { if (rigidRootPlayer != null) { rigidRootPlayer.Update(gameTime); } if (rigidPlayer != null) { rigidPlayer.Update(gameTime); } } // If we are playing skinned animations, update the players if (playingSkinned) { if (skinnedRootPlayer != null) { skinnedRootPlayer.Update(gameTime); } if (skinnedPlayer != null) { skinnedPlayer.Update(gameTime); } } base.Update(gameTime); }
public Cyclist() { //string test = typeof(AnimationDataReader).AssemblyQualifiedName; TimeScale = 1; skinnedModel = BaseGame.Content.Load <XnaModel>("Content\\Models\\bike_boy"); objectMatrix = Matrix.CreateScale(0.5f);// Matrix.Identity; // Create animation players for the skinned model animData = skinnedModel.Tag as AnimationData; if (animData != null) { if (animData.RootAnimationClips != null && animData.RootAnimationClips.ContainsKey("Take 001")) { skinnedRootClip = animData.RootAnimationClips["Take 001"]; skinnedRootPlayer = new RootAnimationPlayer(); skinnedRootPlayer.Completed += new EventHandler(skinnedPlayer_Completed); } if (animData.ModelAnimationClips != null && animData.ModelAnimationClips.ContainsKey("Take 001")) { skinnedClip = animData.ModelAnimationClips["Take 001"]; skinnedPlayer = new SkinnedAnimationPlayer(animData.BindPose, animData.InverseBindPose, animData.SkeletonHierarchy); skinnedPlayer.StartClip(skinnedClip, 1, TimeSpan.Zero); skinnedPlayer.CurrentTimeValue = skinnedClip.Duration; skinnedPlayer.CurrentTimeValue = TimeSpan.Zero; skinnedPlayer.Completed += new EventHandler(skinnedPlayer_Completed); } } rigidModel = BaseGame.Content.Load <XnaModel>("Content\\Models\\bike"); // Create animation players/clips for the rigid model animData2 = rigidModel.Tag as AnimationData; if (animData2 != null) { if (animData2.RootAnimationClips != null && animData2.RootAnimationClips.ContainsKey("Take 001")) { rigidRootClip = animData2.RootAnimationClips["Take 001"]; rigidRootPlayer = new RootAnimationPlayer(); rigidRootPlayer.Completed += new EventHandler(skinnedPlayer_Completed); rigidRootPlayer.StartClip(rigidRootClip, 1, TimeSpan.Zero); } if (animData2.ModelAnimationClips != null && animData2.ModelAnimationClips.ContainsKey("Take 001")) { rigidClip = animData2.ModelAnimationClips["Take 001"]; rigidPlayer = new RigidAnimationPlayer(rigidModel.Bones.Count); rigidPlayer.StartClip(rigidClip, 1, TimeSpan.Zero); rigidPlayer.CurrentTimeValue = rigidClip.Duration; rigidPlayer.CurrentTimeValue = TimeSpan.Zero; rigidPlayer.Completed += new EventHandler(skinnedPlayer_Completed); } } skinned = BaseGame.Content.Load <Effect>("Content\\Shaders\\skinned"); skinned.CurrentTechnique = skinned.Techniques[0]; Update(null); }