2 * Copyright 2011 Dylan Smith
4 * This library is free software; you can redistribute it and/or
5 * modify it under the terms of the GNU Lesser General Public
6 * License as published by the Free Software Foundation; either
7 * version 2.1 of the License, or (at your option) any later version.
9 * This library is distributed in the hope that it will be useful,
10 * but WITHOUT ANY WARRANTY; without even the implied warranty of
11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
12 * Lesser General Public License for more details.
14 * You should have received a copy of the GNU Lesser General Public
15 * License along with this library; if not, write to the Free Software
16 * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
19 #ifndef __WINE_D3DX9ANIM_H
20 #define __WINE_D3DX9ANIM_H
22 DEFINE_GUID(IID_ID3DXAnimationSet
, 0x698cfb3f, 0x9289, 0x4d95, 0x9a, 0x57, 0x33, 0xa9, 0x4b, 0x5a, 0x65, 0xf9);
23 DEFINE_GUID(IID_ID3DXKeyframedAnimationSet
, 0xfa4e8e3a, 0x9786, 0x407d, 0x8b, 0x4c, 0x59, 0x95, 0x89, 0x37, 0x64, 0xaf);
24 DEFINE_GUID(IID_ID3DXCompressedAnimationSet
, 0x6cc2480d, 0x3808, 0x4739, 0x9f, 0x88, 0xde, 0x49, 0xfa, 0xcd, 0x8d, 0x4c);
25 DEFINE_GUID(IID_ID3DXAnimationController
, 0xac8948ec, 0xf86d, 0x43e2, 0x96, 0xde, 0x31, 0xfc, 0x35, 0xf9, 0x6d, 0x9e);
27 typedef enum _D3DXMESHDATATYPE
29 D3DXMESHTYPE_MESH
= 1,
30 D3DXMESHTYPE_PMESH
= 2,
31 D3DXMESHTYPE_PATCHMESH
= 3,
32 D3DXMESHTYPE_FORCE_DWORD
= 0x7fffffff,
35 typedef enum _D3DXCALLBACK_SEARCH_FLAGS
37 D3DXCALLBACK_SEARCH_EXCLUDING_INITIAL_POSITION
= 0x00000001,
38 D3DXCALLBACK_SEARCH_BEHIND_INITIAL_POSITION
= 0x00000002,
39 D3DXCALLBACK_SEARCH_FORCE_DWORD
= 0x7fffffff,
40 } D3DXCALLBACK_SEARCH_FLAGS
;
42 typedef enum _D3DXPLAYBACK_TYPE
46 D3DXPLAY_PINGPONG
= 2,
47 D3DXPLAY_FORCE_DWORD
= 0x7fffffff,
50 typedef enum _D3DXCOMPRESSION_FLAGS
52 D3DXCOMPRESSION_DEFAULT
= 0x00000000,
53 D3DXCOMPRESSION_FORCE_DWORD
= 0x7fffffff,
54 } D3DXCOMPRESSION_FLAGS
;
56 typedef enum _D3DXPRIORITY_TYPE
59 D3DXPRIORITY_HIGH
= 1,
60 D3DXPRIORITY_FORCE_DWORD
= 0x7fffffff,
63 typedef enum _D3DXEVENT_TYPE
65 D3DXEVENT_TRACKSPEED
= 0,
66 D3DXEVENT_TRACKWEIGHT
= 1,
67 D3DXEVENT_TRACKPOSITION
= 2,
68 D3DXEVENT_TRACKENABLE
= 3,
69 D3DXEVENT_PRIORITYBLEND
= 4,
70 D3DXEVENT_FORCE_DWORD
= 0x7fffffff,
73 typedef enum _D3DXTRANSITION_TYPE
75 D3DXTRANSITION_LINEAR
= 0,
76 D3DXTRANSITION_EASEINEASEOUT
= 1,
77 D3DXTRANSITION_FORCE_DWORD
= 0x7fffffff,
78 } D3DXTRANSITION_TYPE
;
81 typedef struct _D3DXMESHDATA
83 D3DXMESHDATATYPE Type
;
89 ID3DXPatchMesh
*pPatchMesh
;
91 } D3DXMESHDATA
, *LPD3DXMESHDATA
;
93 typedef struct _D3DXMESHCONTAINER
96 D3DXMESHDATA MeshData
;
97 LPD3DXMATERIAL pMaterials
;
98 LPD3DXEFFECTINSTANCE pEffects
;
101 ID3DXSkinInfo
*pSkinInfo
;
102 struct _D3DXMESHCONTAINER
*pNextMeshContainer
;
103 } D3DXMESHCONTAINER
, *LPD3DXMESHCONTAINER
;
105 typedef struct _D3DXFRAME
108 D3DXMATRIX TransformationMatrix
;
109 LPD3DXMESHCONTAINER pMeshContainer
;
110 struct _D3DXFRAME
*pFrameSibling
;
111 struct _D3DXFRAME
*pFrameFirstChild
;
112 } D3DXFRAME
, *LPD3DXFRAME
;
114 typedef struct _D3DXKEY_VECTOR3
118 } D3DXKEY_VECTOR3
, *LPD3DXKEY_VECTOR3
;
120 typedef struct _D3DXKEY_QUATERNION
123 D3DXQUATERNION Value
;
124 } D3DXKEY_QUATERNION
, *LPD3DXKEY_QUATERNION
;
126 typedef struct _D3DXKEY_CALLBACK
130 } D3DXKEY_CALLBACK
, *LPD3DXKEY_CALLBACK
;
132 typedef struct _D3DXTRACK_DESC
134 D3DXPRIORITY_TYPE Priority
;
139 } D3DXTRACK_DESC
, *LPD3DXTRACK_DESC
;
141 typedef struct _D3DXEVENT_DESC
147 D3DXTRANSITION_TYPE Transition
;
155 } D3DXEVENT_DESC
, *LPD3DXEVENT_DESC
;
157 typedef DWORD D3DXEVENTHANDLE
, *LPD3DXEVENTHANDLE
;
159 typedef interface ID3DXAllocateHierarchy
*LPD3DXALLOCATEHIERARCHY
;
160 typedef interface ID3DXLoadUserData
*LPD3DXLOADUSERDATA
;
161 typedef interface ID3DXSaveUserData
*LPD3DXSAVEUSERDATA
;
162 typedef interface ID3DXAnimationSet
*LPD3DXANIMATIONSET
;
163 typedef interface ID3DXKeyframedAnimationSet
*LPD3DXKEYFRAMEDANIMATIONSET
;
164 typedef interface ID3DXCompressedAnimationSet
*LPD3DXCOMPRESSEDANIMATIONSET
;
165 typedef interface ID3DXAnimationCallbackHandler
*LPD3DXANIMATIONCALLBACKHANDLER
;
166 typedef interface ID3DXAnimationController
*LPD3DXANIMATIONCONTROLLER
;
170 #define INTERFACE ID3DXAllocateHierarchy
171 DECLARE_INTERFACE(ID3DXAllocateHierarchy
)
173 STDMETHOD(CreateFrame
)(THIS_
const char *name
, D3DXFRAME
**new_frame
) PURE
;
174 STDMETHOD(CreateMeshContainer
)(THIS_
const char *name
, const D3DXMESHDATA
*mesh_data
,
175 const D3DXMATERIAL
*materials
, const D3DXEFFECTINSTANCE
*effect_instances
,
176 DWORD num_materials
, const DWORD
*adjacency
, ID3DXSkinInfo
*skin_info
,
177 D3DXMESHCONTAINER
**new_mesh_container
) PURE
;
178 STDMETHOD(DestroyFrame
)(THIS_ LPD3DXFRAME frame
) PURE
;
179 STDMETHOD(DestroyMeshContainer
)(THIS_ LPD3DXMESHCONTAINER mesh_container
) PURE
;
183 #define INTERFACE ID3DXLoadUserData
184 DECLARE_INTERFACE(ID3DXLoadUserData
)
186 /* MS DirectX SDK headers define these methods without 'this' parameter. */
187 STDMETHOD(LoadTopLevelData
)(THIS_ ID3DXFileData
*child_data
) PURE
;
188 STDMETHOD(LoadFrameChildData
)(THIS_ D3DXFRAME
*frame
, ID3DXFileData
*child_data
) PURE
;
189 STDMETHOD(LoadMeshChildData
)(THIS_ D3DXMESHCONTAINER
*mesh_container
, ID3DXFileData
*child_data
) PURE
;
193 #define INTERFACE ID3DXSaveUserData
194 DECLARE_INTERFACE(ID3DXSaveUserData
)
196 /* MS DirectX SDK headers define these methods without 'this' parameter. */
197 STDMETHOD(AddFrameChildData
)(THIS_
const D3DXFRAME
*frame
,
198 ID3DXFileSaveObject
*save_obj
, ID3DXFileSaveData
*frame_data
) PURE
;
199 STDMETHOD(AddMeshChildData
)(THIS_
const D3DXMESHCONTAINER
*mesh_container
,
200 ID3DXFileSaveObject
*save_obj
, ID3DXFileSaveData
*mesh_data
) PURE
;
201 STDMETHOD(AddTopLevelDataObjectsPre
)(THIS_ ID3DXFileSaveObject
*save_obj
) PURE
;
202 STDMETHOD(AddTopLevelDataObjectsPost
)(THIS_ ID3DXFileSaveObject
*save_obj
) PURE
;
203 STDMETHOD(RegisterTemplates
)(THIS_ ID3DXFile
*file
) PURE
;
204 STDMETHOD(SaveTemplates
)(THIS_ ID3DXFileSaveObject
*save_obj
) PURE
;
208 #define INTERFACE ID3DXAnimationSet
209 DECLARE_INTERFACE_(ID3DXAnimationSet
, IUnknown
)
211 /*** IUnknown methods ***/
212 STDMETHOD(QueryInterface
)(THIS_ REFIID riid
, void **out
) PURE
;
213 STDMETHOD_(ULONG
, AddRef
)(THIS
) PURE
;
214 STDMETHOD_(ULONG
, Release
)(THIS
) PURE
;
215 /*** ID3DXAnimationSet methods ***/
216 STDMETHOD_(const char *, GetName
)(THIS
) PURE
;
217 STDMETHOD_(DOUBLE
, GetPeriod
)(THIS
) PURE
;
218 STDMETHOD_(DOUBLE
, GetPeriodicPosition
)(THIS_ DOUBLE position
) PURE
;
219 STDMETHOD_(UINT
, GetNumAnimations
)(THIS
) PURE
;
220 STDMETHOD(GetAnimationNameByIndex
)(THIS_ UINT index
, const char **name
) PURE
;
221 STDMETHOD(GetAnimationIndexByName
)(THIS_
const char *name
, UINT
*index
) PURE
;
222 STDMETHOD(GetSRT
)(THIS_ DOUBLE periodic_position
, UINT animation
, D3DXVECTOR3
*scale
,
223 D3DXQUATERNION
*rotation
, D3DXVECTOR3
*translation
) PURE
;
224 STDMETHOD(GetCallback
)(THIS_
double position
, DWORD flags
, double *callback_position
,
225 void **callback_data
) PURE
;
229 #define INTERFACE ID3DXKeyframedAnimationSet
230 DECLARE_INTERFACE_(ID3DXKeyframedAnimationSet
, ID3DXAnimationSet
)
232 /*** IUnknown methods ***/
233 STDMETHOD(QueryInterface
)(THIS_ REFIID riid
, void **out
) PURE
;
234 STDMETHOD_(ULONG
, AddRef
)(THIS
) PURE
;
235 STDMETHOD_(ULONG
, Release
)(THIS
) PURE
;
236 /*** ID3DXAnimationSet methods ***/
237 STDMETHOD_(const char *, GetName
)(THIS
) PURE
;
238 STDMETHOD_(DOUBLE
, GetPeriod
)(THIS
) PURE
;
239 STDMETHOD_(DOUBLE
, GetPeriodicPosition
)(THIS_ DOUBLE position
) PURE
;
240 STDMETHOD_(UINT
, GetNumAnimations
)(THIS
) PURE
;
241 STDMETHOD(GetAnimationNameByIndex
)(THIS_ UINT index
, const char **name
) PURE
;
242 STDMETHOD(GetAnimationIndexByName
)(THIS_
const char *name
, UINT
*index
) PURE
;
243 STDMETHOD(GetSRT
)(THIS_ DOUBLE periodic_position
, UINT animation
, D3DXVECTOR3
*scale
,
244 D3DXQUATERNION
*rotation
, D3DXVECTOR3
*translation
) PURE
;
245 STDMETHOD(GetCallback
)(THIS_
double position
, DWORD flags
, double *callback_position
,
246 void **callback_data
) PURE
;
247 /*** ID3DXKeyframedAnimationSet methods ***/
248 STDMETHOD_(D3DXPLAYBACK_TYPE
, GetPlaybackType
)(THIS
) PURE
;
249 STDMETHOD_(DOUBLE
, GetSourceTicksPerSecond
)(THIS
) PURE
;
250 STDMETHOD_(UINT
, GetNumScaleKeys
)(THIS_ UINT animation
) PURE
;
251 STDMETHOD(GetScaleKeys
)(THIS_ UINT animation
, LPD3DXKEY_VECTOR3 scale_keys
) PURE
;
252 STDMETHOD(GetScaleKey
)(THIS_ UINT animation
, UINT key
, LPD3DXKEY_VECTOR3 scale_key
) PURE
;
253 STDMETHOD(SetScaleKey
)(THIS_ UINT animation
, UINT key
, LPD3DXKEY_VECTOR3 scale_key
) PURE
;
254 STDMETHOD_(UINT
, GetNumRotationKeys
)(THIS_ UINT animation
) PURE
;
255 STDMETHOD(GetRotationKeys
)(THIS_ UINT animation
, LPD3DXKEY_QUATERNION rotation_keys
) PURE
;
256 STDMETHOD(GetRotationKey
)(THIS_ UINT animation
, UINT key
, LPD3DXKEY_QUATERNION rotation_key
) PURE
;
257 STDMETHOD(SetRotationKey
)(THIS_ UINT animation
, UINT key
, LPD3DXKEY_QUATERNION rotation_key
) PURE
;
258 STDMETHOD_(UINT
, GetNumTranslationKeys
)(THIS_ UINT animation
) PURE
;
259 STDMETHOD(GetTranslationKeys
)(THIS_ UINT animation
, LPD3DXKEY_VECTOR3 translation_keys
) PURE
;
260 STDMETHOD(GetTranslationKey
)(THIS_ UINT animation
, UINT key
, LPD3DXKEY_VECTOR3 translation_key
) PURE
;
261 STDMETHOD(SetTranslationKey
)(THIS_ UINT animation
, UINT key
, LPD3DXKEY_VECTOR3 translation_key
) PURE
;
262 STDMETHOD_(UINT
, GetNumCallbackKeys
)(THIS
) PURE
;
263 STDMETHOD(GetCallbackKeys
)(THIS_ LPD3DXKEY_CALLBACK callback_keys
) PURE
;
264 STDMETHOD(GetCallbackKey
)(THIS_ UINT key
, LPD3DXKEY_CALLBACK callback_key
) PURE
;
265 STDMETHOD(SetCallbackKey
)(THIS_ UINT key
, LPD3DXKEY_CALLBACK callback_key
) PURE
;
266 STDMETHOD(UnregisterScaleKey
)(THIS_ UINT animation
, UINT key
) PURE
;
267 STDMETHOD(UnregisterRotationKey
)(THIS_ UINT animation
, UINT key
) PURE
;
268 STDMETHOD(UnregisterTranslationKey
)(THIS_ UINT animation
, UINT key
) PURE
;
269 STDMETHOD(RegisterAnimationSRTKeys
)(THIS_
const char *name
, UINT num_scale_keys
,
270 UINT num_rotation_keys
, UINT num_translation_keys
, const D3DXKEY_VECTOR3
*scale_keys
,
271 const D3DXKEY_QUATERNION
*rotation_keys
, const D3DXKEY_VECTOR3
*translation_keys
,
272 DWORD
*animation_index
) PURE
;
273 STDMETHOD(Compress
)(THIS_ DWORD flags
, float lossiness
, D3DXFRAME
*hierarchy
,
274 ID3DXBuffer
**compressed_data
) PURE
;
275 STDMETHOD(UnregisterAnimation
)(THIS_ UINT index
) PURE
;
279 #define INTERFACE ID3DXCompressedAnimationSet
280 DECLARE_INTERFACE_(ID3DXCompressedAnimationSet
, ID3DXAnimationSet
)
282 /*** IUnknown methods ***/
283 STDMETHOD(QueryInterface
)(THIS_ REFIID riid
, void **out
) PURE
;
284 STDMETHOD_(ULONG
, AddRef
)(THIS
) PURE
;
285 STDMETHOD_(ULONG
, Release
)(THIS
) PURE
;
286 /*** ID3DXAnimationSet methods ***/
287 STDMETHOD_(const char *, GetName
)(THIS
) PURE
;
288 STDMETHOD_(DOUBLE
, GetPeriod
)(THIS
) PURE
;
289 STDMETHOD_(DOUBLE
, GetPeriodicPosition
)(THIS_ DOUBLE position
) PURE
;
290 STDMETHOD_(UINT
, GetNumAnimations
)(THIS
) PURE
;
291 STDMETHOD(GetAnimationNameByIndex
)(THIS_ UINT index
, const char **name
) PURE
;
292 STDMETHOD(GetAnimationIndexByName
)(THIS_
const char *name
, UINT
*index
) PURE
;
293 STDMETHOD(GetSRT
)(THIS_ DOUBLE periodic_position
, UINT animation
, D3DXVECTOR3
*scale
,
294 D3DXQUATERNION
*rotation
, D3DXVECTOR3
*translation
) PURE
;
295 STDMETHOD(GetCallback
)(THIS_
double position
, DWORD flags
, double *callback_position
,
296 void **callback_data
) PURE
;
297 /*** ID3DXCompressedAnimationSet methods ***/
298 STDMETHOD_(D3DXPLAYBACK_TYPE
, GetPlaybackType
)(THIS
) PURE
;
299 STDMETHOD_(DOUBLE
, GetSourceTicksPerSecond
)(THIS
) PURE
;
300 STDMETHOD(GetCompressedData
)(THIS_ ID3DXBuffer
**compressed_data
) PURE
;
301 STDMETHOD_(UINT
, GetNumCallbackKeys
)(THIS
) PURE
;
302 STDMETHOD(GetCallbackKeys
)(THIS_ LPD3DXKEY_CALLBACK callback_keys
) PURE
;
306 #define INTERFACE ID3DXAnimationCallbackHandler
307 DECLARE_INTERFACE(ID3DXAnimationCallbackHandler
)
309 STDMETHOD(HandleCallback
)(THIS_ UINT track
, void *callback_data
) PURE
;
313 #define INTERFACE ID3DXAnimationController
314 DECLARE_INTERFACE_(ID3DXAnimationController
, IUnknown
)
316 /*** IUnknown methods ***/
317 STDMETHOD(QueryInterface
)(THIS_ REFIID riid
, void **out
) PURE
;
318 STDMETHOD_(ULONG
, AddRef
)(THIS
) PURE
;
319 STDMETHOD_(ULONG
, Release
)(THIS
) PURE
;
320 /*** ID3DXAnimationController methods ***/
321 STDMETHOD_(UINT
, GetMaxNumAnimationOutputs
)(THIS
) PURE
;
322 STDMETHOD_(UINT
, GetMaxNumAnimationSets
)(THIS
) PURE
;
323 STDMETHOD_(UINT
, GetMaxNumTracks
)(THIS
) PURE
;
324 STDMETHOD_(UINT
, GetMaxNumEvents
)(THIS
) PURE
;
325 STDMETHOD(RegisterAnimationOutput
)(THIS_
const char *name
, D3DXMATRIX
*matrix
,
326 D3DXVECTOR3
*scale
, D3DXQUATERNION
*rotation
, D3DXVECTOR3
*translation
) PURE
;
327 STDMETHOD(RegisterAnimationSet
)(THIS_ ID3DXAnimationSet
*anim_set
) PURE
;
328 STDMETHOD(UnregisterAnimationSet
)(THIS_ ID3DXAnimationSet
*anim_set
) PURE
;
329 STDMETHOD_(UINT
, GetNumAnimationSets
)(THIS
) PURE
;
330 STDMETHOD(GetAnimationSet
)(THIS_ UINT index
, ID3DXAnimationSet
**anim_set
) PURE
;
331 STDMETHOD(GetAnimationSetByName
)(THIS_
const char *name
, ID3DXAnimationSet
**anim_set
) PURE
;
332 STDMETHOD(AdvanceTime
)(THIS_
double time_delta
, ID3DXAnimationCallbackHandler
*callback_handler
) PURE
;
333 STDMETHOD(ResetTime
)(THIS
) PURE
;
334 STDMETHOD_(double, GetTime
)(THIS
) PURE
;
335 STDMETHOD(SetTrackAnimationSet
)(THIS_ UINT track
, ID3DXAnimationSet
*anim_set
) PURE
;
336 STDMETHOD(GetTrackAnimationSet
)(THIS_ UINT track
, ID3DXAnimationSet
**anim_set
) PURE
;
337 STDMETHOD(SetTrackPriority
)(THIS_ UINT track
, D3DXPRIORITY_TYPE priority
) PURE
;
338 STDMETHOD(SetTrackSpeed
)(THIS_ UINT track
, float speed
) PURE
;
339 STDMETHOD(SetTrackWeight
)(THIS_ UINT track
, float weight
) PURE
;
340 STDMETHOD(SetTrackPosition
)(THIS_ UINT track
, double position
) PURE
;
341 STDMETHOD(SetTrackEnable
)(THIS_ UINT track
, BOOL enable
) PURE
;
342 STDMETHOD(SetTrackDesc
)(THIS_ UINT track
, D3DXTRACK_DESC
*desc
) PURE
;
343 STDMETHOD(GetTrackDesc
)(THIS_ UINT track
, D3DXTRACK_DESC
*desc
) PURE
;
344 STDMETHOD(SetPriorityBlend
)(THIS_
float blend_weight
) PURE
;
345 STDMETHOD_(float, GetPriorityBlend
)(THIS
) PURE
;
346 STDMETHOD_(D3DXEVENTHANDLE
, KeyTrackSpeed
)(THIS_ UINT track
, float new_speed
,
347 double start_time
, double duration
, D3DXTRANSITION_TYPE transition
) PURE
;
348 STDMETHOD_(D3DXEVENTHANDLE
, KeyTrackWeight
)(THIS_ UINT track
, float new_weight
,
349 double start_time
, double duration
, D3DXTRANSITION_TYPE transition
) PURE
;
350 STDMETHOD_(D3DXEVENTHANDLE
, KeyTrackPosition
)(THIS_ UINT track
, double new_position
, double start_time
) PURE
;
351 STDMETHOD_(D3DXEVENTHANDLE
, KeyTrackEnable
)(THIS_ UINT track
, BOOL new_enable
, double start_time
) PURE
;
352 STDMETHOD_(D3DXEVENTHANDLE
, KeyPriorityBlend
)(THIS_
float new_blend_weight
,
353 double start_time
, double duration
, D3DXTRANSITION_TYPE transition
) PURE
;
354 STDMETHOD(UnkeyEvent
)(THIS_ D3DXEVENTHANDLE event
) PURE
;
355 STDMETHOD(UnkeyAllTrackEvents
)(THIS_ UINT track
) PURE
;
356 STDMETHOD(UnkeyAllPriorityBlends
)(THIS
) PURE
;
357 STDMETHOD_(D3DXEVENTHANDLE
, GetCurrentTrackEvent
)(THIS_ UINT track
, D3DXEVENT_TYPE event_type
) PURE
;
358 STDMETHOD_(D3DXEVENTHANDLE
, GetCurrentPriorityBlend
)(THIS
) PURE
;
359 STDMETHOD_(D3DXEVENTHANDLE
, GetUpcomingTrackEvent
)(THIS_ UINT track
, D3DXEVENTHANDLE event
) PURE
;
360 STDMETHOD_(D3DXEVENTHANDLE
, GetUpcomingPriorityBlend
)(THIS_ D3DXEVENTHANDLE event
) PURE
;
361 STDMETHOD(ValidateEvent
)(THIS_ D3DXEVENTHANDLE event
) PURE
;
362 STDMETHOD(GetEventDesc
)(THIS_ D3DXEVENTHANDLE event
, D3DXEVENT_DESC
*desc
) PURE
;
363 STDMETHOD(CloneAnimationController
)(THIS_ UINT max_num_anim_outputs
, UINT max_num_anim_sets
,
364 UINT max_num_tracks
, UINT max_num_events
, ID3DXAnimationController
**anim_controller
) PURE
;
372 HRESULT WINAPI
D3DXLoadMeshHierarchyFromXA(const char *filename
, DWORD flags
, struct IDirect3DDevice9
*device
,
373 struct ID3DXAllocateHierarchy
*alloc
, struct ID3DXLoadUserData
*user_data_loader
,
374 D3DXFRAME
**frame_hierarchy
, struct ID3DXAnimationController
**animation_controller
);
375 HRESULT WINAPI
D3DXLoadMeshHierarchyFromXW(const WCHAR
*filename
, DWORD flags
, struct IDirect3DDevice9
*device
,
376 struct ID3DXAllocateHierarchy
*alloc
, struct ID3DXLoadUserData
*user_data_loader
,
377 D3DXFRAME
**frame_hierarchy
, struct ID3DXAnimationController
**animation_controller
);
378 #define D3DXLoadMeshHierarchyFromX WINELIB_NAME_AW(D3DXLoadMeshHierarchyFromX)
379 HRESULT WINAPI
D3DXLoadMeshHierarchyFromXInMemory(const void *data
, DWORD data_size
, DWORD flags
,
380 struct IDirect3DDevice9
*device
, struct ID3DXAllocateHierarchy
*alloc
,
381 struct ID3DXLoadUserData
*user_data_loader
, D3DXFRAME
**frame_hierarchy
,
382 struct ID3DXAnimationController
**animation_controller
);
383 HRESULT WINAPI
D3DXSaveMeshHierarchyToFileA(const char *filename
, DWORD format
,
384 const D3DXFRAME
*frame_root
, ID3DXAnimationController
*animation_controller
,
385 ID3DXSaveUserData
*user_data_saver
);
386 HRESULT WINAPI
D3DXSaveMeshHierarchyToFileW(const WCHAR
*filename
, DWORD format
,
387 const D3DXFRAME
*frame_root
, ID3DXAnimationController
*animation_controller
,
388 ID3DXSaveUserData
*user_data_saver
);
389 #define D3DXSaveMeshHierarchyToFile WINELIB_NAME_AW(D3DXSaveMeshHierarchyToFile)
390 HRESULT WINAPI
D3DXFrameDestroy(D3DXFRAME
*frame_root
, ID3DXAllocateHierarchy
*alloc
);
391 HRESULT WINAPI
D3DXFrameAppendChild(D3DXFRAME
*parent
, const D3DXFRAME
*child
);
392 D3DXFRAME
* WINAPI
D3DXFrameFind(const D3DXFRAME
*root
, const char *name
);
393 HRESULT WINAPI
D3DXFrameRegisterNamedMatrices(D3DXFRAME
*frame_root
, ID3DXAnimationController
*animation_controller
);
394 UINT WINAPI
D3DXFrameNumNamedMatrices(const D3DXFRAME
*frame_root
);
395 HRESULT WINAPI
D3DXFrameCalculateBoundingSphere(const D3DXFRAME
*frame_root
, D3DXVECTOR3
*center
,
397 HRESULT WINAPI
D3DXCreateKeyframedAnimationSet(const char *name
, double ticks_per_second
,
398 D3DXPLAYBACK_TYPE playback_type
, UINT animation_count
, UINT callback_key_count
,
399 const D3DXKEY_CALLBACK
*callback_keys
, ID3DXKeyframedAnimationSet
**animation_set
);
400 HRESULT WINAPI
D3DXCreateCompressedAnimationSet(const char *name
, double ticks_per_second
,
401 D3DXPLAYBACK_TYPE playback_type
, ID3DXBuffer
*compressed_data
, UINT callback_key_count
,
402 const D3DXKEY_CALLBACK
*callback_keys
, ID3DXCompressedAnimationSet
**animation_set
);
403 HRESULT WINAPI
D3DXCreateAnimationController(UINT max_animation_output_count
, UINT max_animation_set_count
,
404 UINT max_track_count
, UINT max_event_count
, ID3DXAnimationController
**animation_controller
);
410 #endif /* __WINE_D3DX9ANIM_H */