zenilib  0.5.3.0
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
d3dx9anim.h
Go to the documentation of this file.
1 //
3 // Copyright (C) Microsoft Corporation. All Rights Reserved.
4 //
5 // File: d3dx9anim.h
6 // Content: D3DX mesh types and functions
7 //
9 
10 #ifndef __D3DX9ANIM_H__
11 #define __D3DX9ANIM_H__
12 
13 // {698CFB3F-9289-4d95-9A57-33A94B5A65F9}
14 DEFINE_GUID(IID_ID3DXAnimationSet,
15 0x698cfb3f, 0x9289, 0x4d95, 0x9a, 0x57, 0x33, 0xa9, 0x4b, 0x5a, 0x65, 0xf9);
16 
17 // {FA4E8E3A-9786-407d-8B4C-5995893764AF}
18 DEFINE_GUID(IID_ID3DXKeyframedAnimationSet,
19 0xfa4e8e3a, 0x9786, 0x407d, 0x8b, 0x4c, 0x59, 0x95, 0x89, 0x37, 0x64, 0xaf);
20 
21 // {6CC2480D-3808-4739-9F88-DE49FACD8D4C}
22 DEFINE_GUID(IID_ID3DXCompressedAnimationSet,
23 0x6cc2480d, 0x3808, 0x4739, 0x9f, 0x88, 0xde, 0x49, 0xfa, 0xcd, 0x8d, 0x4c);
24 
25 // {AC8948EC-F86D-43e2-96DE-31FC35F96D9E}
26 DEFINE_GUID(IID_ID3DXAnimationController,
27 0xac8948ec, 0xf86d, 0x43e2, 0x96, 0xde, 0x31, 0xfc, 0x35, 0xf9, 0x6d, 0x9e);
28 
29 
30 //----------------------------------------------------------------------------
31 // D3DXMESHDATATYPE:
32 // -----------------
33 // This enum defines the type of mesh data present in a MeshData structure.
34 //----------------------------------------------------------------------------
35 typedef enum _D3DXMESHDATATYPE {
36  D3DXMESHTYPE_MESH = 0x001, // Normal ID3DXMesh data
37  D3DXMESHTYPE_PMESH = 0x002, // Progressive Mesh - ID3DXPMesh
38  D3DXMESHTYPE_PATCHMESH = 0x003, // Patch Mesh - ID3DXPatchMesh
39 
40  D3DXMESHTYPE_FORCE_DWORD = 0x7fffffff, /* force 32-bit size enum */
42 
43 //----------------------------------------------------------------------------
44 // D3DXMESHDATA:
45 // -------------
46 // This struct encapsulates a the mesh data that can be present in a mesh
47 // container. The supported mesh types are pMesh, pPMesh, pPatchMesh.
48 // The valid way to access this is determined by the Type enum.
49 //----------------------------------------------------------------------------
50 typedef struct _D3DXMESHDATA
51 {
53 
54  // current mesh data interface
55  union
56  {
60  };
62 
63 //----------------------------------------------------------------------------
64 // D3DXMESHCONTAINER:
65 // ------------------
66 // This struct encapsulates a mesh object in a transformation frame
67 // hierarchy. The app can derive from this structure to add other app specific
68 // data to this.
69 //----------------------------------------------------------------------------
70 typedef struct _D3DXMESHCONTAINER
71 {
72  LPSTR Name;
73 
75 
80 
82 
85 
86 //----------------------------------------------------------------------------
87 // D3DXFRAME:
88 // ----------
89 // This struct is the encapsulates a transform frame in a transformation frame
90 // hierarchy. The app can derive from this structure to add other app specific
91 // data to this
92 //----------------------------------------------------------------------------
93 typedef struct _D3DXFRAME
94 {
95  LPSTR Name;
97 
98  LPD3DXMESHCONTAINER pMeshContainer;
99 
103 
104 
105 //----------------------------------------------------------------------------
106 // ID3DXAllocateHierarchy:
107 // -----------------------
108 // This interface is implemented by the application to allocate/free frame and
109 // mesh container objects. Methods on this are called during loading and
110 // destroying frame hierarchies
111 //----------------------------------------------------------------------------
114 
115 #undef INTERFACE
116 #define INTERFACE ID3DXAllocateHierarchy
117 
119 {
120  // ID3DXAllocateHierarchy
121 
122  //------------------------------------------------------------------------
123  // CreateFrame:
124  // ------------
125  // Requests allocation of a frame object.
126  //
127  // Parameters:
128  // Name
129  // Name of the frame to be created
130  // ppNewFrame
131  // Returns the created frame object
132  //
133  //------------------------------------------------------------------------
134  STDMETHOD(CreateFrame)(THIS_ LPCSTR Name,
135  LPD3DXFRAME *ppNewFrame) PURE;
136 
137  //------------------------------------------------------------------------
138  // CreateMeshContainer:
139  // --------------------
140  // Requests allocation of a mesh container object.
141  //
142  // Parameters:
143  // Name
144  // Name of the mesh
145  // pMesh
146  // Pointer to the mesh object if basic polygon data found
147  // pPMesh
148  // Pointer to the progressive mesh object if progressive mesh data found
149  // pPatchMesh
150  // Pointer to the patch mesh object if patch data found
151  // pMaterials
152  // Array of materials used in the mesh
153  // pEffectInstances
154  // Array of effect instances used in the mesh
155  // NumMaterials
156  // Num elements in the pMaterials array
157  // pAdjacency
158  // Adjacency array for the mesh
159  // pSkinInfo
160  // Pointer to the skininfo object if the mesh is skinned
161  // pBoneNames
162  // Array of names, one for each bone in the skinned mesh.
163  // The numberof bones can be found from the pSkinMesh object
164  // pBoneOffsetMatrices
165  // Array of matrices, one for each bone in the skinned mesh.
166  //
167  //------------------------------------------------------------------------
168  STDMETHOD(CreateMeshContainer)(THIS_
169  LPCSTR Name,
170  CONST D3DXMESHDATA *pMeshData,
171  CONST D3DXMATERIAL *pMaterials,
172  CONST D3DXEFFECTINSTANCE *pEffectInstances,
173  DWORD NumMaterials,
174  CONST DWORD *pAdjacency,
175  LPD3DXSKININFO pSkinInfo,
176  LPD3DXMESHCONTAINER *ppNewMeshContainer) PURE;
177 
178  //------------------------------------------------------------------------
179  // DestroyFrame:
180  // -------------
181  // Requests de-allocation of a frame object.
182  //
183  // Parameters:
184  // pFrameToFree
185  // Pointer to the frame to be de-allocated
186  //
187  //------------------------------------------------------------------------
188  STDMETHOD(DestroyFrame)(THIS_ LPD3DXFRAME pFrameToFree) PURE;
189 
190  //------------------------------------------------------------------------
191  // DestroyMeshContainer:
192  // ---------------------
193  // Requests de-allocation of a mesh container object.
194  //
195  // Parameters:
196  // pMeshContainerToFree
197  // Pointer to the mesh container object to be de-allocated
198  //
199  //------------------------------------------------------------------------
200  STDMETHOD(DestroyMeshContainer)(THIS_ LPD3DXMESHCONTAINER pMeshContainerToFree) PURE;
201 };
202 
203 //----------------------------------------------------------------------------
204 // ID3DXLoadUserData:
205 // ------------------
206 // This interface is implemented by the application to load user data in a .X file
207 // When user data is found, these callbacks will be used to allow the application
208 // to load the data.
209 //----------------------------------------------------------------------------
210 typedef interface ID3DXLoadUserData ID3DXLoadUserData;
212 
213 #undef INTERFACE
214 #define INTERFACE ID3DXLoadUserData
215 
217 {
218  STDMETHOD(LoadTopLevelData)(LPD3DXFILEDATA pXofChildData) PURE;
219 
220  STDMETHOD(LoadFrameChildData)(LPD3DXFRAME pFrame,
221  LPD3DXFILEDATA pXofChildData) PURE;
222 
223  STDMETHOD(LoadMeshChildData)(LPD3DXMESHCONTAINER pMeshContainer,
224  LPD3DXFILEDATA pXofChildData) PURE;
225 };
226 
227 //----------------------------------------------------------------------------
228 // ID3DXSaveUserData:
229 // ------------------
230 // This interface is implemented by the application to save user data in a .X file
231 // The callbacks are called for all data saved. The user can then add any
232 // child data objects to the object provided to the callback.
233 //----------------------------------------------------------------------------
234 typedef interface ID3DXSaveUserData ID3DXSaveUserData;
236 
237 #undef INTERFACE
238 #define INTERFACE ID3DXSaveUserData
239 
241 {
242  STDMETHOD(AddFrameChildData)(CONST D3DXFRAME *pFrame,
243  LPD3DXFILESAVEOBJECT pXofSave,
244  LPD3DXFILESAVEDATA pXofFrameData) PURE;
245 
246  STDMETHOD(AddMeshChildData)(CONST D3DXMESHCONTAINER *pMeshContainer,
247  LPD3DXFILESAVEOBJECT pXofSave,
248  LPD3DXFILESAVEDATA pXofMeshData) PURE;
249 
250  // NOTE: this is called once per Save. All top level objects should be added using the
251  // provided interface. One call adds objects before the frame hierarchy, the other after
252  STDMETHOD(AddTopLevelDataObjectsPre)(LPD3DXFILESAVEOBJECT pXofSave) PURE;
253  STDMETHOD(AddTopLevelDataObjectsPost)(LPD3DXFILESAVEOBJECT pXofSave) PURE;
254 
255  // callbacks for the user to register and then save templates to the XFile
256  STDMETHOD(RegisterTemplates)(LPD3DXFILE pXFileApi) PURE;
257  STDMETHOD(SaveTemplates)(LPD3DXFILESAVEOBJECT pXofSave) PURE;
258 };
259 
260 
261 //----------------------------------------------------------------------------
262 // D3DXCALLBACK_SEARCH_FLAGS:
263 // --------------------------
264 // Flags that can be passed into ID3DXAnimationSet::GetCallback.
265 //----------------------------------------------------------------------------
267 {
268  D3DXCALLBACK_SEARCH_EXCLUDING_INITIAL_POSITION = 0x01, // exclude callbacks at the initial position from the search
269  D3DXCALLBACK_SEARCH_BEHIND_INITIAL_POSITION = 0x02, // reverse the callback search direction
270 
273 
274 //----------------------------------------------------------------------------
275 // ID3DXAnimationSet:
276 // ------------------
277 // This interface implements an animation set.
278 //----------------------------------------------------------------------------
281 
282 #undef INTERFACE
283 #define INTERFACE ID3DXAnimationSet
284 
286 {
287  // IUnknown
288  STDMETHOD(QueryInterface)(THIS_ REFIID iid, LPVOID *ppv) PURE;
289  STDMETHOD_(ULONG, AddRef)(THIS) PURE;
290  STDMETHOD_(ULONG, Release)(THIS) PURE;
291 
292  // Name
293  STDMETHOD_(LPCSTR, GetName)(THIS) PURE;
294 
295  // Period
296  STDMETHOD_(DOUBLE, GetPeriod)(THIS) PURE;
297  STDMETHOD_(DOUBLE, GetPeriodicPosition)(THIS_ DOUBLE Position) PURE; // Maps position into animation period
298 
299  // Animation names
300  STDMETHOD_(UINT, GetNumAnimations)(THIS) PURE;
301  STDMETHOD(GetAnimationNameByIndex)(THIS_ UINT Index, LPCSTR *ppName) PURE;
302  STDMETHOD(GetAnimationIndexByName)(THIS_ LPCSTR pName, UINT *pIndex) PURE;
303 
304  // SRT
305  STDMETHOD(GetSRT)(THIS_
306  DOUBLE PeriodicPosition, // Position mapped to period (use GetPeriodicPosition)
307  UINT Animation, // Animation index
308  D3DXVECTOR3 *pScale, // Returns the scale
309  D3DXQUATERNION *pRotation, // Returns the rotation as a quaternion
310  D3DXVECTOR3 *pTranslation) PURE; // Returns the translation
311 
312  // Callbacks
313  STDMETHOD(GetCallback)(THIS_
314  DOUBLE Position, // Position from which to find callbacks
315  DWORD Flags, // Callback search flags
316  DOUBLE *pCallbackPosition, // Returns the position of the callback
317  LPVOID *ppCallbackData) PURE; // Returns the callback data pointer
318 };
319 
320 
321 //----------------------------------------------------------------------------
322 // D3DXPLAYBACK_TYPE:
323 // ------------------
324 // This enum defines the type of animation set loop modes.
325 //----------------------------------------------------------------------------
326 typedef enum _D3DXPLAYBACK_TYPE
327 {
331 
332  D3DXPLAY_FORCE_DWORD = 0x7fffffff, /* force 32-bit size enum */
334 
335 
336 //----------------------------------------------------------------------------
337 // D3DXKEY_VECTOR3:
338 // ----------------
339 // This structure describes a vector key for use in keyframe animation.
340 // It specifies a vector Value at a given Time. This is used for scale and
341 // translation keys.
342 //----------------------------------------------------------------------------
343 typedef struct _D3DXKEY_VECTOR3
344 {
345  FLOAT Time;
348 
349 
350 //----------------------------------------------------------------------------
351 // D3DXKEY_QUATERNION:
352 // -------------------
353 // This structure describes a quaternion key for use in keyframe animation.
354 // It specifies a quaternion Value at a given Time. This is used for rotation
355 // keys.
356 //----------------------------------------------------------------------------
357 typedef struct _D3DXKEY_QUATERNION
358 {
359  FLOAT Time;
362 
363 
364 //----------------------------------------------------------------------------
365 // D3DXKEY_CALLBACK:
366 // -----------------
367 // This structure describes an callback key for use in keyframe animation.
368 // It specifies a pointer to user data at a given Time.
369 //----------------------------------------------------------------------------
370 typedef struct _D3DXKEY_CALLBACK
371 {
372  FLOAT Time;
375 
376 
377 //----------------------------------------------------------------------------
378 // D3DXCOMPRESSION_FLAGS:
379 // ----------------------
380 // Flags that can be passed into ID3DXKeyframedAnimationSet::Compress.
381 //----------------------------------------------------------------------------
383 {
385 
388 
389 
390 //----------------------------------------------------------------------------
391 // ID3DXKeyframedAnimationSet:
392 // ---------------------------
393 // This interface implements a compressable keyframed animation set.
394 //----------------------------------------------------------------------------
397 
398 #undef INTERFACE
399 #define INTERFACE ID3DXKeyframedAnimationSet
400 
402 {
403  // ID3DXAnimationSet
404  STDMETHOD(QueryInterface)(THIS_ REFIID iid, LPVOID *ppv) PURE;
405  STDMETHOD_(ULONG, AddRef)(THIS) PURE;
406  STDMETHOD_(ULONG, Release)(THIS) PURE;
407 
408  // Name
409  STDMETHOD_(LPCSTR, GetName)(THIS) PURE;
410 
411  // Period
412  STDMETHOD_(DOUBLE, GetPeriod)(THIS) PURE;
413  STDMETHOD_(DOUBLE, GetPeriodicPosition)(THIS_ DOUBLE Position) PURE; // Maps position into animation period
414 
415  // Animation names
416  STDMETHOD_(UINT, GetNumAnimations)(THIS) PURE;
417  STDMETHOD(GetAnimationNameByIndex)(THIS_ UINT Index, LPCSTR *ppName) PURE;
418  STDMETHOD(GetAnimationIndexByName)(THIS_ LPCSTR pName, UINT *pIndex) PURE;
419 
420  // SRT
421  STDMETHOD(GetSRT)(THIS_
422  DOUBLE PeriodicPosition, // Position mapped to period (use GetPeriodicPosition)
423  UINT Animation, // Animation index
424  D3DXVECTOR3 *pScale, // Returns the scale
425  D3DXQUATERNION *pRotation, // Returns the rotation as a quaternion
426  D3DXVECTOR3 *pTranslation) PURE; // Returns the translation
427 
428  // Callbacks
429  STDMETHOD(GetCallback)(THIS_
430  DOUBLE Position, // Position from which to find callbacks
431  DWORD Flags, // Callback search flags
432  DOUBLE *pCallbackPosition, // Returns the position of the callback
433  LPVOID *ppCallbackData) PURE; // Returns the callback data pointer
434 
435  // Playback
436  STDMETHOD_(D3DXPLAYBACK_TYPE, GetPlaybackType)(THIS) PURE;
437  STDMETHOD_(DOUBLE, GetSourceTicksPerSecond)(THIS) PURE;
438 
439  // Scale keys
440  STDMETHOD_(UINT, GetNumScaleKeys)(THIS_ UINT Animation) PURE;
441  STDMETHOD(GetScaleKeys)(THIS_ UINT Animation, LPD3DXKEY_VECTOR3 pScaleKeys) PURE;
442  STDMETHOD(GetScaleKey)(THIS_ UINT Animation, UINT Key, LPD3DXKEY_VECTOR3 pScaleKey) PURE;
443  STDMETHOD(SetScaleKey)(THIS_ UINT Animation, UINT Key, LPD3DXKEY_VECTOR3 pScaleKey) PURE;
444 
445  // Rotation keys
446  STDMETHOD_(UINT, GetNumRotationKeys)(THIS_ UINT Animation) PURE;
447  STDMETHOD(GetRotationKeys)(THIS_ UINT Animation, LPD3DXKEY_QUATERNION pRotationKeys) PURE;
448  STDMETHOD(GetRotationKey)(THIS_ UINT Animation, UINT Key, LPD3DXKEY_QUATERNION pRotationKey) PURE;
449  STDMETHOD(SetRotationKey)(THIS_ UINT Animation, UINT Key, LPD3DXKEY_QUATERNION pRotationKey) PURE;
450 
451  // Translation keys
452  STDMETHOD_(UINT, GetNumTranslationKeys)(THIS_ UINT Animation) PURE;
453  STDMETHOD(GetTranslationKeys)(THIS_ UINT Animation, LPD3DXKEY_VECTOR3 pTranslationKeys) PURE;
454  STDMETHOD(GetTranslationKey)(THIS_ UINT Animation, UINT Key, LPD3DXKEY_VECTOR3 pTranslationKey) PURE;
455  STDMETHOD(SetTranslationKey)(THIS_ UINT Animation, UINT Key, LPD3DXKEY_VECTOR3 pTranslationKey) PURE;
456 
457  // Callback keys
458  STDMETHOD_(UINT, GetNumCallbackKeys)(THIS) PURE;
459  STDMETHOD(GetCallbackKeys)(THIS_ LPD3DXKEY_CALLBACK pCallbackKeys) PURE;
460  STDMETHOD(GetCallbackKey)(THIS_ UINT Key, LPD3DXKEY_CALLBACK pCallbackKey) PURE;
461  STDMETHOD(SetCallbackKey)(THIS_ UINT Key, LPD3DXKEY_CALLBACK pCallbackKey) PURE;
462 
463  // Key removal methods. These are slow, and should not be used once the animation starts playing
464  STDMETHOD(UnregisterScaleKey)(THIS_ UINT Animation, UINT Key) PURE;
465  STDMETHOD(UnregisterRotationKey)(THIS_ UINT Animation, UINT Key) PURE;
466  STDMETHOD(UnregisterTranslationKey)(THIS_ UINT Animation, UINT Key) PURE;
467 
468  // One-time animaton SRT keyframe registration
469  STDMETHOD(RegisterAnimationSRTKeys)(THIS_
470  LPCSTR pName, // Animation name
471  UINT NumScaleKeys, // Number of scale keys
472  UINT NumRotationKeys, // Number of rotation keys
473  UINT NumTranslationKeys, // Number of translation keys
474  CONST D3DXKEY_VECTOR3 *pScaleKeys, // Array of scale keys
475  CONST D3DXKEY_QUATERNION *pRotationKeys, // Array of rotation keys
476  CONST D3DXKEY_VECTOR3 *pTranslationKeys, // Array of translation keys
477  DWORD *pAnimationIndex) PURE; // Returns the animation index
478 
479  // Compression
480  STDMETHOD(Compress)(THIS_
481  DWORD Flags, // Compression flags (use D3DXCOMPRESS_STRONG for better results)
482  FLOAT Lossiness, // Compression loss ratio in the [0, 1] range
483  LPD3DXFRAME pHierarchy, // Frame hierarchy (optional)
484  LPD3DXBUFFER *ppCompressedData) PURE; // Returns the compressed animation set
485 
486  STDMETHOD(UnregisterAnimation)(THIS_ UINT Index) PURE;
487 };
488 
489 
490 //----------------------------------------------------------------------------
491 // ID3DXCompressedAnimationSet:
492 // ----------------------------
493 // This interface implements a compressed keyframed animation set.
494 //----------------------------------------------------------------------------
497 
498 #undef INTERFACE
499 #define INTERFACE ID3DXCompressedAnimationSet
500 
502 {
503  // ID3DXAnimationSet
504  STDMETHOD(QueryInterface)(THIS_ REFIID iid, LPVOID *ppv) PURE;
505  STDMETHOD_(ULONG, AddRef)(THIS) PURE;
506  STDMETHOD_(ULONG, Release)(THIS) PURE;
507 
508  // Name
509  STDMETHOD_(LPCSTR, GetName)(THIS) PURE;
510 
511  // Period
512  STDMETHOD_(DOUBLE, GetPeriod)(THIS) PURE;
513  STDMETHOD_(DOUBLE, GetPeriodicPosition)(THIS_ DOUBLE Position) PURE; // Maps position into animation period
514 
515  // Animation names
516  STDMETHOD_(UINT, GetNumAnimations)(THIS) PURE;
517  STDMETHOD(GetAnimationNameByIndex)(THIS_ UINT Index, LPCSTR *ppName) PURE;
518  STDMETHOD(GetAnimationIndexByName)(THIS_ LPCSTR pName, UINT *pIndex) PURE;
519 
520  // SRT
521  STDMETHOD(GetSRT)(THIS_
522  DOUBLE PeriodicPosition, // Position mapped to period (use GetPeriodicPosition)
523  UINT Animation, // Animation index
524  D3DXVECTOR3 *pScale, // Returns the scale
525  D3DXQUATERNION *pRotation, // Returns the rotation as a quaternion
526  D3DXVECTOR3 *pTranslation) PURE; // Returns the translation
527 
528  // Callbacks
529  STDMETHOD(GetCallback)(THIS_
530  DOUBLE Position, // Position from which to find callbacks
531  DWORD Flags, // Callback search flags
532  DOUBLE *pCallbackPosition, // Returns the position of the callback
533  LPVOID *ppCallbackData) PURE; // Returns the callback data pointer
534 
535  // Playback
536  STDMETHOD_(D3DXPLAYBACK_TYPE, GetPlaybackType)(THIS) PURE;
537  STDMETHOD_(DOUBLE, GetSourceTicksPerSecond)(THIS) PURE;
538 
539  // Scale keys
540  STDMETHOD(GetCompressedData)(THIS_ LPD3DXBUFFER *ppCompressedData) PURE;
541 
542  // Callback keys
543  STDMETHOD_(UINT, GetNumCallbackKeys)(THIS) PURE;
544  STDMETHOD(GetCallbackKeys)(THIS_ LPD3DXKEY_CALLBACK pCallbackKeys) PURE;
545 };
546 
547 
548 //----------------------------------------------------------------------------
549 // D3DXPRIORITY_TYPE:
550 // ------------------
551 // This enum defines the type of priority group that a track can be assigned to.
552 //----------------------------------------------------------------------------
553 typedef enum _D3DXPRIORITY_TYPE {
554  D3DXPRIORITY_LOW = 0, // This track should be blended with all low priority tracks before mixed with the high priority result
555  D3DXPRIORITY_HIGH = 1, // This track should be blended with all high priority tracks before mixed with the low priority result
556 
557  D3DXPRIORITY_FORCE_DWORD = 0x7fffffff, /* force 32-bit size enum */
559 
560 //----------------------------------------------------------------------------
561 // D3DXTRACK_DESC:
562 // ---------------
563 // This structure describes the mixing information of an animation track.
564 // The mixing information consists of the current position, speed, and blending
565 // weight for the track. The Flags field also specifies whether the track is
566 // low or high priority. Tracks with the same priority are blended together
567 // and then the two resulting values are blended using the priority blend factor.
568 // A track also has an animation set (stored separately) associated with it.
569 //----------------------------------------------------------------------------
570 typedef struct _D3DXTRACK_DESC
571 {
573  FLOAT Weight;
574  FLOAT Speed;
575  DOUBLE Position;
578 
579 //----------------------------------------------------------------------------
580 // D3DXEVENT_TYPE:
581 // ---------------
582 // This enum defines the type of events keyable via the animation controller.
583 //----------------------------------------------------------------------------
584 typedef enum _D3DXEVENT_TYPE
585 {
591 
592  D3DXEVENT_FORCE_DWORD = 0x7fffffff, /* force 32-bit size enum */
594 
595 //----------------------------------------------------------------------------
596 // D3DXTRANSITION_TYPE:
597 // --------------------
598 // This enum defines the type of transtion performed on a event that
599 // transitions from one value to another.
600 //----------------------------------------------------------------------------
601 typedef enum _D3DXTRANSITION_TYPE {
602  D3DXTRANSITION_LINEAR = 0x000, // Linear transition from one value to the next
603  D3DXTRANSITION_EASEINEASEOUT = 0x001, // Ease-In Ease-Out spline transtion from one value to the next
604 
605  D3DXTRANSITION_FORCE_DWORD = 0x7fffffff, /* force 32-bit size enum */
607 
608 //----------------------------------------------------------------------------
609 // D3DXEVENT_DESC:
610 // ---------------
611 // This structure describes a animation controller event.
612 // It gives the event's type, track (if the event is a track event), global
613 // start time, duration, transition method, and target value.
614 //----------------------------------------------------------------------------
615 typedef struct _D3DXEVENT_DESC
616 {
619  DOUBLE StartTime;
620  DOUBLE Duration;
622  union
623  {
624  FLOAT Weight;
625  FLOAT Speed;
626  DOUBLE Position;
628  };
630 
631 //----------------------------------------------------------------------------
632 // D3DXEVENTHANDLE:
633 // ----------------
634 // Handle values used to efficiently reference animation controller events.
635 //----------------------------------------------------------------------------
638 
639 
640 //----------------------------------------------------------------------------
641 // ID3DXAnimationCallbackHandler:
642 // ------------------------------
643 // This interface is intended to be implemented by the application, and can
644 // be used to handle callbacks in animation sets generated when
645 // ID3DXAnimationController::AdvanceTime() is called.
646 //----------------------------------------------------------------------------
649 
650 #undef INTERFACE
651 #define INTERFACE ID3DXAnimationCallbackHandler
652 
654 {
655  //----------------------------------------------------------------------------
656  // ID3DXAnimationCallbackHandler::HandleCallback:
657  // ----------------------------------------------
658  // This method gets called when a callback occurs for an animation set in one
659  // of the tracks during the ID3DXAnimationController::AdvanceTime() call.
660  //
661  // Parameters:
662  // Track
663  // Index of the track on which the callback occured.
664  // pCallbackData
665  // Pointer to user owned callback data.
666  //
667  //----------------------------------------------------------------------------
668  STDMETHOD(HandleCallback)(THIS_ UINT Track, LPVOID pCallbackData) PURE;
669 };
670 
671 
672 //----------------------------------------------------------------------------
673 // ID3DXAnimationController:
674 // -------------------------
675 // This interface implements the main animation functionality. It connects
676 // animation sets with the transform frames that are being animated. Allows
677 // mixing multiple animations for blended animations or for transistions
678 // It adds also has methods to modify blending parameters over time to
679 // enable smooth transistions and other effects.
680 //----------------------------------------------------------------------------
683 
684 #undef INTERFACE
685 #define INTERFACE ID3DXAnimationController
686 
688 {
689  // IUnknown
690  STDMETHOD(QueryInterface)(THIS_ REFIID iid, LPVOID *ppv) PURE;
691  STDMETHOD_(ULONG, AddRef)(THIS) PURE;
692  STDMETHOD_(ULONG, Release)(THIS) PURE;
693 
694  // Max sizes
695  STDMETHOD_(UINT, GetMaxNumAnimationOutputs)(THIS) PURE;
696  STDMETHOD_(UINT, GetMaxNumAnimationSets)(THIS) PURE;
697  STDMETHOD_(UINT, GetMaxNumTracks)(THIS) PURE;
698  STDMETHOD_(UINT, GetMaxNumEvents)(THIS) PURE;
699 
700  // Animation output registration
701  STDMETHOD(RegisterAnimationOutput)(THIS_
702  LPCSTR pName,
703  D3DXMATRIX *pMatrix,
704  D3DXVECTOR3 *pScale,
705  D3DXQUATERNION *pRotation,
706  D3DXVECTOR3 *pTranslation) PURE;
707 
708  // Animation set registration
709  STDMETHOD(RegisterAnimationSet)(THIS_ LPD3DXANIMATIONSET pAnimSet) PURE;
710  STDMETHOD(UnregisterAnimationSet)(THIS_ LPD3DXANIMATIONSET pAnimSet) PURE;
711 
712  STDMETHOD_(UINT, GetNumAnimationSets)(THIS) PURE;
713  STDMETHOD(GetAnimationSet)(THIS_ UINT Index, LPD3DXANIMATIONSET *ppAnimationSet) PURE;
714  STDMETHOD(GetAnimationSetByName)(THIS_ LPCSTR szName, LPD3DXANIMATIONSET *ppAnimationSet) PURE;
715 
716  // Global time
717  STDMETHOD(AdvanceTime)(THIS_ DOUBLE TimeDelta, LPD3DXANIMATIONCALLBACKHANDLER pCallbackHandler) PURE;
718  STDMETHOD(ResetTime)(THIS) PURE;
719  STDMETHOD_(DOUBLE, GetTime)(THIS) PURE;
720 
721  // Tracks
722  STDMETHOD(SetTrackAnimationSet)(THIS_ UINT Track, LPD3DXANIMATIONSET pAnimSet) PURE;
723  STDMETHOD(GetTrackAnimationSet)(THIS_ UINT Track, LPD3DXANIMATIONSET *ppAnimSet) PURE;
724 
725  STDMETHOD(SetTrackPriority)(THIS_ UINT Track, D3DXPRIORITY_TYPE Priority) PURE;
726 
727  STDMETHOD(SetTrackSpeed)(THIS_ UINT Track, FLOAT Speed) PURE;
728  STDMETHOD(SetTrackWeight)(THIS_ UINT Track, FLOAT Weight) PURE;
729  STDMETHOD(SetTrackPosition)(THIS_ UINT Track, DOUBLE Position) PURE;
730  STDMETHOD(SetTrackEnable)(THIS_ UINT Track, BOOL Enable) PURE;
731 
732  STDMETHOD(SetTrackDesc)(THIS_ UINT Track, LPD3DXTRACK_DESC pDesc) PURE;
733  STDMETHOD(GetTrackDesc)(THIS_ UINT Track, LPD3DXTRACK_DESC pDesc) PURE;
734 
735  // Priority blending
736  STDMETHOD(SetPriorityBlend)(THIS_ FLOAT BlendWeight) PURE;
737  STDMETHOD_(FLOAT, GetPriorityBlend)(THIS) PURE;
738 
739  // Event keying
740  STDMETHOD_(D3DXEVENTHANDLE, KeyTrackSpeed)(THIS_ UINT Track, FLOAT NewSpeed, DOUBLE StartTime, DOUBLE Duration, D3DXTRANSITION_TYPE Transition) PURE;
741  STDMETHOD_(D3DXEVENTHANDLE, KeyTrackWeight)(THIS_ UINT Track, FLOAT NewWeight, DOUBLE StartTime, DOUBLE Duration, D3DXTRANSITION_TYPE Transition) PURE;
742  STDMETHOD_(D3DXEVENTHANDLE, KeyTrackPosition)(THIS_ UINT Track, DOUBLE NewPosition, DOUBLE StartTime) PURE;
743  STDMETHOD_(D3DXEVENTHANDLE, KeyTrackEnable)(THIS_ UINT Track, BOOL NewEnable, DOUBLE StartTime) PURE;
744 
745  STDMETHOD_(D3DXEVENTHANDLE, KeyPriorityBlend)(THIS_ FLOAT NewBlendWeight, DOUBLE StartTime, DOUBLE Duration, D3DXTRANSITION_TYPE Transition) PURE;
746 
747  // Event unkeying
748  STDMETHOD(UnkeyEvent)(THIS_ D3DXEVENTHANDLE hEvent) PURE;
749 
750  STDMETHOD(UnkeyAllTrackEvents)(THIS_ UINT Track) PURE;
751  STDMETHOD(UnkeyAllPriorityBlends)(THIS) PURE;
752 
753  // Event enumeration
754  STDMETHOD_(D3DXEVENTHANDLE, GetCurrentTrackEvent)(THIS_ UINT Track, D3DXEVENT_TYPE EventType) PURE;
755  STDMETHOD_(D3DXEVENTHANDLE, GetCurrentPriorityBlend)(THIS) PURE;
756 
757  STDMETHOD_(D3DXEVENTHANDLE, GetUpcomingTrackEvent)(THIS_ UINT Track, D3DXEVENTHANDLE hEvent) PURE;
758  STDMETHOD_(D3DXEVENTHANDLE, GetUpcomingPriorityBlend)(THIS_ D3DXEVENTHANDLE hEvent) PURE;
759 
760  STDMETHOD(ValidateEvent)(THIS_ D3DXEVENTHANDLE hEvent) PURE;
761 
762  STDMETHOD(GetEventDesc)(THIS_ D3DXEVENTHANDLE hEvent, LPD3DXEVENT_DESC pDesc) PURE;
763 
764  // Cloning
765  STDMETHOD(CloneAnimationController)(THIS_
766  UINT MaxNumAnimationOutputs,
767  UINT MaxNumAnimationSets,
768  UINT MaxNumTracks,
769  UINT MaxNumEvents,
770  LPD3DXANIMATIONCONTROLLER *ppAnimController) PURE;
771 };
772 
773 #ifdef __cplusplus
774 extern "C" {
775 #endif //__cplusplus
776 
777 
778 //----------------------------------------------------------------------------
779 // D3DXLoadMeshHierarchyFromX:
780 // ---------------------------
781 // Loads the first frame hierarchy in a .X file.
782 //
783 // Parameters:
784 // Filename
785 // Name of the .X file
786 // MeshOptions
787 // Mesh creation options for meshes in the file (see d3dx9mesh.h)
788 // pD3DDevice
789 // D3D9 device on which meshes in the file are created in
790 // pAlloc
791 // Allocation interface used to allocate nodes of the frame hierarchy
792 // pUserDataLoader
793 // Application provided interface to allow loading of user data
794 // ppFrameHierarchy
795 // Returns root node pointer of the loaded frame hierarchy
796 // ppAnimController
797 // Returns pointer to an animation controller corresponding to animation
798 // in the .X file. This is created with default max tracks and events
799 //
800 //----------------------------------------------------------------------------
801 HRESULT WINAPI
803  (
804  LPCSTR Filename,
805  DWORD MeshOptions,
806  LPDIRECT3DDEVICE9 pD3DDevice,
808  LPD3DXLOADUSERDATA pUserDataLoader,
809  LPD3DXFRAME *ppFrameHierarchy,
810  LPD3DXANIMATIONCONTROLLER *ppAnimController
811  );
812 
813 HRESULT WINAPI
815  (
816  LPCWSTR Filename,
817  DWORD MeshOptions,
818  LPDIRECT3DDEVICE9 pD3DDevice,
820  LPD3DXLOADUSERDATA pUserDataLoader,
821  LPD3DXFRAME *ppFrameHierarchy,
822  LPD3DXANIMATIONCONTROLLER *ppAnimController
823  );
824 
825 #ifdef UNICODE
826 #define D3DXLoadMeshHierarchyFromX D3DXLoadMeshHierarchyFromXW
827 #else
828 #define D3DXLoadMeshHierarchyFromX D3DXLoadMeshHierarchyFromXA
829 #endif
830 
831 HRESULT WINAPI
833  (
834  LPCVOID Memory,
835  DWORD SizeOfMemory,
836  DWORD MeshOptions,
837  LPDIRECT3DDEVICE9 pD3DDevice,
839  LPD3DXLOADUSERDATA pUserDataLoader,
840  LPD3DXFRAME *ppFrameHierarchy,
841  LPD3DXANIMATIONCONTROLLER *ppAnimController
842  );
843 
844 //----------------------------------------------------------------------------
845 // D3DXSaveMeshHierarchyToFile:
846 // ----------------------------
847 // Creates a .X file and saves the mesh hierarchy and corresponding animations
848 // in it
849 //
850 // Parameters:
851 // Filename
852 // Name of the .X file
853 // XFormat
854 // Format of the .X file (text or binary, compressed or not, etc)
855 // pFrameRoot
856 // Root node of the hierarchy to be saved
857 // pAnimController
858 // The animation controller whose animation sets are to be stored
859 // pUserDataSaver
860 // Application provided interface to allow adding of user data to
861 // data objects saved to .X file
862 //
863 //----------------------------------------------------------------------------
864 HRESULT WINAPI
866  (
867  LPCSTR Filename,
868  DWORD XFormat,
869  CONST D3DXFRAME *pFrameRoot,
870  LPD3DXANIMATIONCONTROLLER pAnimcontroller,
871  LPD3DXSAVEUSERDATA pUserDataSaver
872  );
873 
874 HRESULT WINAPI
876  (
877  LPCWSTR Filename,
878  DWORD XFormat,
879  CONST D3DXFRAME *pFrameRoot,
880  LPD3DXANIMATIONCONTROLLER pAnimController,
881  LPD3DXSAVEUSERDATA pUserDataSaver
882  );
883 
884 #ifdef UNICODE
885 #define D3DXSaveMeshHierarchyToFile D3DXSaveMeshHierarchyToFileW
886 #else
887 #define D3DXSaveMeshHierarchyToFile D3DXSaveMeshHierarchyToFileA
888 #endif
889 
890 //----------------------------------------------------------------------------
891 // D3DXFrameDestroy:
892 // -----------------
893 // Destroys the subtree of frames under the root, including the root
894 //
895 // Parameters:
896 // pFrameRoot
897 // Pointer to the root node
898 // pAlloc
899 // Allocation interface used to de-allocate nodes of the frame hierarchy
900 //
901 //----------------------------------------------------------------------------
902 HRESULT WINAPI
904  (
905  LPD3DXFRAME pFrameRoot,
907  );
908 
909 //----------------------------------------------------------------------------
910 // D3DXFrameAppendChild:
911 // ---------------------
912 // Add a child frame to a frame
913 //
914 // Parameters:
915 // pFrameParent
916 // Pointer to the parent node
917 // pFrameChild
918 // Pointer to the child node
919 //
920 //----------------------------------------------------------------------------
921 HRESULT WINAPI
923  (
924  LPD3DXFRAME pFrameParent,
925  CONST D3DXFRAME *pFrameChild
926  );
927 
928 //----------------------------------------------------------------------------
929 // D3DXFrameFind:
930 // --------------
931 // Finds a frame with the given name. Returns NULL if no frame found.
932 //
933 // Parameters:
934 // pFrameRoot
935 // Pointer to the root node
936 // Name
937 // Name of frame to find
938 //
939 //----------------------------------------------------------------------------
940 LPD3DXFRAME WINAPI
942  (
943  CONST D3DXFRAME *pFrameRoot,
944  LPCSTR Name
945  );
946 
947 //----------------------------------------------------------------------------
948 // D3DXFrameRegisterNamedMatrices:
949 // -------------------------------
950 // Finds all frames that have non-null names and registers each of those frame
951 // matrices to the given animation controller
952 //
953 // Parameters:
954 // pFrameRoot
955 // Pointer to the root node
956 // pAnimController
957 // Pointer to the animation controller where the matrices are registered
958 //
959 //----------------------------------------------------------------------------
960 HRESULT WINAPI
962  (
963  LPD3DXFRAME pFrameRoot,
964  LPD3DXANIMATIONCONTROLLER pAnimController
965  );
966 
967 //----------------------------------------------------------------------------
968 // D3DXFrameNumNamedMatrices:
969 // --------------------------
970 // Counts number of frames in a subtree that have non-null names
971 //
972 // Parameters:
973 // pFrameRoot
974 // Pointer to the root node of the subtree
975 // Return Value:
976 // Count of frames
977 //
978 //----------------------------------------------------------------------------
979 UINT WINAPI
981  (
982  CONST D3DXFRAME *pFrameRoot
983  );
984 
985 //----------------------------------------------------------------------------
986 // D3DXFrameCalculateBoundingSphere:
987 // ---------------------------------
988 // Computes the bounding sphere of all the meshes in the frame hierarchy.
989 //
990 // Parameters:
991 // pFrameRoot
992 // Pointer to the root node
993 // pObjectCenter
994 // Returns the center of the bounding sphere
995 // pObjectRadius
996 // Returns the radius of the bounding sphere
997 //
998 //----------------------------------------------------------------------------
999 HRESULT WINAPI
1001  (
1002  CONST D3DXFRAME *pFrameRoot,
1003  LPD3DXVECTOR3 pObjectCenter,
1004  FLOAT *pObjectRadius
1005  );
1006 
1007 
1008 //----------------------------------------------------------------------------
1009 // D3DXCreateKeyframedAnimationSet:
1010 // --------------------------------
1011 // This function creates a compressable keyframed animations set interface.
1012 //
1013 // Parameters:
1014 // pName
1015 // Name of the animation set
1016 // TicksPerSecond
1017 // Number of keyframe ticks that elapse per second
1018 // Playback
1019 // Playback mode of keyframe looping
1020 // NumAnimations
1021 // Number of SRT animations
1022 // NumCallbackKeys
1023 // Number of callback keys
1024 // pCallbackKeys
1025 // Array of callback keys
1026 // ppAnimationSet
1027 // Returns the animation set interface
1028 //
1029 //-----------------------------------------------------------------------------
1030 HRESULT WINAPI
1032  (
1033  LPCSTR pName,
1034  DOUBLE TicksPerSecond,
1036  UINT NumAnimations,
1037  UINT NumCallbackKeys,
1038  CONST D3DXKEY_CALLBACK *pCallbackKeys,
1039  LPD3DXKEYFRAMEDANIMATIONSET *ppAnimationSet
1040  );
1041 
1042 
1043 //----------------------------------------------------------------------------
1044 // D3DXCreateCompressedAnimationSet:
1045 // --------------------------------
1046 // This function creates a compressed animations set interface from
1047 // compressed data.
1048 //
1049 // Parameters:
1050 // pName
1051 // Name of the animation set
1052 // TicksPerSecond
1053 // Number of keyframe ticks that elapse per second
1054 // Playback
1055 // Playback mode of keyframe looping
1056 // pCompressedData
1057 // Compressed animation SRT data
1058 // NumCallbackKeys
1059 // Number of callback keys
1060 // pCallbackKeys
1061 // Array of callback keys
1062 // ppAnimationSet
1063 // Returns the animation set interface
1064 //
1065 //-----------------------------------------------------------------------------
1066 HRESULT WINAPI
1068  (
1069  LPCSTR pName,
1070  DOUBLE TicksPerSecond,
1072  LPD3DXBUFFER pCompressedData,
1073  UINT NumCallbackKeys,
1074  CONST D3DXKEY_CALLBACK *pCallbackKeys,
1075  LPD3DXCOMPRESSEDANIMATIONSET *ppAnimationSet
1076  );
1077 
1078 
1079 //----------------------------------------------------------------------------
1080 // D3DXCreateAnimationController:
1081 // ------------------------------
1082 // This function creates an animation controller object.
1083 //
1084 // Parameters:
1085 // MaxNumMatrices
1086 // Maximum number of matrices that can be animated
1087 // MaxNumAnimationSets
1088 // Maximum number of animation sets that can be played
1089 // MaxNumTracks
1090 // Maximum number of animation sets that can be blended
1091 // MaxNumEvents
1092 // Maximum number of outstanding events that can be scheduled at any given time
1093 // ppAnimController
1094 // Returns the animation controller interface
1095 //
1096 //-----------------------------------------------------------------------------
1097 HRESULT WINAPI
1099  (
1100  UINT MaxNumMatrices,
1101  UINT MaxNumAnimationSets,
1102  UINT MaxNumTracks,
1103  UINT MaxNumEvents,
1104  LPD3DXANIMATIONCONTROLLER *ppAnimController
1105  );
1106 
1107 
1108 #ifdef __cplusplus
1109 }
1110 #endif //__cplusplus
1111 
1112 #endif //__D3DX9ANIM_H__
1113 
1114 
struct _D3DXFRAME * LPD3DXFRAME
_D3DXPLAYBACK_TYPE
Definition: d3dx9anim.h:326
struct _D3DXFRAME * pFrameSibling
Definition: d3dx9anim.h:100
LPD3DXSKININFO pSkinInfo
Definition: d3dx9anim.h:81
struct _D3DXTRACK_DESC * LPD3DXTRACK_DESC
struct IDirect3DDevice9 * LPDIRECT3DDEVICE9
Definition: d3d9.h:587
interface ID3DXSaveUserData ID3DXSaveUserData
Definition: d3dx9anim.h:225
HRESULT WINAPI D3DXCreateCompressedAnimationSet(LPCSTR pName, DOUBLE TicksPerSecond, D3DXPLAYBACK_TYPE Playback, LPD3DXBUFFER pCompressedData, UINT NumCallbackKeys, CONST D3DXKEY_CALLBACK *pCallbackKeys, LPD3DXCOMPRESSEDANIMATIONSET *ppAnimationSet)
D3DXEVENTHANDLE * LPD3DXEVENTHANDLE
Definition: d3dx9anim.h:637
HRESULT WINAPI D3DXLoadMeshHierarchyFromXInMemory(LPCVOID Memory, DWORD SizeOfMemory, DWORD MeshOptions, LPDIRECT3DDEVICE9 pD3DDevice, LPD3DXALLOCATEHIERARCHY pAlloc, LPD3DXLOADUSERDATA pUserDataLoader, LPD3DXFRAME *ppFrameHierarchy, LPD3DXANIMATIONCONTROLLER *ppAnimController)
typedef HRESULT(WINAPI *LPD3DXIMTSIGNALCALLBACK)(CONST D3DXVECTOR2 *uv
enum _D3DXCOMPRESSION_FLAGS D3DXCOMPRESSION_FLAGS
LPD3DXFRAME WINAPI D3DXFrameFind(CONST D3DXFRAME *pFrameRoot, LPCSTR Name)
DOUBLE Position
Definition: d3dx9anim.h:626
LPD3DXPATCHMESH pPatchMesh
Definition: d3dx9anim.h:59
struct _D3DXKEY_CALLBACK D3DXKEY_CALLBACK
HRESULT WINAPI D3DXFrameRegisterNamedMatrices(LPD3DXFRAME pFrameRoot, LPD3DXANIMATIONCONTROLLER pAnimController)
interface ID3DXAnimationController ID3DXAnimationController
Definition: d3dx9anim.h:669
enum _D3DXPRIORITY_TYPE D3DXPRIORITY_TYPE
DOUBLE StartTime
Definition: d3dx9anim.h:619
struct ID3DXPatchMesh * LPD3DXPATCHMESH
Definition: d3dx9mesh.h:148
struct _D3DXKEY_QUATERNION D3DXKEY_QUATERNION
interface ID3DXLoadUserData * LPD3DXLOADUSERDATA
Definition: d3dx9anim.h:211
LPVOID pCallbackData
Definition: d3dx9anim.h:373
D3DXTRANSITION_TYPE Transition
Definition: d3dx9anim.h:621
enum _D3DXEVENT_TYPE D3DXEVENT_TYPE
struct _D3DXKEY_VECTOR3 * LPD3DXKEY_VECTOR3
enum _D3DXPLAYBACK_TYPE D3DXPLAYBACK_TYPE
typedef UINT(WINAPI *PFNWGLGETCONTEXTGPUIDAMDPROC)(HGLRC hglrc)
interface ID3DXSaveUserData * LPD3DXSAVEUSERDATA
Definition: d3dx9anim.h:235
enum _D3DXTRANSITION_TYPE D3DXTRANSITION_TYPE
enum _D3DXCALLBACK_SEARCH_FLAGS D3DXCALLBACK_SEARCH_FLAGS
DECLARE_INTERFACE_(IXAudio2, IUnknown)
Definition: XAudio2.h:425
DWORD * pAdjacency
Definition: d3dx9anim.h:79
struct _D3DXFRAME D3DXFRAME
struct _D3DXEVENT_DESC * LPD3DXEVENT_DESC
HRESULT WINAPI D3DXCreateKeyframedAnimationSet(LPCSTR pName, DOUBLE TicksPerSecond, D3DXPLAYBACK_TYPE Playback, UINT NumAnimations, UINT NumCallbackKeys, CONST D3DXKEY_CALLBACK *pCallbackKeys, LPD3DXKEYFRAMEDANIMATIONSET *ppAnimationSet)
_D3DXPRIORITY_TYPE
Definition: d3dx9anim.h:553
struct _D3DXMESHCONTAINER * pNextMeshContainer
Definition: d3dx9anim.h:83
LPSTR Name
Definition: d3dx9anim.h:95
struct _D3DXEVENT_DESC D3DXEVENT_DESC
struct _D3DXMESHCONTAINER * LPD3DXMESHCONTAINER
struct _D3DXFRAME * pFrameFirstChild
Definition: d3dx9anim.h:101
struct NameRec_ * Name
DWORD D3DXEVENTHANDLE
Definition: d3dx9anim.h:636
interface ID3DXAnimationSet ID3DXAnimationSet
Definition: d3dx9anim.h:279
LPD3DXPMESH pPMesh
Definition: d3dx9anim.h:58
struct ID3DXSkinInfo * LPD3DXSKININFO
Definition: d3dx9mesh.h:147
interface ID3DXAnimationCallbackHandler * LPD3DXANIMATIONCALLBACKHANDLER
Definition: d3dx9anim.h:648
interface ID3DXCompressedAnimationSet ID3DXCompressedAnimationSet
Definition: d3dx9anim.h:487
HRESULT WINAPI D3DXLoadMeshHierarchyFromXW(LPCWSTR Filename, DWORD MeshOptions, LPDIRECT3DDEVICE9 pD3DDevice, LPD3DXALLOCATEHIERARCHY pAlloc, LPD3DXLOADUSERDATA pUserDataLoader, LPD3DXFRAME *ppFrameHierarchy, LPD3DXANIMATIONCONTROLLER *ppAnimController)
interface ID3DXCompressedAnimationSet * LPD3DXCOMPRESSEDANIMATIONSET
Definition: d3dx9anim.h:496
DEFINE_GUID(KSDATAFORMAT_SUBTYPE_PCM, 0x00000001, 0x0000, 0x0010, 0x80, 0x00, 0x00, 0xaa, 0x00, 0x38, 0x9b, 0x71)
UINT WINAPI D3DXFrameNumNamedMatrices(CONST D3DXFRAME *pFrameRoot)
D3DXPRIORITY_TYPE Priority
Definition: d3dx9anim.h:572
interface ID3DXAllocateHierarchy ID3DXAllocateHierarchy
Definition: d3dx9anim.h:112
DECLARE_INTERFACE(IXAudio2Voice)
Definition: XAudio2.h:596
_D3DXMESHDATATYPE
Definition: d3dx9anim.h:35
HRESULT WINAPI D3DXSaveMeshHierarchyToFileA(LPCSTR Filename, DWORD XFormat, CONST D3DXFRAME *pFrameRoot, LPD3DXANIMATIONCONTROLLER pAnimcontroller, LPD3DXSAVEUSERDATA pUserDataSaver)
struct _D3DXMESHDATA * LPD3DXMESHDATA
D3DXMESHDATA MeshData
Definition: d3dx9anim.h:74
LPD3DXEFFECTINSTANCE pEffects
Definition: d3dx9anim.h:77
D3DXQUATERNION Value
Definition: d3dx9anim.h:360
D3DXVECTOR3 Value
Definition: d3dx9anim.h:346
_D3DXEVENT_TYPE
Definition: d3dx9anim.h:584
typedef LPVOID(WINAPI *PFNWGLCREATEIMAGEBUFFERI3DPROC)(HDC hDC
HRESULT WINAPI D3DXCreateAnimationController(UINT MaxNumMatrices, UINT MaxNumAnimationSets, UINT MaxNumTracks, UINT MaxNumEvents, LPD3DXANIMATIONCONTROLLER *ppAnimController)
struct _D3DXTRACK_DESC D3DXTRACK_DESC
interface ID3DXAllocateHierarchy * LPD3DXALLOCATEHIERARCHY
Definition: d3dx9anim.h:113
enum _D3DXMESHDATATYPE D3DXMESHDATATYPE
HRESULT WINAPI D3DXFrameDestroy(LPD3DXFRAME pFrameRoot, LPD3DXALLOCATEHIERARCHY pAlloc)
struct _D3DXMESHDATA D3DXMESHDATA
interface ID3DXAnimationCallbackHandler ID3DXAnimationCallbackHandler
Definition: d3dx9anim.h:647
_D3DXTRANSITION_TYPE
Definition: d3dx9anim.h:601
HRESULT WINAPI D3DXFrameAppendChild(LPD3DXFRAME pFrameParent, CONST D3DXFRAME *pFrameChild)
typedef DWORD(WINAPI *XInputGetState_t)(DWORD dwUserIndex
interface ID3DXBuffer * LPD3DXBUFFER
Definition: d3dx9core.h:97
struct _D3DXMESHCONTAINER D3DXMESHCONTAINER
D3DXEVENT_TYPE Type
Definition: d3dx9anim.h:617
_D3DXCOMPRESSION_FLAGS
Definition: d3dx9anim.h:382
interface ID3DXAnimationController * LPD3DXANIMATIONCONTROLLER
Definition: d3dx9anim.h:682
struct _D3DXKEY_CALLBACK * LPD3DXKEY_CALLBACK
D3DXMESHDATATYPE Type
Definition: d3dx9anim.h:52
LPD3DXMESH pMesh
Definition: d3dx9anim.h:57
struct _D3DXKEY_QUATERNION * LPD3DXKEY_QUATERNION
_D3DXCALLBACK_SEARCH_FLAGS
Definition: d3dx9anim.h:266
struct _D3DXKEY_VECTOR3 D3DXKEY_VECTOR3
interface ID3DXLoadUserData ID3DXLoadUserData
Definition: d3dx9anim.h:201
struct ID3DXPMesh * LPD3DXPMESH
Definition: d3dx9mesh.h:145
HRESULT WINAPI D3DXSaveMeshHierarchyToFileW(LPCWSTR Filename, DWORD XFormat, CONST D3DXFRAME *pFrameRoot, LPD3DXANIMATIONCONTROLLER pAnimController, LPD3DXSAVEUSERDATA pUserDataSaver)
interface ID3DXKeyframedAnimationSet * LPD3DXKEYFRAMEDANIMATIONSET
Definition: d3dx9anim.h:396
HRESULT WINAPI D3DXFrameCalculateBoundingSphere(CONST D3DXFRAME *pFrameRoot, LPD3DXVECTOR3 pObjectCenter, FLOAT *pObjectRadius)
DOUBLE Position
Definition: d3dx9anim.h:575
LPD3DXMESHCONTAINER pMeshContainer
Definition: d3dx9anim.h:98
D3DXMATRIX TransformationMatrix
Definition: d3dx9anim.h:96
HRESULT WINAPI D3DXLoadMeshHierarchyFromXA(LPCSTR Filename, DWORD MeshOptions, LPDIRECT3DDEVICE9 pD3DDevice, LPD3DXALLOCATEHIERARCHY pAlloc, LPD3DXLOADUSERDATA pUserDataLoader, LPD3DXFRAME *ppFrameHierarchy, LPD3DXANIMATIONCONTROLLER *ppAnimController)
interface ID3DXKeyframedAnimationSet ID3DXKeyframedAnimationSet
Definition: d3dx9anim.h:395
LPD3DXMATERIAL pMaterials
Definition: d3dx9anim.h:76
DOUBLE Duration
Definition: d3dx9anim.h:620
struct ID3DXMesh * LPD3DXMESH
Definition: d3dx9mesh.h:144
typedef BOOL(WINAPI *PFNWGLSETSTEREOEMITTERSTATE3DLPROC)(HDC hDC
interface ID3DXAnimationSet * LPD3DXANIMATIONSET
Definition: d3dx9anim.h:280