d3dx9anim.h revision 930b5f872e89407f445d4000d4e4aaecaa6a0998
/*
* Copyright 2011 Dylan Smith
*
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 2.1 of the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
*/
/*
* Oracle LGPL Disclaimer: For the avoidance of doubt, except that if any license choice
* other than GPL or LGPL is available it will apply instead, Oracle elects to use only
* the Lesser General Public License version 2.1 (LGPLv2) at this time for any software where
* a choice of LGPL license versions is made available with the language indicating
* that LGPLv2 or any later version may be used, or where a choice of which version
* of the LGPL is applied is otherwise unspecified.
*/
#ifndef __WINE_D3DX9ANIM_H
#define __WINE_D3DX9ANIM_H
DEFINE_GUID(IID_ID3DXAnimationSet, 0x698cfb3f, 0x9289, 0x4d95, 0x9a, 0x57, 0x33, 0xa9, 0x4b, 0x5a, 0x65, 0xf9);
DEFINE_GUID(IID_ID3DXKeyframedAnimationSet, 0xfa4e8e3a, 0x9786, 0x407d, 0x8b, 0x4c, 0x59, 0x95, 0x89, 0x37, 0x64, 0xaf);
DEFINE_GUID(IID_ID3DXCompressedAnimationSet, 0x6cc2480d, 0x3808, 0x4739, 0x9f, 0x88, 0xde, 0x49, 0xfa, 0xcd, 0x8d, 0x4c);
DEFINE_GUID(IID_ID3DXAnimationController, 0xac8948ec, 0xf86d, 0x43e2, 0x96, 0xde, 0x31, 0xfc, 0x35, 0xf9, 0x6d, 0x9e);
typedef enum _D3DXMESHDATATYPE
{
D3DXMESHTYPE_MESH = 1,
D3DXMESHTYPE_PMESH = 2,
D3DXMESHTYPE_FORCE_DWORD = 0x7fffffff,
typedef enum _D3DXCALLBACK_SEARCH_FLAGS
{
D3DXCALLBACK_SEARCH_EXCLUDING_INITIAL_POSITION = 0x00000001,
D3DXCALLBACK_SEARCH_BEHIND_INITIAL_POSITION = 0x00000002,
D3DXCALLBACK_SEARCH_FORCE_DWORD = 0x7fffffff,
typedef enum _D3DXPLAYBACK_TYPE
{
D3DXPLAY_LOOP = 0,
D3DXPLAY_ONCE = 1,
D3DXPLAY_PINGPONG = 2,
D3DXPLAY_FORCE_DWORD = 0x7fffffff,
typedef enum _D3DXCOMPRESSION_FLAGS
{
D3DXCOMPRESSION_DEFAULT = 0x00000000,
D3DXCOMPRESSION_FORCE_DWORD = 0x7fffffff,
typedef enum _D3DXPRIORITY_TYPE
{
D3DXPRIORITY_LOW = 0,
D3DXPRIORITY_HIGH = 1,
D3DXPRIORITY_FORCE_DWORD = 0x7fffffff,
typedef enum _D3DXEVENT_TYPE
{
D3DXEVENT_TRACKSPEED = 0,
D3DXEVENT_FORCE_DWORD = 0x7fffffff,
typedef enum _D3DXTRANSITION_TYPE
{
D3DXTRANSITION_FORCE_DWORD = 0x7fffffff,
typedef struct _D3DXMESHDATA
{
union
{
typedef struct _D3DXMESHCONTAINER
{
char *Name;
struct _D3DXMESHCONTAINER *pNextMeshContainer;
typedef struct _D3DXFRAME
{
char *Name;
struct _D3DXFRAME *pFrameSibling;
struct _D3DXFRAME *pFrameFirstChild;
} D3DXFRAME, *LPD3DXFRAME;
typedef struct _D3DXKEY_VECTOR3
{
typedef struct _D3DXKEY_QUATERNION
{
typedef struct _D3DXKEY_CALLBACK
{
float Time;
void *pCallbackData;
typedef struct _D3DXTRACK_DESC
{
typedef struct _D3DXEVENT_DESC
{
union
{
#define INTERFACE ID3DXAllocateHierarchy
{
};
#define INTERFACE ID3DXLoadUserData
{
};
#define INTERFACE ID3DXSaveUserData
{
};
#define INTERFACE ID3DXAnimationSet
{
/*** IUnknown methods ***/
/*** ID3DXAnimationSet methods ***/
void **callback_data) PURE;
};
#define INTERFACE ID3DXKeyframedAnimationSet
{
/*** IUnknown methods ***/
/*** ID3DXAnimationSet methods ***/
void **callback_data) PURE;
/*** ID3DXKeyframedAnimationSet methods ***/
STDMETHOD(GetTranslationKey)(THIS_ UINT animation, UINT key, LPD3DXKEY_VECTOR3 translation_key) PURE;
STDMETHOD(SetTranslationKey)(THIS_ UINT animation, UINT key, LPD3DXKEY_VECTOR3 translation_key) PURE;
};
#define INTERFACE ID3DXCompressedAnimationSet
{
/*** IUnknown methods ***/
/*** ID3DXAnimationSet methods ***/
void **callback_data) PURE;
/*** ID3DXCompressedAnimationSet methods ***/
};
{
};
#define INTERFACE ID3DXAnimationController
{
/*** IUnknown methods ***/
/*** ID3DXAnimationController methods ***/
STDMETHOD(AdvanceTime)(THIS_ double time_delta, ID3DXAnimationCallbackHandler **callback_handler) PURE;
STDMETHOD_(D3DXEVENTHANDLE, KeyTrackPosition)(THIS_ UINT track, DOUBLE new_position, DOUBLE start_time) PURE;
STDMETHOD_(D3DXEVENTHANDLE, KeyTrackEnable)(THIS_ UINT track, BOOL new_enable, DOUBLE start_time) PURE;
STDMETHOD_(D3DXEVENTHANDLE, GetCurrentTrackEvent)(THIS_ UINT track, D3DXEVENT_TYPE event_type) PURE;
};
#ifdef __cplusplus
extern "C" {
#endif
HRESULT WINAPI D3DXLoadMeshHierarchyFromXA(const char *filename, DWORD flags, struct IDirect3DDevice9 *device,
HRESULT WINAPI D3DXLoadMeshHierarchyFromXW(const WCHAR *filename, DWORD flags, struct IDirect3DDevice9 *device,
struct ID3DXAnimationController **animation_controller);
HRESULT WINAPI D3DXFrameRegisterNamedMatrices(D3DXFRAME *frame_root, ID3DXAnimationController *animation_controller);
HRESULT WINAPI D3DXCreateAnimationController(UINT max_animation_output_count, UINT max_animation_set_count,
#ifdef __cplusplus
}
#endif
#endif /* __WINE_D3DX9ANIM_H */