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 STDMETHOD(LoadTopLevelData
)(ID3DXFileData
*child_data
) PURE
;
187 STDMETHOD(LoadFrameChildData
)(D3DXFRAME
*frame
, ID3DXFileData
*child_data
) PURE
;
188 STDMETHOD(LoadMeshChildData
)(D3DXMESHCONTAINER
*mesh_container
, ID3DXFileData
*child_data
) PURE
;
192 #define INTERFACE ID3DXSaveUserData
193 DECLARE_INTERFACE(ID3DXSaveUserData
)
195 STDMETHOD(AddFrameChildData
)(const D3DXFRAME
*frame
,
196 ID3DXFileSaveObject
*save_obj
, ID3DXFileSaveData
*frame_data
) PURE
;
197 STDMETHOD(AddMeshChildData
)(const D3DXMESHCONTAINER
*mesh_container
,
198 ID3DXFileSaveObject
*save_obj
, ID3DXFileSaveData
*mesh_data
) PURE
;
199 STDMETHOD(AddTopLevelDataObjectsPre
)(ID3DXFileSaveObject
*save_obj
) PURE
;
200 STDMETHOD(AddTopLevelDataObjectsPost
)(ID3DXFileSaveObject
*save_obj
) PURE
;
201 STDMETHOD(RegisterTemplates
)(ID3DXFile
*file
) PURE
;
202 STDMETHOD(SaveTemplates
)(ID3DXFileSaveObject
*save_obj
) PURE
;
206 #define INTERFACE ID3DXAnimationSet
207 DECLARE_INTERFACE_(ID3DXAnimationSet
, IUnknown
)
209 /*** IUnknown methods ***/
210 STDMETHOD(QueryInterface
)(THIS_ REFIID riid
, void **out
) PURE
;
211 STDMETHOD_(ULONG
, AddRef
)(THIS
) PURE
;
212 STDMETHOD_(ULONG
, Release
)(THIS
) PURE
;
213 /*** ID3DXAnimationSet methods ***/
214 STDMETHOD_(const char *, GetName
)(THIS
) PURE
;
215 STDMETHOD_(DOUBLE
, GetPeriod
)(THIS
) PURE
;
216 STDMETHOD_(DOUBLE
, GetPeriodicPosition
)(THIS_ DOUBLE position
) PURE
;
217 STDMETHOD_(UINT
, GetNumAnimations
)(THIS
) PURE
;
218 STDMETHOD(GetAnimationNameByIndex
)(THIS_ UINT index
, const char **name
) PURE
;
219 STDMETHOD(GetAnimationIndexByName
)(THIS_
const char *name
, UINT
*index
) PURE
;
220 STDMETHOD(GetSRT
)(THIS_ DOUBLE periodic_position
, UINT animation
, D3DXVECTOR3
*scale
,
221 D3DXQUATERNION
*rotation
, D3DXVECTOR3
*translation
) PURE
;
222 STDMETHOD(GetCallback
)(THIS_
double position
, DWORD flags
, double *callback_position
,
223 void **callback_data
) PURE
;
227 #define INTERFACE ID3DXKeyframedAnimationSet
228 DECLARE_INTERFACE_(ID3DXKeyframedAnimationSet
, ID3DXAnimationSet
)
230 /*** IUnknown methods ***/
231 STDMETHOD(QueryInterface
)(THIS_ REFIID riid
, void **out
) PURE
;
232 STDMETHOD_(ULONG
, AddRef
)(THIS
) PURE
;
233 STDMETHOD_(ULONG
, Release
)(THIS
) PURE
;
234 /*** ID3DXAnimationSet methods ***/
235 STDMETHOD_(const char *, GetName
)(THIS
) PURE
;
236 STDMETHOD_(DOUBLE
, GetPeriod
)(THIS
) PURE
;
237 STDMETHOD_(DOUBLE
, GetPeriodicPosition
)(THIS_ DOUBLE position
) PURE
;
238 STDMETHOD_(UINT
, GetNumAnimations
)(THIS
) PURE
;
239 STDMETHOD(GetAnimationNameByIndex
)(THIS_ UINT index
, const char **name
) PURE
;
240 STDMETHOD(GetAnimationIndexByName
)(THIS_
const char *name
, UINT
*index
) PURE
;
241 STDMETHOD(GetSRT
)(THIS_ DOUBLE periodic_position
, UINT animation
, D3DXVECTOR3
*scale
,
242 D3DXQUATERNION
*rotation
, D3DXVECTOR3
*translation
) PURE
;
243 STDMETHOD(GetCallback
)(THIS_
double position
, DWORD flags
, double *callback_position
,
244 void **callback_data
) PURE
;
245 /*** ID3DXKeyframedAnimationSet methods ***/
246 STDMETHOD_(D3DXPLAYBACK_TYPE
, GetPlaybackType
)(THIS
) PURE
;
247 STDMETHOD_(DOUBLE
, GetSourceTicksPerSecond
)(THIS
) PURE
;
248 STDMETHOD_(UINT
, GetNumScaleKeys
)(THIS_ UINT animation
) PURE
;
249 STDMETHOD(GetScaleKeys
)(THIS_ UINT animation
, LPD3DXKEY_VECTOR3 scale_keys
) PURE
;
250 STDMETHOD(GetScaleKey
)(THIS_ UINT animation
, UINT key
, LPD3DXKEY_VECTOR3 scale_key
) PURE
;
251 STDMETHOD(SetScaleKey
)(THIS_ UINT animation
, UINT key
, LPD3DXKEY_VECTOR3 scale_key
) PURE
;
252 STDMETHOD_(UINT
, GetNumRotationKeys
)(THIS_ UINT animation
) PURE
;
253 STDMETHOD(GetRotationKeys
)(THIS_ UINT animation
, LPD3DXKEY_QUATERNION rotation_keys
) PURE
;
254 STDMETHOD(GetRotationKey
)(THIS_ UINT animation
, UINT key
, LPD3DXKEY_QUATERNION rotation_key
) PURE
;
255 STDMETHOD(SetRotationKey
)(THIS_ UINT animation
, UINT key
, LPD3DXKEY_QUATERNION rotation_key
) PURE
;
256 STDMETHOD_(UINT
, GetNumTranslationKeys
)(THIS_ UINT animation
) PURE
;
257 STDMETHOD(GetTranslationKeys
)(THIS_ UINT animation
, LPD3DXKEY_VECTOR3 translation_keys
) PURE
;
258 STDMETHOD(GetTranslationKey
)(THIS_ UINT animation
, UINT key
, LPD3DXKEY_VECTOR3 translation_key
) PURE
;
259 STDMETHOD(SetTranslationKey
)(THIS_ UINT animation
, UINT key
, LPD3DXKEY_VECTOR3 translation_key
) PURE
;
260 STDMETHOD_(UINT
, GetNumCallbackKeys
)(THIS
) PURE
;
261 STDMETHOD(GetCallbackKeys
)(THIS_ LPD3DXKEY_CALLBACK callback_keys
) PURE
;
262 STDMETHOD(GetCallbackKey
)(THIS_ UINT key
, LPD3DXKEY_CALLBACK callback_key
) PURE
;
263 STDMETHOD(SetCallbackKey
)(THIS_ UINT key
, LPD3DXKEY_CALLBACK callback_key
) PURE
;
264 STDMETHOD(UnregisterScaleKey
)(THIS_ UINT animation
, UINT key
) PURE
;
265 STDMETHOD(UnregisterRotationKey
)(THIS_ UINT animation
, UINT key
) PURE
;
266 STDMETHOD(UnregisterTranslationKey
)(THIS_ UINT animation
, UINT key
) PURE
;
267 STDMETHOD(RegisterAnimationSRTKeys
)(THIS_
const char *name
, UINT num_scale_keys
,
268 UINT num_rotation_keys
, UINT num_translation_keys
, const D3DXKEY_VECTOR3
*scale_keys
,
269 const D3DXKEY_QUATERNION
*rotation_keys
, const D3DXKEY_VECTOR3
*translation_keys
,
270 DWORD
*animation_index
) PURE
;
271 STDMETHOD(Compress
)(THIS_ DWORD flags
, float lossiness
, D3DXFRAME
*hierarchy
,
272 ID3DXBuffer
**compressed_data
) PURE
;
273 STDMETHOD(UnregisterAnimation
)(THIS_ UINT index
) PURE
;
277 #define INTERFACE ID3DXCompressedAnimationSet
278 DECLARE_INTERFACE_(ID3DXCompressedAnimationSet
, ID3DXAnimationSet
)
280 /*** IUnknown methods ***/
281 STDMETHOD(QueryInterface
)(THIS_ REFIID riid
, void **out
) PURE
;
282 STDMETHOD_(ULONG
, AddRef
)(THIS
) PURE
;
283 STDMETHOD_(ULONG
, Release
)(THIS
) PURE
;
284 /*** ID3DXAnimationSet methods ***/
285 STDMETHOD_(const char *, GetName
)(THIS
) PURE
;
286 STDMETHOD_(DOUBLE
, GetPeriod
)(THIS
) PURE
;
287 STDMETHOD_(DOUBLE
, GetPeriodicPosition
)(THIS_ DOUBLE position
) PURE
;
288 STDMETHOD_(UINT
, GetNumAnimations
)(THIS
) PURE
;
289 STDMETHOD(GetAnimationNameByIndex
)(THIS_ UINT index
, const char **name
) PURE
;
290 STDMETHOD(GetAnimationIndexByName
)(THIS_
const char *name
, UINT
*index
) PURE
;
291 STDMETHOD(GetSRT
)(THIS_ DOUBLE periodic_position
, UINT animation
, D3DXVECTOR3
*scale
,
292 D3DXQUATERNION
*rotation
, D3DXVECTOR3
*translation
) PURE
;
293 STDMETHOD(GetCallback
)(THIS_
double position
, DWORD flags
, double *callback_position
,
294 void **callback_data
) PURE
;
295 /*** ID3DXCompressedAnimationSet methods ***/
296 STDMETHOD_(D3DXPLAYBACK_TYPE
, GetPlaybackType
)(THIS
) PURE
;
297 STDMETHOD_(DOUBLE
, GetSourceTicksPerSecond
)(THIS
) PURE
;
298 STDMETHOD(GetCompressedData
)(THIS_ ID3DXBuffer
**compressed_data
) PURE
;
299 STDMETHOD_(UINT
, GetNumCallbackKeys
)(THIS
) PURE
;
300 STDMETHOD(GetCallbackKeys
)(THIS_ LPD3DXKEY_CALLBACK callback_keys
) PURE
;
304 #define INTERFACE ID3DXAnimationCallbackHandler
305 DECLARE_INTERFACE(ID3DXAnimationCallbackHandler
)
307 STDMETHOD(HandleCallback
)(THIS_ UINT track
, void *callback_data
) PURE
;
311 #define INTERFACE ID3DXAnimationController
312 DECLARE_INTERFACE_(ID3DXAnimationController
, IUnknown
)
314 /*** IUnknown methods ***/
315 STDMETHOD(QueryInterface
)(THIS_ REFIID riid
, void **out
) PURE
;
316 STDMETHOD_(ULONG
, AddRef
)(THIS
) PURE
;
317 STDMETHOD_(ULONG
, Release
)(THIS
) PURE
;
318 /*** ID3DXAnimationController methods ***/
319 STDMETHOD_(UINT
, GetMaxNumAnimationOutputs
)(THIS
) PURE
;
320 STDMETHOD_(UINT
, GetMaxNumAnimationSets
)(THIS
) PURE
;
321 STDMETHOD_(UINT
, GetMaxNumTracks
)(THIS
) PURE
;
322 STDMETHOD_(UINT
, GetMaxNumEvents
)(THIS
) PURE
;
323 STDMETHOD(RegisterAnimationOutput
)(THIS_
const char *name
, D3DXMATRIX
*matrix
,
324 D3DXVECTOR3
*scale
, D3DXQUATERNION
*rotation
, D3DXVECTOR3
*translation
) PURE
;
325 STDMETHOD(RegisterAnimationSet
)(THIS_ ID3DXAnimationSet
*anim_set
) PURE
;
326 STDMETHOD(UnregisterAnimationSet
)(THIS_ ID3DXAnimationSet
*anim_set
) PURE
;
327 STDMETHOD_(UINT
, GetNumAnimationSets
)(THIS
) PURE
;
328 STDMETHOD(GetAnimationSet
)(THIS_ UINT index
, ID3DXAnimationSet
**anim_set
) PURE
;
329 STDMETHOD(GetAnimationSetByName
)(THIS_
const char *name
, ID3DXAnimationSet
**anim_set
) PURE
;
330 STDMETHOD(AdvanceTime
)(THIS_
double time_delta
, ID3DXAnimationCallbackHandler
**callback_handler
) PURE
;
331 STDMETHOD(ResetTime
)(THIS
) PURE
;
332 STDMETHOD_(DOUBLE
, GetTime
)(THIS
) PURE
;
333 STDMETHOD(SetTrackAnimationSet
)(THIS_ UINT track
, ID3DXAnimationSet
*anim_set
) PURE
;
334 STDMETHOD(GetTrackAnimationSet
)(THIS_ UINT track
, ID3DXAnimationSet
**anim_set
) PURE
;
335 STDMETHOD(GetTrackPriority
)(THIS_ UINT track
, D3DXPRIORITY_TYPE
*priority
) PURE
;
336 STDMETHOD(SetTrackSpeed
)(THIS_ UINT track
, FLOAT speed
) PURE
;
337 STDMETHOD(SetTrackWeight
)(THIS_ UINT track
, FLOAT weight
) PURE
;
338 STDMETHOD(SetTrackPosition
)(THIS_ UINT track
, DOUBLE position
) PURE
;
339 STDMETHOD(SetTrackEnable
)(THIS_ UINT track
, BOOL enable
) PURE
;
340 STDMETHOD(SetTrackDesc
)(THIS_ UINT track
, LPD3DXTRACK_DESC desc
) PURE
;
341 STDMETHOD(GetTrackDesc
)(THIS_ UINT track
, LPD3DXTRACK_DESC desc
) PURE
;
342 STDMETHOD(SetPriorityBlend
)(THIS_ FLOAT blend_weight
) PURE
;
343 STDMETHOD_(FLOAT
, GetPriorityBlend
)(THIS
) PURE
;
344 STDMETHOD_(D3DXEVENTHANDLE
, KeyTrackSpeed
)(THIS_ UINT track
, FLOAT new_speed
,
345 DOUBLE start_time
, DOUBLE duration
, D3DXTRANSITION_TYPE transition
) PURE
;
346 STDMETHOD_(D3DXEVENTHANDLE
, KeyTrackWeight
)(THIS_ UINT track
, FLOAT new_weight
,
347 DOUBLE start_time
, DOUBLE duration
, D3DXTRANSITION_TYPE transition
) PURE
;
348 STDMETHOD_(D3DXEVENTHANDLE
, KeyTrackPosition
)(THIS_ UINT track
, DOUBLE new_position
, DOUBLE start_time
) PURE
;
349 STDMETHOD_(D3DXEVENTHANDLE
, KeyTrackEnable
)(THIS_ UINT track
, BOOL new_enable
, DOUBLE start_time
) PURE
;
350 STDMETHOD_(D3DXEVENTHANDLE
, KeyPriorityBlend
)(THIS_ FLOAT new_blend_weight
,
351 DOUBLE start_time
, DOUBLE duration
, D3DXTRANSITION_TYPE transition
) PURE
;
352 STDMETHOD(UnkeyEvent
)(THIS_ D3DXEVENTHANDLE event
) PURE
;
353 STDMETHOD(UnkeyAllTrackEvents
)(THIS_ UINT track
) PURE
;
354 STDMETHOD(UnkeyAllPriorityBlends
)(THIS
) PURE
;
355 STDMETHOD_(D3DXEVENTHANDLE
, GetCurrentTrackEvent
)(THIS_ UINT track
, D3DXEVENT_TYPE event_type
) PURE
;
356 STDMETHOD_(D3DXEVENTHANDLE
, GetCurrentPriorityBlend
)(THIS
) PURE
;
357 STDMETHOD_(D3DXEVENTHANDLE
, GetUpcomingTrackEvent
)(THIS_ UINT track
, D3DXEVENTHANDLE event
) PURE
;
358 STDMETHOD_(D3DXEVENTHANDLE
, GetUpcomingPriorityBlend
)(THIS_ D3DXEVENTHANDLE handle
) PURE
;
359 STDMETHOD(ValidateEvent
)(THIS_ D3DXEVENTHANDLE event
) PURE
;
360 STDMETHOD(GetEventDesc
)(THIS_ D3DXEVENTHANDLE event
, LPD3DXEVENT_DESC desc
) PURE
;
361 STDMETHOD(CloneAnimationController
)(THIS_ UINT max_num_anim_outputs
, UINT max_num_anim_sets
,
362 UINT max_num_tracks
, UINT max_num_events
, ID3DXAnimationController
**anim_controller
) PURE
;
370 HRESULT WINAPI
D3DXLoadMeshHierarchyFromXA(const char *filename
, DWORD flags
, struct IDirect3DDevice9
*device
,
371 struct ID3DXAllocateHierarchy
*alloc
, struct ID3DXLoadUserData
*user_data_loader
,
372 D3DXFRAME
**frame_hierarchy
, struct ID3DXAnimationController
**animation_controller
);
373 HRESULT WINAPI
D3DXLoadMeshHierarchyFromXW(const WCHAR
*filename
, DWORD flags
, struct IDirect3DDevice9
*device
,
374 struct ID3DXAllocateHierarchy
*alloc
, struct ID3DXLoadUserData
*user_data_loader
,
375 D3DXFRAME
**frame_hierarchy
, struct ID3DXAnimationController
**animation_controller
);
376 #define D3DXLoadMeshHierarchyFromX WINELIB_NAME_AW(D3DXLoadMeshHierarchyFromX)
377 HRESULT WINAPI
D3DXLoadMeshHierarchyFromXInMemory(const void *data
, DWORD data_size
, DWORD flags
,
378 struct IDirect3DDevice9
*device
, struct ID3DXAllocateHierarchy
*alloc
,
379 struct ID3DXLoadUserData
*user_data_loader
, D3DXFRAME
**frame_hierarchy
,
380 struct ID3DXAnimationController
**animation_controller
);
381 HRESULT WINAPI
D3DXSaveMeshHierarchyToFileA(const char *filename
, DWORD format
,
382 const D3DXFRAME
*frame_root
, ID3DXAnimationController
*animation_controller
,
383 ID3DXSaveUserData
*user_data_saver
);
384 HRESULT WINAPI
D3DXSaveMeshHierarchyToFileW(const WCHAR
*filename
, DWORD format
,
385 const D3DXFRAME
*frame_root
, ID3DXAnimationController
*animation_controller
,
386 ID3DXSaveUserData
*user_data_saver
);
387 #define D3DXSaveMeshHierarchyToFile WINELIB_NAME_AW(D3DXSaveMeshHierarchyToFile)
388 HRESULT WINAPI
D3DXFrameDestroy(D3DXFRAME
*frame_root
, ID3DXAllocateHierarchy
*alloc
);
389 HRESULT WINAPI
D3DXFrameAppendChild(D3DXFRAME
*parent
, const D3DXFRAME
*child
);
390 D3DXFRAME
* WINAPI
D3DXFrameFind(const D3DXFRAME
*root
, const char *name
);
391 HRESULT WINAPI
D3DXFrameRegisterNamedMatrices(D3DXFRAME
*frame_root
, ID3DXAnimationController
*animation_controller
);
392 UINT WINAPI
D3DXFrameNumNamedMatrices(const D3DXFRAME
*frame_root
);
393 HRESULT WINAPI
D3DXFrameCalculateBoundingSphere(const D3DXFRAME
*frame_root
, D3DXVECTOR3
*center
,
395 HRESULT WINAPI
D3DXCreateKeyframedAnimationSet(const char *name
, double ticks_per_second
,
396 D3DXPLAYBACK_TYPE playback_type
, UINT animation_count
, UINT callback_key_count
,
397 const D3DXKEY_CALLBACK
*callback_keys
, ID3DXKeyframedAnimationSet
**animation_set
);
398 HRESULT WINAPI
D3DXCreateCompressedAnimationSet(const char *name
, double ticks_per_second
,
399 D3DXPLAYBACK_TYPE playback_type
, ID3DXBuffer
*compressed_data
, UINT callback_key_count
,
400 const D3DXKEY_CALLBACK
*callback_keys
, ID3DXCompressedAnimationSet
**animation_set
);
401 HRESULT WINAPI
D3DXCreateAnimationController(UINT max_animation_output_count
, UINT max_animation_set_count
,
402 UINT max_track_count
, UINT max_event_count
, ID3DXAnimationController
**animation_controller
);
408 #endif /* __WINE_D3DX9ANIM_H */