summaryrefslogtreecommitdiffstats
path: root/rwsdk/include/d3d8/rpdmorph.h
diff options
context:
space:
mode:
Diffstat (limited to 'rwsdk/include/d3d8/rpdmorph.h')
-rw-r--r--rwsdk/include/d3d8/rpdmorph.h311
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 */
+