home *** CD-ROM | disk | FTP | other *** search
/ Total Destruction / Total_Destruction.iso / addons / Lccwin32.exe / Lccwin32 / lccpub / include / d3drmobj.h < prev    next >
Encoding:
C/C++ Source or Header  |  1997-12-04  |  29.7 KB  |  508 lines

  1. #ifndef _LCC_D3DRMOBJ_H_ 
  2. #define _LCC_D3DRMOBJ_H_ 
  3. #include <objbase.h> 
  4. #define VIRTUAL 
  5. #include "d3drmdef.h" 
  6. #include "d3d.h" 
  7. #define IUNKNOWN_METHODS(kind) \
  8.     STDMETHOD(QueryInterface)           (THIS_ REFIID riid, LPVOID *ppvObj) kind; \
  9.     STDMETHOD_(ULONG, AddRef)           (THIS) kind; \
  10.     STDMETHOD_(ULONG, Release)          (THIS) kind 
  11. #define IDIRECT3DRMOBJECT_METHODS(kind) \
  12.     STDMETHOD(Clone)                    (THIS_ LPUNKNOWN pUnkOuter, REFIID riid, LPVOID *ppvObj) kind; \
  13.     STDMETHOD(AddDestroyCallback)       (THIS_ D3DRMOBJECTCALLBACK, LPVOID argument) kind; \
  14.     STDMETHOD(DeleteDestroyCallback)    (THIS_ D3DRMOBJECTCALLBACK, LPVOID argument) kind; \
  15.     STDMETHOD(SetAppData)               (THIS_ DWORD data) kind; \
  16.     STDMETHOD_(DWORD, GetAppData)       (THIS) kind; \
  17.     STDMETHOD(SetName)                  (THIS_ LPCSTR) kind; \
  18.     STDMETHOD(GetName)                  (THIS_ LPDWORD lpdwSize, LPSTR lpName) kind; \
  19.     STDMETHOD(GetClassName)             (THIS_ LPDWORD lpdwSize, LPSTR lpName) kind 
  20. #define WIN_TYPES(itype, ptype) typedef interface itype FAR *LP##ptype, FAR **LPLP##ptype 
  21. WIN_TYPES(IDirect3DRMObject, DIRECT3DRMOBJECT); 
  22. WIN_TYPES(IDirect3DRMDevice, DIRECT3DRMDEVICE); 
  23. WIN_TYPES(IDirect3DRMViewport, DIRECT3DRMVIEWPORT); 
  24. WIN_TYPES(IDirect3DRMFrame, DIRECT3DRMFRAME); 
  25. WIN_TYPES(IDirect3DRMVisual, DIRECT3DRMVISUAL); 
  26. WIN_TYPES(IDirect3DRMMesh, DIRECT3DRMMESH); 
  27. WIN_TYPES(IDirect3DRMMeshBuilder, DIRECT3DRMMESHBUILDER); 
  28. WIN_TYPES(IDirect3DRMFace, DIRECT3DRMFACE); 
  29. WIN_TYPES(IDirect3DRMLight, DIRECT3DRMLIGHT); 
  30. WIN_TYPES(IDirect3DRMTexture, DIRECT3DRMTEXTURE); 
  31. WIN_TYPES(IDirect3DRMWrap, DIRECT3DRMWRAP); 
  32. WIN_TYPES(IDirect3DRMMaterial, DIRECT3DRMMATERIAL); 
  33. WIN_TYPES(IDirect3DRMAnimation, DIRECT3DRMANIMATION); 
  34. WIN_TYPES(IDirect3DRMAnimationSet, DIRECT3DRMANIMATIONSET); 
  35. WIN_TYPES(IDirect3DRMUserVisual, DIRECT3DRMUSERVISUAL); 
  36. WIN_TYPES(IDirect3DRMShadow, DIRECT3DRMSHADOW); 
  37. WIN_TYPES(IDirect3DRMArray, DIRECT3DRMOBJECTARRAY); 
  38. WIN_TYPES(IDirect3DRMDeviceArray, DIRECT3DRMDEVICEARRAY); 
  39. WIN_TYPES(IDirect3DRMFaceArray, DIRECT3DRMFACEARRAY); 
  40. WIN_TYPES(IDirect3DRMViewportArray, DIRECT3DRMVIEWPORTARRAY); 
  41. WIN_TYPES(IDirect3DRMFrameArray, DIRECT3DRMFRAMEARRAY); 
  42. WIN_TYPES(IDirect3DRMVisualArray, DIRECT3DRMVISUALARRAY); 
  43. WIN_TYPES(IDirect3DRMPickedArray, DIRECT3DRMPICKEDARRAY); 
  44. WIN_TYPES(IDirect3DRMLightArray, DIRECT3DRMLIGHTARRAY); 
  45. DEFINE_GUID(CLSID_CDirect3DRMDevice,        0x4fa3568e, 0x623f, 0x11cf, 0xac, 0x4a, 0x0, 0x0, 0xc0, 0x38, 0x25, 0xa1); 
  46. DEFINE_GUID(CLSID_CDirect3DRMViewport,      0x4fa3568f, 0x623f, 0x11cf, 0xac, 0x4a, 0x0, 0x0, 0xc0, 0x38, 0x25, 0xa1); 
  47. DEFINE_GUID(CLSID_CDirect3DRMFrame,         0x4fa35690, 0x623f, 0x11cf, 0xac, 0x4a, 0x0, 0x0, 0xc0, 0x38, 0x25, 0xa1); 
  48. DEFINE_GUID(CLSID_CDirect3DRMMesh,          0x4fa35691, 0x623f, 0x11cf, 0xac, 0x4a, 0x0, 0x0, 0xc0, 0x38, 0x25, 0xa1); 
  49. DEFINE_GUID(CLSID_CDirect3DRMMeshBuilder,   0x4fa35692, 0x623f, 0x11cf, 0xac, 0x4a, 0x0, 0x0, 0xc0, 0x38, 0x25, 0xa1); 
  50. DEFINE_GUID(CLSID_CDirect3DRMFace,          0x4fa35693, 0x623f, 0x11cf, 0xac, 0x4a, 0x0, 0x0, 0xc0, 0x38, 0x25, 0xa1); 
  51. DEFINE_GUID(CLSID_CDirect3DRMLight,         0x4fa35694, 0x623f, 0x11cf, 0xac, 0x4a, 0x0, 0x0, 0xc0, 0x38, 0x25, 0xa1); 
  52. DEFINE_GUID(CLSID_CDirect3DRMTexture,       0x4fa35695, 0x623f, 0x11cf, 0xac, 0x4a, 0x0, 0x0, 0xc0, 0x38, 0x25, 0xa1); 
  53. DEFINE_GUID(CLSID_CDirect3DRMWrap,          0x4fa35696, 0x623f, 0x11cf, 0xac, 0x4a, 0x0, 0x0, 0xc0, 0x38, 0x25, 0xa1); 
  54. DEFINE_GUID(CLSID_CDirect3DRMMaterial,      0x4fa35697, 0x623f, 0x11cf, 0xac, 0x4a, 0x0, 0x0, 0xc0, 0x38, 0x25, 0xa1); 
  55. DEFINE_GUID(CLSID_CDirect3DRMAnimation,     0x4fa35698, 0x623f, 0x11cf, 0xac, 0x4a, 0x0, 0x0, 0xc0, 0x38, 0x25, 0xa1); 
  56. DEFINE_GUID(CLSID_CDirect3DRMAnimationSet,  0x4fa35699, 0x623f, 0x11cf, 0xac, 0x4a, 0x0, 0x0, 0xc0, 0x38, 0x25, 0xa1); 
  57. DEFINE_GUID(CLSID_CDirect3DRMUserVisual,    0x4fa3569a, 0x623f, 0x11cf, 0xac, 0x4a, 0x0, 0x0, 0xc0, 0x38, 0x25, 0xa1); 
  58. DEFINE_GUID(CLSID_CDirect3DRMShadow,        0x4fa3569b, 0x623f, 0x11cf, 0xac, 0x4a, 0x0, 0x0, 0xc0, 0x38, 0x25, 0xa1); 
  59. DEFINE_GUID(IID_IDirect3DRMObject,          0xeb16cb00, 0xd271, 0x11ce, 0xac, 0x48, 0x0, 0x0, 0xc0, 0x38, 0x25, 0xa1); 
  60. DEFINE_GUID(IID_IDirect3DRMDevice,          0xe9e19280, 0x6e05, 0x11cf, 0xac, 0x4a, 0x0, 0x0, 0xc0, 0x38, 0x25, 0xa1); 
  61. DEFINE_GUID(IID_IDirect3DRMViewport,        0xeb16cb02, 0xd271, 0x11ce, 0xac, 0x48, 0x0, 0x0, 0xc0, 0x38, 0x25, 0xa1); 
  62. DEFINE_GUID(IID_IDirect3DRMFrame,           0xeb16cb03, 0xd271, 0x11ce, 0xac, 0x48, 0x0, 0x0, 0xc0, 0x38, 0x25, 0xa1); 
  63. DEFINE_GUID(IID_IDirect3DRMVisual,          0xeb16cb04, 0xd271, 0x11ce, 0xac, 0x48, 0x0, 0x0, 0xc0, 0x38, 0x25, 0xa1); 
  64. DEFINE_GUID(IID_IDirect3DRMMesh,            0xa3a80d01, 0x6e12, 0x11cf, 0xac, 0x4a, 0x0, 0x0, 0xc0, 0x38, 0x25, 0xa1); 
  65. DEFINE_GUID(IID_IDirect3DRMMeshBuilder,     0xa3a80d02, 0x6e12, 0x11cf, 0xac, 0x4a, 0x0, 0x0, 0xc0, 0x38, 0x25, 0xa1); 
  66. DEFINE_GUID(IID_IDirect3DRMFace,            0xeb16cb07, 0xd271, 0x11ce, 0xac, 0x48, 0x0, 0x0, 0xc0, 0x38, 0x25, 0xa1); 
  67. DEFINE_GUID(IID_IDirect3DRMLight,           0xeb16cb08, 0xd271, 0x11ce, 0xac, 0x48, 0x0, 0x0, 0xc0, 0x38, 0x25, 0xa1); 
  68. DEFINE_GUID(IID_IDirect3DRMTexture,         0xeb16cb09, 0xd271, 0x11ce, 0xac, 0x48, 0x0, 0x0, 0xc0, 0x38, 0x25, 0xa1); 
  69. DEFINE_GUID(IID_IDirect3DRMWrap,            0xeb16cb0a, 0xd271, 0x11ce, 0xac, 0x48, 0x0, 0x0, 0xc0, 0x38, 0x25, 0xa1); 
  70. DEFINE_GUID(IID_IDirect3DRMMaterial,        0xeb16cb0b, 0xd271, 0x11ce, 0xac, 0x48, 0x0, 0x0, 0xc0, 0x38, 0x25, 0xa1); 
  71. DEFINE_GUID(IID_IDirect3DRMAnimation,       0xeb16cb0d, 0xd271, 0x11ce, 0xac, 0x48, 0x0, 0x0, 0xc0, 0x38, 0x25, 0xa1); 
  72. DEFINE_GUID(IID_IDirect3DRMAnimationSet,    0xeb16cb0e, 0xd271, 0x11ce, 0xac, 0x48, 0x0, 0x0, 0xc0, 0x38, 0x25, 0xa1); 
  73. DEFINE_GUID(IID_IDirect3DRMDeviceArray,     0xeb16cb10, 0xd271, 0x11ce, 0xac, 0x48, 0x0, 0x0, 0xc0, 0x38, 0x25, 0xa1); 
  74. DEFINE_GUID(IID_IDirect3DRMViewportArray,   0xeb16cb11, 0xd271, 0x11ce, 0xac, 0x48, 0x0, 0x0, 0xc0, 0x38, 0x25, 0xa1); 
  75. DEFINE_GUID(IID_IDirect3DRMFrameArray,      0xeb16cb12, 0xd271, 0x11ce, 0xac, 0x48, 0x0, 0x0, 0xc0, 0x38, 0x25, 0xa1); 
  76. DEFINE_GUID(IID_IDirect3DRMVisualArray,     0xeb16cb13, 0xd271, 0x11ce, 0xac, 0x48, 0x0, 0x0, 0xc0, 0x38, 0x25, 0xa1); 
  77. DEFINE_GUID(IID_IDirect3DRMLightArray,      0xeb16cb14, 0xd271, 0x11ce, 0xac, 0x48, 0x0, 0x0, 0xc0, 0x38, 0x25, 0xa1); 
  78. DEFINE_GUID(IID_IDirect3DRMPickedArray,     0xeb16cb16, 0xd271, 0x11ce, 0xac, 0x48, 0x0, 0x0, 0xc0, 0x38, 0x25, 0xa1); 
  79. DEFINE_GUID(IID_IDirect3DRMFaceArray,       0xeb16cb17, 0xd271, 0x11ce, 0xac, 0x48, 0x0, 0x0, 0xc0, 0x38, 0x25, 0xa1); 
  80. DEFINE_GUID(IID_IDirect3DRMUserVisual,      0x59163de0, 0x6d43, 0x11cf, 0xac, 0x4a, 0x0, 0x0, 0xc0, 0x38, 0x25, 0xa1); 
  81. DEFINE_GUID(IID_IDirect3DRMShadow,          0xaf359780, 0x6ba3, 0x11cf, 0xac, 0x4a, 0x0, 0x0, 0xc0, 0x38, 0x25, 0xa1); 
  82. typedef void (CDECL *D3DRMOBJECTCALLBACK)(LPDIRECT3DRMOBJECT obj, LPVOID arg); 
  83. typedef void (CDECL *D3DRMFRAMEMOVECALLBACK)(LPDIRECT3DRMFRAME obj, LPVOID arg, D3DVALUE delta); 
  84. typedef void (CDECL *D3DRMUPDATECALLBACK)(LPDIRECT3DRMDEVICE obj, LPVOID arg, int, LPD3DRECT); 
  85. typedef int (CDECL *D3DRMUSERVISUALCALLBACK)(LPDIRECT3DRMUSERVISUAL,LPVOID,D3DRMUSERVISUALREASON,LPDIRECT3DRMDEVICE,LPDIRECT3DRMVIEWPORT); 
  86. typedef HRESULT (CDECL *D3DRMLOADTEXTURECALLBACK)(char *,void *,LPDIRECT3DRMTEXTURE *); 
  87. typedef void (CDECL *D3DRMLOADCALLBACK) (LPDIRECT3DRMOBJECT,REFIID,LPVOID); 
  88. typedef struct _D3DRMPICKDESC { 
  89.     ULONG       ulFaceIdx; 
  90.     LONG        lGroupIdx; 
  91.     D3DVECTOR   vPosition; 
  92. } D3DRMPICKDESC, *LPD3DRMPICKDESC; 
  93. #undef INTERFACE 
  94. #define INTERFACE IDirect3DRMObject 
  95. DECLARE_INTERFACE_(IDirect3DRMObject, IUnknown) { 
  96.     IUNKNOWN_METHODS(PURE); 
  97.     IDIRECT3DRMOBJECT_METHODS(PURE); 
  98. }; 
  99. #undef INTERFACE 
  100. #define INTERFACE IDirect3DRMVisual 
  101. DECLARE_INTERFACE_(IDirect3DRMVisual, IDirect3DRMObject) { 
  102.     IUNKNOWN_METHODS(PURE); 
  103.     IDIRECT3DRMOBJECT_METHODS(PURE); 
  104. }; 
  105. #undef INTERFACE 
  106. #define INTERFACE IDirect3DRMDevice 
  107. DECLARE_INTERFACE_(IDirect3DRMDevice, IDirect3DRMObject) { 
  108.     IUNKNOWN_METHODS(PURE); 
  109.     IDIRECT3DRMOBJECT_METHODS(PURE); 
  110.     STDMETHOD(Init)(THIS_ ULONG width, ULONG height) PURE; 
  111.     STDMETHOD(InitFromD3D)(THIS_ LPDIRECT3D lpD3D, LPDIRECT3DDEVICE lpD3DDev) PURE; 
  112.     STDMETHOD(InitFromClipper)(THIS_ LPDIRECTDRAWCLIPPER lpDDClipper, LPGUID lpGUID, int width, int height) PURE; 
  113.     STDMETHOD(Update)(THIS) PURE; 
  114.     STDMETHOD(AddUpdateCallback)(THIS_ D3DRMUPDATECALLBACK, LPVOID arg) PURE; 
  115.     STDMETHOD(DeleteUpdateCallback)(THIS_ D3DRMUPDATECALLBACK, LPVOID arg) PURE; 
  116.     STDMETHOD(SetBufferCount)(THIS_ DWORD) PURE; 
  117.     STDMETHOD_(DWORD, GetBufferCount)(THIS) PURE; 
  118.     STDMETHOD(SetDither)(THIS_ BOOL) PURE; 
  119.     STDMETHOD(SetShades)(THIS_ DWORD) PURE; 
  120.     STDMETHOD(SetQuality)(THIS_ D3DRMRENDERQUALITY) PURE; 
  121.     STDMETHOD(SetTextureQuality)(THIS_ D3DRMTEXTUREQUALITY) PURE; 
  122.     STDMETHOD(GetViewports)(THIS_ LPDIRECT3DRMVIEWPORTARRAY *return_views) PURE; 
  123.     STDMETHOD_(BOOL, GetDither)(THIS) PURE; 
  124.     STDMETHOD_(DWORD, GetShades)(THIS) PURE; 
  125.     STDMETHOD_(DWORD, GetHeight)(THIS) PURE; 
  126.     STDMETHOD_(DWORD, GetWidth)(THIS) PURE; 
  127.     STDMETHOD_(DWORD, GetTrianglesDrawn)(THIS) PURE; 
  128.     STDMETHOD_(DWORD, GetWireframeOptions)(THIS) PURE; 
  129.     STDMETHOD_(D3DRMRENDERQUALITY, GetQuality)(THIS) PURE; 
  130.     STDMETHOD_(D3DCOLORMODEL, GetColorModel)(THIS) PURE; 
  131.     STDMETHOD_(D3DRMTEXTUREQUALITY, GetTextureQuality)(THIS) PURE; 
  132.     STDMETHOD(GetDirect3DDevice)(THIS_ LPDIRECT3DDEVICE *) PURE; 
  133. }; 
  134. #undef INTERFACE 
  135. #define INTERFACE IDirect3DRMViewport 
  136. DECLARE_INTERFACE_(IDirect3DRMViewport, IDirect3DRMObject) { 
  137.     IUNKNOWN_METHODS(PURE); 
  138.     IDIRECT3DRMOBJECT_METHODS(PURE); 
  139.     STDMETHOD(Init)(THIS_ LPDIRECT3DRMDEVICE d,LPDIRECT3DRMFRAME c,DWORD x,DWORD y,DWORD w,DWORD h) PURE; 
  140.     STDMETHOD(Clear)(THIS) PURE; 
  141.     STDMETHOD(Render)(THIS_ LPDIRECT3DRMFRAME) PURE; 
  142.     STDMETHOD(SetFront)(THIS_ D3DVALUE) PURE; 
  143.     STDMETHOD(SetBack)(THIS_ D3DVALUE) PURE; 
  144.     STDMETHOD(SetField)(THIS_ D3DVALUE) PURE; 
  145.     STDMETHOD(SetUniformScaling)(THIS_ BOOL) PURE; 
  146.     STDMETHOD(SetCamera)(THIS_ LPDIRECT3DRMFRAME) PURE; 
  147.     STDMETHOD(SetProjection)(THIS_ D3DRMPROJECTIONTYPE) PURE; 
  148.     STDMETHOD(Transform)(THIS_ D3DRMVECTOR4D *d, D3DVECTOR *s) PURE; 
  149.     STDMETHOD(InverseTransform)(THIS_ D3DVECTOR *d, D3DRMVECTOR4D *s) PURE; 
  150.     STDMETHOD(Configure)(THIS_ LONG x, LONG y, DWORD width, DWORD height) PURE; 
  151.     STDMETHOD(ForceUpdate)(THIS_ DWORD x1, DWORD y1, DWORD x2, DWORD y2) PURE; 
  152.     STDMETHOD(SetPlane)(THIS_ D3DVALUE left, D3DVALUE right, D3DVALUE bottom, D3DVALUE top) PURE; 
  153.     STDMETHOD(GetCamera)(THIS_ LPDIRECT3DRMFRAME *) PURE; 
  154.     STDMETHOD(GetDevice)(THIS_ LPDIRECT3DRMDEVICE *) PURE; 
  155.     STDMETHOD(GetPlane)(THIS_ D3DVALUE *left, D3DVALUE *right, D3DVALUE *bottom, D3DVALUE *top) PURE; 
  156.     STDMETHOD(Pick)(THIS_ LONG x, LONG y, LPDIRECT3DRMPICKEDARRAY *return_visuals) PURE; 
  157.     STDMETHOD_(BOOL, GetUniformScaling)(THIS) PURE; 
  158.     STDMETHOD_(LONG, GetX)(THIS) PURE; 
  159.     STDMETHOD_(LONG, GetY)(THIS) PURE; 
  160.     STDMETHOD_(DWORD, GetWidth)(THIS) PURE; 
  161.     STDMETHOD_(DWORD, GetHeight)(THIS) PURE; 
  162.     STDMETHOD_(D3DVALUE, GetField)(THIS) PURE; 
  163.     STDMETHOD_(D3DVALUE, GetBack)(THIS) PURE; 
  164.     STDMETHOD_(D3DVALUE, GetFront)(THIS) PURE; 
  165.     STDMETHOD_(D3DRMPROJECTIONTYPE, GetProjection)(THIS) PURE; 
  166.     STDMETHOD(GetDirect3DViewport)(THIS_ LPDIRECT3DVIEWPORT *) PURE; 
  167. }; 
  168. #undef INTERFACE 
  169. #define INTERFACE IDirect3DRMFrame 
  170. DECLARE_INTERFACE_(IDirect3DRMFrame, IDirect3DRMVisual) { 
  171.     IUNKNOWN_METHODS(PURE); 
  172.     IDIRECT3DRMOBJECT_METHODS(PURE); 
  173.     STDMETHOD(AddChild)(THIS_ LPDIRECT3DRMFRAME child) PURE; 
  174.     STDMETHOD(AddLight)(THIS_ LPDIRECT3DRMLIGHT) PURE; 
  175.     STDMETHOD(AddMoveCallback)(THIS_ D3DRMFRAMEMOVECALLBACK, VOID *arg) PURE; 
  176.     STDMETHOD(AddTransform)(THIS_ D3DRMCOMBINETYPE, D3DRMMATRIX4D) PURE; 
  177.     STDMETHOD(AddTranslation)(THIS_ D3DRMCOMBINETYPE, D3DVALUE x, D3DVALUE y, D3DVALUE z) PURE; 
  178.     STDMETHOD(AddScale)(THIS_ D3DRMCOMBINETYPE, D3DVALUE sx, D3DVALUE sy, D3DVALUE sz) PURE; 
  179.     STDMETHOD(AddRotation)(THIS_ D3DRMCOMBINETYPE, D3DVALUE x, D3DVALUE y, D3DVALUE z, D3DVALUE theta) PURE; 
  180.     STDMETHOD(AddVisual)(THIS_ LPDIRECT3DRMVISUAL) PURE; 
  181.     STDMETHOD(GetChildren)(THIS_ LPDIRECT3DRMFRAMEARRAY *children) PURE; 
  182.     STDMETHOD_(D3DCOLOR, GetColor)(THIS) PURE; 
  183.     STDMETHOD(GetLights)(THIS_ LPDIRECT3DRMLIGHTARRAY *lights) PURE; 
  184.     STDMETHOD_(D3DRMMATERIALMODE, GetMaterialMode)(THIS) PURE; 
  185.     STDMETHOD(GetParent)(THIS_ LPDIRECT3DRMFRAME *) PURE; 
  186.     STDMETHOD(GetPosition)(THIS_ LPDIRECT3DRMFRAME reference, LPD3DVECTOR return_position) PURE; 
  187.     STDMETHOD(GetRotation)(THIS_ LPDIRECT3DRMFRAME reference, LPD3DVECTOR axis, LPD3DVALUE return_theta) PURE; 
  188.     STDMETHOD(GetScene)(THIS_ LPDIRECT3DRMFRAME *) PURE; 
  189.     STDMETHOD_(D3DRMSORTMODE, GetSortMode)(THIS) PURE; 
  190.     STDMETHOD(GetTexture)(THIS_ LPDIRECT3DRMTEXTURE *) PURE; 
  191.     STDMETHOD(GetTransform)(THIS_ D3DRMMATRIX4D return_matrix) PURE; 
  192.     STDMETHOD(GetVelocity)(THIS_ LPDIRECT3DRMFRAME reference, LPD3DVECTOR return_velocity, BOOL with_rotation) PURE; 
  193.     STDMETHOD(GetOrientation)(THIS_ LPDIRECT3DRMFRAME reference, LPD3DVECTOR dir, LPD3DVECTOR up) PURE; 
  194.     STDMETHOD(GetVisuals)(THIS_ LPDIRECT3DRMVISUALARRAY *visuals) PURE; 
  195.     STDMETHOD(GetTextureTopology)(THIS_ BOOL *wrap_u, BOOL *wrap_v) PURE; 
  196.     STDMETHOD(InverseTransform)(THIS_ D3DVECTOR *d, D3DVECTOR *s) PURE; 
  197.     STDMETHOD(Load)(THIS_ LPVOID filename, LPVOID name, D3DRMLOADOPTIONS loadflags, D3DRMLOADTEXTURECALLBACK, LPVOID lpArg)PURE; 
  198.     STDMETHOD(LookAt)(THIS_ LPDIRECT3DRMFRAME target, LPDIRECT3DRMFRAME reference, D3DRMFRAMECONSTRAINT) PURE; 
  199.     STDMETHOD(Move)(THIS_ D3DVALUE delta) PURE; 
  200.     STDMETHOD(DeleteChild)(THIS_ LPDIRECT3DRMFRAME) PURE; 
  201.     STDMETHOD(DeleteLight)(THIS_ LPDIRECT3DRMLIGHT) PURE; 
  202.     STDMETHOD(DeleteMoveCallback)(THIS_ D3DRMFRAMEMOVECALLBACK, VOID *arg) PURE; 
  203.     STDMETHOD(DeleteVisual)(THIS_ LPDIRECT3DRMVISUAL) PURE; 
  204.     STDMETHOD_(D3DCOLOR, GetSceneBackground)(THIS) PURE; 
  205.     STDMETHOD(GetSceneBackgroundDepth)(THIS_ LPDIRECTDRAWSURFACE *) PURE; 
  206.     STDMETHOD_(D3DCOLOR, GetSceneFogColor)(THIS) PURE; 
  207.     STDMETHOD_(BOOL, GetSceneFogEnable)(THIS) PURE; 
  208.     STDMETHOD_(D3DRMFOGMODE, GetSceneFogMode)(THIS) PURE; 
  209.     STDMETHOD(GetSceneFogParams)(THIS_ D3DVALUE *return_start, D3DVALUE *return_end, D3DVALUE *return_density) PURE; 
  210.     STDMETHOD(SetSceneBackground)(THIS_ D3DCOLOR) PURE; 
  211.     STDMETHOD(SetSceneBackgroundRGB)(THIS_ D3DVALUE red, D3DVALUE green, D3DVALUE blue) PURE; 
  212.     STDMETHOD(SetSceneBackgroundDepth)(THIS_ LPDIRECTDRAWSURFACE) PURE; 
  213.     STDMETHOD(SetSceneBackgroundImage)(THIS_ LPDIRECT3DRMTEXTURE) PURE; 
  214.     STDMETHOD(SetSceneFogEnable)(THIS_ BOOL) PURE; 
  215.     STDMETHOD(SetSceneFogColor)(THIS_ D3DCOLOR) PURE; 
  216.     STDMETHOD(SetSceneFogMode)(THIS_ D3DRMFOGMODE) PURE; 
  217.     STDMETHOD(SetSceneFogParams)(THIS_ D3DVALUE start, D3DVALUE end, D3DVALUE density) PURE; 
  218.     STDMETHOD(SetColor)(THIS_ D3DCOLOR) PURE; 
  219.     STDMETHOD(SetColorRGB)(THIS_ D3DVALUE red, D3DVALUE green, D3DVALUE blue) PURE; 
  220.     STDMETHOD_(D3DRMZBUFFERMODE, GetZbufferMode)(THIS) PURE; 
  221.     STDMETHOD(SetMaterialMode)(THIS_ D3DRMMATERIALMODE) PURE; 
  222.     STDMETHOD(SetOrientation)(THIS_ LPDIRECT3DRMFRAME r, D3DVALUE dx, D3DVALUE dy, D3DVALUE dz,D3DVALUE ux,D3DVALUE uy,D3DVALUE uz) PURE; 
  223.     STDMETHOD(SetPosition)(THIS_ LPDIRECT3DRMFRAME reference, D3DVALUE x, D3DVALUE y, D3DVALUE z) PURE; 
  224.     STDMETHOD(SetRotation)(THIS_ LPDIRECT3DRMFRAME reference, D3DVALUE x, D3DVALUE y, D3DVALUE z, D3DVALUE theta) PURE; 
  225.     STDMETHOD(SetSortMode)(THIS_ D3DRMSORTMODE) PURE; 
  226.     STDMETHOD(SetTexture)(THIS_ LPDIRECT3DRMTEXTURE) PURE; 
  227.     STDMETHOD(SetTextureTopology)(THIS_ BOOL wrap_u, BOOL wrap_v) PURE; 
  228.     STDMETHOD(SetVelocity)(THIS_ LPDIRECT3DRMFRAME reference, D3DVALUE x, D3DVALUE y, D3DVALUE z, BOOL with_rotation) PURE; 
  229.     STDMETHOD(SetZbufferMode)(THIS_ D3DRMZBUFFERMODE) PURE; 
  230.     STDMETHOD(Transform)(THIS_ D3DVECTOR *d, D3DVECTOR *s) PURE; 
  231. }; 
  232. #undef INTERFACE 
  233. #define INTERFACE IDirect3DRMMesh 
  234. DECLARE_INTERFACE_(IDirect3DRMMesh, IDirect3DRMVisual) { 
  235.     IUNKNOWN_METHODS(PURE); 
  236.     IDIRECT3DRMOBJECT_METHODS(PURE); 
  237.     STDMETHOD(Scale)(THIS_ D3DVALUE sx, D3DVALUE sy, D3DVALUE sz) PURE; 
  238.     STDMETHOD(Translate)(THIS_ D3DVALUE tx, D3DVALUE ty, D3DVALUE tz) PURE; 
  239.     STDMETHOD(GetBox)(THIS_ D3DRMBOX *) PURE; 
  240.     STDMETHOD(AddGroup)(THIS_ unsigned vCount, unsigned fCount, unsigned vPerFace, unsigned *fData, D3DRMGROUPINDEX *returnId) PURE; 
  241.     STDMETHOD(SetVertices)(THIS_ D3DRMGROUPINDEX id, unsigned index, unsigned count, D3DRMVERTEX *values) PURE; 
  242.     STDMETHOD(SetGroupColor)(THIS_ D3DRMGROUPINDEX id, D3DCOLOR value) PURE; 
  243.     STDMETHOD(SetGroupColorRGB)(THIS_ D3DRMGROUPINDEX id, D3DVALUE red, D3DVALUE green, D3DVALUE blue) PURE; 
  244.     STDMETHOD(SetGroupMapping)(THIS_ D3DRMGROUPINDEX id, D3DRMMAPPING value) PURE; 
  245.     STDMETHOD(SetGroupQuality)(THIS_ D3DRMGROUPINDEX id, D3DRMRENDERQUALITY value) PURE; 
  246.     STDMETHOD(SetGroupMaterial)(THIS_ D3DRMGROUPINDEX id, LPDIRECT3DRMMATERIAL value) PURE; 
  247.     STDMETHOD(SetGroupTexture)(THIS_ D3DRMGROUPINDEX id, LPDIRECT3DRMTEXTURE value) PURE; 
  248.     STDMETHOD_(unsigned, GetGroupCount)(THIS) PURE; 
  249.     STDMETHOD(GetGroup)(THIS_ D3DRMGROUPINDEX id, unsigned *vCount, unsigned *fCount, unsigned *vPerFace, DWORD *fDataSize, unsigned *fData) PURE; 
  250.     STDMETHOD(GetVertices)(THIS_ D3DRMGROUPINDEX id, DWORD index, DWORD count, D3DRMVERTEX *returnPtr) PURE; 
  251.     STDMETHOD_(D3DCOLOR, GetGroupColor)(THIS_ D3DRMGROUPINDEX id) PURE; 
  252.     STDMETHOD_(D3DRMMAPPING, GetGroupMapping)(THIS_ D3DRMGROUPINDEX id) PURE; 
  253.     STDMETHOD_(D3DRMRENDERQUALITY, GetGroupQuality)(THIS_ D3DRMGROUPINDEX id) PURE; 
  254.     STDMETHOD(GetGroupMaterial)(THIS_ D3DRMGROUPINDEX id, LPDIRECT3DRMMATERIAL *returnPtr) PURE; 
  255.     STDMETHOD(GetGroupTexture)(THIS_ D3DRMGROUPINDEX id, LPDIRECT3DRMTEXTURE *returnPtr) PURE; 
  256. }; 
  257. #undef INTERFACE 
  258. #define INTERFACE IDirect3DRMShadow 
  259. DECLARE_INTERFACE_(IDirect3DRMShadow, IDirect3DRMVisual) { 
  260.     IUNKNOWN_METHODS(PURE); 
  261.     IDIRECT3DRMOBJECT_METHODS(PURE); 
  262.     STDMETHOD(Init) 
  263.     (   THIS_ LPDIRECT3DRMVISUAL visual, LPDIRECT3DRMLIGHT light, 
  264.         D3DVALUE px, D3DVALUE py, D3DVALUE pz, 
  265.         D3DVALUE nx, D3DVALUE ny, D3DVALUE nz 
  266.     ) PURE; 
  267. }; 
  268. #undef INTERFACE 
  269. #define INTERFACE IDirect3DRMFace 
  270. DECLARE_INTERFACE_(IDirect3DRMFace, IDirect3DRMObject) { 
  271.     IUNKNOWN_METHODS(PURE); 
  272.     IDIRECT3DRMOBJECT_METHODS(PURE); 
  273.      STDMETHOD(AddVertex)(THIS_ D3DVALUE x, D3DVALUE y, D3DVALUE z) PURE; 
  274.      STDMETHOD(AddVertexAndNormalIndexed)(THIS_ DWORD vertex, DWORD normal) PURE; 
  275.      STDMETHOD(SetColorRGB)(THIS_ D3DVALUE, D3DVALUE, D3DVALUE) PURE; 
  276.      STDMETHOD(SetColor)(THIS_ D3DCOLOR) PURE; 
  277.      STDMETHOD(SetTexture)(THIS_ LPDIRECT3DRMTEXTURE) PURE; 
  278.      STDMETHOD(SetTextureCoordinates)(THIS_ DWORD vertex, D3DVALUE u, D3DVALUE v) PURE; 
  279.      STDMETHOD(SetMaterial)(THIS_ LPDIRECT3DRMMATERIAL) PURE; 
  280.      STDMETHOD(SetTextureTopology)(THIS_ BOOL wrap_u, BOOL wrap_v) PURE; 
  281.      STDMETHOD(GetVertex)(THIS_ DWORD index, D3DVECTOR *vertex, D3DVECTOR *normal) PURE; 
  282.      STDMETHOD(GetVertices)(THIS_ DWORD *vertex_count, D3DVECTOR *coords, D3DVECTOR *normals); 
  283.      STDMETHOD(GetTextureCoordinates)(THIS_ DWORD vertex, D3DVALUE *u, D3DVALUE *v) PURE; 
  284.      STDMETHOD(GetTextureTopology)(THIS_ BOOL *wrap_u, BOOL *wrap_v) PURE; 
  285.      STDMETHOD(GetNormal)(THIS_ D3DVECTOR *) PURE; 
  286.      STDMETHOD(GetTexture)(THIS_ LPDIRECT3DRMTEXTURE *) PURE; 
  287.      STDMETHOD(GetMaterial)(THIS_ LPDIRECT3DRMMATERIAL *) PURE; 
  288.      STDMETHOD_(int, GetVertexCount)(THIS) PURE; 
  289.      STDMETHOD_(int, GetVertexIndex)(THIS_ DWORD which) PURE; 
  290.      STDMETHOD_(int, GetTextureCoordinateIndex)(THIS_ DWORD which) PURE; 
  291.      STDMETHOD_(D3DCOLOR, GetColor)(THIS) PURE; 
  292. }; 
  293. #undef INTERFACE 
  294. #define INTERFACE IDirect3DRMMeshBuilder 
  295. DECLARE_INTERFACE_(IDirect3DRMMeshBuilder, IDirect3DRMVisual) { 
  296.     IUNKNOWN_METHODS(PURE); 
  297.     IDIRECT3DRMOBJECT_METHODS(PURE); 
  298.     STDMETHOD(Load)(THIS_ LPVOID filename, LPVOID name, D3DRMLOADOPTIONS loadflags, D3DRMLOADTEXTURECALLBACK, LPVOID lpArg) PURE; 
  299.     STDMETHOD(Save)(THIS_ const char *filename, D3DRMXOFFORMAT, D3DRMSAVEOPTIONS save) PURE; 
  300.     STDMETHOD(Scale)(THIS_ D3DVALUE sx, D3DVALUE sy, D3DVALUE sz) PURE; 
  301.     STDMETHOD(Translate)(THIS_ D3DVALUE tx, D3DVALUE ty, D3DVALUE tz) PURE; 
  302.     STDMETHOD(SetColorSource)(THIS_ D3DRMCOLORSOURCE) PURE; 
  303.     STDMETHOD(GetBox)(THIS_ D3DRMBOX *) PURE; 
  304.     STDMETHOD(GenerateNormals)(THIS) PURE; 
  305.     STDMETHOD_(D3DRMCOLORSOURCE, GetColorSource)(THIS) PURE; 
  306.     STDMETHOD(AddMesh)(THIS_ LPDIRECT3DRMMESH) PURE; 
  307.     STDMETHOD(AddMeshBuilder)(THIS_ LPDIRECT3DRMMESHBUILDER) PURE; 
  308.     STDMETHOD(AddFrame)(THIS_ LPDIRECT3DRMFRAME) PURE; 
  309.     STDMETHOD(AddFace)(THIS_ LPDIRECT3DRMFACE) PURE; 
  310.     STDMETHOD(AddFaces) 
  311.     (   THIS_ DWORD vcount, D3DVECTOR *vertices, DWORD ncount, D3DVECTOR *normals, 
  312.         DWORD *data, LPDIRECT3DRMFACEARRAY* 
  313.     ) PURE; 
  314.     STDMETHOD(ReserveSpace)(THIS_ DWORD vertex_Count, DWORD normal_count, DWORD face_count) PURE; 
  315.     STDMETHOD(SetColorRGB)(THIS_ D3DVALUE red, D3DVALUE green, D3DVALUE blue) PURE; 
  316.     STDMETHOD(SetColor)(THIS_ D3DCOLOR) PURE; 
  317.     STDMETHOD(SetTexture)(THIS_ LPDIRECT3DRMTEXTURE) PURE; 
  318.     STDMETHOD(SetMaterial)(THIS_ LPDIRECT3DRMMATERIAL) PURE; 
  319.     STDMETHOD(SetTextureTopology)(THIS_ BOOL wrap_u, BOOL wrap_v) PURE; 
  320.     STDMETHOD(SetQuality)(THIS_ D3DRMRENDERQUALITY) PURE; 
  321.     STDMETHOD(SetPerspective)(THIS_ BOOL) PURE; 
  322.     STDMETHOD(SetVertex)(THIS_ DWORD index, D3DVALUE x, D3DVALUE y, D3DVALUE z) PURE; 
  323.     STDMETHOD(SetNormal)(THIS_ DWORD index, D3DVALUE x, D3DVALUE y, D3DVALUE z) PURE; 
  324.     STDMETHOD(SetTextureCoordinates)(THIS_ DWORD index, D3DVALUE u, D3DVALUE v) PURE; 
  325.     STDMETHOD(SetVertexColor)(THIS_ DWORD index, D3DCOLOR) PURE; 
  326.     STDMETHOD(SetVertexColorRGB)(THIS_ DWORD index, D3DVALUE red, D3DVALUE green, D3DVALUE blue) PURE; 
  327.     STDMETHOD(GetFaces)(THIS_ LPDIRECT3DRMFACEARRAY*) PURE; 
  328.     STDMETHOD(GetVertices) 
  329.     (   THIS_ DWORD *vcount, D3DVECTOR *vertices, DWORD *ncount, D3DVECTOR *normals, DWORD *face_data_size, DWORD *face_data 
  330.     ) PURE; 
  331.     STDMETHOD(GetTextureCoordinates)(THIS_ DWORD index, D3DVALUE *u, D3DVALUE *v) PURE; 
  332.     STDMETHOD_(int, AddVertex)(THIS_ D3DVALUE x, D3DVALUE y, D3DVALUE z) PURE; 
  333.     STDMETHOD_(int, AddNormal)(THIS_ D3DVALUE x, D3DVALUE y, D3DVALUE z) PURE; 
  334.     STDMETHOD(CreateFace)(THIS_ LPDIRECT3DRMFACE*) PURE; 
  335.     STDMETHOD_(D3DRMRENDERQUALITY, GetQuality)(THIS) PURE; 
  336.     STDMETHOD_(BOOL, GetPerspective)(THIS) PURE; 
  337.     STDMETHOD_(int, GetFaceCount)(THIS) PURE; 
  338.     STDMETHOD_(int, GetVertexCount)(THIS) PURE; 
  339.     STDMETHOD_(D3DCOLOR, GetVertexColor)(THIS_ DWORD index) PURE; 
  340.     STDMETHOD(CreateMesh)(THIS_ LPDIRECT3DRMMESH*) PURE; 
  341. }; 
  342. #undef INTERFACE 
  343. #define INTERFACE IDirect3DRMLight 
  344. DECLARE_INTERFACE_(IDirect3DRMLight, IDirect3DRMObject) { 
  345.     IUNKNOWN_METHODS(PURE); 
  346.     IDIRECT3DRMOBJECT_METHODS(PURE); 
  347.     STDMETHOD(SetType)(THIS_ D3DRMLIGHTTYPE) PURE; 
  348.     STDMETHOD(SetColor)(THIS_ D3DCOLOR) PURE; 
  349.     STDMETHOD(SetColorRGB)(THIS_ D3DVALUE red, D3DVALUE green, D3DVALUE blue) PURE; 
  350.     STDMETHOD(SetRange)(THIS_ D3DVALUE) PURE; 
  351.     STDMETHOD(SetUmbra)(THIS_ D3DVALUE) PURE; 
  352.     STDMETHOD(SetPenumbra)(THIS_ D3DVALUE) PURE; 
  353.     STDMETHOD(SetConstantAttenuation)(THIS_ D3DVALUE) PURE; 
  354.     STDMETHOD(SetLinearAttenuation)(THIS_ D3DVALUE) PURE; 
  355.     STDMETHOD(SetQuadraticAttenuation)(THIS_ D3DVALUE) PURE; 
  356.     STDMETHOD_(D3DVALUE, GetRange)(THIS) PURE; 
  357.     STDMETHOD_(D3DVALUE, GetUmbra)(THIS) PURE; 
  358.     STDMETHOD_(D3DVALUE, GetPenumbra)(THIS) PURE; 
  359.     STDMETHOD_(D3DVALUE, GetConstantAttenuation)(THIS) PURE; 
  360.     STDMETHOD_(D3DVALUE, GetLinearAttenuation)(THIS) PURE; 
  361.     STDMETHOD_(D3DVALUE, GetQuadraticAttenuation)(THIS) PURE; 
  362.     STDMETHOD_(D3DCOLOR, GetColor)(THIS) PURE; 
  363.     STDMETHOD_(D3DRMLIGHTTYPE, GetType)(THIS) PURE; 
  364.     STDMETHOD(SetEnableFrame)(THIS_ LPDIRECT3DRMFRAME) PURE; 
  365.     STDMETHOD(GetEnableFrame)(THIS_ LPDIRECT3DRMFRAME*) PURE; 
  366. }; 
  367. #undef INTERFACE 
  368. #define INTERFACE IDirect3DRMTexture 
  369. DECLARE_INTERFACE_(IDirect3DRMTexture, IDirect3DRMVisual) { 
  370.     IUNKNOWN_METHODS(PURE); 
  371.     IDIRECT3DRMOBJECT_METHODS(PURE); 
  372.     STDMETHOD(InitFromFile)(THIS_ const char *filename) PURE; 
  373.     STDMETHOD(InitFromSurface)(THIS_ LPDIRECTDRAWSURFACE lpDDS) PURE; 
  374.     STDMETHOD(InitFromResource)(THIS_ HRSRC) PURE; 
  375.     STDMETHOD(Changed)(THIS_ BOOL pixels, BOOL palette) PURE; 
  376.     STDMETHOD(SetColors)(THIS_ DWORD) PURE; 
  377.     STDMETHOD(SetShades)(THIS_ DWORD) PURE; 
  378.     STDMETHOD(SetDecalSize)(THIS_ D3DVALUE width, D3DVALUE height) PURE; 
  379.     STDMETHOD(SetDecalOrigin)(THIS_ LONG x, LONG y) PURE; 
  380.     STDMETHOD(SetDecalScale)(THIS_ DWORD) PURE; 
  381.     STDMETHOD(SetDecalTransparency)(THIS_ BOOL) PURE; 
  382.     STDMETHOD(SetDecalTransparentColor)(THIS_ D3DCOLOR) PURE; 
  383.     STDMETHOD(GetDecalSize)(THIS_ D3DVALUE *width_return, D3DVALUE *height_return) PURE; 
  384.     STDMETHOD(GetDecalOrigin)(THIS_ LONG *x_return, LONG *y_return) PURE; 
  385.     STDMETHOD_(D3DRMIMAGE *, GetImage)(THIS) PURE; 
  386.     STDMETHOD_(DWORD, GetShades)(THIS) PURE; 
  387.     STDMETHOD_(DWORD, GetColors)(THIS) PURE; 
  388.     STDMETHOD_(DWORD, GetDecalScale)(THIS) PURE; 
  389.     STDMETHOD_(BOOL, GetDecalTransparency)(THIS) PURE; 
  390.     STDMETHOD_(D3DCOLOR, GetDecalTransparentColor)(THIS) PURE; 
  391. }; 
  392. #undef INTERFACE 
  393. #define INTERFACE IDirect3DRMWrap 
  394. DECLARE_INTERFACE_(IDirect3DRMWrap, IDirect3DRMObject) { 
  395.     IUNKNOWN_METHODS(PURE); 
  396.     IDIRECT3DRMOBJECT_METHODS(PURE); 
  397.     STDMETHOD(Init) 
  398.     (   THIS_ D3DRMWRAPTYPE, LPDIRECT3DRMFRAME ref, 
  399.         D3DVALUE ox, D3DVALUE oy, D3DVALUE oz, 
  400.         D3DVALUE dx, D3DVALUE dy, D3DVALUE dz, 
  401.         D3DVALUE ux, D3DVALUE uy, D3DVALUE uz, 
  402.         D3DVALUE ou, D3DVALUE ov, 
  403.         D3DVALUE su, D3DVALUE sv 
  404.     ) PURE; 
  405.     STDMETHOD(Apply)(THIS_ LPDIRECT3DRMOBJECT) PURE; 
  406.     STDMETHOD(ApplyRelative)(THIS_ LPDIRECT3DRMFRAME frame, LPDIRECT3DRMOBJECT) PURE; 
  407. }; 
  408. #undef INTERFACE 
  409. #define INTERFACE IDirect3DRMMaterial 
  410. DECLARE_INTERFACE_(IDirect3DRMMaterial, IDirect3DRMObject) { 
  411.     IUNKNOWN_METHODS(PURE); 
  412.     IDIRECT3DRMOBJECT_METHODS(PURE); 
  413.     STDMETHOD(SetPower)(THIS_ D3DVALUE power) PURE; 
  414.     STDMETHOD(SetSpecular)(THIS_ D3DVALUE r, D3DVALUE g, D3DVALUE b) PURE; 
  415.     STDMETHOD(SetEmissive)(THIS_ D3DVALUE r, D3DVALUE g, D3DVALUE b) PURE; 
  416.     STDMETHOD_(D3DVALUE, GetPower)(THIS) PURE; 
  417.     STDMETHOD(GetSpecular)(THIS_ D3DVALUE* r, D3DVALUE* g, D3DVALUE* b) PURE; 
  418.     STDMETHOD(GetEmissive)(THIS_ D3DVALUE* r, D3DVALUE* g, D3DVALUE* b) PURE; 
  419. }; 
  420. #undef INTERFACE 
  421. #define INTERFACE IDirect3DRMAnimation 
  422. DECLARE_INTERFACE_(IDirect3DRMAnimation, IDirect3DRMObject) { 
  423.     IUNKNOWN_METHODS(PURE); 
  424.     IDIRECT3DRMOBJECT_METHODS(PURE); 
  425.     STDMETHOD(SetOptions)(THIS_ D3DRMANIMATIONOPTIONS flags) PURE; 
  426.     STDMETHOD(AddRotateKey)(THIS_ D3DVALUE time, D3DRMQUATERNION *q) PURE; 
  427.     STDMETHOD(AddPositionKey)(THIS_ D3DVALUE time, D3DVALUE x, D3DVALUE y, D3DVALUE z) PURE; 
  428.     STDMETHOD(AddScaleKey)(THIS_ D3DVALUE time, D3DVALUE x, D3DVALUE y, D3DVALUE z) PURE; 
  429.     STDMETHOD(DeleteKey)(THIS_ D3DVALUE time) PURE; 
  430.     STDMETHOD(SetFrame)(THIS_ LPDIRECT3DRMFRAME frame) PURE; 
  431.     STDMETHOD(SetTime)(THIS_ D3DVALUE time) PURE; 
  432.     STDMETHOD_(D3DRMANIMATIONOPTIONS, GetOptions)(THIS) PURE; 
  433. }; 
  434. #undef INTERFACE 
  435. #define INTERFACE IDirect3DRMAnimationSet 
  436. DECLARE_INTERFACE_(IDirect3DRMAnimationSet, IDirect3DRMObject) { 
  437.     IUNKNOWN_METHODS(PURE); 
  438.     IDIRECT3DRMOBJECT_METHODS(PURE); 
  439.     STDMETHOD(AddAnimation)(THIS_ LPDIRECT3DRMANIMATION aid) PURE; 
  440.     STDMETHOD(Load)(THIS_ LPVOID filename, LPVOID name, D3DRMLOADOPTIONS loadflags, D3DRMLOADTEXTURECALLBACK, LPVOID lpArg, LPDIRECT3DRMFRAME parent)PURE; 
  441.     STDMETHOD(DeleteAnimation)(THIS_ LPDIRECT3DRMANIMATION aid) PURE; 
  442.     STDMETHOD(SetTime)(THIS_ D3DVALUE time) PURE; 
  443. }; 
  444. #undef INTERFACE 
  445. #define INTERFACE IDirect3DRMUserVisual 
  446. DECLARE_INTERFACE_(IDirect3DRMUserVisual, IDirect3DRMVisual) { 
  447.     IUNKNOWN_METHODS(PURE); 
  448.     IDIRECT3DRMOBJECT_METHODS(PURE); 
  449.     STDMETHOD(Init)(THIS_ D3DRMUSERVISUALCALLBACK fn, void *arg) PURE; 
  450. }; 
  451. #undef INTERFACE 
  452. #define INTERFACE IDirect3DRMArray 
  453. DECLARE_INTERFACE_(IDirect3DRMArray, IUnknown) { 
  454.     IUNKNOWN_METHODS(PURE); 
  455.     STDMETHOD_(DWORD, GetSize)(THIS) PURE; 
  456. }; 
  457. #undef INTERFACE 
  458. #define INTERFACE IDirect3DRMDeviceArray 
  459. DECLARE_INTERFACE_(IDirect3DRMDeviceArray, IDirect3DRMArray) { 
  460.     IUNKNOWN_METHODS(PURE); 
  461.     STDMETHOD_(DWORD, GetSize)(THIS) PURE; 
  462.     STDMETHOD(GetElement)(THIS_ DWORD index, LPDIRECT3DRMDEVICE *) PURE; 
  463. }; 
  464. #undef INTERFACE 
  465. #define INTERFACE IDirect3DRMFrameArray 
  466. DECLARE_INTERFACE_(IDirect3DRMFrameArray, IDirect3DRMArray) { 
  467.     IUNKNOWN_METHODS(PURE); 
  468.     STDMETHOD_(DWORD, GetSize)(THIS) PURE; 
  469.     STDMETHOD(GetElement)(THIS_ DWORD index, LPDIRECT3DRMFRAME *) PURE; 
  470. }; 
  471. #undef INTERFACE 
  472. #define INTERFACE IDirect3DRMViewportArray 
  473. DECLARE_INTERFACE_(IDirect3DRMViewportArray, IDirect3DRMArray) 
  474.     IUNKNOWN_METHODS(PURE); 
  475.     STDMETHOD_(DWORD, GetSize)(THIS) PURE; 
  476.     STDMETHOD(GetElement)(THIS_ DWORD index, LPDIRECT3DRMVIEWPORT *) PURE; 
  477. }; 
  478. #undef INTERFACE 
  479. #define INTERFACE IDirect3DRMVisualArray 
  480. DECLARE_INTERFACE_(IDirect3DRMVisualArray, IDirect3DRMArray) { 
  481.     IUNKNOWN_METHODS(PURE); 
  482.     STDMETHOD_(DWORD, GetSize)(THIS) PURE; 
  483.     STDMETHOD(GetElement)(THIS_ DWORD index, LPDIRECT3DRMVISUAL *) PURE; 
  484. }; 
  485. #undef INTERFACE 
  486. #define INTERFACE IDirect3DRMPickedArray 
  487. DECLARE_INTERFACE_(IDirect3DRMPickedArray, IDirect3DRMArray) { 
  488.     IUNKNOWN_METHODS(PURE); 
  489.     STDMETHOD_(DWORD, GetSize)(THIS) PURE; 
  490.     STDMETHOD(GetPick)(THIS_ DWORD index, LPDIRECT3DRMVISUAL *, LPDIRECT3DRMFRAMEARRAY *, LPD3DRMPICKDESC) PURE; 
  491. }; 
  492. #undef INTERFACE 
  493. #define INTERFACE IDirect3DRMLightArray 
  494. DECLARE_INTERFACE_(IDirect3DRMLightArray, IDirect3DRMArray) { 
  495.     IUNKNOWN_METHODS(PURE); 
  496.     STDMETHOD_(DWORD, GetSize)(THIS) PURE; 
  497.     STDMETHOD(GetElement)(THIS_ DWORD index, LPDIRECT3DRMLIGHT *) PURE; 
  498. }; 
  499. #undef INTERFACE 
  500. #define INTERFACE IDirect3DRMFaceArray 
  501. DECLARE_INTERFACE_(IDirect3DRMFaceArray, IDirect3DRMArray) { 
  502.     IUNKNOWN_METHODS(PURE); 
  503.     STDMETHOD_(DWORD, GetSize)(THIS) PURE; 
  504.     STDMETHOD(GetElement)(THIS_ DWORD index, LPDIRECT3DRMFACE *) PURE; 
  505. }; 
  506. #endif 
  507.