diff options
Diffstat (limited to 'rwsdk/include/d3d8/rpdmorph.h')
-rw-r--r-- | rwsdk/include/d3d8/rpdmorph.h | 311 |
1 files changed, 311 insertions, 0 deletions
diff --git a/rwsdk/include/d3d8/rpdmorph.h b/rwsdk/include/d3d8/rpdmorph.h new file mode 100644 index 00000000..1494bf3d --- /dev/null +++ b/rwsdk/include/d3d8/rpdmorph.h @@ -0,0 +1,311 @@ +/***************************************************************************** + * + * File : rpdmorph.h + * + * Abstract : DeltaMorph plugin for Renderware. + * + ***************************************************************************** + * + * This file is a product of Criterion Software Ltd. + * + * This file is provided as is with no warranties of any kind and is + * provided without any obligation on Criterion Software Ltd. or + * Canon Inc. to assist in its use or modification. + * + * Criterion Software Ltd. will not, under any + * circumstances, be liable for any lost revenue or other damages arising + * from the use of this file. + * + * Copyright (c) 2000 Criterion Software Ltd. + * All Rights Reserved. + * + * RenderWare is a trademark of Canon Inc. + * + *****************************************************************************/ + +#ifndef RPDMORPH_H +#define RPDMORPH_H + +/** + * \defgroup rpdmorph RpDMorph + * \ingroup rpplugin + * \file rpdmorph.h + * + * Delta Morphing Plugin for RenderWare Graphics. + */ + +/*===========================================================================* + *--- Include files ---------------------------------------------------------* + *===========================================================================*/ +#include <rwcore.h> +#include <rpworld.h> + +#include "rpdmorph.rpe" /* automatically generated header file */ + + +/*===========================================================================* + *--- Global Types ----------------------------------------------------------* + *===========================================================================*/ + +/** + * \ingroup rpdmorph + * \struct RpDMorphTarget + * Delta morph target object for defining a target for + * a base geometry. + * This should be considered an opaque type. + * Use the RpDMorphGeometry and RpDMorphTarget API + * functions to access. + */ +typedef struct RpDMorphTarget RpDMorphTarget; + +/** + * \ingroup rpdmorph + * \struct RpDMorphAnimation + * Contains frame sequences for animating delta + * morph target objects. + * This should be considered an opaque type. + * Use the RpDMorphAnimation API + * functions to access. + */ +typedef struct RpDMorphAnimation RpDMorphAnimation; + +#define rpDMORPHNULLFRAME ((RwUInt32)~0) + +/*===========================================================================* + *--- Global variables ------------------------------------------------------* + *===========================================================================*/ + +extern RwModuleInfo rpDMorphModule; + +/*===========================================================================* + *--- Plugin API Functions --------------------------------------------------* + *===========================================================================*/ +#ifdef __cplusplus +extern "C" +{ +#endif /* __cplusplus */ + +/*--- DMorphPlugin functions ------------------------------------------------*/ +extern RwBool +RpDMorphPluginAttach( void ); + +/*--- DMorphGeometry functions ---------------------------------------------- + * + * These functios work on the DMorphGeometry level. + * Each DMorphGeometry has a list of DMorphTargets. + */ +extern RpGeometry * +RpDMorphGeometryCreateDMorphTargets( RpGeometry *geometry, + RwUInt32 number ); + +extern RpGeometry * +RpDMorphGeometryDestroyDMorphTargets( RpGeometry *geometry ); + +extern RpGeometry * +RpDMorphGeometryAddDMorphTarget( RpGeometry *geometry, + RwUInt32 index, + RwV3d *vertices, + RwV3d *normals, + RwRGBA *preLightColors, + RwTexCoords *texCoords, + RwUInt32 flags ); + +extern RpGeometry * +RpDMorphGeometryRemoveDMorphTarget( RpGeometry *geometry, + RwUInt32 index ); + +extern RpDMorphTarget * +RpDMorphGeometryGetDMorphTarget( const RpGeometry *geometry, + RwUInt32 index ); + +extern RwUInt32 +RpDMorphGeometryGetNumDMorphTargets( const RpGeometry *geometry ); + +extern RpGeometry * +RpDMorphGeometryTransformDMorphTargets( RpGeometry *geometry, + const RwMatrix *matrix ); + +/*--- DMorphTarget functions ------------------------------------------------ + * + * These functios work on the DMorphGeometry level. + * Each DMorphGeometry has a list of DMorphTargets. + */ + +extern const RwSphere * +RpDMorphTargetGetBoundingSphere( const RpDMorphTarget *dMorphTarget ); + +extern RpDMorphTarget * +RpDMorphTargetSetName( RpDMorphTarget *dMorphTarget, + RwChar *name ); + +extern RwChar * +RpDMorphTargetGetName( RpDMorphTarget *dMorphTarget ); + +extern RpGeometryFlag +RpDMorphTargetGetFlags( RpDMorphTarget *dMorphTarget ); + + +/*--- ANIMATION SYSTEM ------------------------------------------------------ + */ + +/*--- DMorphAtomic functions ------------------------------------------------ + * + * These functions work at the DMorphAtomic level. + */ +extern RpAtomic * +RpDMorphAtomicInitalize( RpAtomic *atomic ); + +extern RwReal * +RpDMorphAtomicGetDMorphValues( RpAtomic *atomic ); + +extern RpAtomic * +RpDMorphAtomicSetAnimation( RpAtomic *atomic, + RpDMorphAnimation *animation ); + +extern RpDMorphAnimation * +RpDMorphAtomicGetAnimation( const RpAtomic *atomic ); + +extern RpAtomic * +RpDMorphAtomicAddTime( RpAtomic *atomic, + RwReal time ); + +extern RwReal +RpDMorphAtomicGetAnimTime( const RpAtomic *atomic ); + +extern RpAtomic * +RpDMorphAtomicSetAnimLoopCallBack( RpAtomic *atomic, + RpAtomicCallBack callBack, + void *data ); + +extern RpAtomicCallBack +RpDMorphAtomicGetAnimLoopCallBack( const RpAtomic *atomic, + void **callBackData ); + +extern RpAtomic * +RpDMorphAtomicSetAnimFrame( RpAtomic *atomic, + RwUInt32 dMorphTargetIndex, + RwUInt32 index ); + +extern RwUInt32 +RpDMorphAtomicGetAnimFrame( const RpAtomic *atomic, + RwUInt32 dMorphTargetIndex ); + + +extern RpAtomic * +RpDMorphAtomicSetAnimFrameTime( RpAtomic *atomic, + RwUInt32 dMorphTargetIndex, + RwReal time ); + +extern RwReal +RpDMorphAtomicGetAnimFrameTime( const RpAtomic *atomic, + RwUInt32 dMorphTargetIndex ); + +/*--- Animation Functions -------------------------------------------------- + */ +extern RpDMorphAnimation * +RpDMorphAnimationCreate(RwUInt32 numDMorphTargets); + +extern RpDMorphAnimation * +RpDMorphAnimationDestroy(RpDMorphAnimation *anim); + +extern RwUInt32 +RpDMorphAnimationGetNumDMorphTargets(RpDMorphAnimation *animation); + +/* Animation Frames */ +extern RpDMorphAnimation * +RpDMorphAnimationCreateFrames(RpDMorphAnimation *anim, + RwUInt32 dMorphTargetIndex, + RwUInt32 numFrames); + +extern RpDMorphAnimation * +RpDMorphAnimationDestroyFrames(RpDMorphAnimation *anim, + RwUInt32 dMorphTargetIndex); + +extern RwUInt32 +RpDMorphAnimationGetNumFrames(RpDMorphAnimation *animation, + RwUInt32 dMorphTargetIndex); + +/* Stream I/O */ +extern RpDMorphAnimation * +RpDMorphAnimationStreamRead(RwStream *stream); + +extern RpDMorphAnimation * +RpDMorphAnimationStreamWrite(RpDMorphAnimation *animation, + RwStream *stream); + +extern RwUInt32 +RpDMorphAnimationStreamGetSize(RpDMorphAnimation *animation); + +extern RpDMorphAnimation * +RpDMorphAnimationRead(const RwChar *filename); + +extern RpDMorphAnimation * +RpDMorphAnimationWrite(RpDMorphAnimation *animation, const RwChar *filename); + +/*--- Animation Frame Functions -------------------------------------------- + * + * These functions work on the DMorphAnimationFrame level. + * Each Frame can have a reference to the next Frame for the + * DMorphTarget. + */ +extern RpDMorphAnimation * +RpDMorphAnimationFrameSetNext(RpDMorphAnimation *anim, + RwUInt32 dMorphTargetIndex, + RwUInt32 frameIndex, + RwUInt32 nextFrame ); + +extern RwUInt32 +RpDMorphAnimationFrameGetNext(RpDMorphAnimation *anim, + RwUInt32 dMorphTargetIndex, + RwUInt32 frameIndex ); + +extern RpDMorphAnimation * +RpDMorphAnimationFrameSet(RpDMorphAnimation *anim, + RwUInt32 dMorphTargetIndex, + RwUInt32 frameIndex, + RwReal startValue, + RwReal endValue, + RwReal duration, + RwUInt32 nextFrame ); + +extern RpDMorphAnimation * +RpDMorphAnimationFrameSetStartValue(RpDMorphAnimation *anim, + RwUInt32 dMorphTargetIndex, + RwUInt32 frameIndex, + RwReal startValue ); + +extern RwReal +RpDMorphAnimationFrameGetStartValue(RpDMorphAnimation *anim, + RwUInt32 dMorphTargetIndex, + RwUInt32 frameIndex ); + +extern RpDMorphAnimation * +RpDMorphAnimationFrameSetEndValue(RpDMorphAnimation *anim, + RwUInt32 dMorphTargetIndex, + RwUInt32 frameIndex, + RwReal endValue ); + +extern RwReal +RpDMorphAnimationFrameGetEndValue(RpDMorphAnimation *anim, + RwUInt32 dMorphTargetIndex, + RwUInt32 frameIndex ); + +extern RpDMorphAnimation * +RpDMorphAnimationFrameSetDuration(RpDMorphAnimation *anim, + RwUInt32 dMorphTargetIndex, + RwUInt32 frameIndex, + RwReal duration ); + +extern RwReal +RpDMorphAnimationFrameGetDuration(RpDMorphAnimation *anim, + RwUInt32 dMorphTargetIndex, + RwUInt32 frameIndex ); + +/*--------------------------------------------------------------------------*/ + +#ifdef __cplusplus +} +#endif /* __cplusplus */ + +#endif /* RPDMORPH_H */ + |