You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
1114 lines
41 KiB
1114 lines
41 KiB
////////////////////////////////////////////////////////////////////////////// |
|
// |
|
// Copyright (C) Microsoft Corporation. All Rights Reserved. |
|
// |
|
// File: d3dx9anim.h |
|
// Content: D3DX mesh types and functions |
|
// |
|
////////////////////////////////////////////////////////////////////////////// |
|
|
|
#ifndef __D3DX9ANIM_H__ |
|
#define __D3DX9ANIM_H__ |
|
|
|
// {698CFB3F-9289-4d95-9A57-33A94B5A65F9} |
|
DEFINE_GUID(IID_ID3DXAnimationSet, |
|
0x698cfb3f, 0x9289, 0x4d95, 0x9a, 0x57, 0x33, 0xa9, 0x4b, 0x5a, 0x65, 0xf9); |
|
|
|
// {FA4E8E3A-9786-407d-8B4C-5995893764AF} |
|
DEFINE_GUID(IID_ID3DXKeyframedAnimationSet, |
|
0xfa4e8e3a, 0x9786, 0x407d, 0x8b, 0x4c, 0x59, 0x95, 0x89, 0x37, 0x64, 0xaf); |
|
|
|
// {6CC2480D-3808-4739-9F88-DE49FACD8D4C} |
|
DEFINE_GUID(IID_ID3DXCompressedAnimationSet, |
|
0x6cc2480d, 0x3808, 0x4739, 0x9f, 0x88, 0xde, 0x49, 0xfa, 0xcd, 0x8d, 0x4c); |
|
|
|
// {AC8948EC-F86D-43e2-96DE-31FC35F96D9E} |
|
DEFINE_GUID(IID_ID3DXAnimationController, |
|
0xac8948ec, 0xf86d, 0x43e2, 0x96, 0xde, 0x31, 0xfc, 0x35, 0xf9, 0x6d, 0x9e); |
|
|
|
|
|
//---------------------------------------------------------------------------- |
|
// D3DXMESHDATATYPE: |
|
// ----------------- |
|
// This enum defines the type of mesh data present in a MeshData structure. |
|
//---------------------------------------------------------------------------- |
|
typedef enum _D3DXMESHDATATYPE { |
|
D3DXMESHTYPE_MESH = 0x001, // Normal ID3DXMesh data |
|
D3DXMESHTYPE_PMESH = 0x002, // Progressive Mesh - ID3DXPMesh |
|
D3DXMESHTYPE_PATCHMESH = 0x003, // Patch Mesh - ID3DXPatchMesh |
|
|
|
D3DXMESHTYPE_FORCE_DWORD = 0x7fffffff, /* force 32-bit size enum */ |
|
} D3DXMESHDATATYPE; |
|
|
|
//---------------------------------------------------------------------------- |
|
// D3DXMESHDATA: |
|
// ------------- |
|
// This struct encapsulates a the mesh data that can be present in a mesh |
|
// container. The supported mesh types are pMesh, pPMesh, pPatchMesh. |
|
// The valid way to access this is determined by the Type enum. |
|
//---------------------------------------------------------------------------- |
|
typedef struct _D3DXMESHDATA |
|
{ |
|
D3DXMESHDATATYPE Type; |
|
|
|
// current mesh data interface |
|
union |
|
{ |
|
LPD3DXMESH pMesh; |
|
LPD3DXPMESH pPMesh; |
|
LPD3DXPATCHMESH pPatchMesh; |
|
}; |
|
} D3DXMESHDATA, *LPD3DXMESHDATA; |
|
|
|
//---------------------------------------------------------------------------- |
|
// D3DXMESHCONTAINER: |
|
// ------------------ |
|
// This struct encapsulates a mesh object in a transformation frame |
|
// hierarchy. The app can derive from this structure to add other app specific |
|
// data to this. |
|
//---------------------------------------------------------------------------- |
|
typedef struct _D3DXMESHCONTAINER |
|
{ |
|
LPSTR Name; |
|
|
|
D3DXMESHDATA MeshData; |
|
|
|
LPD3DXMATERIAL pMaterials; |
|
LPD3DXEFFECTINSTANCE pEffects; |
|
DWORD NumMaterials; |
|
DWORD *pAdjacency; |
|
|
|
LPD3DXSKININFO pSkinInfo; |
|
|
|
struct _D3DXMESHCONTAINER *pNextMeshContainer; |
|
} D3DXMESHCONTAINER, *LPD3DXMESHCONTAINER; |
|
|
|
//---------------------------------------------------------------------------- |
|
// D3DXFRAME: |
|
// ---------- |
|
// This struct is the encapsulates a transform frame in a transformation frame |
|
// hierarchy. The app can derive from this structure to add other app specific |
|
// data to this |
|
//---------------------------------------------------------------------------- |
|
typedef struct _D3DXFRAME |
|
{ |
|
LPSTR Name; |
|
D3DXMATRIX TransformationMatrix; |
|
|
|
LPD3DXMESHCONTAINER pMeshContainer; |
|
|
|
struct _D3DXFRAME *pFrameSibling; |
|
struct _D3DXFRAME *pFrameFirstChild; |
|
} D3DXFRAME, *LPD3DXFRAME; |
|
|
|
|
|
//---------------------------------------------------------------------------- |
|
// ID3DXAllocateHierarchy: |
|
// ----------------------- |
|
// This interface is implemented by the application to allocate/free frame and |
|
// mesh container objects. Methods on this are called during loading and |
|
// destroying frame hierarchies |
|
//---------------------------------------------------------------------------- |
|
typedef interface ID3DXAllocateHierarchy ID3DXAllocateHierarchy; |
|
typedef interface ID3DXAllocateHierarchy *LPD3DXALLOCATEHIERARCHY; |
|
|
|
#undef INTERFACE |
|
#define INTERFACE ID3DXAllocateHierarchy |
|
|
|
DECLARE_INTERFACE(ID3DXAllocateHierarchy) |
|
{ |
|
// ID3DXAllocateHierarchy |
|
|
|
//------------------------------------------------------------------------ |
|
// CreateFrame: |
|
// ------------ |
|
// Requests allocation of a frame object. |
|
// |
|
// Parameters: |
|
// Name |
|
// Name of the frame to be created |
|
// ppNewFrame |
|
// Returns the created frame object |
|
// |
|
//------------------------------------------------------------------------ |
|
STDMETHOD(CreateFrame)(THIS_ LPCSTR Name, |
|
LPD3DXFRAME *ppNewFrame) PURE; |
|
|
|
//------------------------------------------------------------------------ |
|
// CreateMeshContainer: |
|
// -------------------- |
|
// Requests allocation of a mesh container object. |
|
// |
|
// Parameters: |
|
// Name |
|
// Name of the mesh |
|
// pMesh |
|
// Pointer to the mesh object if basic polygon data found |
|
// pPMesh |
|
// Pointer to the progressive mesh object if progressive mesh data found |
|
// pPatchMesh |
|
// Pointer to the patch mesh object if patch data found |
|
// pMaterials |
|
// Array of materials used in the mesh |
|
// pEffectInstances |
|
// Array of effect instances used in the mesh |
|
// NumMaterials |
|
// Num elements in the pMaterials array |
|
// pAdjacency |
|
// Adjacency array for the mesh |
|
// pSkinInfo |
|
// Pointer to the skininfo object if the mesh is skinned |
|
// pBoneNames |
|
// Array of names, one for each bone in the skinned mesh. |
|
// The numberof bones can be found from the pSkinMesh object |
|
// pBoneOffsetMatrices |
|
// Array of matrices, one for each bone in the skinned mesh. |
|
// |
|
//------------------------------------------------------------------------ |
|
STDMETHOD(CreateMeshContainer)(THIS_ |
|
LPCSTR Name, |
|
CONST D3DXMESHDATA *pMeshData, |
|
CONST D3DXMATERIAL *pMaterials, |
|
CONST D3DXEFFECTINSTANCE *pEffectInstances, |
|
DWORD NumMaterials, |
|
CONST DWORD *pAdjacency, |
|
LPD3DXSKININFO pSkinInfo, |
|
LPD3DXMESHCONTAINER *ppNewMeshContainer) PURE; |
|
|
|
//------------------------------------------------------------------------ |
|
// DestroyFrame: |
|
// ------------- |
|
// Requests de-allocation of a frame object. |
|
// |
|
// Parameters: |
|
// pFrameToFree |
|
// Pointer to the frame to be de-allocated |
|
// |
|
//------------------------------------------------------------------------ |
|
STDMETHOD(DestroyFrame)(THIS_ LPD3DXFRAME pFrameToFree) PURE; |
|
|
|
//------------------------------------------------------------------------ |
|
// DestroyMeshContainer: |
|
// --------------------- |
|
// Requests de-allocation of a mesh container object. |
|
// |
|
// Parameters: |
|
// pMeshContainerToFree |
|
// Pointer to the mesh container object to be de-allocated |
|
// |
|
//------------------------------------------------------------------------ |
|
STDMETHOD(DestroyMeshContainer)(THIS_ LPD3DXMESHCONTAINER pMeshContainerToFree) PURE; |
|
}; |
|
|
|
//---------------------------------------------------------------------------- |
|
// ID3DXLoadUserData: |
|
// ------------------ |
|
// This interface is implemented by the application to load user data in a .X file |
|
// When user data is found, these callbacks will be used to allow the application |
|
// to load the data. |
|
//---------------------------------------------------------------------------- |
|
typedef interface ID3DXLoadUserData ID3DXLoadUserData; |
|
typedef interface ID3DXLoadUserData *LPD3DXLOADUSERDATA; |
|
|
|
#undef INTERFACE |
|
#define INTERFACE ID3DXLoadUserData |
|
|
|
DECLARE_INTERFACE(ID3DXLoadUserData) |
|
{ |
|
STDMETHOD(LoadTopLevelData)(LPD3DXFILEDATA pXofChildData) PURE; |
|
|
|
STDMETHOD(LoadFrameChildData)(LPD3DXFRAME pFrame, |
|
LPD3DXFILEDATA pXofChildData) PURE; |
|
|
|
STDMETHOD(LoadMeshChildData)(LPD3DXMESHCONTAINER pMeshContainer, |
|
LPD3DXFILEDATA pXofChildData) PURE; |
|
}; |
|
|
|
//---------------------------------------------------------------------------- |
|
// ID3DXSaveUserData: |
|
// ------------------ |
|
// This interface is implemented by the application to save user data in a .X file |
|
// The callbacks are called for all data saved. The user can then add any |
|
// child data objects to the object provided to the callback. |
|
//---------------------------------------------------------------------------- |
|
typedef interface ID3DXSaveUserData ID3DXSaveUserData; |
|
typedef interface ID3DXSaveUserData *LPD3DXSAVEUSERDATA; |
|
|
|
#undef INTERFACE |
|
#define INTERFACE ID3DXSaveUserData |
|
|
|
DECLARE_INTERFACE(ID3DXSaveUserData) |
|
{ |
|
STDMETHOD(AddFrameChildData)(CONST D3DXFRAME *pFrame, |
|
LPD3DXFILESAVEOBJECT pXofSave, |
|
LPD3DXFILESAVEDATA pXofFrameData) PURE; |
|
|
|
STDMETHOD(AddMeshChildData)(CONST D3DXMESHCONTAINER *pMeshContainer, |
|
LPD3DXFILESAVEOBJECT pXofSave, |
|
LPD3DXFILESAVEDATA pXofMeshData) PURE; |
|
|
|
// NOTE: this is called once per Save. All top level objects should be added using the |
|
// provided interface. One call adds objects before the frame hierarchy, the other after |
|
STDMETHOD(AddTopLevelDataObjectsPre)(LPD3DXFILESAVEOBJECT pXofSave) PURE; |
|
STDMETHOD(AddTopLevelDataObjectsPost)(LPD3DXFILESAVEOBJECT pXofSave) PURE; |
|
|
|
// callbacks for the user to register and then save templates to the XFile |
|
STDMETHOD(RegisterTemplates)(LPD3DXFILE pXFileApi) PURE; |
|
STDMETHOD(SaveTemplates)(LPD3DXFILESAVEOBJECT pXofSave) PURE; |
|
}; |
|
|
|
|
|
//---------------------------------------------------------------------------- |
|
// D3DXCALLBACK_SEARCH_FLAGS: |
|
// -------------------------- |
|
// Flags that can be passed into ID3DXAnimationSet::GetCallback. |
|
//---------------------------------------------------------------------------- |
|
typedef enum _D3DXCALLBACK_SEARCH_FLAGS |
|
{ |
|
D3DXCALLBACK_SEARCH_EXCLUDING_INITIAL_POSITION = 0x01, // exclude callbacks at the initial position from the search |
|
D3DXCALLBACK_SEARCH_BEHIND_INITIAL_POSITION = 0x02, // reverse the callback search direction |
|
|
|
D3DXCALLBACK_SEARCH_FORCE_DWORD = 0x7fffffff, |
|
} D3DXCALLBACK_SEARCH_FLAGS; |
|
|
|
//---------------------------------------------------------------------------- |
|
// ID3DXAnimationSet: |
|
// ------------------ |
|
// This interface implements an animation set. |
|
//---------------------------------------------------------------------------- |
|
typedef interface ID3DXAnimationSet ID3DXAnimationSet; |
|
typedef interface ID3DXAnimationSet *LPD3DXANIMATIONSET; |
|
|
|
#undef INTERFACE |
|
#define INTERFACE ID3DXAnimationSet |
|
|
|
DECLARE_INTERFACE_(ID3DXAnimationSet, IUnknown) |
|
{ |
|
// IUnknown |
|
STDMETHOD(QueryInterface)(THIS_ REFIID iid, LPVOID *ppv) PURE; |
|
STDMETHOD_(ULONG, AddRef)(THIS) PURE; |
|
STDMETHOD_(ULONG, Release)(THIS) PURE; |
|
|
|
// Name |
|
STDMETHOD_(LPCSTR, GetName)(THIS) PURE; |
|
|
|
// Period |
|
STDMETHOD_(DOUBLE, GetPeriod)(THIS) PURE; |
|
STDMETHOD_(DOUBLE, GetPeriodicPosition)(THIS_ DOUBLE Position) PURE; // Maps position into animation period |
|
|
|
// Animation names |
|
STDMETHOD_(UINT, GetNumAnimations)(THIS) PURE; |
|
STDMETHOD(GetAnimationNameByIndex)(THIS_ UINT Index, LPCSTR *ppName) PURE; |
|
STDMETHOD(GetAnimationIndexByName)(THIS_ LPCSTR pName, UINT *pIndex) PURE; |
|
|
|
// SRT |
|
STDMETHOD(GetSRT)(THIS_ |
|
DOUBLE PeriodicPosition, // Position mapped to period (use GetPeriodicPosition) |
|
UINT Animation, // Animation index |
|
D3DXVECTOR3 *pScale, // Returns the scale |
|
D3DXQUATERNION *pRotation, // Returns the rotation as a quaternion |
|
D3DXVECTOR3 *pTranslation) PURE; // Returns the translation |
|
|
|
// Callbacks |
|
STDMETHOD(GetCallback)(THIS_ |
|
DOUBLE Position, // Position from which to find callbacks |
|
DWORD Flags, // Callback search flags |
|
DOUBLE *pCallbackPosition, // Returns the position of the callback |
|
LPVOID *ppCallbackData) PURE; // Returns the callback data pointer |
|
}; |
|
|
|
|
|
//---------------------------------------------------------------------------- |
|
// D3DXPLAYBACK_TYPE: |
|
// ------------------ |
|
// This enum defines the type of animation set loop modes. |
|
//---------------------------------------------------------------------------- |
|
typedef enum _D3DXPLAYBACK_TYPE |
|
{ |
|
D3DXPLAY_LOOP = 0, |
|
D3DXPLAY_ONCE = 1, |
|
D3DXPLAY_PINGPONG = 2, |
|
|
|
D3DXPLAY_FORCE_DWORD = 0x7fffffff, /* force 32-bit size enum */ |
|
} D3DXPLAYBACK_TYPE; |
|
|
|
|
|
//---------------------------------------------------------------------------- |
|
// D3DXKEY_VECTOR3: |
|
// ---------------- |
|
// This structure describes a vector key for use in keyframe animation. |
|
// It specifies a vector Value at a given Time. This is used for scale and |
|
// translation keys. |
|
//---------------------------------------------------------------------------- |
|
typedef struct _D3DXKEY_VECTOR3 |
|
{ |
|
FLOAT Time; |
|
D3DXVECTOR3 Value; |
|
} D3DXKEY_VECTOR3, *LPD3DXKEY_VECTOR3; |
|
|
|
|
|
//---------------------------------------------------------------------------- |
|
// D3DXKEY_QUATERNION: |
|
// ------------------- |
|
// This structure describes a quaternion key for use in keyframe animation. |
|
// It specifies a quaternion Value at a given Time. This is used for rotation |
|
// keys. |
|
//---------------------------------------------------------------------------- |
|
typedef struct _D3DXKEY_QUATERNION |
|
{ |
|
FLOAT Time; |
|
D3DXQUATERNION Value; |
|
} D3DXKEY_QUATERNION, *LPD3DXKEY_QUATERNION; |
|
|
|
|
|
//---------------------------------------------------------------------------- |
|
// D3DXKEY_CALLBACK: |
|
// ----------------- |
|
// This structure describes an callback key for use in keyframe animation. |
|
// It specifies a pointer to user data at a given Time. |
|
//---------------------------------------------------------------------------- |
|
typedef struct _D3DXKEY_CALLBACK |
|
{ |
|
FLOAT Time; |
|
LPVOID pCallbackData; |
|
} D3DXKEY_CALLBACK, *LPD3DXKEY_CALLBACK; |
|
|
|
|
|
//---------------------------------------------------------------------------- |
|
// D3DXCOMPRESSION_FLAGS: |
|
// ---------------------- |
|
// Flags that can be passed into ID3DXKeyframedAnimationSet::Compress. |
|
//---------------------------------------------------------------------------- |
|
typedef enum _D3DXCOMPRESSION_FLAGS |
|
{ |
|
D3DXCOMPRESS_DEFAULT = 0x00, |
|
|
|
D3DXCOMPRESS_FORCE_DWORD = 0x7fffffff, |
|
} D3DXCOMPRESSION_FLAGS; |
|
|
|
|
|
//---------------------------------------------------------------------------- |
|
// ID3DXKeyframedAnimationSet: |
|
// --------------------------- |
|
// This interface implements a compressable keyframed animation set. |
|
//---------------------------------------------------------------------------- |
|
typedef interface ID3DXKeyframedAnimationSet ID3DXKeyframedAnimationSet; |
|
typedef interface ID3DXKeyframedAnimationSet *LPD3DXKEYFRAMEDANIMATIONSET; |
|
|
|
#undef INTERFACE |
|
#define INTERFACE ID3DXKeyframedAnimationSet |
|
|
|
DECLARE_INTERFACE_(ID3DXKeyframedAnimationSet, ID3DXAnimationSet) |
|
{ |
|
// ID3DXAnimationSet |
|
STDMETHOD(QueryInterface)(THIS_ REFIID iid, LPVOID *ppv) PURE; |
|
STDMETHOD_(ULONG, AddRef)(THIS) PURE; |
|
STDMETHOD_(ULONG, Release)(THIS) PURE; |
|
|
|
// Name |
|
STDMETHOD_(LPCSTR, GetName)(THIS) PURE; |
|
|
|
// Period |
|
STDMETHOD_(DOUBLE, GetPeriod)(THIS) PURE; |
|
STDMETHOD_(DOUBLE, GetPeriodicPosition)(THIS_ DOUBLE Position) PURE; // Maps position into animation period |
|
|
|
// Animation names |
|
STDMETHOD_(UINT, GetNumAnimations)(THIS) PURE; |
|
STDMETHOD(GetAnimationNameByIndex)(THIS_ UINT Index, LPCSTR *ppName) PURE; |
|
STDMETHOD(GetAnimationIndexByName)(THIS_ LPCSTR pName, UINT *pIndex) PURE; |
|
|
|
// SRT |
|
STDMETHOD(GetSRT)(THIS_ |
|
DOUBLE PeriodicPosition, // Position mapped to period (use GetPeriodicPosition) |
|
UINT Animation, // Animation index |
|
D3DXVECTOR3 *pScale, // Returns the scale |
|
D3DXQUATERNION *pRotation, // Returns the rotation as a quaternion |
|
D3DXVECTOR3 *pTranslation) PURE; // Returns the translation |
|
|
|
// Callbacks |
|
STDMETHOD(GetCallback)(THIS_ |
|
DOUBLE Position, // Position from which to find callbacks |
|
DWORD Flags, // Callback search flags |
|
DOUBLE *pCallbackPosition, // Returns the position of the callback |
|
LPVOID *ppCallbackData) PURE; // Returns the callback data pointer |
|
|
|
// Playback |
|
STDMETHOD_(D3DXPLAYBACK_TYPE, GetPlaybackType)(THIS) PURE; |
|
STDMETHOD_(DOUBLE, GetSourceTicksPerSecond)(THIS) PURE; |
|
|
|
// Scale keys |
|
STDMETHOD_(UINT, GetNumScaleKeys)(THIS_ UINT Animation) PURE; |
|
STDMETHOD(GetScaleKeys)(THIS_ UINT Animation, LPD3DXKEY_VECTOR3 pScaleKeys) PURE; |
|
STDMETHOD(GetScaleKey)(THIS_ UINT Animation, UINT Key, LPD3DXKEY_VECTOR3 pScaleKey) PURE; |
|
STDMETHOD(SetScaleKey)(THIS_ UINT Animation, UINT Key, LPD3DXKEY_VECTOR3 pScaleKey) PURE; |
|
|
|
// Rotation keys |
|
STDMETHOD_(UINT, GetNumRotationKeys)(THIS_ UINT Animation) PURE; |
|
STDMETHOD(GetRotationKeys)(THIS_ UINT Animation, LPD3DXKEY_QUATERNION pRotationKeys) PURE; |
|
STDMETHOD(GetRotationKey)(THIS_ UINT Animation, UINT Key, LPD3DXKEY_QUATERNION pRotationKey) PURE; |
|
STDMETHOD(SetRotationKey)(THIS_ UINT Animation, UINT Key, LPD3DXKEY_QUATERNION pRotationKey) PURE; |
|
|
|
// Translation keys |
|
STDMETHOD_(UINT, GetNumTranslationKeys)(THIS_ UINT Animation) PURE; |
|
STDMETHOD(GetTranslationKeys)(THIS_ UINT Animation, LPD3DXKEY_VECTOR3 pTranslationKeys) PURE; |
|
STDMETHOD(GetTranslationKey)(THIS_ UINT Animation, UINT Key, LPD3DXKEY_VECTOR3 pTranslationKey) PURE; |
|
STDMETHOD(SetTranslationKey)(THIS_ UINT Animation, UINT Key, LPD3DXKEY_VECTOR3 pTranslationKey) PURE; |
|
|
|
// Callback keys |
|
STDMETHOD_(UINT, GetNumCallbackKeys)(THIS) PURE; |
|
STDMETHOD(GetCallbackKeys)(THIS_ LPD3DXKEY_CALLBACK pCallbackKeys) PURE; |
|
STDMETHOD(GetCallbackKey)(THIS_ UINT Key, LPD3DXKEY_CALLBACK pCallbackKey) PURE; |
|
STDMETHOD(SetCallbackKey)(THIS_ UINT Key, LPD3DXKEY_CALLBACK pCallbackKey) PURE; |
|
|
|
// Key removal methods. These are slow, and should not be used once the animation starts playing |
|
STDMETHOD(UnregisterScaleKey)(THIS_ UINT Animation, UINT Key) PURE; |
|
STDMETHOD(UnregisterRotationKey)(THIS_ UINT Animation, UINT Key) PURE; |
|
STDMETHOD(UnregisterTranslationKey)(THIS_ UINT Animation, UINT Key) PURE; |
|
|
|
// One-time animaton SRT keyframe registration |
|
STDMETHOD(RegisterAnimationSRTKeys)(THIS_ |
|
LPCSTR pName, // Animation name |
|
UINT NumScaleKeys, // Number of scale keys |
|
UINT NumRotationKeys, // Number of rotation keys |
|
UINT NumTranslationKeys, // Number of translation keys |
|
CONST D3DXKEY_VECTOR3 *pScaleKeys, // Array of scale keys |
|
CONST D3DXKEY_QUATERNION *pRotationKeys, // Array of rotation keys |
|
CONST D3DXKEY_VECTOR3 *pTranslationKeys, // Array of translation keys |
|
DWORD *pAnimationIndex) PURE; // Returns the animation index |
|
|
|
// Compression |
|
STDMETHOD(Compress)(THIS_ |
|
DWORD Flags, // Compression flags (use D3DXCOMPRESS_STRONG for better results) |
|
FLOAT Lossiness, // Compression loss ratio in the [0, 1] range |
|
LPD3DXFRAME pHierarchy, // Frame hierarchy (optional) |
|
LPD3DXBUFFER *ppCompressedData) PURE; // Returns the compressed animation set |
|
|
|
STDMETHOD(UnregisterAnimation)(THIS_ UINT Index) PURE; |
|
}; |
|
|
|
|
|
//---------------------------------------------------------------------------- |
|
// ID3DXCompressedAnimationSet: |
|
// ---------------------------- |
|
// This interface implements a compressed keyframed animation set. |
|
//---------------------------------------------------------------------------- |
|
typedef interface ID3DXCompressedAnimationSet ID3DXCompressedAnimationSet; |
|
typedef interface ID3DXCompressedAnimationSet *LPD3DXCOMPRESSEDANIMATIONSET; |
|
|
|
#undef INTERFACE |
|
#define INTERFACE ID3DXCompressedAnimationSet |
|
|
|
DECLARE_INTERFACE_(ID3DXCompressedAnimationSet, ID3DXAnimationSet) |
|
{ |
|
// ID3DXAnimationSet |
|
STDMETHOD(QueryInterface)(THIS_ REFIID iid, LPVOID *ppv) PURE; |
|
STDMETHOD_(ULONG, AddRef)(THIS) PURE; |
|
STDMETHOD_(ULONG, Release)(THIS) PURE; |
|
|
|
// Name |
|
STDMETHOD_(LPCSTR, GetName)(THIS) PURE; |
|
|
|
// Period |
|
STDMETHOD_(DOUBLE, GetPeriod)(THIS) PURE; |
|
STDMETHOD_(DOUBLE, GetPeriodicPosition)(THIS_ DOUBLE Position) PURE; // Maps position into animation period |
|
|
|
// Animation names |
|
STDMETHOD_(UINT, GetNumAnimations)(THIS) PURE; |
|
STDMETHOD(GetAnimationNameByIndex)(THIS_ UINT Index, LPCSTR *ppName) PURE; |
|
STDMETHOD(GetAnimationIndexByName)(THIS_ LPCSTR pName, UINT *pIndex) PURE; |
|
|
|
// SRT |
|
STDMETHOD(GetSRT)(THIS_ |
|
DOUBLE PeriodicPosition, // Position mapped to period (use GetPeriodicPosition) |
|
UINT Animation, // Animation index |
|
D3DXVECTOR3 *pScale, // Returns the scale |
|
D3DXQUATERNION *pRotation, // Returns the rotation as a quaternion |
|
D3DXVECTOR3 *pTranslation) PURE; // Returns the translation |
|
|
|
// Callbacks |
|
STDMETHOD(GetCallback)(THIS_ |
|
DOUBLE Position, // Position from which to find callbacks |
|
DWORD Flags, // Callback search flags |
|
DOUBLE *pCallbackPosition, // Returns the position of the callback |
|
LPVOID *ppCallbackData) PURE; // Returns the callback data pointer |
|
|
|
// Playback |
|
STDMETHOD_(D3DXPLAYBACK_TYPE, GetPlaybackType)(THIS) PURE; |
|
STDMETHOD_(DOUBLE, GetSourceTicksPerSecond)(THIS) PURE; |
|
|
|
// Scale keys |
|
STDMETHOD(GetCompressedData)(THIS_ LPD3DXBUFFER *ppCompressedData) PURE; |
|
|
|
// Callback keys |
|
STDMETHOD_(UINT, GetNumCallbackKeys)(THIS) PURE; |
|
STDMETHOD(GetCallbackKeys)(THIS_ LPD3DXKEY_CALLBACK pCallbackKeys) PURE; |
|
}; |
|
|
|
|
|
//---------------------------------------------------------------------------- |
|
// D3DXPRIORITY_TYPE: |
|
// ------------------ |
|
// This enum defines the type of priority group that a track can be assigned to. |
|
//---------------------------------------------------------------------------- |
|
typedef enum _D3DXPRIORITY_TYPE { |
|
D3DXPRIORITY_LOW = 0, // This track should be blended with all low priority tracks before mixed with the high priority result |
|
D3DXPRIORITY_HIGH = 1, // This track should be blended with all high priority tracks before mixed with the low priority result |
|
|
|
D3DXPRIORITY_FORCE_DWORD = 0x7fffffff, /* force 32-bit size enum */ |
|
} D3DXPRIORITY_TYPE; |
|
|
|
//---------------------------------------------------------------------------- |
|
// D3DXTRACK_DESC: |
|
// --------------- |
|
// This structure describes the mixing information of an animation track. |
|
// The mixing information consists of the current position, speed, and blending |
|
// weight for the track. The Flags field also specifies whether the track is |
|
// low or high priority. Tracks with the same priority are blended together |
|
// and then the two resulting values are blended using the priority blend factor. |
|
// A track also has an animation set (stored separately) associated with it. |
|
//---------------------------------------------------------------------------- |
|
typedef struct _D3DXTRACK_DESC |
|
{ |
|
D3DXPRIORITY_TYPE Priority; |
|
FLOAT Weight; |
|
FLOAT Speed; |
|
DOUBLE Position; |
|
BOOL Enable; |
|
} D3DXTRACK_DESC, *LPD3DXTRACK_DESC; |
|
|
|
//---------------------------------------------------------------------------- |
|
// D3DXEVENT_TYPE: |
|
// --------------- |
|
// This enum defines the type of events keyable via the animation controller. |
|
//---------------------------------------------------------------------------- |
|
typedef enum _D3DXEVENT_TYPE |
|
{ |
|
D3DXEVENT_TRACKSPEED = 0, |
|
D3DXEVENT_TRACKWEIGHT = 1, |
|
D3DXEVENT_TRACKPOSITION = 2, |
|
D3DXEVENT_TRACKENABLE = 3, |
|
D3DXEVENT_PRIORITYBLEND = 4, |
|
|
|
D3DXEVENT_FORCE_DWORD = 0x7fffffff, /* force 32-bit size enum */ |
|
} D3DXEVENT_TYPE; |
|
|
|
//---------------------------------------------------------------------------- |
|
// D3DXTRANSITION_TYPE: |
|
// -------------------- |
|
// This enum defines the type of transtion performed on a event that |
|
// transitions from one value to another. |
|
//---------------------------------------------------------------------------- |
|
typedef enum _D3DXTRANSITION_TYPE { |
|
D3DXTRANSITION_LINEAR = 0x000, // Linear transition from one value to the next |
|
D3DXTRANSITION_EASEINEASEOUT = 0x001, // Ease-In Ease-Out spline transtion from one value to the next |
|
|
|
D3DXTRANSITION_FORCE_DWORD = 0x7fffffff, /* force 32-bit size enum */ |
|
} D3DXTRANSITION_TYPE; |
|
|
|
//---------------------------------------------------------------------------- |
|
// D3DXEVENT_DESC: |
|
// --------------- |
|
// This structure describes a animation controller event. |
|
// It gives the event's type, track (if the event is a track event), global |
|
// start time, duration, transition method, and target value. |
|
//---------------------------------------------------------------------------- |
|
typedef struct _D3DXEVENT_DESC |
|
{ |
|
D3DXEVENT_TYPE Type; |
|
UINT Track; |
|
DOUBLE StartTime; |
|
DOUBLE Duration; |
|
D3DXTRANSITION_TYPE Transition; |
|
union |
|
{ |
|
FLOAT Weight; |
|
FLOAT Speed; |
|
DOUBLE Position; |
|
BOOL Enable; |
|
}; |
|
} D3DXEVENT_DESC, *LPD3DXEVENT_DESC; |
|
|
|
//---------------------------------------------------------------------------- |
|
// D3DXEVENTHANDLE: |
|
// ---------------- |
|
// Handle values used to efficiently reference animation controller events. |
|
//---------------------------------------------------------------------------- |
|
typedef DWORD D3DXEVENTHANDLE; |
|
typedef D3DXEVENTHANDLE *LPD3DXEVENTHANDLE; |
|
|
|
|
|
//---------------------------------------------------------------------------- |
|
// ID3DXAnimationCallbackHandler: |
|
// ------------------------------ |
|
// This interface is intended to be implemented by the application, and can |
|
// be used to handle callbacks in animation sets generated when |
|
// ID3DXAnimationController::AdvanceTime() is called. |
|
//---------------------------------------------------------------------------- |
|
typedef interface ID3DXAnimationCallbackHandler ID3DXAnimationCallbackHandler; |
|
typedef interface ID3DXAnimationCallbackHandler *LPD3DXANIMATIONCALLBACKHANDLER; |
|
|
|
#undef INTERFACE |
|
#define INTERFACE ID3DXAnimationCallbackHandler |
|
|
|
DECLARE_INTERFACE(ID3DXAnimationCallbackHandler) |
|
{ |
|
//---------------------------------------------------------------------------- |
|
// ID3DXAnimationCallbackHandler::HandleCallback: |
|
// ---------------------------------------------- |
|
// This method gets called when a callback occurs for an animation set in one |
|
// of the tracks during the ID3DXAnimationController::AdvanceTime() call. |
|
// |
|
// Parameters: |
|
// Track |
|
// Index of the track on which the callback occured. |
|
// pCallbackData |
|
// Pointer to user owned callback data. |
|
// |
|
//---------------------------------------------------------------------------- |
|
STDMETHOD(HandleCallback)(THIS_ UINT Track, LPVOID pCallbackData) PURE; |
|
}; |
|
|
|
|
|
//---------------------------------------------------------------------------- |
|
// ID3DXAnimationController: |
|
// ------------------------- |
|
// This interface implements the main animation functionality. It connects |
|
// animation sets with the transform frames that are being animated. Allows |
|
// mixing multiple animations for blended animations or for transistions |
|
// It adds also has methods to modify blending parameters over time to |
|
// enable smooth transistions and other effects. |
|
//---------------------------------------------------------------------------- |
|
typedef interface ID3DXAnimationController ID3DXAnimationController; |
|
typedef interface ID3DXAnimationController *LPD3DXANIMATIONCONTROLLER; |
|
|
|
#undef INTERFACE |
|
#define INTERFACE ID3DXAnimationController |
|
|
|
DECLARE_INTERFACE_(ID3DXAnimationController, IUnknown) |
|
{ |
|
// IUnknown |
|
STDMETHOD(QueryInterface)(THIS_ REFIID iid, LPVOID *ppv) PURE; |
|
STDMETHOD_(ULONG, AddRef)(THIS) PURE; |
|
STDMETHOD_(ULONG, Release)(THIS) PURE; |
|
|
|
// Max sizes |
|
STDMETHOD_(UINT, GetMaxNumAnimationOutputs)(THIS) PURE; |
|
STDMETHOD_(UINT, GetMaxNumAnimationSets)(THIS) PURE; |
|
STDMETHOD_(UINT, GetMaxNumTracks)(THIS) PURE; |
|
STDMETHOD_(UINT, GetMaxNumEvents)(THIS) PURE; |
|
|
|
// Animation output registration |
|
STDMETHOD(RegisterAnimationOutput)(THIS_ |
|
LPCSTR pName, |
|
D3DXMATRIX *pMatrix, |
|
D3DXVECTOR3 *pScale, |
|
D3DXQUATERNION *pRotation, |
|
D3DXVECTOR3 *pTranslation) PURE; |
|
|
|
// Animation set registration |
|
STDMETHOD(RegisterAnimationSet)(THIS_ LPD3DXANIMATIONSET pAnimSet) PURE; |
|
STDMETHOD(UnregisterAnimationSet)(THIS_ LPD3DXANIMATIONSET pAnimSet) PURE; |
|
|
|
STDMETHOD_(UINT, GetNumAnimationSets)(THIS) PURE; |
|
STDMETHOD(GetAnimationSet)(THIS_ UINT Index, LPD3DXANIMATIONSET *ppAnimationSet) PURE; |
|
STDMETHOD(GetAnimationSetByName)(THIS_ LPCSTR szName, LPD3DXANIMATIONSET *ppAnimationSet) PURE; |
|
|
|
// Global time |
|
STDMETHOD(AdvanceTime)(THIS_ DOUBLE TimeDelta, LPD3DXANIMATIONCALLBACKHANDLER pCallbackHandler) PURE; |
|
STDMETHOD(ResetTime)(THIS) PURE; |
|
STDMETHOD_(DOUBLE, GetTime)(THIS) PURE; |
|
|
|
// Tracks |
|
STDMETHOD(SetTrackAnimationSet)(THIS_ UINT Track, LPD3DXANIMATIONSET pAnimSet) PURE; |
|
STDMETHOD(GetTrackAnimationSet)(THIS_ UINT Track, LPD3DXANIMATIONSET *ppAnimSet) PURE; |
|
|
|
STDMETHOD(SetTrackPriority)(THIS_ UINT Track, D3DXPRIORITY_TYPE Priority) PURE; |
|
|
|
STDMETHOD(SetTrackSpeed)(THIS_ UINT Track, FLOAT Speed) PURE; |
|
STDMETHOD(SetTrackWeight)(THIS_ UINT Track, FLOAT Weight) PURE; |
|
STDMETHOD(SetTrackPosition)(THIS_ UINT Track, DOUBLE Position) PURE; |
|
STDMETHOD(SetTrackEnable)(THIS_ UINT Track, BOOL Enable) PURE; |
|
|
|
STDMETHOD(SetTrackDesc)(THIS_ UINT Track, LPD3DXTRACK_DESC pDesc) PURE; |
|
STDMETHOD(GetTrackDesc)(THIS_ UINT Track, LPD3DXTRACK_DESC pDesc) PURE; |
|
|
|
// Priority blending |
|
STDMETHOD(SetPriorityBlend)(THIS_ FLOAT BlendWeight) PURE; |
|
STDMETHOD_(FLOAT, GetPriorityBlend)(THIS) PURE; |
|
|
|
// Event keying |
|
STDMETHOD_(D3DXEVENTHANDLE, KeyTrackSpeed)(THIS_ UINT Track, FLOAT NewSpeed, DOUBLE StartTime, DOUBLE Duration, D3DXTRANSITION_TYPE Transition) PURE; |
|
STDMETHOD_(D3DXEVENTHANDLE, KeyTrackWeight)(THIS_ UINT Track, FLOAT NewWeight, DOUBLE StartTime, DOUBLE Duration, D3DXTRANSITION_TYPE Transition) PURE; |
|
STDMETHOD_(D3DXEVENTHANDLE, KeyTrackPosition)(THIS_ UINT Track, DOUBLE NewPosition, DOUBLE StartTime) PURE; |
|
STDMETHOD_(D3DXEVENTHANDLE, KeyTrackEnable)(THIS_ UINT Track, BOOL NewEnable, DOUBLE StartTime) PURE; |
|
|
|
STDMETHOD_(D3DXEVENTHANDLE, KeyPriorityBlend)(THIS_ FLOAT NewBlendWeight, DOUBLE StartTime, DOUBLE Duration, D3DXTRANSITION_TYPE Transition) PURE; |
|
|
|
// Event unkeying |
|
STDMETHOD(UnkeyEvent)(THIS_ D3DXEVENTHANDLE hEvent) PURE; |
|
|
|
STDMETHOD(UnkeyAllTrackEvents)(THIS_ UINT Track) PURE; |
|
STDMETHOD(UnkeyAllPriorityBlends)(THIS) PURE; |
|
|
|
// Event enumeration |
|
STDMETHOD_(D3DXEVENTHANDLE, GetCurrentTrackEvent)(THIS_ UINT Track, D3DXEVENT_TYPE EventType) PURE; |
|
STDMETHOD_(D3DXEVENTHANDLE, GetCurrentPriorityBlend)(THIS) PURE; |
|
|
|
STDMETHOD_(D3DXEVENTHANDLE, GetUpcomingTrackEvent)(THIS_ UINT Track, D3DXEVENTHANDLE hEvent) PURE; |
|
STDMETHOD_(D3DXEVENTHANDLE, GetUpcomingPriorityBlend)(THIS_ D3DXEVENTHANDLE hEvent) PURE; |
|
|
|
STDMETHOD(ValidateEvent)(THIS_ D3DXEVENTHANDLE hEvent) PURE; |
|
|
|
STDMETHOD(GetEventDesc)(THIS_ D3DXEVENTHANDLE hEvent, LPD3DXEVENT_DESC pDesc) PURE; |
|
|
|
// Cloning |
|
STDMETHOD(CloneAnimationController)(THIS_ |
|
UINT MaxNumAnimationOutputs, |
|
UINT MaxNumAnimationSets, |
|
UINT MaxNumTracks, |
|
UINT MaxNumEvents, |
|
LPD3DXANIMATIONCONTROLLER *ppAnimController) PURE; |
|
}; |
|
|
|
#ifdef __cplusplus |
|
extern "C" { |
|
#endif //__cplusplus |
|
|
|
|
|
//---------------------------------------------------------------------------- |
|
// D3DXLoadMeshHierarchyFromX: |
|
// --------------------------- |
|
// Loads the first frame hierarchy in a .X file. |
|
// |
|
// Parameters: |
|
// Filename |
|
// Name of the .X file |
|
// MeshOptions |
|
// Mesh creation options for meshes in the file (see d3dx9mesh.h) |
|
// pD3DDevice |
|
// D3D9 device on which meshes in the file are created in |
|
// pAlloc |
|
// Allocation interface used to allocate nodes of the frame hierarchy |
|
// pUserDataLoader |
|
// Application provided interface to allow loading of user data |
|
// ppFrameHierarchy |
|
// Returns root node pointer of the loaded frame hierarchy |
|
// ppAnimController |
|
// Returns pointer to an animation controller corresponding to animation |
|
// in the .X file. This is created with default max tracks and events |
|
// |
|
//---------------------------------------------------------------------------- |
|
HRESULT WINAPI |
|
D3DXLoadMeshHierarchyFromXA |
|
( |
|
LPCSTR Filename, |
|
DWORD MeshOptions, |
|
LPDIRECT3DDEVICE9 pD3DDevice, |
|
LPD3DXALLOCATEHIERARCHY pAlloc, |
|
LPD3DXLOADUSERDATA pUserDataLoader, |
|
LPD3DXFRAME *ppFrameHierarchy, |
|
LPD3DXANIMATIONCONTROLLER *ppAnimController |
|
); |
|
|
|
HRESULT WINAPI |
|
D3DXLoadMeshHierarchyFromXW |
|
( |
|
LPCWSTR Filename, |
|
DWORD MeshOptions, |
|
LPDIRECT3DDEVICE9 pD3DDevice, |
|
LPD3DXALLOCATEHIERARCHY pAlloc, |
|
LPD3DXLOADUSERDATA pUserDataLoader, |
|
LPD3DXFRAME *ppFrameHierarchy, |
|
LPD3DXANIMATIONCONTROLLER *ppAnimController |
|
); |
|
|
|
#ifdef UNICODE |
|
#define D3DXLoadMeshHierarchyFromX D3DXLoadMeshHierarchyFromXW |
|
#else |
|
#define D3DXLoadMeshHierarchyFromX D3DXLoadMeshHierarchyFromXA |
|
#endif |
|
|
|
HRESULT WINAPI |
|
D3DXLoadMeshHierarchyFromXInMemory |
|
( |
|
LPCVOID Memory, |
|
DWORD SizeOfMemory, |
|
DWORD MeshOptions, |
|
LPDIRECT3DDEVICE9 pD3DDevice, |
|
LPD3DXALLOCATEHIERARCHY pAlloc, |
|
LPD3DXLOADUSERDATA pUserDataLoader, |
|
LPD3DXFRAME *ppFrameHierarchy, |
|
LPD3DXANIMATIONCONTROLLER *ppAnimController |
|
); |
|
|
|
//---------------------------------------------------------------------------- |
|
// D3DXSaveMeshHierarchyToFile: |
|
// ---------------------------- |
|
// Creates a .X file and saves the mesh hierarchy and corresponding animations |
|
// in it |
|
// |
|
// Parameters: |
|
// Filename |
|
// Name of the .X file |
|
// XFormat |
|
// Format of the .X file (text or binary, compressed or not, etc) |
|
// pFrameRoot |
|
// Root node of the hierarchy to be saved |
|
// pAnimController |
|
// The animation controller whose animation sets are to be stored |
|
// pUserDataSaver |
|
// Application provided interface to allow adding of user data to |
|
// data objects saved to .X file |
|
// |
|
//---------------------------------------------------------------------------- |
|
HRESULT WINAPI |
|
D3DXSaveMeshHierarchyToFileA |
|
( |
|
LPCSTR Filename, |
|
DWORD XFormat, |
|
CONST D3DXFRAME *pFrameRoot, |
|
LPD3DXANIMATIONCONTROLLER pAnimcontroller, |
|
LPD3DXSAVEUSERDATA pUserDataSaver |
|
); |
|
|
|
HRESULT WINAPI |
|
D3DXSaveMeshHierarchyToFileW |
|
( |
|
LPCWSTR Filename, |
|
DWORD XFormat, |
|
CONST D3DXFRAME *pFrameRoot, |
|
LPD3DXANIMATIONCONTROLLER pAnimController, |
|
LPD3DXSAVEUSERDATA pUserDataSaver |
|
); |
|
|
|
#ifdef UNICODE |
|
#define D3DXSaveMeshHierarchyToFile D3DXSaveMeshHierarchyToFileW |
|
#else |
|
#define D3DXSaveMeshHierarchyToFile D3DXSaveMeshHierarchyToFileA |
|
#endif |
|
|
|
//---------------------------------------------------------------------------- |
|
// D3DXFrameDestroy: |
|
// ----------------- |
|
// Destroys the subtree of frames under the root, including the root |
|
// |
|
// Parameters: |
|
// pFrameRoot |
|
// Pointer to the root node |
|
// pAlloc |
|
// Allocation interface used to de-allocate nodes of the frame hierarchy |
|
// |
|
//---------------------------------------------------------------------------- |
|
HRESULT WINAPI |
|
D3DXFrameDestroy |
|
( |
|
LPD3DXFRAME pFrameRoot, |
|
LPD3DXALLOCATEHIERARCHY pAlloc |
|
); |
|
|
|
//---------------------------------------------------------------------------- |
|
// D3DXFrameAppendChild: |
|
// --------------------- |
|
// Add a child frame to a frame |
|
// |
|
// Parameters: |
|
// pFrameParent |
|
// Pointer to the parent node |
|
// pFrameChild |
|
// Pointer to the child node |
|
// |
|
//---------------------------------------------------------------------------- |
|
HRESULT WINAPI |
|
D3DXFrameAppendChild |
|
( |
|
LPD3DXFRAME pFrameParent, |
|
CONST D3DXFRAME *pFrameChild |
|
); |
|
|
|
//---------------------------------------------------------------------------- |
|
// D3DXFrameFind: |
|
// -------------- |
|
// Finds a frame with the given name. Returns NULL if no frame found. |
|
// |
|
// Parameters: |
|
// pFrameRoot |
|
// Pointer to the root node |
|
// Name |
|
// Name of frame to find |
|
// |
|
//---------------------------------------------------------------------------- |
|
LPD3DXFRAME WINAPI |
|
D3DXFrameFind |
|
( |
|
CONST D3DXFRAME *pFrameRoot, |
|
LPCSTR Name |
|
); |
|
|
|
//---------------------------------------------------------------------------- |
|
// D3DXFrameRegisterNamedMatrices: |
|
// ------------------------------- |
|
// Finds all frames that have non-null names and registers each of those frame |
|
// matrices to the given animation controller |
|
// |
|
// Parameters: |
|
// pFrameRoot |
|
// Pointer to the root node |
|
// pAnimController |
|
// Pointer to the animation controller where the matrices are registered |
|
// |
|
//---------------------------------------------------------------------------- |
|
HRESULT WINAPI |
|
D3DXFrameRegisterNamedMatrices |
|
( |
|
LPD3DXFRAME pFrameRoot, |
|
LPD3DXANIMATIONCONTROLLER pAnimController |
|
); |
|
|
|
//---------------------------------------------------------------------------- |
|
// D3DXFrameNumNamedMatrices: |
|
// -------------------------- |
|
// Counts number of frames in a subtree that have non-null names |
|
// |
|
// Parameters: |
|
// pFrameRoot |
|
// Pointer to the root node of the subtree |
|
// Return Value: |
|
// Count of frames |
|
// |
|
//---------------------------------------------------------------------------- |
|
UINT WINAPI |
|
D3DXFrameNumNamedMatrices |
|
( |
|
CONST D3DXFRAME *pFrameRoot |
|
); |
|
|
|
//---------------------------------------------------------------------------- |
|
// D3DXFrameCalculateBoundingSphere: |
|
// --------------------------------- |
|
// Computes the bounding sphere of all the meshes in the frame hierarchy. |
|
// |
|
// Parameters: |
|
// pFrameRoot |
|
// Pointer to the root node |
|
// pObjectCenter |
|
// Returns the center of the bounding sphere |
|
// pObjectRadius |
|
// Returns the radius of the bounding sphere |
|
// |
|
//---------------------------------------------------------------------------- |
|
HRESULT WINAPI |
|
D3DXFrameCalculateBoundingSphere |
|
( |
|
CONST D3DXFRAME *pFrameRoot, |
|
LPD3DXVECTOR3 pObjectCenter, |
|
FLOAT *pObjectRadius |
|
); |
|
|
|
|
|
//---------------------------------------------------------------------------- |
|
// D3DXCreateKeyframedAnimationSet: |
|
// -------------------------------- |
|
// This function creates a compressable keyframed animations set interface. |
|
// |
|
// Parameters: |
|
// pName |
|
// Name of the animation set |
|
// TicksPerSecond |
|
// Number of keyframe ticks that elapse per second |
|
// Playback |
|
// Playback mode of keyframe looping |
|
// NumAnimations |
|
// Number of SRT animations |
|
// NumCallbackKeys |
|
// Number of callback keys |
|
// pCallbackKeys |
|
// Array of callback keys |
|
// ppAnimationSet |
|
// Returns the animation set interface |
|
// |
|
//----------------------------------------------------------------------------- |
|
HRESULT WINAPI |
|
D3DXCreateKeyframedAnimationSet |
|
( |
|
LPCSTR pName, |
|
DOUBLE TicksPerSecond, |
|
D3DXPLAYBACK_TYPE Playback, |
|
UINT NumAnimations, |
|
UINT NumCallbackKeys, |
|
CONST D3DXKEY_CALLBACK *pCallbackKeys, |
|
LPD3DXKEYFRAMEDANIMATIONSET *ppAnimationSet |
|
); |
|
|
|
|
|
//---------------------------------------------------------------------------- |
|
// D3DXCreateCompressedAnimationSet: |
|
// -------------------------------- |
|
// This function creates a compressed animations set interface from |
|
// compressed data. |
|
// |
|
// Parameters: |
|
// pName |
|
// Name of the animation set |
|
// TicksPerSecond |
|
// Number of keyframe ticks that elapse per second |
|
// Playback |
|
// Playback mode of keyframe looping |
|
// pCompressedData |
|
// Compressed animation SRT data |
|
// NumCallbackKeys |
|
// Number of callback keys |
|
// pCallbackKeys |
|
// Array of callback keys |
|
// ppAnimationSet |
|
// Returns the animation set interface |
|
// |
|
//----------------------------------------------------------------------------- |
|
HRESULT WINAPI |
|
D3DXCreateCompressedAnimationSet |
|
( |
|
LPCSTR pName, |
|
DOUBLE TicksPerSecond, |
|
D3DXPLAYBACK_TYPE Playback, |
|
LPD3DXBUFFER pCompressedData, |
|
UINT NumCallbackKeys, |
|
CONST D3DXKEY_CALLBACK *pCallbackKeys, |
|
LPD3DXCOMPRESSEDANIMATIONSET *ppAnimationSet |
|
); |
|
|
|
|
|
//---------------------------------------------------------------------------- |
|
// D3DXCreateAnimationController: |
|
// ------------------------------ |
|
// This function creates an animation controller object. |
|
// |
|
// Parameters: |
|
// MaxNumMatrices |
|
// Maximum number of matrices that can be animated |
|
// MaxNumAnimationSets |
|
// Maximum number of animation sets that can be played |
|
// MaxNumTracks |
|
// Maximum number of animation sets that can be blended |
|
// MaxNumEvents |
|
// Maximum number of outstanding events that can be scheduled at any given time |
|
// ppAnimController |
|
// Returns the animation controller interface |
|
// |
|
//----------------------------------------------------------------------------- |
|
HRESULT WINAPI |
|
D3DXCreateAnimationController |
|
( |
|
UINT MaxNumMatrices, |
|
UINT MaxNumAnimationSets, |
|
UINT MaxNumTracks, |
|
UINT MaxNumEvents, |
|
LPD3DXANIMATIONCONTROLLER *ppAnimController |
|
); |
|
|
|
|
|
#ifdef __cplusplus |
|
} |
|
#endif //__cplusplus |
|
|
|
#endif //__D3DX9ANIM_H__ |
|
|
|
|
|
|