new public void Update(DwarfTime gameTime, ChunkManager chunks, Camera camera) { CalculateCurrentOrientation(camera); //foreach (string orient in OrientationStrings) //{ // string animationName = currentMode + orient; // if (!Animations.ContainsKey(animationName)) continue; // Animation animation = Animations[animationName]; // animation.Update(gameTime); //} string s = currentMode + OrientationStrings[(int)CurrentOrientation]; if (Animations.ContainsKey(s)) { var previousAnimation = CurrentAnimation; CurrentAnimation = Animations[s]; if (previousAnimation != null && previousAnimation.Name.StartsWith(currentMode)) { CurrentAnimation.Sychronize(previousAnimation); } SpriteSheet = CurrentAnimation.SpriteSheet; } base.Update(gameTime, chunks, camera); //if (CurrentAnimation != null && CurrentAnimation.LastFrame != CurrentAnimation.CurrentFrame) //{ // InvokeOnFrame(CurrentAnimation, CurrentOrientation, CurrentAnimation.CurrentFrame); //} }
new public void Update(DwarfTime gameTime, ChunkManager chunks, Camera camera) { CalculateCurrentOrientation(camera); foreach (string orient in OrientationStrings) { string animationName = currentMode + orient; if (!Animations.ContainsKey(animationName)) { continue; } Animation animation = Animations[animationName]; // Update all the animations! Why? Because we trigger things based on the FORWARD animation frame, // not based on whatever is current. if (animation != CurrentAnimation) { animation.Update(gameTime); } } string s = currentMode + OrientationStrings[(int)CurrentOrientation]; if (Animations.ContainsKey(s)) { var previousAnimation = CurrentAnimation; CurrentAnimation = Animations[s]; if (previousAnimation != null && previousAnimation.Name.StartsWith(currentMode)) { CurrentAnimation.Sychronize(previousAnimation); } SpriteSheet = CurrentAnimation.SpriteSheet; } base.Update(gameTime, chunks, camera); }