/// <summary> /// Called during the update loop to move the animation forward /// </summary> /// <param name="gameTime"></param> public virtual void Update(GameTime gameTime) { if (currentClipValue == null) { return; } if (paused) { return; } TimeSpan time = gameTime.ElapsedGameTime; // Adjust for the rate if (playbackRate != 1.0f) { time = TimeSpan.FromMilliseconds(time.TotalMilliseconds * playbackRate); } elapsedPlaybackTime += time; // See if we should terminate if (elapsedPlaybackTime > duration && duration != TimeSpan.Zero || elapsedPlaybackTime > currentClipValue.Duration && duration == TimeSpan.Zero) { if (Completed != null) { Completed(this, EventArgs.Empty); } currentClipValue = null; return; } // Update the animation position. time += currentTimeValue; // If we reached the end, loop back to the start. while (time >= currentClipValue.Duration) { time -= currentClipValue.Duration; } CurrentTimeValue = time; OnUpdate(); }
/// <summary> /// Starts playing a clip /// </summary> /// <param name="clip">Animation clip to play</param> /// <param name="playbackRate">Speed to playback</param> /// <param name="duration">Length of time to play (max is looping, 0 is once)</param> public void StartClip(ModelAnimationClip clip, float playbackRate, TimeSpan duration) { if (clip == null) { throw new ArgumentNullException("Clip required"); } // Store the clip and reset playing data currentClipValue = clip; currentKeyframe = 0; CurrentTimeValue = TimeSpan.Zero; elapsedPlaybackTime = TimeSpan.Zero; paused = false; // Store the data about how we want to playback this.playbackRate = playbackRate; this.duration = duration; // Call the virtual to allow initialization of the clip InitClip(); }
/// <summary> /// Called during the update loop to move the animation forward /// </summary> /// <param name="gameTime"></param> public virtual void Update(GameTime gameTime) { if (currentClipValue == null) return; if (paused) return; TimeSpan time = gameTime.ElapsedGameTime; // Adjust for the rate if (playbackRate != 1.0f) time = TimeSpan.FromMilliseconds(time.TotalMilliseconds * playbackRate); elapsedPlaybackTime += time; // See if we should terminate if (elapsedPlaybackTime > duration && duration != TimeSpan.Zero || elapsedPlaybackTime > currentClipValue.Duration && duration == TimeSpan.Zero) { if (Completed != null) Completed(this, EventArgs.Empty); currentClipValue = null; return; } // Update the animation position. time += currentTimeValue; // If we reached the end, loop back to the start. while (time >= currentClipValue.Duration) time -= currentClipValue.Duration; CurrentTimeValue = time; OnUpdate(); }
/// <summary> /// Starts playing a clip /// </summary> /// <param name="clip">Animation clip to play</param> /// <param name="playbackRate">Speed to playback</param> /// <param name="duration">Length of time to play (max is looping, 0 is once)</param> public void StartClip(ModelAnimationClip clip, float playbackRate, TimeSpan duration) { if (clip == null) throw new ArgumentNullException("Clip required"); // Store the clip and reset playing data currentClipValue = clip; currentKeyframe = 0; CurrentTimeValue = TimeSpan.Zero; elapsedPlaybackTime = TimeSpan.Zero; paused = false; // Store the data about how we want to playback this.playbackRate = playbackRate; this.duration = duration; // Call the virtual to allow initialization of the clip InitClip(); }
/// <summary> /// Starts decoding the specified animation clip. /// </summary> public void StartClip(ModelAnimationClip clip) { StartClip(clip, 1.0f, TimeSpan.MaxValue); }
protected override void LoadContent() { spriteBatch = new SpriteBatch(GraphicsDevice); device = graphics.GraphicsDevice; mBackground = Content.Load<Texture2D>("Images/titlepanda"); mGameover = Content.Load<Texture2D>("Images/gameover"); mGamecomplete = Content.Load<Texture2D>("Images/gamecomplete"); mLevels = Content.Load<Texture2D>("Images/gameinstructions"); mInter = Content.Load<Texture2D>("Images/inter"); //mLevels = Content.Load<Texture2D>("Images/dayscreen"); effect1 = Content.Load<Effect>("effects"); //if (mCurrentScreen == Screen.Main) //{ // sceneryTexture = Content.Load<Texture2D>("texturemap123"); //} //smokeTexture = Content.Load<Texture2D>("smoke"); sceneryTexture = Content.Load<Texture2D>("Texture/texturemapraindrop"); sceneryTexture2 = Content.Load<Texture2D>("Texture/texturewall"); //gameShip = Content.Load<Model>("turbosonic"); rigidModel3 = Content.Load<Model>("waterdem4"); rigidModel = Content.Load<Model>("buildingani4"); // rigidWorld = Matrix.CreateScale(2f, 2f, 2f); rigidModel2 = Content.Load<Model>("buildingani4"); // Create animation players/clips for the rigid model ModelData modelData = rigidModel.Tag as ModelData; if (modelData != null) { if (modelData.RootAnimationClips != null && modelData.RootAnimationClips.ContainsKey("Default Take"))//Take 001 { rigidRootClip = modelData.RootAnimationClips["Default Take"]; rigidRootPlayer = new RootAnimationPlayer(); rigidRootPlayer.Completed += new EventHandler(rigidPlayer_Completed); rigidRootPlayer.StartClip(rigidRootClip, 1, TimeSpan.Zero); } if (modelData.ModelAnimationClips != null && modelData.ModelAnimationClips.ContainsKey("Default Take")) { rigidClip = modelData.ModelAnimationClips["Default Take"]; rigidPlayer = new RigidAnimationPlayer(rigidModel.Bones.Count); rigidPlayer.Completed += new EventHandler(rigidPlayer_Completed); rigidPlayer.StartClip(rigidClip, 1, TimeSpan.Zero); } } ModelData modelData2 = rigidModel2.Tag as ModelData; if (modelData2 != null) { if (modelData2.RootAnimationClips != null && modelData2.RootAnimationClips.ContainsKey("Default Take"))//Take 001 { rigidRootClip2 = modelData2.RootAnimationClips["Default Take"]; rigidRootPlayer2 = new RootAnimationPlayer(); rigidRootPlayer2.Completed += new EventHandler(rigidPlayer_Completed2); rigidRootPlayer2.StartClip(rigidRootClip2, 1, TimeSpan.Zero); } if (modelData2.ModelAnimationClips != null && modelData2.ModelAnimationClips.ContainsKey("Default Take")) { rigidClip2 = modelData2.ModelAnimationClips["Default Take"]; rigidPlayer2 = new RigidAnimationPlayer(rigidModel2.Bones.Count); rigidPlayer2.Completed += new EventHandler(rigidPlayer_Completed2); rigidPlayer2.StartClip(rigidClip2, 1, TimeSpan.Zero); } } ModelData modelData3 = rigidModel3.Tag as ModelData; if (modelData != null) { if (modelData3.RootAnimationClips != null && modelData3.RootAnimationClips.ContainsKey("Default Take"))//Take 001 { rigidRootClip3 = modelData3.RootAnimationClips["Default Take"]; rigidRootPlayer3 = new RootAnimationPlayer(); rigidRootPlayer3.Completed += new EventHandler(rigidPlayer_Completed3); rigidRootPlayer3.StartClip(rigidRootClip3, 1, TimeSpan.Zero); } if (modelData3.ModelAnimationClips != null && modelData3.ModelAnimationClips.ContainsKey("Default Take")) { rigidClip3 = modelData3.ModelAnimationClips["Default Take"]; rigidPlayer3 = new RigidAnimationPlayer(rigidModel.Bones.Count); rigidPlayer3.Completed += new EventHandler(rigidPlayer_Completed3); rigidPlayer3.StartClip(rigidClip3, 1, TimeSpan.Zero); } } // Load the model. currentModel = Content.Load<Model>("dude"); //skinnedWorld = Matrix.CreateScale(.015f, .015f, .015f) * Matrix.CreateRotationY((float)(-Math.PI / 2)) * Matrix.CreateTranslation(new Vector3(9, 0f, -12.5f)); // Look up our custom skinning information. SkinningData skinningData = currentModel.Tag as SkinningData; if (skinningData == null) throw new InvalidOperationException ("This model does not contain a SkinningData tag."); // Create an animation player, and start decoding an animation clip. animationPlayer = new AnimationPlayer(skinningData); AnimationClip clip = skinningData.AnimationClips["Take 001"]; animationPlayer.StartClip(clip); gameShip = Content.Load<Model>("Model/Helicopter"); //helicopterModel = Content.Load<Model>("Model/Helicopter"); house1 = Content.Load<Model>("collcam"); //demolish = Content.Load<Model>("Demolish/dem"); tree = Content.Load<Model>("treemulti"); mid = Content.Load<Model>("mid10"); house2 = Content.Load<Model>("collcam"); //house1 = Content.Load<Model>("treemulti"); ////demolish = Content.Load<Model>("Demolish/dem"); //tree = Content.Load<Model>("treemulti"); //mid = Content.Load<Model>("treemulti"); //house2 = Content.Load<Model>("treemulti"); round1 = Content.Load<Model>("round"); field = Content.Load<Model>("field"); tankee1 = Content.Load<Model>("Water_Reservoir"); //gameShip2 = Content.Load<Model>("xwing"); //if (mCurrentScreen == Screen.Main) //{ // gameShip = Content.Load<Model>("turbosonic"); //} //else // if (mCurrentScreen == Screen.Level2) // { // gameShip = LoadModel("xwing"); // } //xwingModel = LoadModel("xwing"); //xwingModel = LoadModel("lego"); //targetModel = LoadModel("xwing"); //targetModel = LoadModel("target civilianModel = Content.Load<Model>("bud"); targetModel = Content.Load<Model>("bird"); //("SpongeBob_fbx"); bulletTexture = Content.Load<Texture2D>("bullet"); //if (mCurrentScreen == Screen.Main) //{ //skyboxModel = LoadModel("skybox", out skyboxTextures); //} //else // if (mCurrentScreen == Screen.Level2) // { // skyboxModel = LoadModel("skybox", out skyboxTextures); // } skybox1 = LoadModel("Skybox/skybox", out skyboxTextures1); skybox2 = LoadModel("SkyboxNight/skybox", out skyboxTextures2); //skyboxModel = LoadModel("Skybox/skybox", out skyboxTextures); //skyboxModel2 = LoadModel("skyboxspace", out skyboxTextures); background = Content.Load<SoundEffect>("Sounds/background"); explosionSound = Content.Load<SoundEffect>("Sounds/explosionmetal"); song = Content.Load<Song>("Sounds/Saints"); // use the name of your song instead of "song_name" BirdSounds[0] = Content.Load<SoundEffect>(@"Sounds/bird1"); BirdSounds[1] = Content.Load<SoundEffect>(@"Sounds/bird2"); BirdSounds[2] = Content.Load<SoundEffect>(@"Sounds/bird3"); BirdSounds[3] = Content.Load<SoundEffect>(@"Sounds/bird4"); BirdSounds[4] = Content.Load<SoundEffect>(@"Sounds/bird5"); BirdSounds[5] = Content.Load<SoundEffect>(@"Sounds/bird6"); BirdSounds[6] = Content.Load<SoundEffect>(@"Sounds/bird7"); BirdSounds[7] = Content.Load<SoundEffect>(@"Sounds/bird8"); demround = Content.Load<Model>(@"Demolish/demround3"); // demolish = Content.Load<Model>(@"Model/finish7"); //demolish = Content.Load<Model>(@"waterdem1"); theMesh = Content.Load<Model>("fy_faen_ass"); theOceanMesh = Content.Load<Model>("ocean"); // Load the shader effect = Content.Load<Effect>("Shader"); oceanEffect = Content.Load<Effect>("OceanShader"); // Set up the parameters SetupIslandShaderParameters(); SetupOceanShaderParameters(); diffuseIslandTexture = Content.Load<Texture2D>("island"); normalIslandTexture = Content.Load<Texture2D>("islandNormal"); diffuseOceanTexture = Content.Load<Texture2D>("water1"); normalOceanTexture = Content.Load<Texture2D>("wavesbump"); LoadFloorPlan(); SetUpVertices(); SetUpBoundingBoxes(); AddTargets(); AddCivilians(); hud = new HUD(); hud.Font = Content.Load<SpriteFont>("Arial"); life = new LIFE(); life.Font = Content.Load<SpriteFont>("Arial"); }
/// <summary> /// Starts decoding the specified animation clip. /// </summary> public void StartClip(ModelAnimationClip clip) { StartClip(clip, 1.0f, TimeSpan.MaxValue); }