summaryrefslogtreecommitdiffstats
path: root/sdk/rwsdk/include/d3d8/rpspline.h
diff options
context:
space:
mode:
Diffstat (limited to 'sdk/rwsdk/include/d3d8/rpspline.h')
-rw-r--r--sdk/rwsdk/include/d3d8/rpspline.h141
1 files changed, 141 insertions, 0 deletions
diff --git a/sdk/rwsdk/include/d3d8/rpspline.h b/sdk/rwsdk/include/d3d8/rpspline.h
new file mode 100644
index 00000000..df3a21d9
--- /dev/null
+++ b/sdk/rwsdk/include/d3d8/rpspline.h
@@ -0,0 +1,141 @@
+/*
+ * Structure for splines
+ *
+ *
+ * Copyright (c) Criterion Software Limited
+ */
+
+/******************************************/
+/* */
+/* RenderWare(TM) Graphics Library */
+/* */
+/******************************************/
+
+/*
+ * 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. and Canon Inc. will not, under any
+ * circumstances, be liable for any lost revenue or other damages
+ * arising from the use of this file.
+ *
+ * Copyright (c) 1998. Criterion Software Ltd.
+ * All Rights Reserved.
+ */
+
+/***************************************************************************
+ * *
+ * Module : rpspline.h *
+ * *
+ * Purpose : Spline operations *
+ * *
+ **************************************************************************/
+
+#ifndef RPSPLINE_H
+#define RPSPLINE_H
+
+/**
+ * \defgroup rpspline RpSpline
+ * \ingroup mathtools
+ *
+ * Spline Plugin for RenderWare Graphics.
+ */
+
+/****************************************************************************
+ Includes
+ */
+
+/*--- Include files ---*/
+#include "rwcore.h"
+#include "rpworld.h"
+
+#include "rpspline.rpe" /* automatically generated header file */
+
+/****************************************************************************
+ Global Types
+ */
+
+#define rpSPLINENAMELENGTH (32)
+
+typedef struct RpSpline RpSpline;
+/**
+ * \ingroup rpspline
+ * \struct RpSpline
+ * Spline object. This should be considered an opaque type.
+ * Use the RpSpline API functions to access.
+ */
+struct RpSpline
+{
+ RwObject tType; /**< Internal Use */
+ RwInt32 numCtrlPoints; /**< Internal Use */
+ RwInt32 nSplineType; /**< Internal Use */
+ void *pUser; /**< Internal Use */
+ RwV3d *ctrlPoints; /**< Internal Use */
+ RwChar caName[rpSPLINENAMELENGTH]; /**< Internal Use */
+ /* Keep this at tail */
+ RwV3d vPts[1]; /**< Internal Use */
+};
+
+/* Spline types */
+#define rpSPLINETYPEOPENLOOPBSPLINE (1) /* Bezier spline, open loop */
+#define rpSPLINETYPECLOSEDLOOPBSPLINE (2) /* Bezier spline, closed loop */
+
+/* Spline path types */
+#define rpSPLINEPATHSMOOTH (10) /* Normal */
+#define rpSPLINEPATHNICEENDS (11) /* Slows down the path at the ends */
+
+/****************************************************************************
+ Function prototypes
+ */
+
+#ifdef __cplusplus
+extern "C"
+{
+#endif /* __cplusplus */
+
+/* Opening the spline plugin */
+extern RwBool RpSplinePluginAttach(void);
+
+/* Creating and destroying splines */
+extern RpSpline *RpSplineCreate(RwInt32 numCtrlPoints, RwInt32 type, RwV3d *ctrlPoints);
+extern RwBool RpSplineDestroy(RpSpline *spline);
+
+/* Finding a point and its tangent vector on the spline */
+extern RwV3d *RpSplineFindPosition(RpSpline *spline, RwInt32 path, RwReal where, RwV3d *pos, RwV3d *tangent);
+
+/* Finding a frame on the spline */
+extern RwReal RpSplineFindMatrix(RpSpline *spline, RwInt32 path, RwReal where, RwV3d *up, RwMatrix *matrix);
+/* LEGACY-SUPPORT MACRO */
+#define RpSplineFindFrame RpSplineFindMatrix
+
+/* Getting and setting the control points */
+extern RwInt32 RpSplineGetNumControlPoints(const RpSpline *spline);
+extern RwV3d *RpSplineGetControlPoint(RpSpline *spline, RwInt32 control, RwV3d *point);
+extern RpSpline *RpSplineSetControlPoint(RpSpline *spline, RwInt32 control, RwV3d * point);
+
+/* Copy a spline */
+extern RpSpline *RpSplineClone(RpSpline *spline);
+
+/* Spline reading and writing helper functions */
+extern RpSpline *RpSplineRead(RwChar *name);
+extern RwBool RpSplineWrite(RpSpline *spline, RwChar *name);
+
+/* Binary format */
+extern RwUInt32 RpSplineStreamGetSize(const RpSpline *spline);
+extern RpSpline *RpSplineStreamRead(RwStream *stream);
+extern const RpSpline *RpSplineStreamWrite(const RpSpline *spline, RwStream *stream);
+
+#ifdef __cplusplus
+}
+#endif /* __cplusplus */
+
+#endif /* RPSPLINE_H */
+
+
+
+
+
+