📄 animationcontroller.cs
字号:
using System;
using System.Collections.Generic;
using System.Text;
using Microsoft.Xna.Framework;
using Microsoft.Xna.Framework.Graphics;
namespace SceneryComponent.Components.Animation
{
/// <summary>
/// Controlador de animaci髇
/// </summary>
public class AnimationController
{
// Diccionario de animaciones por 韓dice
private readonly Dictionary<int, AnimationBase> m_AnimationList = new Dictionary<int, AnimationBase>();
/// <summary>
/// Obtiene la lista de animaciones
/// </summary>
public AnimationBase[] AnimationList
{
get
{
List<AnimationBase> list = new List<AnimationBase>(m_AnimationList.Values);
return list.ToArray();
}
}
/// <summary>
/// Constructor
/// </summary>
public AnimationController()
{
}
/// <summary>
/// A馻de una animaci髇 al controlador
/// </summary>
/// <param name="animation">Animaci髇</param>
public void Add(AnimationBase animation)
{
if (animation != null)
{
if (!m_AnimationList.ContainsKey(animation.Index))
{
m_AnimationList.Add(animation.Index, animation);
}
}
}
/// <summary>
/// Elimina una animaci髇 del controlador
/// </summary>
/// <param name="animation">Animaci髇</param>
public void Remove(AnimationBase animation)
{
if (animation != null)
{
if (m_AnimationList.ContainsKey(animation.Index))
{
m_AnimationList.Remove(animation.Index);
}
}
}
/// <summary>
/// Actualiza 馻 informaci髇 del controlador
/// </summary>
/// <param name="gameTime">Tiempo de juego</param>
public void Update(GameTime gameTime)
{
foreach (AnimationBase animation in m_AnimationList.Values)
{
// Actualizar todos los elementos de la colecci髇 de animaciones
animation.Update(gameTime);
}
}
/// <summary>
/// Obtiene la transformaci髇 parcial del bone con el 韓dice especificado
/// </summary>
/// <param name="index">Indice de bone</param>
/// <returns>Devuelve la transformaci髇 parcial del bone con el 韓dice especificado</returns>
public Matrix GetTransform(int index)
{
if (m_AnimationList.ContainsKey(index))
{
// Si hay animaci髇 espec韋ica del 韓dice se devuelve
return m_AnimationList[index].Transform;
}
// Por defecto se devuelve transformaci髇 identidad
return Matrix.Identity;
}
/// <summary>
/// Obtiene la transformaci髇 parcial del bone especificado
/// </summary>
/// <param name="bone">Bone</param>
/// <returns>Devuelve la transformaci髇 parcial del bone especificado</returns>
public Matrix GetTransform(ModelBone bone)
{
return GetTransform(bone.Index);
}
/// <summary>
/// Obtiene la transformaci髇 final del bone especificado
/// </summary>
/// <param name="bone">Bone</param>
/// <param name="parentTransform">Matriz de transformaci髇 del padre</param>
/// <returns>Devuelve la transformaci髇 final del bone especificado</returns>
/// <remarks>S髄o es necesario especificar la matriz del padre cuando se est
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -