⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 skeletalanim.h

📁 用DirectX制作高级动画-[Advanced.Animation.with.DirectX]
💻 H
字号:
#ifndef _SKELETALANIM_H_
#define _SKELETALANIM_H_

#include <windows.h>
#include "Direct3D.h"
#include "dxfile.h"
#include "XParser.h"
#include "XFile.h"

///////////////////////////////////////////////////////////
//
// Animation key type class containers
//
///////////////////////////////////////////////////////////
class cAnimationVectorKey
{
  public:
    DWORD       m_Time;
    D3DXVECTOR3 m_vecKey;
};

class cAnimationQuaternionKey
{
  public:
    DWORD          m_Time;
    D3DXQUATERNION m_quatKey;
};

class cAnimationMatrixKey
{
  public:
    DWORD      m_Time;
    D3DXMATRIX m_matKey;
};


///////////////////////////////////////////////////////////
//
// Animation class container
//
///////////////////////////////////////////////////////////
class cAnimation
{
  public:
    char          *m_Name;  // Bone's name
    D3DXFRAME_EX  *m_Bone;  // Pointer to bone frame
    cAnimation    *m_Next;  // Next animation object in list

    // # each key type and array of each type's keys
    DWORD                    m_NumTranslationKeys;
    cAnimationVectorKey     *m_TranslationKeys;
    DWORD                    m_NumScaleKeys;
    cAnimationVectorKey     *m_ScaleKeys;
    DWORD                    m_NumRotationKeys;
    cAnimationQuaternionKey *m_RotationKeys;
    DWORD                    m_NumMatrixKeys;
    cAnimationMatrixKey     *m_MatrixKeys;

  public:
    cAnimation();
    ~cAnimation();
};


///////////////////////////////////////////////////////////
//
// AnimationSet class container
//
///////////////////////////////////////////////////////////
class cAnimationSet
{
  public:
    char          *m_Name;   // Name of animation
    DWORD          m_Length; // Length of animation
    cAnimationSet *m_Next;   // Next set in linked list

    DWORD          m_NumAnimations; // # animations in set
    cAnimation    *m_Animations;    // Animations

  public:
    cAnimationSet();
    ~cAnimationSet();
};


///////////////////////////////////////////////////////////
//
// AnimationCollection class container
//
///////////////////////////////////////////////////////////
class cAnimationCollection : public cXParser
{
  public:
    DWORD          m_NumAnimationSets;  // # animation sets
    cAnimationSet *m_AnimationSets;     // Animation sets

  protected:
    // Parse an .X file for mass and spring data
    BOOL ParseObject(IDirectXFileData *pDataObj,
                       IDirectXFileData *pParentDataObj,
                       DWORD Depth,
                       void **Data, BOOL Reference);

    // Find a frame by name
    D3DXFRAME_EX *FindFrame(D3DXFRAME *Frame, char *Name);
    
  public:
    cAnimationCollection();
    ~cAnimationCollection();

    BOOL Load(char *Filename);
    void Free();

    void Map(D3DXFRAME_EX *RootFrame);
    void Update(char *AnimationSetName, DWORD Time, BOOL Loop);
};

#endif

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -