diff options
Diffstat (limited to '')
-rw-r--r-- | sdk/rwsdk/include/d3d8/rt2danim.h | 1107 |
1 files changed, 0 insertions, 1107 deletions
diff --git a/sdk/rwsdk/include/d3d8/rt2danim.h b/sdk/rwsdk/include/d3d8/rt2danim.h deleted file mode 100644 index 996262af..00000000 --- a/sdk/rwsdk/include/d3d8/rt2danim.h +++ /dev/null @@ -1,1107 +0,0 @@ -/*************************************************************************** - * * - * Module : rt2danim.h * - * * - * Purpose : . * - * * - **************************************************************************/ - -#ifndef RT2DANIM_H -#define RT2DANIM_H - -/** - * \defgroup rt2danim Rt2dAnim (inc. Maestro) - * \ingroup 2dtools - * - * A toolkit to coordinate the display, storage and manipulation of 2D - * animations. - */ - -/** - * \defgroup rt2danimsub Rt2dAnim - * \ingroup rt2danim - * - * Animation functions - */ - -/** - * \defgroup rt2dmaestro Rt2dMaestro - * \ingroup rt2danim - * - * Maestro functions - */ - -/** - * \defgroup rt2dstringlabel Rt2dStringLabel - * \ingroup rt2danim - * - * String labels - */ - -/** - * \defgroup rt2dmessage Rt2dMessage - * \ingroup rt2danim - * - * Messages - */ - -/** - * \defgroup rt2dbutton Rt2dButton - * \ingroup rt2danim - * - * Buttons - */ - -/** - * \defgroup rt2dcel Rt2dCel - * \ingroup rt2danim - * - * Cels - */ - -/**************************************************************************** - Includes - */ - -#include <rwcore.h> -#include "rt2danim.rpe" /* automatically generated header file */ -#include "rt2d.h" -#include "rpcriter.h" -/**************************************************************************** - Defines - */ - -/**************************************************************************** - Global Types - */ - -/* RWPUBLIC */ -/**************************************************************************** - Function prototypes - */ - -#ifdef __cplusplus -extern "C" -{ -#endif /* __cplusplus */ - -#define RT2D_BUTTON_MAX_STATES 4 -#define RT2D_BUTTON_MAX_STATE_TRANSITIONS 32 - -/* Button state flags. */ - -#define rt2dANIMBUTTONSTATEPICKREGION 0x0001 -#define rt2dANIMBUTTONSTATEUP 0x0002 -#define rt2dANIMBUTTONSTATEDOWN 0x0004 -#define rt2dANIMBUTTONSTATEOVER 0x0008 - -#define rt2dANIMBUTTONSTATEIDLETOOVERUP 0x0010 -#define rt2dANIMBUTTONSTATEOVERUPTOIDLE 0x0020 -#define rt2dANIMBUTTONSTATEOVERUPTOOVERDOWN 0x0040 -#define rt2dANIMBUTTONSTATEOVERDOWNTOOVERUP 0x0080 -#define rt2dANIMBUTTONSTATEOVERDOWNTOOUTDOWN 0x0100 -#define rt2dANIMBUTTONSTATEOUTDOWNTOOVERDOWN 0x0200 -#define rt2dANIMBUTTONSTATEOUTDOWNTOIDLE 0x0400 -#define rt2dANIMBUTTONSTATEIDLETOOVERDOWN 0x0800 -#define rt2dANIMBUTTONSTATEOVERDOWNTOIDLE 0x1000 - - -/* Mask to separate trans state in state flag. */ -#define rt2dANIMBUTTONSTATEMASK \ - (rt2dANIMBUTTONSTATEPICKREGION | \ - rt2dANIMBUTTONSTATEPICKUP | \ - rt2dANIMBUTTONSTATEPICKDOWN | \ - rt2dANIMBUTTONSTATEPICKOVER) - -/* Basic enumerations */ - -/** - * \ingroup rt2dmessage - * \ref Rt2dMessageType, this type represents the different types of - * messages that are available. - */ - -enum Rt2dMessageType -{ - rt2dMESSAGETYPENULL = 0, /**< Empty message. */ - rt2dMESSAGETYPEPLAY, /**< Play animation. */ - rt2dMESSAGETYPESTOP, /**< Stop animation. */ - rt2dMESSAGETYPENEXTFRAME, /**< Advance to next frame. */ - rt2dMESSAGETYPEPREVFRAME, /**< Rewind to previouse frame. */ - rt2dMESSAGETYPEGOTOFRAME, /**< Advance to frame by index. */ - rt2dMESSAGETYPEGOTOLABEL, /**< Advance to frame by label. */ - rt2dMESSAGETYPEGETURL, /**< Get URL */ - rt2dMESSAGETYPEDOACTION, /* Perform action. */ - rt2dMESSAGETYPEFOREIGN, /**< Application specific message. */ - rt2dMESSAGETYPEMOUSEMOVETO, /**< Move mouse. */ - rt2dMESSAGETYPEMOUSEBUTTONSTATE, /**< Mouse button up or down. */ - rt2dMESSAGETYPESPECIALTELLTARGET, /* Change target while queueing */ - rt2dMESSAGETYPEBUTTONBYLABEL, /**< Mouse button transition by label */ - rt2dMESSAGETYPEFORCEENUMSIZEINT = RWFORCEENUMSIZEINT -}; - -typedef enum Rt2dMessageType Rt2dMessageType; - -/** - * \ingroup rt2dstringlabel - * \ref Rt2dStringLabelType, this type represents the different types of - * object that can be labelled in the maestro's label table. - */ - -enum Rt2dStringLabelType -{ - rt2dANIMLABELTYPENONE = 0, - rt2dANIMLABELTYPEANIM, /**< Animation label. */ - rt2dANIMLABELTYPEFRAME, /**< Frame or cel label. */ - rt2dANIMLABELTYPEBUTTON, /**< Button label. */ - rt2dANIMLABELTYPEFOREIGN, /**< Application specific. */ - rt2dANIMLABELTYPESHAPE, /**< Shape label. */ - rt2dANIMLABELTYPEURL, /**< URL label. */ - rt2dANIMLABELTYPEENUMSIZEINT = RWFORCEENUMSIZEINT -}; - -typedef enum Rt2dStringLabelType Rt2dStringLabelType; - -/* Basic animation structures */ - -/** - * \ingroup rt2danimsub - * \struct Rt2dAnimProps - * Structure describing the current state of a scene. - * This should be considered an opaque type. Use the - * Rt2dAnim API functions to access. - */ -typedef struct Rt2dAnimProps Rt2dAnimProps; - -/** - * \ingroup rt2danimsub - * \struct Rt2dKeyFrameList - * Structure describing an entire list of keyframes - * This should be considered an opaque type. Use the - * Rt2dKeyFrameList API functions to access. - */ -typedef struct Rt2dKeyFrameList Rt2dKeyFrameList; - -/** - * \ingroup rt2danimsub - * \struct Rt2dKeyFrameSet - * structure describing a set of keyframe actions to be applied to a 2D object. - * This should be considered an opaque type. Use the - * Rt2dAnim API functions to access. - */ -typedef struct Rt2dKeyFrameSet Rt2dKeyFrameSet; - -/** - * \ingroup rt2danimsub - * \struct Rt2dAnimObjectUpdate - * Structure describing an unoptimized update to an object - * This should be considered an opaque type. Use the - * Rt2dAnim API functions to access. - */ -typedef struct Rt2dAnimObjectUpdate Rt2dAnimObjectUpdate; - -/** - * \ingroup rt2danimsub - * \struct Rt2dKeyFrameTransform - * Structure describing a transform change to a 2d object. - * This should be considered an opaque type. Use the - * Rt2dAnim API functions to access. - */ -typedef struct Rt2dKeyFrameTransform Rt2dKeyFrameTransform; - -/* - * Typedef for struct Rt2dKeyFrameColor describing a color - * change to a 2d object. - */ -typedef struct Rt2dKeyFrameColor Rt2dKeyFrameColor; - -/* - * Structure describing a displayable or depth change to a 2d object. - */ -typedef struct Rt2dKeyFrameShow Rt2dKeyFrameShow; - -/* - * Structure describing a morph change to a 2d object. - */ -typedef struct Rt2dKeyFrameMorph Rt2dKeyFrameMorph; - -/** - * \ingroup rt2danimsub - * \struct Rt2dAnim - * Structure describing a 2d animation. - * This should be considered an opaque type. Use the - * Rt2dAnim API functions to access. - */ -typedef struct Rt2dAnim Rt2dAnim; - -/** - * \ingroup rt2dbutton - * \struct Rt2dButton - * Structure describing a button. - * This should be considered an opaque type. Use the - * Rt2dButton API functions to access. - */ -typedef struct Rt2dButton Rt2dButton; - -/** - * \ingroup rt2dcel - * \struct Rt2dCel - * Structure describing a cel. - * This should be considered an opaque type. Use the - * Rt2dCel API functions to access. - */ -typedef struct Rt2dCel Rt2dCel; - -/** - * \ingroup rt2dcel - * \struct Rt2dCelList - * Structure describing a cel list. - * This should be considered an opaque type. Use the - * Rt2dCel API functions to access. - */ -typedef struct Rt2dCelList Rt2dCelList; - -/** - * \ingroup rt2dmaestro - * \struct Rt2dMaestro - * Structure describing a maestro. - * This should be considered an opaque type. Use the - * Rt2dMaestro API functions to access. - */ -typedef struct Rt2dMaestro Rt2dMaestro; - -/* - * Structure describing a message. - */ -typedef struct Rt2dMessage Rt2dMessage; - -/** - * \ingroup rt2dmessage - * \struct Rt2dMessageList - * Structure describing a message. - * This should be considered an opaque type. Use the - * Rt2dMessage API functions to access. - */ -typedef struct Rt2dMessageList Rt2dMessageList; - -/** - * \ingroup rt2dstringlabel - * \struct Rt2dStringLabel - * Structure used to store and access named data, either internal or user. - * A type and a name may be used to access internal and user data. - * - * This should be considered an opaque type. Use the - * Rt2dStringLabel API functions to access. - */ -typedef struct Rt2dStringLabel Rt2dStringLabel; - -/** - * \ingroup rt2danimsub - * \struct Rt2dKeyFrame - * structure describing a transforming action - */ -struct Rt2dKeyFrameTransform -{ - RwMatrix matrix; /**< Transform to be applied */ /*64*/ -}; - -/** - * \ingroup rt2danimsub - * \struct Rt2dKeyFrameColor - * Structure describing a color - * change to a 2d object. - */ -struct Rt2dKeyFrameColor -{ - RwRGBAReal color; /**< Color value for a keyframe */ /*16*/ -}; - -/** - * \ingroup rt2danimsub - * \struct Rt2dKeyFrameShow - * Structure describing a show/hide change and a depth change to a 2d object. - */ -struct Rt2dKeyFrameShow -{ - RwBool show; /**< visibility flag */ /*4*/ - RwInt32 depth; /**< Depth order (reverse-z) */ /*4*/ - RwUInt8 pad1[8]; /**< Alignment padding */ /*8*/ -}; - -/** - * \ingroup rt2danimsub - * \struct Rt2dKeyFrameMorph - * Structure describing a morph change to a 2d object. - */ -struct Rt2dKeyFrameMorph -{ - Rt2dObject *source; /**< start object */ /*4*/ - Rt2dObject *destination; /**< end object */ /*4*/ - RwReal alpha; /**< interpolation value (0.0f-1.0f) */ /*4*/ - RwInt32 pad1; /**< Alignment padding */ /*4*/ -}; - -/** - * \ingroup rt2dmessage - * \struct Rt2dMessage - * Structure describing a message. A message must have a valid message type, (\ref Rt2dMessageType) - * and animation index. The animation index identifies which animation the message applies to. - * A -1 indicates the currently active animation. A message can have none, one or two additional - * \ref RwInt32 parameters, depending on the message type. - */ -struct Rt2dMessage -{ - RwUInt32 messageType; /**< message identifier - (\ref Rt2dMessageType) */ - RwInt32 index; /**< animation to apply any - actions to */ - RwInt32 intParam1; /**< first param (message dependant) */ - RwInt32 intParam2; /**< second param (message dependant) */ -}; - -#define _rt2dMessageGetMessageTypeMacro(_message) \ - ((_message)->messageType); - -#define _rt2dMessageSetMessageTypeMacro(_message, _messageType) \ - ((_message)->messageType = (_messageType)); - -#define _rt2dMessageGetIndexMacro(_message) \ - ((_message)->index); - -#define _rt2dMessageSetIndexMacro(_message, _index) \ - ((_message)->index = (_index)); - -#define _rt2dMessageSetParamMacro(_message, _param1, _param2) \ -MACRO_START \ -{ \ - ((_message)->intParam1 = (_param1)); \ - ((_message)->intParam2 = (_param2)); \ -} \ -MACRO_STOP - -#define _rt2dMessageGetParamMacro(_message, _param1, _param2) \ -MACRO_START \ -{ \ - (*(_param1) = (_message)->intParam1); \ - (*(_param2) = (_message)->intParam2); \ -} \ -MACRO_STOP - -/* - * structure containing label information. The entityType identifies the type - * of the label. The label's name is stored as an index - * in common storage area. The entityType and name of the label are used as keys - * during a search. Additional internal and user data can be stored with the - * label. - */ - -#if (!defined(DOXYGEN)) -struct Rt2dStringLabel -{ - RwUInt32 entityType; /* type of the label - (see Rt2dStringLabelType) */ - RwInt32 nameIndex; /* index of name in internal data - area */ - void *internalData; /* internal data */ - void *userData; /* customizable data */ - -}; - -#endif /* (!defined(DOXYGEN)) */ - -#define _rt2dStringLabelGetStringLabelTypeMacro(_strLabel) \ - ((_strLabel)->entityType) - -#define _rt2dStringLabelSetStringLabelTypeMacro(_strLabel, _entityType) \ - ((_strLabel)->entityType = (_entityType)) - -#define _rt2dStringLabelGetNameIndexMacro(_strLabel) \ - ((_strLabel)->nameIndex) - -#define _rt2dStringLabelSetNameIndexMacro(_strLabel, _index) \ - ((_strLabel)->nameIndex = (_index)) - -#define _rt2dStringLabelGetInternalDataMacro(_strLabel) \ - ((_strLabel)->internalData) - -#define _rt2dStringLabelSetInternalDataMacro(_strLabel, _internalData) \ - ((_strLabel)->internalData = (_internalData)) - -#define _rt2dStringLabelGetUserDataMacro(_strLabel) \ - ((_strLabel)->userData) - -#define _rt2dStringLabelSetUserDataMacro(_strLabel, _userData) \ - ((_strLabel)->userData = (_userData)) - -/* - * structure containing cel information. The name of the cel is stored as an - * index into a label table. The buttons in the cel are stored as indices. These - * reference a list of buttons held by the cel's parent maestro. Any messages - * to be process when the cel is active is stored as index into the parent's - * maestro's message storage area. - */ - -#if (!defined(DOXYGEN)) -struct Rt2dCel -{ - RwInt32 strLabelIndex; /* Frame label */ - RwInt32 celIndex; /* Frame number */ - RwSList *buttonIndices; /* List of buttons active in - this frame */ - RwInt32 messageListIndex; /* Messages to be posted after - displaying this frame */ -}; - -#endif /* (!defined(DOXYGEN)) */ - -#define _rt2dCelGetStringLabelIndexMacro(_cel) \ - ((_cel)->strLabelIndex); - -#define _rt2dCelSetStringLabelIndexMacro(_cel, _index) \ - ((_cel)->strLabelIndex = (_index)); - -#define _rt2dCelGetCelIndexMacro(_cel) \ - ((_cel)->celIndex); - -#define _rt2dCelSetCelIndexMacro(_cel, _index) \ - ((_cel)->celIndex = (_index)); - -#define _rt2dCelGetMessageListIndexMacro(_cel) \ - ((_cel)->messageListIndex); - -#define _rt2dCelSetMessageListIndexMacro(_cel, _index) \ - ((_cel)->messageListIndex = (_index)); - -/* Callback typedefs */ - -typedef Rt2dAnim *(*Rt2dAnimCallBack)(Rt2dAnim *object, - Rt2dAnimProps *props, - void *data); -/** - * \ingroup rt2danimsub - * \ref Rt2dKeyFrameListCallBack - * This typedef defines a callback function to apply to a frame list. - * - * \param anim Pointer to the animation - * \param props Pointer to the props that the animation acts upon - * \param keyframeList The key frame list - * \param keyframeListTime The key frame list time - * \param data User defined data - * - * \return return value is ignored - */ -typedef Rt2dKeyFrameList *(Rt2dKeyFrameListCallBack)( - Rt2dAnim *anim, - Rt2dAnimProps *props, - Rt2dKeyFrameList *keyframeList, - RwReal keyframeListTime, - void *data); - -/** - * \ingroup rt2danimsub - * \ref Rt2dAnimOnEndReachedCallBack - * This typedef defines a callback function called at the end of an animation. - * - * \param anim Pointer to the animation ending - * \param props Pointer to the props that the animation acts upon - * \param remainingDeltaTime Remaining time - * - * \return return value is ignored - */ -typedef Rt2dAnim *(*Rt2dAnimOnEndReachedCallBack)(Rt2dAnim *anim, - Rt2dAnimProps *props, - RwReal remainingDeltaTime); - -/** - * \ingroup rt2dmaestro - * \ref Rt2dMaestroAnimationsCallBack - * \ref Rt2dMaestroAnimationsCallBack represents the function called from - * \ref Rt2dMaestroForAllAnimations for all animations in the maestro. - * This function - * should return the current maestro to indicate success. The callback may - * return NULL to terminate further callbacks on the maestro. - * - * \param maestro Pointer to parent maestro. - * \param anim Pointer to the animation. - * \param props Pointer to the anim's props. - * \param pData Pointer to private data. - * - * \return Pointer to the maestro. - */ - -typedef Rt2dMaestro *(*Rt2dMaestroAnimationsCallBack) - (Rt2dMaestro *maestro, Rt2dAnim *anim, Rt2dAnimProps *props, void * pData); - -/** - * \ingroup rt2dmessage - * \ref Rt2dMessageHandlerCallBack represents the function called from - * \ref Rt2dMaestroProcessMessages for all messages in the maestro's - * process message queue. The maestro does not filter any messages. The - * handler may process or ignore any messages it is given. - * - * This function should return the current message to indicate success. The - * callback may return NULL to terminate further callbacks on the maestro. - * - * \param maestro Pointer to parent maestro. - * \param message Pointer to the message. - * - * \return Pointer to the message. - */ - -typedef Rt2dMessage *(*Rt2dMessageHandlerCallBack) - (Rt2dMaestro *maestro, Rt2dMessage *message); - -/* Message streaming call backs. */ - -typedef RwInt32 -(*Rt2dMessageStreamGetSizeCallBack) - (Rt2dMaestro *maestro, Rt2dMessage *message); - -typedef Rt2dMessage * -(*Rt2dMessageStreamReadCallBack) - (Rt2dMaestro *maestro, Rt2dMessage *message, RwStream *stream); - -typedef Rt2dMessage * -(*Rt2dMessageStreamWriteCallBack) - (Rt2dMaestro *maestro, Rt2dMessage *message, RwStream *stream); - -/* - * Data access macros. - */ - -/* - * Toolkit-level initialization / finalization - */ -/* - * INITIALIZE - */ -extern void -Rt2dAnimOpen(void); - -extern void -Rt2dAnimClose(void); - -/* - * Rt2dAnim - */ - -/* General */ - -extern Rt2dAnimOnEndReachedCallBack -Rt2dAnimSetOnEndReachedCallBack(Rt2dAnimOnEndReachedCallBack callback); - -extern Rt2dAnimOnEndReachedCallBack -Rt2dAnimGetOnEndReachedCallBack(void); - - -extern Rt2dAnim * -Rt2dAnimOnEndReachedCallBackLoop(Rt2dAnim *anim, Rt2dAnimProps *props, - RwReal remainingDeltaTime); - -extern Rt2dAnim * -Rt2dAnimOnEndReachedCallBackStop(Rt2dAnim *anim, Rt2dAnimProps *props, - RwReal remainingDeltaTime); - -/* Management */ -extern Rt2dAnim * -Rt2dAnimCreate(void); - -extern RwBool -Rt2dAnimDestroy(Rt2dAnim *anim, Rt2dAnimProps *props); - -extern Rt2dAnim * -Rt2dAnimLock(Rt2dAnim *anim, Rt2dAnimProps *props); - -extern Rt2dAnim * -Rt2dAnimUnlock(Rt2dAnim *anim, Rt2dAnimProps *props); - -extern Rt2dAnim * -Rt2dAnimAddKeyFrameList(Rt2dAnim *anim, - Rt2dKeyFrameList *keyframeList, - RwReal time); - - -extern Rt2dAnim * -Rt2dAnimCopy(Rt2dAnim *srcAnim, Rt2dAnimProps *srcProps); - -/* Streaming */ -extern RwUInt32 -Rt2dAnimStreamGetSize( Rt2dAnim *anim, - Rt2dAnimProps *props); - -extern Rt2dAnim * -Rt2dAnimStreamRead(RwStream *stream, - Rt2dAnimProps *props); - -extern Rt2dAnim * -Rt2dAnimStreamReadTo(RwStream *dest, - RwStream *stream, - Rt2dAnimProps *props); - -extern Rt2dAnim * -Rt2dAnimStreamWrite(Rt2dAnim *anim, RwStream *stream, - Rt2dAnimProps *data); - -/* Playback */ -extern RwBool -Rt2dAnimIsInterpolated(Rt2dAnim *anim); - -extern Rt2dAnim * -Rt2dAnimSetInterpolate(Rt2dAnim *anim, RwBool interpolate); - -extern Rt2dAnim * -Rt2dAnimReset(Rt2dAnim *anim, Rt2dAnimProps *props); - -extern Rt2dAnim * -Rt2dAnimSetDeltaTimeScale(Rt2dAnim *anim, RwReal timeScale); - -extern Rt2dAnim * -Rt2dAnimAddDeltaTime(Rt2dAnim *anim, Rt2dAnimProps *props, - RwReal deltaTime); - -extern Rt2dAnim * -Rt2dAnimAddDeltaFrameIndex(Rt2dAnim *anim, Rt2dAnimProps *props, - RwInt32 deltaFrame); - -extern Rt2dAnim * -Rt2dAnimTimeUpdate(Rt2dAnim *anim, Rt2dAnimProps *props); - -extern Rt2dAnim * -Rt2dAnimGotoKeyFrameListByTime(Rt2dAnim *anim, Rt2dAnimProps *props, - RwReal time); - -extern Rt2dAnim * -Rt2dAnimGotoKeyFrameListByIndex(Rt2dAnim *anim, Rt2dAnimProps *props, - RwInt32 frameIndex); - -/* Utilities */ -extern Rt2dAnim * -Rt2dAnimForAllKeyFrameLists(Rt2dAnim *anim, Rt2dKeyFrameListCallBack callBack, - Rt2dAnimProps *props, void *data); - -/* Interrogation */ -extern RwInt32 -Rt2dAnimGetNumberOfKeyFrames(Rt2dAnim *anim); - -extern Rt2dKeyFrameList * -Rt2dAnimGetKeyFrameListByIndex(Rt2dAnim *anim, RwUInt32 frameIndex); - -extern RwReal -Rt2dAnimGetCurrentTime(Rt2dAnim *anim); - -extern RwReal -Rt2dAnimGetFinalKeyFrameListTime(Rt2dAnim *anim); - -extern RwInt32 -Rt2dAnimGetPrevFrameIndex(Rt2dAnim *anim); - -extern RwReal -Rt2dAnimGetPrevFrameTime(Rt2dAnim *anim); - -extern RwInt32 -Rt2dAnimGetNextFrameIndex(Rt2dAnim *anim); - -extern RwReal -Rt2dAnimGetNextFrameTime(Rt2dAnim *anim); - -/* KeyFrameList Management */ -extern Rt2dKeyFrameList * -Rt2dKeyFrameListCreate(Rt2dAnimProps *props); - -extern RwBool -Rt2dKeyFrameListDestroy(Rt2dKeyFrameList *keyframeList); - -extern Rt2dKeyFrameList * -Rt2dKeyFrameListLock(Rt2dKeyFrameList *keyframeList, Rt2dAnimProps *props); - -extern Rt2dKeyFrameList * -Rt2dKeyFrameListUnlock(Rt2dKeyFrameList *keyframeList, - Rt2dAnimProps *props); - -extern Rt2dKeyFrameList* -Rt2dKeyFrameListAddUpdateObject(Rt2dKeyFrameList *keyframeList, - Rt2dAnimObjectUpdate *update); - -/* KeyFrameList Streaming */ -extern Rt2dKeyFrameList * -Rt2dKeyFrameListStreamRead(RwStream *stream); - -extern RwUInt32 -Rt2dKeyFrameListStreamGetSize(Rt2dKeyFrameList *keyframeList); - -extern Rt2dKeyFrameList * -Rt2dKeyFrameListStreamWrite(Rt2dKeyFrameList *keyframeList, - RwStream *stream); - -/* KeyFrameList Playback */ -extern Rt2dKeyFrameList * -Rt2dKeyFrameListAdvance(Rt2dKeyFrameList *keyframeList, - Rt2dAnimProps *props); - -extern Rt2dKeyFrameList * -Rt2dKeyFrameListApply(Rt2dKeyFrameList *keyframeList, Rt2dAnimProps *props, - RwReal alpha); - -/* KeyFrameList edition object */ -extern Rt2dAnimObjectUpdate * -Rt2dAnimObjectUpdateCreate(Rt2dObject *object); - -extern RwBool -Rt2dAnimObjectUpdateDestroy(Rt2dAnimObjectUpdate *update); - -extern Rt2dAnimObjectUpdate * -Rt2dAnimObjectUpdateClear(Rt2dAnimObjectUpdate *update); - -extern Rt2dAnimObjectUpdate* -Rt2dAnimObjectUpdateSetTransform(Rt2dAnimObjectUpdate *update, - Rt2dKeyFrameTransform *transform); - -extern Rt2dAnimObjectUpdate* -Rt2dAnimObjectUpdateSetColorOffs(Rt2dAnimObjectUpdate *update, - Rt2dKeyFrameColor *colorOffs); - -extern Rt2dAnimObjectUpdate* -Rt2dAnimObjectUpdateSetColorMult(Rt2dAnimObjectUpdate *update, - Rt2dKeyFrameColor *colorMult); - -extern Rt2dAnimObjectUpdate* -Rt2dAnimObjectUpdateSetShow(Rt2dAnimObjectUpdate *update, - Rt2dKeyFrameShow *show); - -extern Rt2dAnimObjectUpdate* -Rt2dAnimObjectUpdateSetMorph(Rt2dAnimObjectUpdate *update, - Rt2dKeyFrameMorph *morph); - -extern Rt2dAnimObjectUpdate * -Rt2dAnimObjectUpdateSetObject(Rt2dAnimObjectUpdate *update, - Rt2dObject *object); - -/* Props management */ -extern Rt2dAnimProps * -Rt2dAnimPropsCreate(Rt2dObject *scene); - -extern RwBool -Rt2dAnimPropsDestroy(Rt2dAnimProps *props); - -/* - * Rt2dButton - */ - -extern Rt2dMaestro * -Rt2dMaestroAddButton(Rt2dMaestro *maestro, RwInt32 strLabelIdx, RwInt32 objectIdx, - RwUInt32 stateFlag, RwInt32 *actionListIdx, - RwInt32 *index); - -/* - * Rt2dCel & Rt2dCelList - */ - -extern Rt2dCel * -Rt2dCelCreate(Rt2dMaestro *maestro, - const RwChar *name, - RwInt32 celIndex, RwInt32 messageListIndex); - -extern Rt2dCelList * -Rt2dCelListCreate( void ); - -extern RwBool -Rt2dCelDestroy(Rt2dMaestro *maestro, Rt2dCel *cel); - -extern Rt2dCel * -Rt2dCelAddButtonIndex(Rt2dCel * cel, RwInt32 buttonIndex, RwInt32 *index); - -#if !(defined(RWDEBUG) || defined(RWSUPPRESSINLINE)) - -#define Rt2dCelGetStringLabelIndex(_cel) \ - _rt2dCelGetStringLabelIndexMacro((_cel)); - -#define Rt2dCelSetStringLabelIndex(_cel, _index) \ - _rt2dCelSetStringLabelIndexMacro((_cel), (_index)); - -#define Rt2dCelGetCelIndex(_cel) \ - _rt2dCelGetCelIndexMacro((_cel)); - -#define Rt2dCelSetCelIndex(_cel, _index) \ - _rt2dCelSetCelIndexMacro((_cel), (_index)); - -#define Rt2dCelGetMessageListIndex(_cel) \ - _rt2dCelGetMessageListIndexMacro((_cel)); - -#define Rt2dCelSetMessageListIndex(_cel, _index) \ - _rt2dCelSetMessageListIndexMacro((_cel), (_index)); - -#else /* !(defined(RWDEBUG) || defined(RWSUPPRESSINLINE)) */ - -extern RwInt32 -Rt2dCelGetStringLabelIndex(Rt2dCel *cel); - -extern void -Rt2dCelSetStringLabelIndex(Rt2dCel *cel, RwInt32 index); - -extern RwInt32 -Rt2dCelGetCelIndex(Rt2dCel *cel); - -extern void -Rt2dCelSetCelIndex(Rt2dCel *cel, RwInt32 index); - -extern RwInt32 -Rt2dCelGetMessageListIndex(Rt2dCel *cel); - -extern void -Rt2dCelSetMessageListIndex(Rt2dCel *cel, RwInt32 index); - -#endif /* !(defined(RWDEBUG) || defined(RWSUPPRESSINLINE)) */ - -extern RwBool -Rt2dCelListDestroy(Rt2dCelList *celList); - -extern Rt2dCelList * -Rt2dCelListLock(Rt2dCelList *celList); - -extern Rt2dCelList * -Rt2dCelListUnlock(Rt2dCelList * celList); - -extern Rt2dCelList * -Rt2dCelListCopy(Rt2dCelList *srcCelList); - -extern Rt2dCelList * -Rt2dCelListAddCel(Rt2dCelList *celList, Rt2dCel *cel, RwInt32 *index); - -extern Rt2dCelList * -Rt2dCelListCelGetStringLabelIndex(Rt2dCelList *celList, RwInt32 celIndex, RwInt32 *index); - -extern Rt2dCelList * -Rt2dCelListCelButtonGetDisplayVersion(Rt2dMaestro *maestro, Rt2dCelList * celList, - RwInt32 celIndex, RwInt32 celButtonIndex, RwInt32 *index); - -/* - * Rt2dMaestro - */ -extern Rt2dMaestro * -Rt2dMaestroCreate(void); - -extern RwBool -Rt2dMaestroDestroy(Rt2dMaestro *maestro); - -extern RwUInt32 -Rt2dMaestroStreamGetSize(Rt2dMaestro *maestro); - -extern Rt2dMaestro * -Rt2dMaestroStreamRead(Rt2dMaestro *maestro, RwStream *stream); - -extern Rt2dMaestro * -Rt2dMaestroStreamWrite(Rt2dMaestro *maestro, RwStream *stream); - - -extern Rt2dMaestro * -Rt2dMaestroForAllAnimations(Rt2dMaestro *maestro, - Rt2dMaestroAnimationsCallBack callback, void *data); - -extern Rt2dMaestro * -Rt2dMaestroForAllVisibleAnimations(Rt2dMaestro *maestro, - Rt2dMaestroAnimationsCallBack callback, void *data); - -extern Rt2dMaestro * -Rt2dMaestroAddAnimations(Rt2dMaestro *maestro, - RwInt32 parent, RwInt32 posInParentScene, - Rt2dAnim *anim, Rt2dAnimProps *animProps, Rt2dCelList *celList, - RwInt32 *index); - -extern Rt2dAnim * -Rt2dMaestroGetAnimationsByIndex(Rt2dMaestro *maestro, RwInt32 index); - -extern Rt2dAnimProps * -Rt2dMaestroGetAnimPropsByIndex(Rt2dMaestro *maestro, RwInt32 index); - -extern Rt2dMaestro * -Rt2dMaestroUpdateAnimations(Rt2dMaestro *maestro); - -extern Rt2dMaestro * -Rt2dMaestroAddDeltaTime(Rt2dMaestro *maestro, RwReal deltaTime); - -extern Rt2dMaestro * -Rt2dMaestroLock(Rt2dMaestro * maestro); - -extern Rt2dMaestro * -Rt2dMaestroUnlock(Rt2dMaestro *maestro); - -extern Rt2dObject * -Rt2dMaestroGetScene(Rt2dMaestro *maestro); - -extern Rt2dMaestro * -Rt2dMaestroSetScene(Rt2dMaestro *maestro, Rt2dObject *scene); - -extern Rt2dObject * -Rt2dMaestroGetAnimSceneByIndex(Rt2dMaestro *maestro, RwInt32 index); - -extern Rt2dMaestro * -Rt2dMaestroRender(Rt2dMaestro *maestro); - -extern Rt2dBBox * -Rt2dMaestroGetBBox(Rt2dMaestro *maestro); - -extern Rt2dMaestro * -Rt2dMaestroSetBBox(Rt2dMaestro *maestro, Rt2dBBox *bbox); - - -/* - * Message & Message handlers. - */ -extern Rt2dMessageHandlerCallBack -Rt2dMaestroGetMessageHandler(Rt2dMaestro *maestro); - -extern Rt2dMaestro * -Rt2dMaestroSetMessageHandler(Rt2dMaestro *maestro, Rt2dMessageHandlerCallBack handler); - -extern Rt2dMaestro * -Rt2dMaestroAddMessageList(Rt2dMaestro *maestro, - Rt2dMessage *message, RwInt32 num, RwInt32 *index); - -extern Rt2dMaestro * -Rt2dMaestroPostMessages(Rt2dMaestro *maestro, Rt2dMessage *message, RwInt32 num); - -extern Rt2dMaestro * -Rt2dMaestroProcessMessages(Rt2dMaestro *maestro); - -#if !(defined(RWDEBUG) || defined(RWSUPPRESSINLINE)) - -#define Rt2dMessageGetMessageType(_message) \ - _rt2dMessageGetMessageTypeMacro((_message)); - -#define Rt2dMessageSetMessageTypeMacro(_message, _messageType) \ - _rt2dMessageSetMessageTypeMacro((_message), (_messageType)); - -#define Rt2dMessageGetIndex(_message) \ - _rt2dMessageGetIndexMacro((_message)); - -#define Rt2dMessageSetIndex(_message, _index) \ - _rt2dMessageSetIndexMarco((_message), (_index)); - -#define Rt2dMessageSetParam(_message, _param1, _param2) \ - _rt2dMessageSetParamMacro((_message), (_param1), (_param2)); - -#define Rt2dMessageGetParam(_message, _param1, _param2) \ - _rt2dMessageGetParamMacro((_message), (_param1), (_param2)); - -#else /* !(defined(RWDEBUG) || defined(RWSUPPRESSINLINE)) */ - -extern Rt2dMessageType -Rt2dMessageGetMessageType(Rt2dMessage *message); - -extern void -Rt2dMessageSetMessageType(Rt2dMessage *message, Rt2dMessageType messageType); - -extern RwInt32 -Rt2dMessageGetIndex(Rt2dMessage *message); - -extern void -Rt2dMessageSetIndex(Rt2dMessage *message, RwInt32 index); - -extern void -Rt2dMessageGetParam(Rt2dMessage *message, RwInt32 *param1, RwInt32 *param2); - -extern void -Rt2dMessageSetParam(Rt2dMessage *message, RwInt32 param1, RwInt32 param2); - -#endif /* !(defined(RWDEBUG) || defined(RWSUPPRESSINLINE)) */ - -/* - * Default message handler. - */ -extern Rt2dMessage * -Rt2dMessageHandlerDefaultCallBack(Rt2dMaestro *maestro, Rt2dMessage *message); - - -/* - * Labels. - */ -extern Rt2dStringLabel * -Rt2dMaestroFindStringLabel(Rt2dMaestro *maestro, - Rt2dStringLabelType entityType, const RwChar *lookupName, - RwInt32 *index); - -extern Rt2dStringLabel * -Rt2dMaestroGetStringLabelByIndex(Rt2dMaestro *maestro, RwInt32 index); - -extern Rt2dMaestro * -Rt2dMaestroAddStringLabel(Rt2dMaestro *maestro, - Rt2dStringLabelType entityType, const RwChar *name, - void *internalData, RwInt32 *index); - -extern const RwChar * -Rt2dMaestroGetStringLabelName(Rt2dMaestro *maestro, - Rt2dStringLabel *strLabel); - - -#if !(defined(RWDEBUG) || defined(RWSUPPRESSINLINE)) - -#define Rt2dStringLabelGetStringLabelType(_strLabel) \ - _rt2dStringLabelGetStringLabelTypeMacro((_strLabel)) - -#define Rt2dStringLabelSetStringLabelType(_strLabel, _entityType) \ - _rt2dStringLabelSetStringLabelTypeMacro((_strLabel), (_entityType)) - -#define Rt2dStringLabelGetNameIndex(_strLabel) \ - _rt2dStringLabelGetNameIndexMacro((_strLabel)) - -#define Rt2dStringLabelSetNameIndex(_strLabel, _index) \ - _rt2dStringLabelSetNameIndexMacro((_strLabel), (_index)) - -#define Rt2dStringLabelGetInternalData(_strLabel) \ - _rt2dStringLabelGetInternalDataMacro((_strLabel)) - -#define Rt2dStringLabelSetInternalData(_strLabel, _internalData) \ - _rt2dStringLabelSetInternalDataMacro((_strLabel), (_internalData)) - -#define Rt2dStringLabelGetUserData(_strLabel) \ - _rt2dStringLabelGetUserDataMacro((_strLabel)) - -#define Rt2dStringLabelSetUserData(_strLabel, _userData) \ - _rt2dStringLabelSetUserDataMacro((_strLabel), (_userData)) - -#else /* !(defined(RWDEBUG) || defined(RWSUPPRESSINLINE)) */ - -extern Rt2dStringLabelType -Rt2dStringLabelGetStringLabelType(Rt2dStringLabel *strLabel); - -extern void -Rt2dStringLabelSetStringLabelType(Rt2dStringLabel *strLabel, - Rt2dStringLabelType entityType); - -extern RwInt32 -Rt2dStringLabelGetNameIndex(Rt2dStringLabel *strLabel); - -extern void -Rt2dStringLabelSetNameIndex(Rt2dStringLabel *strLabel, RwInt32 index); - -extern void * -Rt2dStringLabelGetInternalData(Rt2dStringLabel *strLabel); - -extern void -Rt2dStringLabelSetInternalData(Rt2dStringLabel *strLabel, void *internalData); - -extern void * -Rt2dStringLabelGetUserData(Rt2dStringLabel *strLabel); - -extern void -Rt2dStringLabelSetUserData(Rt2dStringLabel *strLabel, void *userData); - -#endif /* !(defined(RWDEBUG) || defined(RWSUPPRESSINLINE)) */ - - - - -/* - * Cels & Cel Lists - */ -extern Rt2dCelList * -Rt2dMaestroGetCelListByIndex(Rt2dMaestro *maestro, RwInt32 index); - - -#ifdef __cplusplus -} -#endif /* __cplusplus */ - -/* RWPUBLICEND */ - -#endif /* RT2DANIM_H*/ |