summaryrefslogtreecommitdiffstats
path: root/rwsdk/include/d3d8
diff options
context:
space:
mode:
Diffstat (limited to 'rwsdk/include/d3d8')
-rw-r--r--rwsdk/include/d3d8/baaplylt.c793
-rw-r--r--rwsdk/include/d3d8/errcom.def60
-rw-r--r--rwsdk/include/d3d8/errcore.def117
-rw-r--r--rwsdk/include/d3d8/rpanisot.h54
-rw-r--r--rwsdk/include/d3d8/rpanisot.rpe639
-rw-r--r--rwsdk/include/d3d8/rpcollis.h372
-rw-r--r--rwsdk/include/d3d8/rpcollis.rpe637
-rw-r--r--rwsdk/include/d3d8/rpcriter.h572
-rw-r--r--rwsdk/include/d3d8/rpdbgerr.c90
-rw-r--r--rwsdk/include/d3d8/rpdbgerr.h278
-rw-r--r--rwsdk/include/d3d8/rpdmorph.h311
-rw-r--r--rwsdk/include/d3d8/rpdmorph.rpe639
-rw-r--r--rwsdk/include/d3d8/rperror.h32
-rw-r--r--rwsdk/include/d3d8/rphanim.h873
-rw-r--r--rwsdk/include/d3d8/rphanim.rpe644
-rw-r--r--rwsdk/include/d3d8/rplodatm.h131
-rw-r--r--rwsdk/include/d3d8/rplodatm.rpe642
-rw-r--r--rwsdk/include/d3d8/rplogo.h83
-rw-r--r--rwsdk/include/d3d8/rplogo.rpe639
-rw-r--r--rwsdk/include/d3d8/rpltmap.h90
-rw-r--r--rwsdk/include/d3d8/rpltmap.rpe638
-rw-r--r--rwsdk/include/d3d8/rpmatfx.h237
-rw-r--r--rwsdk/include/d3d8/rpmatfx.rpe638
-rw-r--r--rwsdk/include/d3d8/rpmipkl.h38
-rw-r--r--rwsdk/include/d3d8/rpmipkl.rpe639
-rw-r--r--rwsdk/include/d3d8/rpmorph.h138
-rw-r--r--rwsdk/include/d3d8/rpmorph.rpe641
-rw-r--r--rwsdk/include/d3d8/rppatch.h683
-rw-r--r--rwsdk/include/d3d8/rppatch.rpe638
-rw-r--r--rwsdk/include/d3d8/rpprtstd.h1026
-rw-r--r--rwsdk/include/d3d8/rpprtstd.rpe639
-rw-r--r--rwsdk/include/d3d8/rpptank.h781
-rw-r--r--rwsdk/include/d3d8/rpptank.rpe643
-rw-r--r--rwsdk/include/d3d8/rppvs.h395
-rw-r--r--rwsdk/include/d3d8/rppvs.rpe640
-rw-r--r--rwsdk/include/d3d8/rprandom.h65
-rw-r--r--rwsdk/include/d3d8/rprandom.rpe638
-rw-r--r--rwsdk/include/d3d8/rpskin.h222
-rw-r--r--rwsdk/include/d3d8/rpskin.rpe638
-rw-r--r--rwsdk/include/d3d8/rpspline.h141
-rw-r--r--rwsdk/include/d3d8/rpspline.rpe642
-rw-r--r--rwsdk/include/d3d8/rpstereo.h141
-rw-r--r--rwsdk/include/d3d8/rpstereo.rpe641
-rw-r--r--rwsdk/include/d3d8/rpusrdat.h124
-rw-r--r--rwsdk/include/d3d8/rpusrdat.rpe639
-rw-r--r--rwsdk/include/d3d8/rpworld.h3735
-rw-r--r--rwsdk/include/d3d8/rpworld.rpe63
-rw-r--r--rwsdk/include/d3d8/rt2d.h911
-rw-r--r--rwsdk/include/d3d8/rt2d.rpe629
-rw-r--r--rwsdk/include/d3d8/rt2danim.h1056
-rw-r--r--rwsdk/include/d3d8/rt2danim.rpe629
-rw-r--r--rwsdk/include/d3d8/rtbary.h141
-rw-r--r--rwsdk/include/d3d8/rtbary.rpe645
-rw-r--r--rwsdk/include/d3d8/rtbezpat.h401
-rw-r--r--rwsdk/include/d3d8/rtbezpat.rpe629
-rw-r--r--rwsdk/include/d3d8/rtbmp.h51
-rw-r--r--rwsdk/include/d3d8/rtbmp.rpe629
-rw-r--r--rwsdk/include/d3d8/rtcharse.h111
-rw-r--r--rwsdk/include/d3d8/rtcharse.rpe629
-rw-r--r--rwsdk/include/d3d8/rtimport.h1278
-rw-r--r--rwsdk/include/d3d8/rtimport.rpe640
-rw-r--r--rwsdk/include/d3d8/rtintel.h1206
-rw-r--r--rwsdk/include/d3d8/rtintel.rpe645
-rw-r--r--rwsdk/include/d3d8/rtintsec.h138
-rw-r--r--rwsdk/include/d3d8/rtintsec.rpe628
-rw-r--r--rwsdk/include/d3d8/rtltmap.h601
-rw-r--r--rwsdk/include/d3d8/rtltmap.rpe638
-rw-r--r--rwsdk/include/d3d8/rtmipk.h58
-rw-r--r--rwsdk/include/d3d8/rtmipk.rpe628
-rw-r--r--rwsdk/include/d3d8/rtpick.h59
-rw-r--r--rwsdk/include/d3d8/rtpick.rpe628
-rw-r--r--rwsdk/include/d3d8/rtpitexd.h74
-rw-r--r--rwsdk/include/d3d8/rtpitexd.rpe682
-rw-r--r--rwsdk/include/d3d8/rtpng.h49
-rw-r--r--rwsdk/include/d3d8/rtpng.rpe629
-rw-r--r--rwsdk/include/d3d8/rtquat.h646
-rw-r--r--rwsdk/include/d3d8/rtquat.rpe645
-rw-r--r--rwsdk/include/d3d8/rtras.h54
-rw-r--r--rwsdk/include/d3d8/rtras.rpe629
-rw-r--r--rwsdk/include/d3d8/rtray.h61
-rw-r--r--rwsdk/include/d3d8/rtray.rpe628
-rw-r--r--rwsdk/include/d3d8/rtslerp.h262
-rw-r--r--rwsdk/include/d3d8/rtslerp.rpe646
-rw-r--r--rwsdk/include/d3d8/rtsplpvs.h65
-rw-r--r--rwsdk/include/d3d8/rtsplpvs.rpe628
-rw-r--r--rwsdk/include/d3d8/rttiff.h47
-rw-r--r--rwsdk/include/d3d8/rttiff.rpe629
-rw-r--r--rwsdk/include/d3d8/rttilerd.h70
-rw-r--r--rwsdk/include/d3d8/rttilerd.rpe629
-rw-r--r--rwsdk/include/d3d8/rttoc.h99
-rw-r--r--rwsdk/include/d3d8/rttoc.rpe629
-rw-r--r--rwsdk/include/d3d8/rtvcat.h38
-rw-r--r--rwsdk/include/d3d8/rtvcat.rpe629
-rw-r--r--rwsdk/include/d3d8/rtworld.h85
-rw-r--r--rwsdk/include/d3d8/rtworld.rpe628
-rw-r--r--rwsdk/include/d3d8/rwcore.h4791
-rw-r--r--rwsdk/include/d3d8/rwplcore.h6080
97 files changed, 0 insertions, 57459 deletions
diff --git a/rwsdk/include/d3d8/baaplylt.c b/rwsdk/include/d3d8/baaplylt.c
deleted file mode 100644
index ad518e6a..00000000
--- a/rwsdk/include/d3d8/baaplylt.c
+++ /dev/null
@@ -1,793 +0,0 @@
-
-/* If this file is used outside of the core RW SDK,
- * the following things need to be defined
- */
-#if (!defined(RWASSERT))
-#define RWASSERT(_assertval) /* No op */
-#endif
-#if (!defined(RWFUNCTION))
-#define RWFUNCTION(_rwfunctionstring) /* No op */
-#endif
-#if (!defined(RWRETURN))
-#define RWRETURN(_rwreturnval) return(_rwreturnval)
-#endif
-#if (!defined(RWRETURNVOID))
-#define RWRETURNVOID() return
-#endif
-
-/* These are used by specular lighting,
- * sorry I have to leave them in here... IDBS
- * I'll make it neater when I have time.
- */
-#if (!defined(FALLOFFAMBIENT))
-#define FALLOFFAMBIENT() /* No op */
-#endif
-#if (!defined(FALLOFFDIRECTIONAL))
-#define FALLOFFDIRECTIONAL() /* No op */
-#endif
-#if (!defined(FALLOFFPOINT))
-#define FALLOFFPOINT() /* No op */
-#endif
-#if (!defined(FALLOFFSPOT))
-#define FALLOFFSPOT() /* No op */
-#endif
-#if (!defined(FALLOFFSOFTSPOT))
-#define FALLOFFSOFTSPOT() /* No op */
-#endif
-
-/***************************************************************************
- _rwApplyAmbientLight
-
- On entry : Instanced data
- : Light
- : Optional inverse object matrix
- : (to transform light to object space)
- : Inverse scale of object
- : Surface properties of the light
- On exit :
- */
-
-static void
-_rwApplyAmbientLight(VERTSARG,
- const void *voidLight,
- const RwMatrix * __RWUNUSED__ inverseMat,
- RwReal __RWUNUSED__ invScale,
- const RwSurfaceProperties * surfaceProps)
-{
- CAMVERTDECL;
- NUMVERTDECL;
- const RpLight *light = (const RpLight *) voidLight;
- RwReal scale;
- RwV3d vertToLight;
-
- RWFUNCTION(RWSTRING("_rwApplyAmbientLight"));
- RWASSERT(light);
- RWASSERT(surfaceProps);
-
- CAMVERTINIT();
- NUMVERTINIT();
-
- /* No directional component:
- * (this is used in CAMVERTADDRGBA in a specular lighting node) */
- vertToLight.x = 0;
- vertToLight.y = 0;
- vertToLight.z = 0;
-
- /* rpLIGHTAMBIENT - Constant illumination on all vertices
- */
- if (rwObjectTestPrivateFlags(light, rpLIGHTPRIVATENOCHROMA))
- {
- scale = 255.0f * light->color.red * surfaceProps->ambient;
-
- /* Ambient light affects all vertices the same */
- while (numVert--)
- {
- RwReal lum = scale;
-
-#undef FALLOFFCALC
-#define FALLOFFCALC FALLOFFAMBIENT
- CAMVERTADDRGBA(1, 1, 1, 0);
- CAMVERTINC();
- }
- }
- else
- /* perform for coloured lights */
- {
- scale = 255.0f * surfaceProps->ambient;
-
- /* Ambient light affects all vertices the same */
- while (numVert--)
- {
- RwReal lum = scale;
-
-#undef FALLOFFCALC
-#define FALLOFFCALC FALLOFFAMBIENT
- CAMVERTADDRGBA(light->color.red, light->color.green,
- light->color.blue, 0);
- CAMVERTINC();
- }
- }
- RWRETURNVOID();
-}
-
-/***************************************************************************
- _rwApplyDirectionalLight
-
- On entry : Instanced data
- : Light
- : Optional inverse object matrix
- : (to transform light to object space)
- : Inverse scale of object
- : Surface properties of the light
- On exit :
- */
-
-static void
-_rwApplyDirectionalLight(VERTSARG,
- const void *voidLight,
- const RwMatrix * inverseMat,
- RwReal __RWUNUSED__ invScale,
- const RwSurfaceProperties * surfaceProps)
-{
- OBJCAMVERTDECL;
- NUMVERTDECL;
- const RpLight *light = (const RpLight *) voidLight;
- RwV3d vertToLight;
- RwReal scale;
- RwReal dot;
- RwFrame *lightFrame;
-
- RWFUNCTION(RWSTRING("_rwApplyDirectionalLight"));
- RWASSERT(light);
- RWASSERT(surfaceProps);
-
- OBJCAMVERTINIT();
- NUMVERTINIT();
-
- /* rpLIGHTDIRECTIONAL - Lighting scaled by dot product
- * of vertex normal and light lookAt vector.
- */
- /* This may not have a frame - we need to check */
- lightFrame = RpLightGetFrame(light);
- if (lightFrame)
- {
- vertToLight = RwFrameGetLTM(lightFrame)->at;
-
- /* Transform the light into object space if necessary */
- if (inverseMat)
- {
- RwV3dTransformVectors(&vertToLight, &vertToLight, 1, inverseMat);
- _rwV3dNormalize(&vertToLight, &vertToLight);
- }
-
- /* Vert TO light */
- RwV3dScale(&vertToLight, &vertToLight, -1);
-
- /* Optimise for grey lights? */
- if (rwObjectTestPrivateFlags(light, rpLIGHTPRIVATENOCHROMA))
- {
- /* Use one of the light colour intensities as general intensity */
- /* light vector tests are to be identical to others */
- scale = 255.0f * light->color.red * surfaceProps->diffuse;
-
- /* Loop through each of the vertices */
- while (numVert--)
- {
- RwV3d objNormal;
-
- OBJVERTGETNORMAL(&objNormal);
- /* Calculate angle between vertex normal and light vector */
- dot = RwV3dDotProduct(&vertToLight, &objNormal);
-
- /* Ensure vector is facing light,
- * don't light areas not facing */
-
- if (dot > 0.0f)
- {
- RwReal lum = dot * scale;
-
-#undef FALLOFFCALC
-#define FALLOFFCALC FALLOFFDIRECTIONAL
- CAMVERTADDRGBA(1, 1, 1, 0);
- }
-
- /* Next vertex */
- OBJCAMVERTINC();
- }
- }
- else
- /* perform for coloured lights */
- {
- scale = 255.0f * surfaceProps->diffuse;
-
- /* Loop through each of the vertices */
- while (numVert--)
- {
- RwV3d objNormal;
-
- OBJVERTGETNORMAL(&objNormal);
- /* Calculate angle between vertex normal and light vector */
- dot = RwV3dDotProduct(&vertToLight, &objNormal);
-
- /* Ensure vector is facing light,
- * don't light areas not facing */
-
- if (dot > 0.0f)
- {
- RwReal lum = dot * scale;
-
-#define FALLOFFCALC FALLOFFDIRECTIONAL
- CAMVERTADDRGBA(light->color.red, light->color.green,
- light->color.blue, 0);
- }
-
- /* Next vertex */
- OBJCAMVERTINC();
- }
- }
- }
-
- RWRETURNVOID();
-}
-
-/***************************************************************************
- _rwApplyPointLight
-
- On entry : Instanced data
- : Light
- : Optional inverse object matrix
- : (to transform light to object space)
- : Inverse scale of object
- : Surface properties of the light
- On exit :
- */
-
-static void
-_rwApplyPointLight(VERTSARG, const void *voidLight,
- const RwMatrix * inverseMat,
- RwReal invScale, const RwSurfaceProperties * surfaceProps)
-{
- OBJCAMVERTDECL;
- NUMVERTDECL;
- const RpLight *light = (const RpLight *) voidLight;
- RwReal scale, recipRad;
- RwV3d lightPos, vertToLight;
- RwReal radSquared;
-
- RWFUNCTION(RWSTRING("_rwApplyPointLight"));
- RWASSERT(light);
- RWASSERT(surfaceProps);
-
- OBJCAMVERTINIT();
- NUMVERTINIT();
-
- /* rpLIGHTPOINT - Linear falloff with distance, scaled by
- * dot product of vertex normal and light to vertex vector.
- */
- lightPos = RwFrameGetLTM(RpLightGetFrame(light))->pos;
-
- if (inverseMat)
- {
- RwReal scaledRad;
-
- scaledRad = ((light->radius) * (invScale));
- radSquared = ((scaledRad) * (scaledRad));
- recipRad = (((RwReal) (1)) / (scaledRad));
-
- /* Transform light into object space */
- RwV3dTransformPoints(&lightPos, &lightPos, 1, inverseMat);
- }
- else
- {
- radSquared = ((light->radius) * (light->radius));
- recipRad = (((RwReal) (1)) / (light->radius));
- }
-
- if (rwObjectTestPrivateFlags(light, rpLIGHTPRIVATENOCHROMA))
- {
- /* The scale encapsulates the common elements to do
- * with light intensity and surface lighting properties
- */
- scale =
- ((((RwReal) (255)) * (light->color.red))) *
- (surfaceProps->diffuse);
-
- while (numVert--)
- {
- RwV3d objVertex, objNormal;
- RwReal dot, dist2;
-
- OBJVERTGETPOS(&objVertex);
- OBJVERTGETNORMAL(&objNormal);
-
- /* Discover the vector between vertex and light and it's length */
- RwV3dSub(&vertToLight, &lightPos, &objVertex);
-
- /* Ensure that this vertex is facing the light source */
- dot = RwV3dDotProduct(&vertToLight, &objNormal);
- if (dot > 0.0f)
- {
- /* Ensure vertex lies within the light's radius */
- dist2 = RwV3dDotProduct(&vertToLight, &vertToLight);
- if (dist2 < radSquared)
- {
- RwReal lum;
- RwReal recipDist;
- RwReal dist;
-
- rwSqrt(&dist, dist2);
- recipDist =
- (dist > 0.0f) ? (((RwReal) 1) / dist) : 0.0f;
-
- /*
- * The following simplifies down to:
- *
- * -scale *
- * (dot/dist) *
- * (1 - dist/lightRadius)
- *
- * Where
- * scale
- * takes care of the light intensity and
- * diffuse lighting coefficient
- * (dot/dist)
- * is a normalised dot product of
- * light->vertex vector and vertex normal
- * (1 - dist/lightRadius)
- * is a linear falloff factor
- */
- lum = scale * dot * (recipDist - recipRad);
-
- /* Calculate the luminance at vertex */
-#undef FALLOFFCALC
-#define FALLOFFCALC FALLOFFPOINT
- CAMVERTADDRGBA(1, 1, 1, 0);
- }
- }
-
- OBJCAMVERTINC();
- }
- }
- else
- {
- scale = (((RwReal) (255)) * (surfaceProps->diffuse));
-
- while (numVert--)
- {
- RwV3d objVertex, objNormal;
- RwReal dot, dist2;
-
- OBJVERTGETPOS(&objVertex);
- OBJVERTGETNORMAL(&objNormal);
-
- /* Discover the vector between vertex and light and it's length */
- RwV3dSub(&vertToLight, &lightPos, &objVertex);
-
- /* Ensure that this vertex is facing the light source */
- dot = RwV3dDotProduct(&vertToLight, &objNormal);
- if (dot > 0.0f)
- {
- dist2 = RwV3dDotProduct(&vertToLight, &vertToLight);
-
- /* Ensure vertex lies within the light's radius */
- if (dist2 < radSquared)
- {
- RwReal lum;
- RwReal recipDist;
- RwReal dist;
-
- /* Only now calculate the actual length of vector */
- rwSqrt(&dist, dist2);
- recipDist =
- (dist > 0.0f) ? (((RwReal) 1) / dist) : 0.0f;
-
- lum = scale * dot * (recipDist - recipRad);
- /* Alter the luminance according to light colour */
-#define FALLOFFCALC FALLOFFPOINT
- CAMVERTADDRGBA(light->color.red, light->color.green,
- light->color.blue, 0);
- }
- }
-
- /* Next point */
- OBJCAMVERTINC();
- }
- }
- RWRETURNVOID();
-}
-
-/***************************************************************************
- _rwApplySpotLight
-
- On entry : Instanced data
- : Light
- : Optional inverse object matrix
- : (to transform light to object space)
- : Inverse scale of object
- : Surface properties of the light
- On exit :
- */
-
-static void
-_rwApplySpotLight(VERTSARG,
- const void *voidLight,
- const RwMatrix * inverseMat,
- RwReal invScale, const RwSurfaceProperties * surfaceProps)
-{
- OBJCAMVERTDECL;
- NUMVERTDECL;
- const RpLight *light = (const RpLight *) voidLight;
- RwReal recipRad;
- RwReal radSquared;
- RwV3d lightPos, at;
-
- RWFUNCTION(RWSTRING("_rwApplySpotLight"));
- RWASSERT(light);
- RWASSERT(surfaceProps);
-
- OBJCAMVERTINIT();
- NUMVERTINIT();
-
- /* rpLIGHTSPOT - Linear falloff with distance, cone to restrict
- * angle that light has effect, constant intensity across cone,
- * scaled by dot product of vertex normal and light to vertex vector.
- */
-
- lightPos = RwFrameGetLTM(RpLightGetFrame(light))->pos;
- at = RwFrameGetLTM(RpLightGetFrame(light))->at;
-
- if (inverseMat)
- {
- RwReal scaledRad;
-
- scaledRad = ((light->radius) * (invScale));
- recipRad = (((RwReal) (1)) / (scaledRad));
- radSquared = ((scaledRad) * (scaledRad));
-
- /* Transform light into object space */
- /* The at is required to ensure within cone */
- RwV3dTransformPoints(&lightPos, &lightPos, 1, inverseMat);
- RwV3dTransformVectors(&at, &at, 1, inverseMat);
- _rwV3dNormalize(&at, &at);
- }
- else
- {
- recipRad = (((RwReal) (1)) / (light->radius));
- radSquared = ((light->radius) * (light->radius));
- }
-
- if (rwObjectTestPrivateFlags(light, rpLIGHTPRIVATENOCHROMA))
- {
- RwReal scale =
-
- ((RwReal) 255) * (light->color.red) * (surfaceProps->diffuse);
-
- while (numVert--)
- {
- RwV3d vertToLight, objVertex, objNormal;
- RwReal dot;
-
- OBJVERTGETPOS(&objVertex);
- OBJVERTGETNORMAL(&objNormal);
-
- /* Find the squared distance from light point to vertex */
- RwV3dSub(&vertToLight, &lightPos, &objVertex);
-
- /* Ensure that this vertex is facing the light source */
- dot = RwV3dDotProduct(&vertToLight, &objNormal);
- if (dot > 0.0f)
- {
- RwReal dist2;
-
- /* Ensure vertex lies within the light's radius */
- dist2 = RwV3dDotProduct(&vertToLight, &vertToLight);
- if (dist2 < radSquared)
- {
- RwReal dist;
- RwReal compare;
- RwReal proj;
-
- rwSqrt(&dist, dist2);
- compare = dist * light->minusCosAngle;
- proj = RwV3dDotProduct(&vertToLight, &at);
-
- if (proj < compare)
- {
- RwReal lum;
- RwReal recipDist;
-
- /* Get the real distance from the light
- * to the vertex (not squared) */
- recipDist =
- (dist > 0.0f) ? (((RwReal) 1) / dist) : 0.0f;
-
- /* This model is the same as the point source
- * inside the cone, zero outside the cone */
- lum = scale * dot * (recipDist - recipRad);
-#undef FALLOFFCALC
-#define FALLOFFCALC FALLOFFSPOT
- CAMVERTADDRGBA(1, 1, 1, 0);
- }
- }
- /* Next vertex */
- OBJCAMVERTINC();
- }
- }
- }
- else
- {
- RwReal scale =
-
- (((RwReal) (255)) * (surfaceProps->diffuse));
-
- while (numVert--)
- {
- RwV3d vertToLight, objVertex, objNormal;
- RwReal dot;
-
- OBJVERTGETPOS(&objVertex);
- OBJVERTGETNORMAL(&objNormal);
-
- /* Find the squared distance from light point to vertex */
- RwV3dSub(&vertToLight, &lightPos, &objVertex);
-
- /* Ensure that this vertex is facing the light source */
- dot = RwV3dDotProduct(&vertToLight, &objNormal);
- if (dot > 0.0f)
- {
- RwReal dist2;
-
- /* Ensure vertex lies within the light's radius */
- dist2 = RwV3dDotProduct(&vertToLight, &vertToLight);
- if (dist2 < radSquared)
- {
- RwReal dist;
- RwReal compare;
- RwReal proj;
-
- rwSqrt(&dist, dist2);
- compare = dist * light->minusCosAngle;
- proj = RwV3dDotProduct(&vertToLight, &at);
-
- if (proj < compare)
- {
- RwReal lum;
- RwReal recipDist;
-
- recipDist =
- (dist > 0.0f) ? (((RwReal) 1) / dist) : 0.0f;
-
- /* This model is the same as the point source
- * inside the cone, zero outside the cone */
- lum = scale * dot * (recipDist - recipRad);
-
- /* Introduce the light colours as a
- * scaling factor for luminance */
-#define FALLOFFCALC FALLOFFSPOT
- CAMVERTADDRGBA(light->color.red,
- light->color.green, light->color.blue,
- 0);
- }
- }
- }
-
- /* Next */
- OBJCAMVERTINC();
- }
- }
-
- RWRETURNVOID();
-}
-
-/***************************************************************************
- _rwApplySpotSoftLight
-
- On entry : Instanced data
- : Light
- : Optional inverse object matrix
- : (to transform light to object space)
- : Inverse scale of object
- : Surface properties of the light
- On exit :
- */
-
-static void
-_rwApplySpotSoftLight(VERTSARG, const void *voidLight,
- const RwMatrix * inverseMat, RwReal invScale,
- const RwSurfaceProperties * surfaceProps)
-{
- OBJCAMVERTDECL;
- NUMVERTDECL;
- const RpLight *light = (const RpLight *) voidLight;
- RwReal recipRad;
- RwReal radSquared;
- RwV3d lightPos, at;
-
- RWFUNCTION(RWSTRING("_rwApplySpotSoftLight"));
- RWASSERT(light);
- RWASSERT(surfaceProps);
-
- OBJCAMVERTINIT();
- NUMVERTINIT();
-
- /* rpLIGHTSPOTSOFT - Linear falloff with distance, cone to restrict
- * angle that light has effect, falloff to edge of cone, scaled by
- * dot product of vertex normal and light to vertex vector.
- */
-
- lightPos = RwFrameGetLTM(RpLightGetFrame(light))->pos;
- at = RwFrameGetLTM(RpLightGetFrame(light))->at;
-
- if (inverseMat)
- {
- RwReal scaledRad;
-
- scaledRad = ((light->radius) * (invScale));
- recipRad = (((RwReal) (1)) / (scaledRad));
- radSquared = ((scaledRad) * (scaledRad));
-
- /* Transform light into object space */
- /* The at is required to ensure within cone */
- RwV3dTransformPoints(&lightPos, &lightPos, 1, inverseMat);
- RwV3dTransformVectors(&at, &at, 1, inverseMat);
- _rwV3dNormalize(&at, &at);
- }
- else
- {
- recipRad = 1.0f / light->radius;
- radSquared = light->radius * light->radius;
- }
-
- if (rwObjectTestPrivateFlags(light, rpLIGHTPRIVATENOCHROMA))
- {
- RwReal scale =
-
- ((RwReal) 255) * (light->color.red) * (surfaceProps->diffuse);
-
- while (numVert--)
- {
- RwV3d vertToLight, objVertex, objNormal;
- RwReal dot;
-
- OBJVERTGETPOS(&objVertex);
- OBJVERTGETNORMAL(&objNormal);
-
- /* Find the squared distance from light point to vertex */
- RwV3dSub(&vertToLight, &lightPos, &objVertex);
-
- /* Ensure that this vertex is facing the light source */
- dot = RwV3dDotProduct(&vertToLight, &objNormal);
- if (dot > 0.0f)
- {
- RwReal dist2;
-
- /* Ensure vertex lies within the light's radius */
- dist2 = RwV3dDotProduct(&vertToLight, &vertToLight);
- if (dist2 < radSquared)
- {
- RwReal dist;
- RwReal compare;
- RwReal proj;
-
- rwSqrt(&dist, dist2);
- compare = dist * light->minusCosAngle;
- proj = RwV3dDotProduct(&vertToLight, &at);
-
- if (proj < compare)
- {
- RwReal lum;
- RwReal recipDist;
- RwReal normalise;
-
- recipDist =
- (dist > 0.0f) ? (((RwReal) 1) / dist) : 0.0f;
-
- /* This model is the same as the point source
- * inside the cone, zero outside the cone */
- lum = scale * dot * (recipDist - recipRad);
-
- /* It has an extra term for quadratic falloff
- * across the cone though */
- normalise = (dist + compare);
- RWASSERT(normalise >= 0.0f);
- if (normalise > 0.0f)
- {
- normalise = (dist + proj) / normalise;
-
- normalise *= normalise;
- lum *= (((RwReal) 1) - normalise);
- }
-
-#undef FALLOFFCALC
-#define FALLOFFCALC FALLOFFSOFTSPOT
- CAMVERTADDRGBA(1, 1, 1, 0);
- }
- }
- }
-
- /* Next */
- OBJCAMVERTINC();
- }
- }
-
- else
- {
- RwReal scale = 255.0f * surfaceProps->diffuse;
-
- while (numVert--)
- {
- RwV3d vertToLight, objVertex, objNormal;
- RwReal dot;
-
- OBJVERTGETPOS(&objVertex);
- OBJVERTGETNORMAL(&objNormal);
-
- /* Find the squared distance from light point to vertex */
- RwV3dSub(&vertToLight, &lightPos, &objVertex);
-
- /* Ensure that this vertex is facing the light source */
- dot = RwV3dDotProduct(&vertToLight, &objNormal);
- if (dot > 0.0f)
- {
- RwReal dist2;
-
- /* Ensure vertex lies within the light's radius */
- dist2 = RwV3dDotProduct(&vertToLight, &vertToLight);
- if (dist2 < radSquared)
- {
- RwReal dist;
- RwReal compare;
- RwReal proj;
-
- rwSqrt(&dist, dist2);
- compare = dist * light->minusCosAngle;
- proj = RwV3dDotProduct(&vertToLight, &at);
-
- if (proj < compare)
- {
-
- RwReal lum;
- RwReal normalise;
- RwReal recipDist;
-
- /* Get the real distance from the light
- * to the vertex (not squared) */
- recipDist =
- (dist > 0.0f) ? (((RwReal) 1) / dist) : 0.0f;
-
- /* This model is the same as the point source
- * inside the cone, zero outside the cone */
- lum = scale * dot * (recipDist - recipRad);
-
- /* It has an extra term for quadratic falloff
- * across the cone though */
- /* It has an extra term for quadratic falloff
- * across the cone though */
- normalise = (dist + compare);
- RWASSERT(normalise >= 0.0f);
- if (normalise > 0.0f)
- {
- normalise = (dist + proj) / normalise;
-
- normalise *= normalise;
- lum *= (((RwReal) 1) - normalise);
-
- }
- /* Introduce the light colours as a
- * scaling factor for luminance */
-#undef FALLOFFCALC
-#define FALLOFFCALC FALLOFFSOFTSPOT
- CAMVERTADDRGBA(light->color.red,
- light->color.green,
- light->color.blue, 0);
- }
- }
- }
-
- /* Next */
- OBJCAMVERTINC();
- }
- }
-
- RWRETURNVOID();
-}
diff --git a/rwsdk/include/d3d8/errcom.def b/rwsdk/include/d3d8/errcom.def
deleted file mode 100644
index 25f44e1e..00000000
--- a/rwsdk/include/d3d8/errcom.def
+++ /dev/null
@@ -1,60 +0,0 @@
-RWECODE(E_RW_BADENGINESTATE,
- "Engine in incorrect state for this operation")
-RWECODE(E_RW_BADOPEN,
- "Error opening the file %s")
-RWECODE(E_RW_BADPARAM,
- "Invalid Parameter passed. %s")
-RWECODE(E_RW_BADVERSION,
- "The binary file format version is incompatible with this library")
-RWECODE(E_RW_DEBUGSTACK,
- "Debug Library has Stack Depth mismatch")
-RWECODE(E_RW_DEFAULTPIPELINECREATION,
- "Creation of a default pipeline (%s) failed")
-RWECODE(E_RW_FRAMENOMATRIX,
- "The frame does not have an associated matrix")
-RWECODE(E_RW_INVIMAGEDEPTH,
- "Invalid Image Depth")
-RWECODE(E_RW_INVIMAGEFORMAT,
- "Image has no pixel memory allocated")
-RWECODE(E_RW_INVIMAGEMASK,
- "The mask and image are not the same size")
-RWECODE(E_RW_INVIMAGESIZE,
- "Destination and source images are of differing sizes")
-RWECODE(E_RW_INVRASTERDEPTH,
- "Invalid Raster depth")
-RWECODE(E_RW_INVRASTERFORMAT,
- "Unrecognized raster format")
-RWECODE(E_RW_INVRASTERLOCKREQ,
- "Invalid Raster lock request")
-RWECODE(E_RW_INVRASTERMIPLEVEL,
- "Invalid Raster mipmap level")
-RWECODE(E_RW_INVRASTERSIZE,
- "Invalid Raster size")
-RWECODE(E_RW_INVRASTERUNLOCKREQ,
- "Invalid Raster unlock request")
-RWECODE(E_RW_NOFRAME,
- "Unable to find Frame")
-RWECODE(E_RW_NOMEM,
- "Unable to allocate %d bytes of memory")
-RWECODE(E_RW_NOMIPMAPGENERATIONCALLBACK,
- "No Mipmap generation callback set - use RtMipmapUseDefaultMipmapGenerationCallback")
-RWECODE(E_RW_NOTSSEENABLEDCPU,
- "Not SSE enabled CPU")
-RWECODE(E_RW_NULLP,
- "NULL pointer passed to library routine")
-RWECODE(E_RW_PLUGININIT,
- "Plugin has already been initialized")
-RWECODE(E_RW_PLUGINNOTINIT,
- "Plugin not initialized")
-RWECODE(E_RW_RANGE,
- "A supplied parameter was outside the expected range")
-RWECODE(E_RW_READ,
- "Read error on stream")
-RWECODE(E_RW_REDUNDANT_FUNCTION,
- "Call to redundant function - scheduled to be dropped from future releases")
-RWECODE(E_RW_WRITE,
- "Write error on stream")
-RWECODE(E_RX_MESHES_RANGES_OVERLAP,
- "\n Geometry is in an invalid format for RxPipeline rendering.\n There may be visible artifacts and/or decreased performance.\n Use RpGeometrySortByMaterial.\n [stream %p type %s]")
-RWECODE(E_RW_STRING_TRUNCATION,
- "strlen(%s) >= %d; truncating at character #%d == %c")
diff --git a/rwsdk/include/d3d8/errcore.def b/rwsdk/include/d3d8/errcore.def
deleted file mode 100644
index c71eed5a..00000000
--- a/rwsdk/include/d3d8/errcore.def
+++ /dev/null
@@ -1,117 +0,0 @@
-RWECODE(E_RW_BADWINDOW,
- "Invalid view window dimensions supplied")
-RWECODE(E_RW_CHUNKTYPEGET,
- "Unable to get a chunk of the given type")
-RWECODE(E_RW_DEVICEERROR,
- "Device specific error: %s")
-RWECODE(E_RW_DEVICEOPEN,
- "Request to open device system refused")
-RWECODE(E_RW_DEVICESTART,
- "Attempt to start Device failed")
-RWECODE(E_RW_ENDOFSTREAM,
- "At the end of the stream.")
-RWECODE(E_RW_FRAMEDESTROYSTATIC,
- "RwFrameDestroy called on static frame.")
-RWECODE(E_RW_FRAMEBUFFERMISMATCH,
- "Resolutions of parent rasters of frame buffer and Z buffer are different")
-RWECODE(E_RW_FREELISTFREED,
- "Free List value already on the free list")
-RWECODE(E_RW_FREELISTINVADDRESS,
- "Invalid Free List memory address")
-RWECODE(E_RW_FREELISTINVMEMBOUND,
- "Invalid Free List memory boundary")
-RWECODE(E_RW_FREELISTTRASH,
- "An unused Free List entry has been overwritten")
-RWECODE(E_RW_INSUFFICIENTRESOURCES,
- "Insufficient resources to satisfy the allocation of %d bytes.")
-RWECODE(E_RW_INVSTREAMACCESSTYPE,
- "Invalid stream access type.")
-RWECODE(E_RW_INVSTREAMTYPE,
- "Invalid stream type.")
-RWECODE(E_RW_NEGCLIPPLANE,
- "Negative positioned clip planes are invalid")
-RWECODE(E_RW_NOCAMERA,
- "Cannot render until a Camera has been created")
-RWECODE(E_RW_NOFRAMEBUFFER,
- "Camera has no frame buffer raster")
-RWECODE(E_RW_NOPARENT,
- "The given object has no parent")
-RWECODE(E_RW_RASTERRECT,
- "Rectangle is not totally within Raster")
-RWECODE(E_RW_RASTERSTACK,
- "Insufficient Raster stack space available")
-RWECODE(E_RW_RASTERSTACKEMPTY,
- "No Raster Currently on Stack")
-RWECODE(E_RW_READTEXMASK,
- "Unable to read Texture %s / Mask %s")
-RWECODE(E_RW_STREAMOPEN,
- "Unable to open stream : %s")
-RWECODE(E_RW_SYSTEMREQUEST,
- "A system request call has failed, request code : 0x%x")
-RWECODE(E_RW_ZEROLENGTH,
- "A Vector of Zero Length was passed for normalizing")
-RWECODE(E_RX_CANNOT_TRANSFER_BETWEEN_NODES,
- "Node %s cannot output to node %s")
-RWECODE(E_RX_CANNOT_TRANSFER_FROM_NODE_TO_PIPELINE,
- "Node %s cannot output to specified pipeline")
-RWECODE(E_RX_CYCLICPIPELINE,
- "Pipeline contains cycles; illegal")
-RWECODE(E_RX_DEP_DEPENDENCIESMISMATCH,
- "\n"
- "*** dependencies cannot be satisfied.\n"
- "*** rxCLREQ_REQUIRED on cluster %s, originating\n"
- "*** with node %s, not serviced by a rxCLVALID_VALID -\n"
- "*** blocked at node %s, output #%ld (\"%s\").")
-RWECODE(E_RX_DEP_DUPLICATECLUSTERDEFS,
- "\n"
- "*** Node %s specifies RxClusterDefinition for cluster %s more than once in\n"
- "*** clusters of interest array. Distinct clusters within a pipeline must reference\n"
- "*** distinct RxClusterDefinitions, even if the clusters contain the same data type\n")
-RWECODE(E_RX_DEP_NULLCLUSTERDEF,
- "Node %s specified with RxClusterDefinition pointer NULL for cluster of interest %d\n")
-RWECODE(E_RX_DEP_OUTOFMEMORY,
- "Dependency chasing; memory alloc failed")
-RWECODE(E_RX_EMPTYPIPELINE,
- "RwPipeline2Execute cannot execute a pipeline with no nodes :)")
-RWECODE(E_RX_FRAGMENTEDPIPELINE,
- "Pipeline forms two or more unconnected graphs; illegal")
-RWECODE(E_RX_IM3DNOTACTIVE,
- "Cannot render Im3D primitives outside of a RwIm3dTransform()/RwIm3dEnd() pair")
-RWECODE(E_RX_INVALIDENTRYPOINT,
- "Pipeline has an invalid entry point")
-RWECODE(E_RX_INVALIDPRIMTYPE,
- "Unknown primitive type %d")
-RWECODE(E_RX_INVALIDRESUMEPIPELINE,
- "RwPipeline2Execute cannot resume a different pipeline to the one previously interrupted")
-RWECODE(E_RX_LOCKEDPIPE,
- "Illegal operation on a locked pipeline")
-RWECODE(E_RX_NODETOOMANYCLUSTERSOFINTEREST,
- "Node contains more than RXNODEMAXCLUSTERSOFINTEREST clusters of interest; illegal")
-RWECODE(E_RX_NODETOOMANYOUTPUTS,
- "Node contains more than RXNODEMAXOUTPUTS outputs; illegal")
-RWECODE(E_RX_PIPELINETOOMANYNODES,
- "Maximum nodes per pipeline exceeded! You may increase the limit by changing the value of _rxPipelineMaxNodes BEFORE starting RenderWare")
-RWECODE(E_RX_NODE_EXECUTION_FAILED,
- "Node execution failed - %s")
-RWECODE(E_RX_NOVERTS,
- "Cannot render Im3D primitive - not enough vertices transformed")
-RWECODE(E_RX_PACKETPTRINVALID,
- "Value of input/output interruption packets pointer not as expected")
-RWECODE(E_RX_PACKETSCOPYFAILED,
- "Failed to make copies of packets input to RxPipelineExecute()")
-RWECODE(E_RX_RUNFROMNOTVALID,
- "RunFrom node not a member of the specified pipeline")
-RWECODE(E_RX_RUNTOANDRUNFROM,
- "RwPipeline2Execute cannot accept both RunTo *and* RunFrom")
-RWECODE(E_RX_RUNTONOTVALID,
- "RunTo node not a member of the specified pipeline")
-RWECODE(E_RX_TOOMANYVERTS,
- "More than 65536 vertices passed to RwIm3DTransform; illegal")
-RWECODE(E_RX_UNFINISHEDPIPELINE,
- "RwPipeline2Execute must resume and finish an interrupted pipeline")
-RWECODE(E_RX_UNLOCKEDPIPE,
- "Illegal operation on an unlocked pipeline")
-RWECODE(E_RX_UNPROCESSED_PACKETS,
- "Unprocessed packets found in finished execution context")
-RWECODE(E_RX_UNSATISFIED_REQUIREMENTS,
- "Cannot send packet between pipelines, requirements not satisfied. Cluster '%s' is missing")
diff --git a/rwsdk/include/d3d8/rpanisot.h b/rwsdk/include/d3d8/rpanisot.h
deleted file mode 100644
index 4f4445a4..00000000
--- a/rwsdk/include/d3d8/rpanisot.h
+++ /dev/null
@@ -1,54 +0,0 @@
-/**
- * Anisotropic Texture Sampling Plugin for RenderWare.
- */
-
-#ifndef RPANISOTPLUGIN_H
-#define RPANISOTPLUGIN_H
-
-/**
- * \defgroup rpanisot RpAnisot
- * \ingroup rpplugin
- *
- * Anisotropic Texture Sampling Plugin for RenderWare Graphics.
- */
-
-/**
- * \ingroup rpanisot
- * \page rpanisotoverview RpAnisot Plugin Overview
- *
- * \par Requirements
- * \li \b Headers: rwcore.h, rpworld.h, rpanisot.h
- * \li \b Libraries: rwcore, rpworld, rpanisot
- * \li \b Plugin \b attachments: \ref RpWorldPluginAttach, \ref RpAnisotPluginAttach
- *
- * \subsection anisotoverview Overview
- * The RpAnisot plugin is used to extend an RwTexture with a maximum
- * anisotropy value that will be used when a particular texture is drawn.
- * When textured polygons are viewed nearly edge on, for example when looking
- * dowm a road or a football pitch, distant pixels are not sampled very well
- * by trilinear mipmapping and the texture looks smeary.
- * Anisotropic sampling takes additional samples, resulting in sharper looking
- * textures. Higher numbers of samples will produce better quality results but
- * run slower, so should be used in moderation.
- *
- */
-
-#include <rwcore.h>
-
-#ifdef __cplusplus
-extern "C"
-{
-#endif
-
-extern RwInt8 RpAnisotGetMaxSupportedMaxAnisotropy(void);
-
-extern RwTexture *RpAnisotTextureSetMaxAnisotropy(RwTexture *tex, RwInt8 val);
-extern RwInt8 RpAnisotTextureGetMaxAnisotropy(RwTexture *tex);
-
-extern RwBool RpAnisotPluginAttach(void);
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* RPANISOTPLUGIN_H */
diff --git a/rwsdk/include/d3d8/rpanisot.rpe b/rwsdk/include/d3d8/rpanisot.rpe
deleted file mode 100644
index 5216ec9c..00000000
--- a/rwsdk/include/d3d8/rpanisot.rpe
+++ /dev/null
@@ -1,639 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-enum e_rwdb_CriterionLabel
-{
-
-
-
- e_rwdb_CriterionLabelLAST = RWFORCEENUMSIZEINT
-};
-
-typedef enum e_rwdb_CriterionLabel e_rwdb_CriterionLabel;
-
-
diff --git a/rwsdk/include/d3d8/rpcollis.h b/rwsdk/include/d3d8/rpcollis.h
deleted file mode 100644
index 908fb68e..00000000
--- a/rwsdk/include/d3d8/rpcollis.h
+++ /dev/null
@@ -1,372 +0,0 @@
-
-/*****************************************************************************
- *
- * File : rpcollis.h
- *
- * Abstract : World collision 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 RPCOLLIS_H
-#define RPCOLLIS_H
-
-/* Doxygen plugin groups. */
-
-/**
- * \defgroup rpcollis RpCollision
- * \ingroup rpplugin
- *
- * Collision Plugin for RenderWare Graphics.
- */
-
-/******************************************************************************
- * Include files
- */
-
-#include <rwcore.h>
-#include <rpworld.h>
-
-#include "rpcollis.rpe" /* automatically generated header file */
-
-/******************************************************************************
- * Global Types
- */
-
-/**
- * \ingroup rpcollis
- * RpIntersectType, this type represents the different types of
- * primitives that can be used to intersect with an object (for example, see
- * \ref RpCollisionWorldForAllIntersections):
- */
-enum RpIntersectType
-{
- rpINTERSECTNONE = 0,
- rpINTERSECTLINE, /**<Line Intersection */
- rpINTERSECTPOINT, /**<Point Intersection */
- rpINTERSECTSPHERE, /**<Sphere Intersection */
- rpINTERSECTBOX, /**<Box intersection */
- rpINTERSECTATOMIC, /**<Atomic Intersection based on bounding sphere */
- rpINTERSECTTYPEFORCEENUMSIZEINT = RWFORCEENUMSIZEINT
-};
-typedef enum RpIntersectType RpIntersectType;
-
-/**
- * \ingroup rpcollis
- * RpIntersectData, this union type is used to specify the parameters
- * for an intersection primitive of the desired type (\ref RpIntersectType)
- */
-typedef union RpIntersectData RpIntersectData;
-union RpIntersectData
-{
- RwLine line; /**<For type rpINTERSECTLINE */
- RwV3d point; /**<For type rpINTERSECTPOINT */
- RwSphere sphere; /**<For type rpINTERSECTSPHERE */
- RwBBox box; /**<For type rpINTERSECTBOX */
- void *object; /**<For type rpINTERSECTATOMIC - this
- * should hold a pointer to the atomic */
-};
-
-typedef struct RpIntersection RpIntersection;
-/**
- * \ingroup rpcollis
- * \struct RpIntersection
- * Intersection Object. This type represents data for an
- * intersection primitive. It specifies the intersection type
- * (line, sphere, etc.) (type) and parameters describing the given type (t):
- */
-struct RpIntersection
-{
- RpIntersectData t; /**< Intersection data. Union type - one
- * of line, point, sphere or RW object */
- RpIntersectType type; /**< Intersection type - see
- * \ref RpIntersectType */
-};
-
-typedef struct RpCollisionTriangle RpCollisionTriangle;
-/**
- * \ingroup rpcollis
- * \struct RpCollisionTriangle
- * A structure representing a collision between
- * an \ref RpIntersection primitive and a triangle.
- * The collision is specified by the triangle's plane normal
- * (normal), the first triangle vertex (point), an index to the triangle in
- * the object geometry's triangle list (index) and the positions of the
- * triangle's vertices (vertices). Note all vector components are in object
- * space.
- *
- * \see RpCollisionWorldForAllIntersections
- * \see RpCollisionGeometryForAllIntersections
- * \see RpAtomicForAllIntersections
- * \see RpIntersectionCallBackWorldTriangle
- * \see RpIntersectionCallBackGeometryTriangle
- */
-struct RpCollisionTriangle
-{
- RwV3d normal; /**< Triangle normal */
- RwV3d point; /**< First triangle vertex */
- RwInt32 index; /**< Index of triangle in object (if applicable) */
- RwV3d *vertices[3]; /**< Pointers to three triangle vertices */
-};
-
-typedef struct RpCollisionBuildParam RpCollisionBuildParam;
-/**
- * \ingroup rpcollis
- * \struct RpCollisionBuildParam
- * This structure is a place-holder for parameters that may be
- * introduced in future to control the generation of collision data when using
- * the functions \ref RpCollisionWorldSectorBuildData,
- * \ref RpCollisionWorldBuildData or \ref RpCollisionGeometryBuildData.
- * Currently, a NULL pointer should be passed to these functions, as no
- * parameters are defined. If parameters are introduced, a NULL pointer will
- * indicate that default values should be used.
- */
-struct RpCollisionBuildParam
-{
- RwInt32 dummy; /**< Not used */
-};
-
-/**
- * \ingroup rpcollis
- * \typedef RpIntersectionCallBackWorldTriangle
- * \ref RpIntersectionCallBackWorldTriangle represents the function called
- * from \ref RpCollisionWorldForAllIntersections for all intersections between
- * the specified primitive and the static geometry in a given world. This
- * function should return a pointer to the current collision triangle to
- * indicate success. The callback may return NULL to terminate further
- * callbacks on the world.
- *
- * \param intersection Pointer to the intersection primitive.
- * \param sector Pointer to the world sector containing the triangle.
- * \param collTriangle Pointer to the \ref RpCollisionTriangle representing
- * the triangle in the world's static geometry that is intersected.
- * \param distance The distance to the intersection point(s).
- * Note that the distance returned depends on the intersection type and is
- * normalized for the given intersection primitive.
- * \li rpINTERSECTLINE Distance from start of line to collision
- * triangle, normalized to length of line.
- * \li rpINTERSECTSPHERE Distance of sphere's center from the collision
- * triangle along the direction of the normal, and normalized
- * to the sphere's radius (may be negative if the sphere center
- * is behind the triangle's plane with respect to the direction
- * of the normal).
- * \li rpINTERSECTBOX Distance is undefined.
- * \li rpINTERSECTATOMIC Distance of atomic's bounding-sphere center
- * from the collision triangle along the direction of the normal
- * and normalized to sphere's radius.
- * \param data User defined data pointer
- *
- * \return Pointer to the current collision triangle.
- */
-typedef RpCollisionTriangle *(*RpIntersectionCallBackWorldTriangle)
- (RpIntersection * intersection,
- RpWorldSector * sector,
- RpCollisionTriangle * collTriangle, RwReal distance, void *data);
-
-/**
- * \ingroup rpcollis
- * \typedef RpIntersectionCallBackAtomic
- * \ref RpIntersectionCallBackAtomic represents the function called from
- * \ref RpWorldForAllAtomicIntersections for all intersections between the
- * specified primitive and collision atomics in a given world. This function
- * should return the current atomic to indicate success. The callback may
- * return NULL to terminate further callbacks on the world.
- *
- * \param intersection Pointer to the intersection primitive.
- * \param sector Pointer to the world sector containing
- * the intersected triangles.
- * \param atomic Pointer to the intersected atomic.
- * \param distance The collision distance. The distance returned
- * depends on the intersection type which is defined in \ref RpIntersectType.
- * \li rpINTERSECTPOINT Distance of point from atomic's bounding
- * sphere center, normalized to sphere's radius.
- * \li rpINTERSECTLINE Distance of atomic's bounding-sphere center from
- * start of line, projected onto the line, normalized to length of line.
- * Note that by this definition, if the line starts or ends inside the
- * sphere, this distance maybe negative or greater than one.
- * \li rpINTERSECTSPHERE Distance of atomic's bounding-sphere center
- * from sphere's center, normalized to sum of spheres' radii.
- * \li rpINTERSECTBOX Distance undefined.
- * \li rpINTERSECTATOMIC Distance between atomics' bounding-sphere
- * centers, normalized to sum of spheres' radii.
- * \param data User defined data pointer.
- *
- * \return Pointer to the current atomic.
- */
-typedef RpAtomic *(*RpIntersectionCallBackAtomic)
- (RpIntersection * intersection,
- RpWorldSector * sector, RpAtomic * atomic, RwReal distance, void *data);
-
-/**
- * \ingroup rpcollis
- * \typedef RpIntersectionCallBackWorldSector
- * \ref RpIntersectionCallBackWorldSector represents the function called from
- * \ref RpWorldForAllWorldSectorIntersections for all intersections between the
- * specified primitive and world sectors in a given world. This function should
- * return the current world sector to indicate success. The callback may return
- * NULL to terminate further callbacks on the world.
- *
- * \param intersection Pointer to the intersection primitive.
- * \param sector Pointer to the world sector containing the intersected
- * polygons.
- * \param data User defined data pointer
- *
- * \return Pointer to the current world sector.
- */
-typedef RpWorldSector *(*RpIntersectionCallBackWorldSector)
- (RpIntersection * intersection, RpWorldSector * worldSector, void *data);
-
-/**
- * \ingroup rpcollis
- * \typedef RpIntersectionCallBackGeometryTriangle
- * \ref RpIntersectionCallBackGeometryTriangle represents the function called
- * from \ref RpAtomicForAllIntersections and
- * \ref RpCollisionGeometryForAllIntersections
- * for all intersections between the specified primitive and a given atomic.
- * This function should return a pointer to the current collision triangle to
- * indicate success. The callback may return NULL to terminate further
- * callbacks on the atomic.
- *
- * Note that the vertices and normal of the collision triangle are given
- * in the coordinate space of the geometry. If they are required in world
- * coordinates, they must be transformed using \ref RwV3dTransformPoints and
- * \ref RwV3dTransformVectors with the LTM of the atomic's frame. This must
- * be passed via the user-defined data if required.
- *
- * \param intersection Pointer to the intersection primitive.
- * \param collTri Pointer to the \ref RpCollisionTriangle
- * representing the triangle in the atomic that is intersected.
- * \param distance The distance to the intersection point(s).
- * Note that the distance returned depends on the intersection type and is
- * normalized for the given intersection primitive.
- * \li rpINTERSECTLINE Distance from start of line to collision
- * triangle, normalized to length of line.
- * \li rpINTERSECTSPHERE Distance of sphere's center from the collision
- * triangle along the direction of the normal, and normalized
- * to the sphere's radius (may be negative if the sphere center
- * is behind the triangle's plane with respect to the direction
- * of the normal).
- * \li rpINTERSECTATOMIC Distance of atomic's bounding-sphere center
- * from the collision triangle along the direction of the normal, and
- * normalized to sphere's radius.
- * \param data User defined data pointer
- *
- * \return Pointer to the current collision triangle.
- */
-typedef RpCollisionTriangle *(*RpIntersectionCallBackGeometryTriangle)
- (RpIntersection *intersection, RpCollisionTriangle *collTriangle,
- RwReal distance, void *data);
-
-
-/******************************************************************************
- * Plugin API Functions
- */
-
-#ifdef __cplusplus
-extern "C"
-{
-#endif /* __cplusplus */
-
-/* Plugin attachment */
-extern RwBool
-RpCollisionPluginAttach(void);
-
-/* World collisions */
-extern RpWorldSector *
-RpCollisionWorldSectorBuildData(
- RpWorldSector *worldSector,
- RpCollisionBuildParam *param);
-
-extern RpWorldSector *
-RpCollisionWorldSectorDestroyData(
- RpWorldSector *worldSector);
-
-extern RwBool
-RpCollisionWorldSectorQueryData(
- RpWorldSector *worldSector);
-
-extern RpWorld *
-RpCollisionWorldBuildData(
- RpWorld *world,
- RpCollisionBuildParam *param);
-
-extern RpWorld *
-RpCollisionWorldDestroyData(
- RpWorld *world);
-
-extern RwBool
-RpCollisionWorldQueryData(
- RpWorld *world);
-
-
-extern RpWorld *
-RpWorldForAllWorldSectorIntersections(
- RpWorld *world,
- RpIntersection *intersection,
- RpIntersectionCallBackWorldSector callBack,
- void *data);
-
-extern RpWorld *
-RpWorldForAllAtomicIntersections(
- RpWorld *world,
- RpIntersection *intersection,
- RpIntersectionCallBackAtomic callBack,
- void *data);
-
-extern RpWorld *
-RpCollisionWorldForAllIntersections(
- RpWorld *world,
- RpIntersection *intersection,
- RpIntersectionCallBackWorldTriangle callBack,
- void *data);
-
-/* Geometry and atomic collisions */
-extern RpGeometry *
-RpCollisionGeometryBuildData(
- RpGeometry *geometry,
- RpCollisionBuildParam *param);
-
-extern RwBool
-RpCollisionGeometryQueryData(
- RpGeometry *geometry);
-
-extern RpGeometry *
-RpCollisionGeometryDestroyData(
- RpGeometry *geometry);
-
-extern RpGeometry *
-RpCollisionGeometryForAllIntersections(
- RpGeometry *geometry,
- RpIntersection *intersection,
- RpIntersectionCallBackGeometryTriangle callBack,
- void *data);
-
-extern RpAtomic *
-RpAtomicForAllIntersections(
- RpAtomic *atomic,
- RpIntersection *intersection,
- RpIntersectionCallBackGeometryTriangle callBack,
- void *data);
-
-#ifdef __cplusplus
-}
-#endif /* __cplusplus */
-
-#endif /* RPCOLLIS_H */
-
diff --git a/rwsdk/include/d3d8/rpcollis.rpe b/rwsdk/include/d3d8/rpcollis.rpe
deleted file mode 100644
index 3e891755..00000000
--- a/rwsdk/include/d3d8/rpcollis.rpe
+++ /dev/null
@@ -1,637 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-enum e_rwdb_CriterionCollis
-{
-
-E_RP_COLLIS_INV_INTERSECTION,
-
- e_rwdb_CriterionCollisLAST = RWFORCEENUMSIZEINT
-};
-
-typedef enum e_rwdb_CriterionCollis e_rwdb_CriterionCollis;
-
-
diff --git a/rwsdk/include/d3d8/rpcriter.h b/rwsdk/include/d3d8/rpcriter.h
deleted file mode 100644
index c1af25b8..00000000
--- a/rwsdk/include/d3d8/rpcriter.h
+++ /dev/null
@@ -1,572 +0,0 @@
-/* Doxygen Core Library groups */
-
-/**
- * \defgroup rwcore Core Library
- *
- * Core Library
- */
-
-/**
- * \defgroup datatypes Data Types
- * \ingroup rwcore
- *
- * Basic Data Types
- */
-
-#ifndef RWPLCORE
-/**
- * \defgroup rwbbox RwBBox
- * \ingroup rwcore
- *
- * Bounding Box
- */
-#endif /* RWPLCORE */
-
-#ifndef RWPLCORE
-/**
- * \defgroup rwcamera RwCamera
- * \ingroup rwcore
- *
- * Cameras define how and what things can be seen. They also define the
- * depth and width of the view by the use of clip-planes and the view
- * window.
- */
-#endif /* RWPLCORE */
-
-#ifndef RWPLCORE
-/**
- * \defgroup rwcameravertex RwCameraVertex
- * \ingroup rwcore
- *
- * Camera space vertex data access
- */
-#endif /* RWPLCORE */
-
-/**
- * \defgroup rwdebug RwDebug
- * \ingroup rwcore
- *
- * Debug handling
- */
-
-/**
- * \defgroup rwengine RwEngine
- * \ingroup rwcore
- *
- * Device handling.
- */
-
-/**
- * \defgroup rwerror RwError
- * \ingroup rwcore
- *
- * Error code handling
- */
-
-#ifndef RWPLCORE
-/**
- * \defgroup rwframe RwFrame
- * \ingroup rwcore
- *
- * Frames define relationships between objects and the world
- */
-#endif /* RWPLCORE */
-
-/**
- * \defgroup rwfreelist RwFreeList
- * \ingroup rwcore
- *
- * Free lists
- */
-
-#ifndef RWPLCORE
-/**
- * \defgroup rwimage RwImage
- * \ingroup rwcore
- *
- * Image handling.
- */
-#endif /* RWPLCORE */
-
-/**
- * \defgroup rwim2d RwIm2D
- * \ingroup rwcore
- *
- * 2D immediate mode support
- */
-
-#ifndef RWPLCORE
-/**
- * \defgroup rwim2dcameravertex RwIm2DCameraVertex
- * \ingroup rwcore
- *
- * 2D Camera space vertex data access
- */
-#endif /* RWPLCORE */
-
-#ifndef RWPLCORE
-/**
- * \defgroup rwim2dvertex RwIm2DVertex
- * \ingroup rwcore
- *
- * Im2D Vertex data access
- */
-#endif /* RWPLCORE */
-
-#ifndef RWPLCORE
-/**
- * \defgroup rwim3d RwIm3D
- * \ingroup rwcore
- *
- * 3D immediate mode support
- */
-#endif /* RWPLCORE */
-
-#ifndef RWPLCORE
-/**
- * \defgroup rwim3dvertex RwIm3DVertex
- * \ingroup rwcore
- *
- * Im3D Vertex data access
- */
-#endif /* RWPLCORE */
-
-/**
- * \defgroup rwmatrix RwMatrix
- * \ingroup rwcore
- *
- * Handling binary matrix representations.
- */
-
-/**
- * \defgroup rwmem RwMem
- * \ingroup rwcore
- *
- * Memory
- */
-
-#ifndef RWPLCORE
-/**
- * \defgroup rwobject RwObject
- * \ingroup rwcore
- *
- * object
- */
-#endif /* RWPLCORE */
-
-/**
- * \defgroup rwos RwOs
- * \ingroup rwcore
- *
- * Operating System
- */
-
-#ifndef RWPLCORE
-/**
- * \defgroup rwraster RwRaster
- * \ingroup rwcore
- *
- * Image/raster coupling handling.
- */
-#endif /* RWPLCORE */
-
-/**
- * \defgroup rwrenderstate RwRenderState
- * \ingroup rwcore
- *
- * Render states
- */
-
-/**
- * \defgroup rwresources RwResources
- * \ingroup rwcore
- *
- * Resource handling.
- * Resources are used to instance objects into.
- */
-
-
-/**
- * \defgroup rwrgba RwRGBA
- * \ingroup rwcore
- *
- * Color space functionality.
- */
-
-
-/**
- * \defgroup rwstream RwStream
- * \ingroup rwcore
- *
- * Stream
- */
-
-#ifndef RWPLCORE
-/**
- * \defgroup rwtexdict RwTexDictionary
- * \ingroup rwcore
- *
- * Texture Dictionary
- */
-#endif /* RWPLCORE */
-
-#ifndef RWPLCORE
-/**
- * \defgroup rwtexture RwTexture
- * \ingroup rwcore
- *
- * Texture handling.
- * Textures are special cases of rasters that can be applied to polygons.
- */
-#endif /* RWPLCORE */
-
-#ifndef RWPLCORE
-/**
- * \defgroup rwv2d RwV2d
- * \ingroup rwcore
- *
- * 2D Vector mathematics.
- */
-#endif /* RWPLCORE */
-
-#ifndef RWPLCORE
-/**
- * \defgroup rwv3d RwV3d
- * \ingroup rwcore
- *
- * 3D Vector mathematics.
- */
-#endif /* RWPLCORE */
-
-#ifndef RWPLCORE
-/**
- * \defgroup rwcorepowerpipe PowerPipe
- * \ingroup rwcore
- *
- * PowerPipe
- */
-#endif /* RWPLCORE */
-
-#ifndef RWPLCORE
-/**
- * \defgroup rwcoregeneric Generic
- * \ingroup rwcorepowerpipe
- *
- * Generic Pipeline
- *
- */
-#endif /* RWPLCORE */
-
-/* These are plugins */
-#define rwID_METRICSPLUGIN MAKECHUNKID(rwVENDORID_CRITERIONTK, 0x01)
-#define rwID_SPLINEPLUGIN MAKECHUNKID(rwVENDORID_CRITERIONTK, 0x02)
-#define rwID_STEREOPLUGIN MAKECHUNKID(rwVENDORID_CRITERIONTK, 0x03)
-#define rwID_VRMLPLUGIN MAKECHUNKID(rwVENDORID_CRITERIONTK, 0x04)
-#define rwID_MORPHPLUGIN MAKECHUNKID(rwVENDORID_CRITERIONTK, 0x05)
-#define rwID_PVSPLUGIN MAKECHUNKID(rwVENDORID_CRITERIONTK, 0x06)
-#define rwID_MEMLEAKPLUGIN MAKECHUNKID(rwVENDORID_CRITERIONTK, 0x07)
-#define rwID_ANIMPLUGIN MAKECHUNKID(rwVENDORID_CRITERIONTK, 0x08)
-#define rwID_GLOSSPLUGIN MAKECHUNKID(rwVENDORID_CRITERIONTK, 0x09)
-#define rwID_LOGOPLUGIN MAKECHUNKID(rwVENDORID_CRITERIONTK, 0x0a)
-#define rwID_MEMINFOPLUGIN MAKECHUNKID(rwVENDORID_CRITERIONTK, 0x0b)
-#define rwID_RANDOMPLUGIN MAKECHUNKID(rwVENDORID_CRITERIONTK, 0x0c)
-#define rwID_PNGIMAGEPLUGIN MAKECHUNKID(rwVENDORID_CRITERIONTK, 0x0d)
-#define rwID_BONEPLUGIN MAKECHUNKID(rwVENDORID_CRITERIONTK, 0x0e)
-#define rwID_VRMLANIMPLUGIN MAKECHUNKID(rwVENDORID_CRITERIONTK, 0x0f)
-#define rwID_SKYMIPMAPVAL MAKECHUNKID(rwVENDORID_CRITERIONTK, 0x10)
-#define rwID_MRMPLUGIN MAKECHUNKID(rwVENDORID_CRITERIONTK, 0x11)
-#define rwID_LODATMPLUGIN MAKECHUNKID(rwVENDORID_CRITERIONTK, 0x12)
-#define rwID_MEPLUGIN MAKECHUNKID(rwVENDORID_CRITERIONTK, 0x13)
-#define rwID_LTMAPPLUGIN MAKECHUNKID(rwVENDORID_CRITERIONTK, 0x14)
-#define rwID_REFINEPLUGIN MAKECHUNKID(rwVENDORID_CRITERIONTK, 0x15)
-#define rwID_SKINPLUGIN MAKECHUNKID(rwVENDORID_CRITERIONTK, 0x16)
-#define rwID_LABELPLUGIN MAKECHUNKID(rwVENDORID_CRITERIONTK, 0x17)
-#define rwID_PARTICLESPLUGIN MAKECHUNKID(rwVENDORID_CRITERIONTK, 0x18)
-#define rwID_GEOMTXPLUGIN MAKECHUNKID(rwVENDORID_CRITERIONTK, 0x19)
-#define rwID_SYNTHCOREPLUGIN MAKECHUNKID(rwVENDORID_CRITERIONTK, 0x1a)
-#define rwID_STQPPPLUGIN MAKECHUNKID(rwVENDORID_CRITERIONTK, 0x1b)
-#define rwID_PARTPPPLUGIN MAKECHUNKID(rwVENDORID_CRITERIONTK, 0x1c)
-#define rwID_COLLISPLUGIN MAKECHUNKID(rwVENDORID_CRITERIONTK, 0x1d)
-#define rwID_HANIMPLUGIN MAKECHUNKID(rwVENDORID_CRITERIONTK, 0x1e)
-#define rwID_USERDATAPLUGIN MAKECHUNKID(rwVENDORID_CRITERIONTK, 0x1f)
-#define rwID_MATERIALEFFECTSPLUGIN \
- MAKECHUNKID(rwVENDORID_CRITERIONTK, 0x20)
-#define rwID_PARTICLESYSTEMPLUGIN \
- MAKECHUNKID(rwVENDORID_CRITERIONTK, 0x21)
-#define rwID_DMORPHPLUGIN MAKECHUNKID(rwVENDORID_CRITERIONTK, 0x22)
-#define rwID_PATCHPLUGIN MAKECHUNKID(rwVENDORID_CRITERIONTK, 0x23)
-#define rwID_TEAMPLUGIN MAKECHUNKID(rwVENDORID_CRITERIONTK, 0x24)
-#define rwID_CROWDPPPLUGIN MAKECHUNKID(rwVENDORID_CRITERIONTK, 0x25)
-#define rwID_MIPSPLITPLUGIN MAKECHUNKID(rwVENDORID_CRITERIONTK, 0x26)
-#define rwID_ANISOTPLUGIN MAKECHUNKID(rwVENDORID_CRITERIONTK, 0x27)
-/* #define THIS SPACE FREE! MAKECHUNKID(rwVENDORID_CRITERIONTK, 0x28) */
-#define rwID_GCNMATPLUGIN MAKECHUNKID(rwVENDORID_CRITERIONTK, 0x29)
-#define rwID_GPVSPLUGIN MAKECHUNKID(rwVENDORID_CRITERIONTK, 0x2a)
-#define rwID_XBOXMATPLUGIN MAKECHUNKID(rwVENDORID_CRITERIONTK, 0x2b)
-#define rwID_MULTITEXPLUGIN MAKECHUNKID(rwVENDORID_CRITERIONTK, 0x2c)
-#define rwID_CHAINPLUGIN MAKECHUNKID(rwVENDORID_CRITERIONTK, 0x2d)
-#define rwID_TOONPLUGIN MAKECHUNKID(rwVENDORID_CRITERIONTK, 0x2e)
-#define rwID_PTANKPLUGIN MAKECHUNKID(rwVENDORID_CRITERIONTK, 0x2f)
-
-#define rwID_PRTSTDPLUGIN MAKECHUNKID(rwVENDORID_CRITERIONTK, 0x30)
-
-
-/********************************************************/
-
-/* Doxygen plugin groups. */
-
-#ifndef RWPLCORE
-
-/**
- * \defgroup rpplugin Plugins
- *
- * API Plugins
- *
- */
-
-/**
- * \defgroup rpworld RpWorld
- * \ingroup rpplugin
- *
- * World handling Plugin
- *
- * Gives objects context,
- * and provides a mechanism for efficient static object rendering.
- */
-
-/********************************************************/
-
-/**
- * \defgroup rpworlddatatypes Data Types
- * \ingroup rpworld
- *
- * RpWorld Data types
- */
-
-/**
- * \defgroup rpatomic RpAtomic
- * \ingroup rpworld
- *
- * Atomics
- */
-
-/**
- * \defgroup rpclump RpClump
- * \ingroup rpworld
- *
- * Clumps
- */
-
-/**
- * \defgroup rpgeometry RpGeometry
- * \ingroup rpworld
- *
- * Handling atomic's geometry
- */
-
-
-/**
- * \defgroup rpinterpolator RpInterpolator
- * \ingroup rpworld
- *
- * Interpolators
- */
-
-/**
- * \defgroup rplight RpLight
- * \ingroup rpworld
- *
- * Lighting 3D objects.
- * Lights are used to illuminate atomics and worlds
- */
-
-/**
- * \defgroup rpmaterial RpMaterial
- * \ingroup rpworld
- *
- * Handling surface materials
- * Materials describe how things are to appear when rendered
- */
-
-/**
- * \defgroup rpmesh RpMesh
- * \ingroup rpworld
- *
- * Provide construction and enumeration facilities for meshes.
- */
-
-/**
- * \defgroup rpmorphtarget RpMorphTarget
- * \ingroup rpworld
- *
- * Morph Targets
- */
-
-/**
- * \defgroup rpworldsub RpWorld
- * \ingroup rpworld
- *
- * RpWorld sub group
- */
-
-/**
- * \defgroup rpworldsector RpWorldSector
- * \ingroup rpworld
- *
- * Handling atomic sectors
- */
-
-/**
- * \defgroup rpworldrwcamera RwCamera
- * \ingroup rpworld
- *
- * Cameras
- */
-
-/**
- * \defgroup rpworldpowerpipe PowerPipe
- * \ingroup rpworld
- *
- * PowerPipe
- */
-
-/**
- * \defgroup rpworldp2generic Generic
- * \ingroup rpworldpowerpipe
- *
- * Generic
- */
-#endif /* RWPLCORE */
-
-/* These are toolkits */
-#define rwID_CHARSEPLUGIN MAKECHUNKID(rwVENDORID_CRITERIONTK, 0x80)
-#define rwID_NOHSWORLDPLUGIN MAKECHUNKID(rwVENDORID_CRITERIONTK, 0x81)
-#define rwID_IMPUTILPLUGIN MAKECHUNKID(rwVENDORID_CRITERIONTK, 0x82)
-#define rwID_SLERPPLUGIN MAKECHUNKID(rwVENDORID_CRITERIONTK, 0x83)
-#define rwID_OPTIMPLUGIN MAKECHUNKID(rwVENDORID_CRITERIONTK, 0x84)
-#define rwID_TLWORLDPLUGIN MAKECHUNKID(rwVENDORID_CRITERIONTK, 0x85)
-#define rwID_DATABASEPLUGIN MAKECHUNKID(rwVENDORID_CRITERIONTK, 0x86)
-#define rwID_RAYTRACEPLUGIN MAKECHUNKID(rwVENDORID_CRITERIONTK, 0x87)
-#define rwID_RAYPLUGIN MAKECHUNKID(rwVENDORID_CRITERIONTK, 0x88)
-#define rwID_LIBRARYPLUGIN MAKECHUNKID(rwVENDORID_CRITERIONTK, 0x89)
-#define rwID_2DPLUGIN MAKECHUNKID(rwVENDORID_CRITERIONTK, 0x90)
-#define rwID_TILERENDPLUGIN MAKECHUNKID(rwVENDORID_CRITERIONTK, 0x91)
-#define rwID_JPEGIMAGEPLUGIN MAKECHUNKID(rwVENDORID_CRITERIONTK, 0x92)
-#define rwID_TGAIMAGEPLUGIN MAKECHUNKID(rwVENDORID_CRITERIONTK, 0x93)
-#define rwID_GIFIMAGEPLUGIN MAKECHUNKID(rwVENDORID_CRITERIONTK, 0x94)
-#define rwID_QUATPLUGIN MAKECHUNKID(rwVENDORID_CRITERIONTK, 0x95)
-#define rwID_SPLINEPVSPLUGIN MAKECHUNKID(rwVENDORID_CRITERIONTK, 0x96)
-#define rwID_MIPMAPPLUGIN MAKECHUNKID(rwVENDORID_CRITERIONTK, 0x97)
-#define rwID_MIPMAPKPLUGIN MAKECHUNKID(rwVENDORID_CRITERIONTK, 0x98)
-#define rwID_2DFONT MAKECHUNKID(rwVENDORID_CRITERIONTK, 0x99)
-#define rwID_INTSECPLUGIN MAKECHUNKID(rwVENDORID_CRITERIONTK, 0x9a)
-#define rwID_TIFFIMAGEPLUGIN MAKECHUNKID(rwVENDORID_CRITERIONTK, 0x9b)
-#define rwID_PICKPLUGIN MAKECHUNKID(rwVENDORID_CRITERIONTK, 0x9c)
-#define rwID_BMPIMAGEPLUGIN MAKECHUNKID(rwVENDORID_CRITERIONTK, 0x9d)
-#define rwID_RASIMAGEPLUGIN MAKECHUNKID(rwVENDORID_CRITERIONTK, 0x9e)
-#define rwID_SKINFXPLUGIN MAKECHUNKID(rwVENDORID_CRITERIONTK, 0x9f)
-#define rwID_VCATPLUGIN MAKECHUNKID(rwVENDORID_CRITERIONTK, 0xa0)
-#define rwID_2DPATH MAKECHUNKID(rwVENDORID_CRITERIONTK, 0xa1)
-#define rwID_2DBRUSH MAKECHUNKID(rwVENDORID_CRITERIONTK, 0xa2)
-#define rwID_2DOBJECT MAKECHUNKID(rwVENDORID_CRITERIONTK, 0xa3)
-#define rwID_2DSHAPE MAKECHUNKID(rwVENDORID_CRITERIONTK, 0xa4)
-#define rwID_2DSCENE MAKECHUNKID(rwVENDORID_CRITERIONTK, 0xa5)
-#define rwID_2DPICKREGION MAKECHUNKID(rwVENDORID_CRITERIONTK, 0xa6)
-#define rwID_2DOBJECTSTRING MAKECHUNKID(rwVENDORID_CRITERIONTK, 0xa7)
-#define rwID_2DANIMPLUGIN MAKECHUNKID(rwVENDORID_CRITERIONTK, 0xa8)
-#define rwID_2DANIM MAKECHUNKID(rwVENDORID_CRITERIONTK, 0xa9)
-#define rwID_2DKEYFRAME MAKECHUNKID(rwVENDORID_CRITERIONTK, 0xb0)
-#define rwID_2DMAESTRO MAKECHUNKID(rwVENDORID_CRITERIONTK, 0xb1)
-#define rwID_BARYCENTRIC MAKECHUNKID(rwVENDORID_CRITERIONTK, 0xb2)
-#define rwID_PITEXDICTIONARYTK MAKECHUNKID(rwVENDORID_CRITERIONTK, 0xb3)
-#define rwID_TOCTOOLKIT MAKECHUNKID(rwVENDORID_CRITERIONTK, 0xb4)
-
-/**********************************************************************/
-
-/* Doxygen Toolkit groups */
-
-/**
- * \defgroup rttool Toolkits
- *
- * API Toolkits
- */
-
-/**
- * \defgroup fxpack FXPack
- *
- * FXPack component group
- */
-
-/**********************************************************************/
-
-/**
- * \defgroup platformspecific Platform Specific
- *
- * Links to all platform specific information in the API Reference can
- * be found in this folder.
- */
-
-/**********************************************************************/
-
-/* Index Page definition for API Reference. Don't mess with it unless you know what you're doing. */
-
-
-/**
- * \mainpage RenderWare Graphics API Reference
- *
- * \image html rwglogo.jpg
- *
- * This document provides an API Reference for release 3.3 of the RenderWare
- * Graphics SDK.
- *
- * You do not have to wait for a major release to obtain a current API
- * Reference. An up-to-date API Reference is compiled every week and goes out
- * with the weekly build. The footer declares when it was generated.
- *
- * \section otherdocs Documentation Available
- * RenderWare Graphics is supplied with:
- *
- * - A top-level README.PDF -- If you read nothing else, at least read this!
- * - this API Reference
- * - the User Guide
- * - Artist's documentation (if installed)
- * - Examples documentation
- * - Maestro documentation
- * - Tools documentation
- * - White Papers
- * - readme.txt files for each of the supplied Examples
- *
- * \section contactus Contact Us
- *
- * \subsection csl Criterion Software Ltd.
- * For general information about RenderWare e-mail info@csl.com.
- *
- * \subsection devrels Developer Relations
- *
- * For information regarding Support please email devrels@csl.com
- *
- * \subsection sales Sales
- *
- * For sales information contact: rw-sales@csl.com
- *
- * \section copyright Copyright Notice
- *
- * The information in this document is subject to change without notice and does not represent
- * a commitment on the part of Criterion Software Ltd. The software described in this document is
- * furnished under a license agreement or a non-disclosure agreement. The software may be used or
- * copied only in accordance with the terms of the agreement. It is against the law to copy the
- * software on any medium except as specifically allowed in the license or non-disclosure agreement.
- *
- * No part of this documentation may be reproduced or transmitted in any form or by any means for any
- * purpose without the express written permis­sion of Criterion Software Ltd.
- *
- * Copyright © 1993 - 2002 Criterion Software Ltd. All rights reserved.
- *
- * Canon and RenderWare are registered trademarks of Canon Inc. Nintendo is a registered trademark
- * and NINTENDO GAMECUBE a trademark of Nintendo Co., Ltd. Microsoft is a registered trademark and
- * Xbox is a trademark of Microsoft Corporation. PlayStation is a registered trademark of Sony Computer
- * Entertainment Inc.
- *
- * All other trademarks mentioned herein are the property of their respective companies.
- *
- */
diff --git a/rwsdk/include/d3d8/rpdbgerr.c b/rwsdk/include/d3d8/rpdbgerr.c
deleted file mode 100644
index 0c83c04e..00000000
--- a/rwsdk/include/d3d8/rpdbgerr.c
+++ /dev/null
@@ -1,90 +0,0 @@
-/*
- * Debug handling
- *
- ****************************************************************************
- *
- * 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) 1998 Criterion Software Ltd.
- * All Rights Reserved.
- *
- * RenderWare is a trademark of Canon Inc.
- *
- ****************************************************************************/
-
-/****************************************************************************
- Includes
- */
-
-
-#include <stdlib.h>
-#include <string.h>
-
-#include <rwcore.h>
-#include <rpdbgerr.h>
-
-static const char rcsid[] __RWUNUSED__ = "@@(#)$Id: //RenderWare/RW33Active/dev/rwsdk/src/plcore/rpdbgerr.c#1 $";
-
-#ifdef RWDEBUG
-
-/****************************************************************************
- Defines
- */
-
- /****************************************************************************
- Local (static) Globals
- */
-
-/* The strings used in the debug error reporting are derived from the
- * .def files
- */
-
-#define RWECODE(a,b) RWSTRING(b),
-
-static const RwChar *rw_err_str[] =
-{
-#include "rperror.def"
- RWSTRING("Last Error")
-};
-
-#undef RWECODE
-#define RWECODE(a,b) RWSTRING(#a),
-
-static const RwChar *rw_err_cstr[] =
-{
-#include "rperror.def"
- RWSTRING("E_RW_LAST")
-};
-
-#undef RWECODE
-
-static RwChar dberr[512];
-
-RwChar *
-rwPLUGIN_ERRFUNC(RwInt32 code,...)
-{
- va_list ap;
-
-#if (0)
- RWFUNCTION(RWSTRING("rwPLUGIN_ERRFUNC"));
-#endif /* (0) */
-
- va_start(ap, code);
-
- rwstrcpy(dberr, rw_err_cstr[code]);
- rwstrcat(dberr, RWSTRING(" : "));
- rwvsprintf(&dberr[rwstrlen(dberr)], rw_err_str[code], ap);
- va_end(ap);
- return dberr;
-}
-
-#endif /* RWDEBUG */
-
diff --git a/rwsdk/include/d3d8/rpdbgerr.h b/rwsdk/include/d3d8/rpdbgerr.h
deleted file mode 100644
index 6918469a..00000000
--- a/rwsdk/include/d3d8/rpdbgerr.h
+++ /dev/null
@@ -1,278 +0,0 @@
-/***************************************************************************
- * *
- * Module : badebug.h *
- * *
- * Purpose : Debug handling *
- * *
- **************************************************************************/
-
-#ifndef RWDEBUG_H
-#define RWDEBUG_H
-
-#if (defined(RWDEBUG) && defined(RWVERBOSE))
-#if (defined(_MSC_VER))
-#if (_MSC_VER>=1000)
-
-/* Pick up _ASSERTE macro */
-#ifdef _XBOX
-#include <xtl.h>
-#else /* _XBOX */
-#include <windows.h>
-#endif /* _XBOX */
-#if (defined(RWMEMDEBUG) && !defined(_CRTDBG_MAP_ALLOC))
-#define _CRTDBG_MAP_ALLOC
-#endif /* defined(RWMEMDEBUG) && !defined(_CRTDBG_MAP_ALLOC)) */
-#include <crtdbg.h>
-#undef RWASSERTE
-#define RWASSERTE(_condition) _ASSERTE(_condition)
-#endif /* (_MSC_VER>=1000) */
-#endif /* (defined(_MSC_VER)) */
-#endif /* (defined(RWDEBUG) && defined(RWVERBOSE)) */
-
-#if (!defined(RWASSERTE))
-#define RWASSERTE(_condition) /* No-Op */
-#endif /* (!defined(RWASSERTE)) */
-
-#if (!defined(RWPENTER))
-#define RWPENTER(_func) /* No-Op */
-#endif /* (!defined(RWPENTER)) */
-
-#if (!defined(RWPEXIT))
-#define RWPEXIT(_func) /* No-Op */
-#endif /* (!defined(RWPEXIT)) */
-
-/****************************************************************************
- Includes
- */
-
-#include <rwcore.h>
-
-#include "rpplugin.h"
-
-/****************************************************************************
- Defines
- */
-
-#ifdef RWDEBUG
-
-#if (!(defined(RWDEBUGSTACKDEPTH)))
-#define RWDEBUGSTACKDEPTH (RWSRCGLOBAL(debugStackDepth))
-#endif /* (!(defined(RWDEBUGSTACKDEPTH))) */
-
-/* Message macros */
-
-#ifdef RWTRACE
-
-/* Note RWTRACE should only be defined for internal builds. It should
- * also only be used rarely. It will cause the generation of Trace
- * messages for all functions. Not just those directly called from
- * the application
- */
-
-#define RWAPIFUNCTION(function) \
-static const RwChar __dbFunctionName[] = function; \
-const RwInt32 startstackdepth = RWDEBUGSTACKDEPTH++; \
-RWPENTER(__dbFunctionName); \
-if (RWSRCGLOBAL(debugTrace)) \
-{ \
- RwDebugSendMessage(rwDEBUGTRACE, \
- __dbFunctionName, \
- _rwdbsprintf("Enter %s [Depth %d]", \
- (startstackdepth)?"SPI":"API", \
- (int)startstackdepth)); \
-}
-
-#define RWFUNCTION(function) RWAPIFUNCTION(function)
-
-#define RWRETURN(result) \
-do \
-{ \
- RwInt32 _validateStackDepth = --RWDEBUGSTACKDEPTH; \
- if (_validateStackDepth != startstackdepth) \
- { \
- RwDebugSendMessage(rwDEBUGERROR, \
- __dbFunctionName, \
- _rwdberrcommon(E_RW_DEBUGSTACK)); \
- RWDEBUGSTACKDEPTH = startstackdepth; \
- } \
- if (RWSRCGLOBAL(debugTrace)) \
- { \
- RwDebugSendMessage(rwDEBUGTRACE, \
- __dbFunctionName, RWSTRING("Exit")); \
- } \
- RWASSERTE(_validateStackDepth == startstackdepth); \
- RWPEXIT(__dbFunctionName); \
- return (result); \
-} \
-while (0)
-
-#define RWRETURNVOID() \
-do \
-{ \
- RwInt32 _validateStackDepth = --RWDEBUGSTACKDEPTH; \
- if (_validateStackDepth != startstackdepth) \
- { \
- RwDebugSendMessage(rwDEBUGERROR, \
- __dbFunctionName, \
- _rwdberrcommon (E_RW_DEBUGSTACK)); \
- RWDEBUGSTACKDEPTH = startstackdepth; \
- } \
- if (RWSRCGLOBAL(debugTrace)) \
- { \
- RwDebugSendMessage(rwDEBUGTRACE, \
- __dbFunctionName, RWSTRING("Exit")); \
- } \
- RWASSERTE(_validateStackDepth == startstackdepth); \
- RWPEXIT(__dbFunctionName); \
- return; \
-} \
-while(0)
-
-#else /* RWTRACE */
-
-#define RWAPIFUNCTION(function) \
-static const RwChar __dbFunctionName[] = function; \
-const RwInt32 startstackdepth = RWDEBUGSTACKDEPTH++; \
-RWPENTER(__dbFunctionName); \
-if (RWSRCGLOBAL(debugTrace) && !startstackdepth) \
-{ \
- RwDebugSendMessage(rwDEBUGTRACE, \
- __dbFunctionName, RWSTRING("Enter")); \
-}
-
-#define RWFUNCTION(function) RWAPIFUNCTION(function)
-
-#define RWRETURN(result) \
-do \
-{ \
- RwInt32 _validateStackDepth = --RWDEBUGSTACKDEPTH; \
- if (_validateStackDepth != startstackdepth) \
- { \
- RwDebugSendMessage(rwDEBUGERROR, \
- __dbFunctionName, \
- _rwdberrcommon(E_RW_DEBUGSTACK)); \
- RWDEBUGSTACKDEPTH = startstackdepth; \
- } \
- if (RWSRCGLOBAL(debugTrace) && (!startstackdepth)) \
- { \
- RwDebugSendMessage(rwDEBUGTRACE, \
- __dbFunctionName, RWSTRING("Exit")); \
- } \
- RWASSERTE(_validateStackDepth == startstackdepth); \
- RWPEXIT(__dbFunctionName); \
- return (result); \
-} \
-while (0)
-
-#define RWRETURNVOID() \
-do \
-{ \
- RwInt32 _validateStackDepth = --RWDEBUGSTACKDEPTH; \
- if (_validateStackDepth != startstackdepth) \
- { \
- RwDebugSendMessage(rwDEBUGERROR, \
- __dbFunctionName, \
- _rwdberrcommon (E_RW_DEBUGSTACK)); \
- RWDEBUGSTACKDEPTH = startstackdepth; \
- } \
- if (RWSRCGLOBAL(debugTrace) && (!startstackdepth)) \
- { \
- RwDebugSendMessage(rwDEBUGTRACE, \
- __dbFunctionName, RWSTRING("Exit")); \
- } \
- RWASSERTE(_validateStackDepth == startstackdepth); \
- RWPEXIT(__dbFunctionName); \
- return; \
-} \
-while(0)
-
-#endif /* RWTRACE */
-
-#define RWERROR(ecode) \
-do \
-{ \
- RwError _rwErrorCode; \
- \
- _rwErrorCode.pluginID = rwPLUGIN_ID; \
- _rwErrorCode.errorCode = _rwerror ecode; \
- \
- RwErrorSet(&_rwErrorCode); \
- \
- if (_rwErrorCode.errorCode & 0x80000000) \
- { \
- RwDebugSendMessage(rwDEBUGERROR, \
- __dbFunctionName, \
- _rwdberrcommon ecode); \
- } \
- else \
- { \
- RwDebugSendMessage(rwDEBUGERROR, \
- __dbFunctionName, \
- rwPLUGIN_ERRFUNC ecode); \
- } \
-} \
-while(0);
-
-#define RWMESSAGE(args) \
-do \
-{ \
- RwDebugSendMessage(rwDEBUGMESSAGE, \
- __dbFunctionName, \
- _rwdbsprintf args); \
-} \
-while (0)
-
-#define RWASSERT(condition) \
-do \
-{ \
- if (!(condition)) \
- { \
- RwDebugSendMessage(rwDEBUGASSERT, \
- __dbFunctionName, \
- RWSTRING(#condition)); \
- } \
- RWASSERTE(condition); \
-} \
-while (0)
-
-#else /* RWDEBUG */
-
-#define RWRETURN(value) return(value)
-#define RWRETURNVOID() return
-#define RWERROR(errorcode) \
-do \
-{ \
- RwError _rwErrorCode; \
- \
- _rwErrorCode.pluginID = rwPLUGIN_ID; \
- _rwErrorCode.errorCode = _rwerror errorcode; \
- \
- RwErrorSet(&_rwErrorCode); \
-} \
-while (0)
-#define RWFUNCTION(name)
-#define RWAPIFUNCTION(name)
-#define RWASSERT(condition)
-#define RWMESSAGE(args)
-
-#endif
-
-#define RWVALIDATEDEBUGSTACKDEPTH() \
- RWASSERT(1 == (RWDEBUGSTACKDEPTH - startstackdepth))
-
-/****************************************************************************
- Functions
- */
-
-#ifdef __cplusplus
-extern "C"
-{
-#endif /* __cplusplus */
-
-RwChar *rwPLUGIN_ERRFUNC(RwInt32 code, ...);
-
-#ifdef __cplusplus
-}
-#endif /* __cplusplus */
-
-#endif /* RWDEBUG_H */
diff --git a/rwsdk/include/d3d8/rpdmorph.h b/rwsdk/include/d3d8/rpdmorph.h
deleted file mode 100644
index 1494bf3d..00000000
--- a/rwsdk/include/d3d8/rpdmorph.h
+++ /dev/null
@@ -1,311 +0,0 @@
-/*****************************************************************************
- *
- * 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 */
-
diff --git a/rwsdk/include/d3d8/rpdmorph.rpe b/rwsdk/include/d3d8/rpdmorph.rpe
deleted file mode 100644
index a5202425..00000000
--- a/rwsdk/include/d3d8/rpdmorph.rpe
+++ /dev/null
@@ -1,639 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-enum e_rwdb_CriterionDMorph
-{
-
-
-
- e_rwdb_CriterionDMorphLAST = RWFORCEENUMSIZEINT
-};
-
-typedef enum e_rwdb_CriterionDMorph e_rwdb_CriterionDMorph;
-
-
diff --git a/rwsdk/include/d3d8/rperror.h b/rwsdk/include/d3d8/rperror.h
deleted file mode 100644
index 2a8c5630..00000000
--- a/rwsdk/include/d3d8/rperror.h
+++ /dev/null
@@ -1,32 +0,0 @@
-/***************************************************************************
- * *
- * Module : rperror.h *
- * *
- * Purpose : Used to generate error codes *
- * *
- **************************************************************************/
-
-#ifndef RPERROR_H
-#define RPERROR_H
-
-/****************************************************************************
- Includes
- */
-
-#include "rpplugin.h"
-
-/****************************************************************************
- Defines
- */
-
-#define RWECODE(a,b) a,
-
-enum rwPLUGIN_ERRENUM
-{
-#include "rperror.def"
- rwPLUGIN_ERRENUMLAST = RWFORCEENUMSIZEINT
-};
-
-typedef enum rwPLUGIN_ERRENUM rwPLUGIN_ERRENUM;
-
-#endif /* RPERROR_H */
diff --git a/rwsdk/include/d3d8/rphanim.h b/rwsdk/include/d3d8/rphanim.h
deleted file mode 100644
index a9b0438a..00000000
--- a/rwsdk/include/d3d8/rphanim.h
+++ /dev/null
@@ -1,873 +0,0 @@
-/******************************************
- * *
- * 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 : rpanim.h *
- * *
- * Purpose : Hierarchical animation *
- * *
- **************************************************************************/
-
-#ifndef RPHANIM_H
-#define RPHANIM_H
-
-/**
- * Hierarchal animation plugin
- */
-
-/* Doxygen plugin groups. */
-
-/**
- * \defgroup rphanim RpHAnim
- * \ingroup rpplugin
- *
- * Hierarchical Animation Plugin for RenderWare Graphics.
- */
-
-/**
- * \defgroup rphanimchanges RpHAnim Changes
- * \ingroup rphanim
- *
- */
-
-/****************************************************************************
- Includes
- */
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-
-#include <rwcore.h>
-#include <rpworld.h>
-
-#include <rpcriter.h> /* Note: each vendor can choose their own method for
- * allocation of unique ID's. This file defines
- * the ID's used by Criterion.
- */
-#include <rphanim.rpe> /* automatically generated header file */
-#include <rtquat.h>
-
-#define rpHANIMSTREAMCURRENTVERSION 0x100
-
-/**
- * \ingroup rphanim
- * \ref RpHAnimAtomicGlobalVars typedef for struct RpHAnimAtomicGlobalVars
- */
-typedef struct RpHAnimAtomicGlobalVars RpHAnimAtomicGlobalVars;
-
-/**
- * \ingroup rphanim
- * \struct RpHAnimAtomicGlobalVars
- */
-struct RpHAnimAtomicGlobalVars
-{
- RwInt32 engineOffset ; /* Offset into global data */
- RwFreeList *HAnimFreeList;
- RwFreeList *HAnimAnimationFreeList;
-};
-
-extern RpHAnimAtomicGlobalVars RpHAnimAtomicGlobals;
-
-#define rpHANIMSTDKEYFRAMESIZE sizeof(RpHAnimStdKeyFrame)
-#define rpHANIMSTDKEYFRAMETYPEID 0x1
-
-#define RwAnimMalloc() \
- RwFreeListAlloc(RpHAnimAtomicGlobals.HAnimFreeList)
-
-#define RwAnimFree(_anim) \
- RwFreeListFree(RpHAnimAtomicGlobals.HAnimFreeList, (_anim))
-
-#define RwAnimAnimationMalloc() \
- RwFreeListAlloc(RpHAnimAtomicGlobals.HAnimAnimationFreeList)
-
-#define RwAnimAnimationFree(_animAnimation) \
- RwFreeListFree(RpHAnimAtomicGlobals.HAnimAnimationFreeList, \
- (_animAnimation))
-
-#define RpV3dInterpolate(o, a, s, b) \
-MACRO_START \
-{ \
- (o)->x = (((a)->x) + ((s)) * (((b)->x) - ((a)->x))); \
- (o)->y = (((a)->y) + ((s)) * (((b)->y) - ((a)->y))); \
- (o)->z = (((a)->z) + ((s)) * (((b)->z) - ((a)->z))); \
-} \
-MACRO_STOP
-
-/**
- * \ingroup rphanim
- * \ref RpHAnimHierarchy typedef for struct RpHAnimHierarchy
- */
-typedef struct RpHAnimHierarchy RpHAnimHierarchy;
-
-/**
- * \ingroup rphanim
- * \ref RpHAnimAnimation typedef for struct RpHAnimAnimation
- */
-typedef struct RpHAnimAnimation RpHAnimAnimation;
-
-/**
- * \ingroup rphanim
- * \ref RpHAnimHierarchyCallBack
- * This typedef defines a callback function for use with the
- * \ref RpHAnimHierarchySetAnimCallBack and
- * \ref RpHAnimHierarchySetAnimLoopCallBack functions.
- *
- * \param hierarchy
- * A pointer to the AnimHierarchy structure.
- *
- * \param data User-defined data.
- * You can use this to pass your own data
- * structure(s) to the callback function.
- *
- * \see RpHAnimHierarchySetAnimCallBack
- * \see RpHAnimHierarchySetAnimLoopCallBack
- *
- */
-
-typedef RpHAnimHierarchy * (*RpHAnimHierarchyCallBack) (RpHAnimHierarchy *hierarchy,
- void *data);
-
-/*
- * The following CallBacks are needed for each overloaded interpolation
- * scheme. See RpHAnimInterpolatorInfo.
- */
-
-/**
- * \ingroup rphanim
- * \ref RpHAnimKeyFrameToMatrixCallBack
- * This typedef defines a callback function for converting
- * an animation keyframe into a modeling matrix. The output matrix will be
- * used to construct the array of world or local space matrices for the
- * hierarchy as obtained with \ref RpHAnimHierarchyGetMatrixArray, and
- * possibly used for updating an external \ref RwFrame hierarchy.
- *
- * \param matrix This is the matrix to store the output of the conversion
- * \param voidIFrame This is a void pointer to the keyframe and should be cast
- * to the keyframe type this callback is for.
- */
-typedef void (*RpHAnimKeyFrameToMatrixCallBack) (RwMatrix *matrix, void *voidIFrame);
-
-/**
- * \ingroup rphanim
- * \ref RpHAnimKeyFrameBlendCallBack
- * This typedef defines a callback function for blending between two animation
- * keyframes by the given blend factor.
- *
- * \param voidOut This is the void pointer for the output of the blend
- * \param voidIn1 First input keyframe
- * \param voidIn2 Second input keyframe
- * \param alpha Blend factor
- */
-typedef void (*RpHAnimKeyFrameBlendCallBack) (void *voidOut, void *voidIn1,
- void *voidIn2, RwReal alpha);
-
-/**
- * \ingroup rphanim
- * \ref RpHAnimKeyFrameInterpolateCallBack
- * This typedef defines a callback function for interpolating between two
- * animation keyframes according to the given time.
- *
- * \param voidOut This is the void pointer for the output of the
- * interpolation
- * \param voidIn1 First input keyframe
- * \param voidIn2 Second input keyframe
- * \param time Time at which to interpolate
- */
-typedef void (*RpHAnimKeyFrameInterpolateCallBack) (void *voidOut, void *voidIn1,
- void *voidIn2, RwReal time);
-
-/**
- * \ingroup rphanim
- * \ref RpHAnimKeyFrameAddCallBack
- * This typedef defines a callback function for adding together two animation
- * keyframes. One of the keyframes would usually be a delta.
- *
- * \param voidOut This is the void pointer for the output summed keyframe
- * \param voidIn1 First input keyframe
- * \param voidIn2 Second input keyframe
- */
-typedef void (*RpHAnimKeyFrameAddCallBack) (void *voidOut, void *voidIn1,
- void *voidIn2);
-
-/**
- * \ingroup rphanim
- * \ref RpHAnimKeyFrameMulRecipCallBack
- * This typedef defines a callback function for multiplying a keyframe
- * by the inverse of another keyframe
- *
- * \param voidFrame This is the void pointer for the keyframe to be modified
- * \param voidStart First start keyframe to take the reciprocal of.
- */
-typedef void (*RpHAnimKeyFrameMulRecipCallBack) (void *voidFrame, void *voidStart);
-
-/**
- * \ingroup rphanim
- * \ref RpHAnimKeyFrameStreamReadCallBack
- * This typedef defines a callback function for reading in keyframes
- * from an \ref RwStream for the given animation.
- *
- * \param stream The stream to read the keyframes from
- * \param animation The animation to read the keyframes into
- *
- * \return Pointer to the animation.
- */
-typedef RpHAnimAnimation * (*RpHAnimKeyFrameStreamReadCallBack) (RwStream *stream, RpHAnimAnimation *animation);
-
-/**
- * \ingroup rphanim
- * \ref RpHAnimKeyFrameStreamWriteCallBack
- * This typedef defines a callback function for writing keyframes from the
- * given animation to an \ref RwStream.
- *
- * \param animation The animation to write out from
- * \param stream The stream to write the keyframes to
- *
- * \return TRUE if successful.
- */
-typedef RwBool (*RpHAnimKeyFrameStreamWriteCallBack) (RpHAnimAnimation *animation, RwStream *stream);
-
-/**
- * \ingroup rphanim
- * \ref RpHAnimKeyFrameStreamGetSizeCallBack
- * This typedef defines a callback function for calculating the binary stream
- * size of keyframe data within an animation.
- *
- * \param animation The animation to calculate sizes of
- *
- * \return Size in bytes of the keyframe data.
- */
-typedef RwInt32 (*RpHAnimKeyFrameStreamGetSizeCallBack) (RpHAnimAnimation *animation);
-
-/**
- * \ingroup rphanim
- * \ref RpHAnimInterpolatorInfo
- * typedef for struct \ref RpHAnimInterpolatorInfo
- */
-typedef struct RpHAnimInterpolatorInfo RpHAnimInterpolatorInfo;
-
-/**
- * \ingroup rphanim
- * \struct RpHAnimInterpolatorInfo
- * This is used to hold information for a keyframe interpolation scheme.
- *
- * \see RpHAnimRegisterInterpolationScheme
- * \see RpHAnimGetInterpolatorInfo
- */
-struct RpHAnimInterpolatorInfo
-{
- RwInt32 typeID; /**< The ID of the interpolation scheme */
- RwInt32 keyFrameSize; /**< Size in bytes of the keyframe structure */
- RpHAnimKeyFrameToMatrixCallBack keyFrameToMatrixCB; /**< Pointer to a function that converts a keyframe to a matrix */
- RpHAnimKeyFrameBlendCallBack keyFrameBlendCB; /**< Pointer to a function that blends between a pair of keyframes for a given delta value */
- RpHAnimKeyFrameInterpolateCallBack keyFrameInterpolateCB; /**< Pointer to a function that interpolates between two keyframes for a given time in between */
- RpHAnimKeyFrameAddCallBack keyFrameAddCB; /**< Pointer to a function that adds two keyframes (one of which may be a delta) */
- RpHAnimKeyFrameMulRecipCallBack keyFrameMulRecipCB; /**< Pointer to a function that multiplies a keyframe by the reciprocal of another */
- RpHAnimKeyFrameStreamReadCallBack keyFrameStreamReadCB; /**< Pointer to a function that reads the keyframes from a stream for a given animation */
- RpHAnimKeyFrameStreamWriteCallBack keyFrameStreamWriteCB; /**< Pointer to a function that writes the keyframes to a stream for a given animation */
- RpHAnimKeyFrameStreamGetSizeCallBack keyFrameStreamGetSizeCB; /**< Pointer to a function that returns the binary stream size of the keyframes for a given animation */
-};
-
-/**
- * \ingroup rphanim
- * \ref RpHAnimKeyFrameHeader
- * typedef for struct RpHAnimKeyFrameHeader
- */
-typedef struct RpHAnimKeyFrameHeader RpHAnimKeyFrameHeader;
-
-/**
- * \ingroup rphanim
- * \struct RpHAnimKeyFrameHeader
- * Holds header information for a keyframe. All keyframe structures used with
- * the overloadable interpolation system should start with this data.
- *
- * \see RpHAnimStdKeyFrame
- * \see RpHAnimRegisterInterpolationScheme
- */
-struct RpHAnimKeyFrameHeader
-{
- void *prevFrame; /**< Previous keyframe for particular hierarchy node */
- RwReal time; /**< Time at keyframe */
-};
-
-/**
- * \ingroup rphanim
- * \ref RpHAnimStdKeyFrame
- * typedef for struct RpHAnimStdKeyFrame
- */
-typedef struct RpHAnimStdKeyFrame RpHAnimStdKeyFrame;
-
-/**
- * \ingroup rphanim
- * \struct RpHAnimStdKeyFrame
- * A structure representing the standard keyframe data. Sequences of
- * such keyframes in an \ref RpHAnimAnimation defines the animation of each
- * node in a hierarchy.
- */
-struct RpHAnimStdKeyFrame
-{
- RpHAnimStdKeyFrame *prevFrame; /**< Previous keyframe for particular hierarchy node */
- RwReal time; /**< Time at keyframe */
- RtQuat q; /**< Quaternion rotation at keyframe */
- RwV3d t; /**< Translation at keyframe */
-};
-
-/* Flags for FrameInfos */
-
-#define rpHANIMPOPPARENTMATRIX 0x01
-#define rpHANIMPUSHPARENTMATRIX 0x02
-
-/**
- * \ingroup rphanim
- * \ref RpHAnimNodeInfo
- * typedef for struct RpHAnimNodeInfo
- */
-typedef struct RpHAnimNodeInfo RpHAnimNodeInfo;
-
-/**
- * \ingroup rphanim
- * \struct RpHAnimNodeInfo
- *
- */
-struct RpHAnimNodeInfo
-{
- RwInt32 nodeID; /**< User defined ID for this node */
- RwInt32 nodeIndex; /**< Array index of node */
- RwInt32 flags; /**< Matrix push/pop flags */
- RwFrame * pFrame; /**< Pointer to an attached RwFrame (see \ref RpHAnimHierarchyAttach) */
-};
-
-/**
- * \ingroup rphanim
- * \struct RpHAnimAnimation
- * A hierarchical animation consists of an array of keyframe structures,
- * along with some flags and a duration.
- *
- * The keyframes should be presented in the order they are needed
- * to animate forwards through time. Pointers link all of the keyframes
- * for a particular node backwards through time in a list.
- *
- * For example, a 3 node animation, with keyframes at the following times:
- *
- * Node 1: 0.0, 1.0, 2.0, 3.0
- * Node 2: 0.0, 3.0
- * Node 3: 0.0, 2.0, 2.5, 3.0
- *
- * should be formatted in an RpHAnimAnimation animation like this:
- *
- * B1,0.0 B2,0.0 B3,0.0 B1,1.0, B2,3.0, B3,2.0, B1,2.0, B1,3.0, B3,2.5 B3,3.0
- *
- * Each node MUST start at time = 0.0, and each node must terminate with a keyframe
- * at time = duration of animation.
- *
- * \see RpHAnimAnimationCreate
- */
-struct RpHAnimAnimation
-{
- RpHAnimInterpolatorInfo *interpInfo; /**< Pointer to interpolation scheme information */
- RwInt32 numFrames; /**< Number of keyframes in the animation */
- RwInt32 flags; /**< Specifies details about animation, relative translation modes etc */
- RwReal duration; /**< Duration of animation in seconds */
- void *pFrames; /**< Pointer to the animation keyframes */
-};
-
-/**
- * \ingroup rphanim
- * \ref RpHAnimHierarchyFlag defines type and update modes in HAnimHierarchies
- *
- * \see RpAnimHierarchyFlag
- */
-enum RpHAnimHierarchyFlag
-{
- /* creation flags */
- rpHANIMHIERARCHYSUBHIERARCHY = 0x01, /**< This hierarchy is a sub-hierarchy */
- rpHANIMHIERARCHYNOMATRICES = 0x02, /**< This hierarchy has no local matrices */
-
- /* update flags */
- rpHANIMHIERARCHYUPDATEMODELLINGMATRICES = 0x1000, /**< This hierarchy updates modeling matrices */
- rpHANIMHIERARCHYUPDATELTMS = 0x2000, /**< This hierarchy updates LTMs */
- rpHANIMHIERARCHYLOCALSPACEMATRICES = 0x4000, /**< This hierarchy calculates matrices in a space
- relative to its root */
-
- rpHANIMHIERARCHYFLAGFORCEENUMSIZEINT = RWFORCEENUMSIZEINT
-};
-
-/**
- * \ingroup rphanim
- * \typedef RpHAnimHierarchyFlag
- * These flags are used to control the creation and
- * update status of the hierarchy
- */
-typedef enum RpHAnimHierarchyFlag RpHAnimHierarchyFlag;
-
-/**
- * \ingroup rphanim
- * \struct RpHAnimHierarchy
- * An RpHAnimHierarchy is used to "play back" an animation - it holds the
- * interpolated keyframe data for the current state of an animation
- * concatenated on the end of the structure.
- *
- * The rpHANIMHIERARCHYGETINTERPFRAME() macro can be used to access the current
- * interpolated data, for the current time or to write to this data to override
- * it with procedural animation.
- *
- * The structure of a hierarchy is defined by an array
- * of \ref RpHAnimNodeInfo structures.
- *
- * The hierarchy is defined by running through the node array in order,
- * pushing the parent-node's matrix whenever a child is reached that has
- * more than one sibling, and popping the parent matrix when a "leaf"
- * node is encountered.
- *
- */
-struct RpHAnimHierarchy
-{
- RwInt32 flags; /**< Flags for the hierarchy */
- RwInt32 numNodes; /**< Number of nodes in the hierarchy */
- RpHAnimAnimation *pCurrentAnim; /**< Current animation applied to hierarchy */
- RwReal currentTime; /**< Current animation time */
- void *pNextFrame; /**< Next animation keyframe to be played */
- RpHAnimHierarchyCallBack pAnimCallBack; /**< Animation callback function pointer */
- void *pAnimCallBackData; /**< Animation callback function user data */
- RwReal animCallBackTime; /**< Trigger time for callback function */
- RpHAnimHierarchyCallBack pAnimLoopCallBack; /**< Animation loop callback function pointer */
- void *pAnimLoopCallBackData; /**< Animation loop callback function data */
- RwMatrix *pMatrixArray; /**< Pointer to node matrices*/
- void *pMatrixArrayUnaligned; /**< Pointer to memory used for node matrices
- * from which the aligned pMatrixArray is allocated */
- RpHAnimNodeInfo *pNodeInfo; /**< Array of node information (push/pop flags etc) */
- RwFrame *parentFrame; /**< Pointer to the Root RwFrame of the hierarchy this
- * RpHAnimHierarchy represents */
- RwInt32 maxKeyFrameSize; /**< Maximum size of keyframes usable on this hierarhcy
- * (set at creation time) */
- RwInt32 currentKeyFrameSize; /**< Size of keyframes in the current animation */
- RpHAnimKeyFrameToMatrixCallBack keyFrameToMatrixCB; /**< Internal use */
- RpHAnimKeyFrameBlendCallBack keyFrameBlendCB; /**< Internal use */
- RpHAnimKeyFrameInterpolateCallBack keyFrameInterpolateCB; /**< Internal use */
- RpHAnimKeyFrameAddCallBack keyFrameAddCB; /**< Internal use */
- RpHAnimHierarchy *parentHierarchy; /**< Internal use */
- RwInt32 offsetInParent; /**< Internal use */
- RwInt32 rootParentOffset; /**< Internal use */
-};
-
-#define rpHANIMHIERARCHYGETINTERPFRAME( hierarchy, nodeIndex ) \
- ( (void *)( ( (RwUInt8 *)&(hierarchy[1]) + \
- ((nodeIndex) * \
- hierarchy->currentKeyFrameSize) ) ) )
-
-#define rpHANIMHIERARCHYGETINTERPFRAME1( hierarchy, nodeIndex ) \
- ( (void *)( ( (RwUInt8 *)&(hierarchy[1]) + \
- ((hierarchy->numNodes + \
- (nodeIndex)) * \
- hierarchy->currentKeyFrameSize) ) ) )
-
-#define rpHANIMHIERARCHYGETINTERPFRAME2( hierarchy, nodeIndex ) \
- ( (void *)( ( (RwUInt8 *)&(hierarchy[1]) + \
- ((hierarchy->numNodes * 2 + \
- (nodeIndex)) * \
- hierarchy->currentKeyFrameSize) ) ) )
-
-/**
- * \ingroup rphanim
- * \ref RpHAnimFrameExtension typedef for struct RpHAnimFrameExtension
- */
-
-typedef struct RpHAnimFrameExtension RpHAnimFrameExtension;
-
-/**
- * \ingroup rphanim
- * \struct RpHAnimFrameExtension
- */
-struct RpHAnimFrameExtension
-{
- RwInt32 id; /**< ID given to this RwFrame (default of -1) */
- RpHAnimHierarchy *hierarchy; /**< Pointer to Animation hierarchy attached to this RwFrame */
-};
-
-/*--- Plugin API Functions ---*/
-
-#define RpHAnimHierarchySetFlagsMacro(hierarchy, _flags) \
-MACRO_START \
-{ \
- (hierarchy)->flags = _flags; \
-} \
-MACRO_STOP
-
-#define RpHAnimHierarchyGetFlagsMacro(hierarchy) \
- ((hierarchy)->flags)
-
-#define RpHAnimStdKeyFrameToMatrixMacro(_matrix, _voidIFrame) \
-MACRO_START \
-{ \
- RpHAnimStdKeyFrame * iFrame = (RpHAnimStdKeyFrame *)(_voidIFrame); \
- \
- /* \
- * RpHAnim uses the same types of quaternion as RtQuat \
- * hence no conjugate call as in RpSkin \
- */ \
- \
- RtQuatUnitConvertToMatrix(&iFrame->q, (_matrix)); \
- \
- (_matrix)->pos.x = iFrame->t.x; \
- (_matrix)->pos.y = iFrame->t.y; \
- (_matrix)->pos.z = iFrame->t.z; \
-} \
-MACRO_STOP
-
-
-#if (! defined(RWDEBUG))
-
-#define RpHAnimHierarchySetFlags(hierarchy, _flags) \
- RpHAnimHierarchySetFlagsMacro(hierarchy, _flags)
-
-#define RpHAnimHierarchyGetFlags(hierarchy) \
- (RpHAnimHierarchyFlag)RpHAnimHierarchyGetFlagsMacro(hierarchy)
-
-#endif /* (! defined(RWDEBUG)) */
-
-#ifdef __cplusplus
-extern "C"
-{
-#endif /* __cplusplus */
-
-#if (defined(RWDEBUG))
-
-extern RpHAnimHierarchy *
-RpHAnimHierarchySetFlags(RpHAnimHierarchy *hierarchy,
- RpHAnimHierarchyFlag flags);
-
-extern RpHAnimHierarchyFlag
-RpHAnimHierarchyGetFlags(RpHAnimHierarchy *hierarchy);
-
-#endif /* (defined(RWDEBUG)) */
-
-/* Keyframe Interpolator Types */
-
-extern RwBool
-RpHAnimRegisterInterpolationScheme(RpHAnimInterpolatorInfo *interpolatorInfo);
-
-extern RpHAnimInterpolatorInfo *
-RpHAnimGetInterpolatorInfo(RwInt32 typeID);
-
-/* Animation hierarchy creation */
-
-extern RpHAnimHierarchy *
-RpHAnimHierarchyCreate(RwInt32 numNodes,
- RwUInt32 *nodeFlags,
- RwInt32 *nodeIDs,
- RpHAnimHierarchyFlag flags,
- RwInt32 maxKeyFrameSize);
-
-extern RpHAnimHierarchy *
-RpHAnimHierarchyCreateFromHierarchy(RpHAnimHierarchy *hierarchy,
- RpHAnimHierarchyFlag flags,
- RwInt32 maxKeyFrameSize);
-
-extern RpHAnimHierarchy *
-RpHAnimHierarchyDestroy(RpHAnimHierarchy *hierarchy);
-
-extern RpHAnimHierarchy *
-RpHAnimHierarchyCreateSubHierarchy(RpHAnimHierarchy *parentHierarchy,
- RwInt32 startNode,
- RpHAnimHierarchyFlag flags,
- RwInt32 maxKeyFrameSize);
-
-extern RpHAnimHierarchy *
-RpHAnimHierarchyAttach(RpHAnimHierarchy *hierarchy);
-
-extern RpHAnimHierarchy *
-RpHAnimHierarchyDetach(RpHAnimHierarchy *hierarchy);
-
-extern RpHAnimHierarchy *
-RpHAnimHierarchyAttachFrameIndex(RpHAnimHierarchy *hierarchy,
- RwInt32 nodeIndex);
-
-extern RpHAnimHierarchy *
-RpHAnimHierarchyDetachFrameIndex(RpHAnimHierarchy *hierarchy,
- RwInt32 nodeIndex);
-
-extern RwBool
-RpHAnimFrameSetHierarchy(RwFrame *frame,
- RpHAnimHierarchy *hierarchy);
-
-extern RpHAnimHierarchy *
-RpHAnimFrameGetHierarchy(RwFrame *frame);
-
-/* Macros for legacy support of old function names */
-#define RpHAnimSetHierarchy(frame, hierarchy) \
- RpHAnimFrameSetHierarchy(frame, hierarchy)
-#define RpHAnimGetHierarchy(frame) RpHAnimFrameGetHierarchy(frame)
-
-extern RwBool
-RpHAnimHierarchySetKeyFrameCallBacks(RpHAnimHierarchy *hierarchy,
- RwInt32 keyFrameTypeID);
-
-extern RwBool
-RpHAnimHierarchySetCurrentAnim(RpHAnimHierarchy *hierarchy,
- RpHAnimAnimation *anim);
-
-extern RwBool
-RpHAnimHierarchySetCurrentAnimTime(RpHAnimHierarchy *hierarchy,
- RwReal time);
-
-extern RwBool
-RpHAnimHierarchySubAnimTime(RpHAnimHierarchy *hierarchy,
- RwReal time);
-
-extern RwBool
-RpHAnimHierarchyStdKeyFrameAddAnimTime(RpHAnimHierarchy *hierarchy,
- RwReal time);
-
-extern RwBool
-RpHAnimHierarchyAddAnimTime(RpHAnimHierarchy *hierarchy,
- RwReal time);
-
-extern RpHAnimHierarchy *
-RpHAnimHierarchySetAnimCallBack(RpHAnimHierarchy *hierarchy,
- RpHAnimHierarchyCallBack callBack,
- RwReal time,
- void *data );
-
-extern RpHAnimHierarchy *
-RpHAnimHierarchySetAnimLoopCallBack(RpHAnimHierarchy *hierarchy,
- RpHAnimHierarchyCallBack callBack,
- void *data );
-
-extern RwMatrix *
-RpHAnimHierarchyGetMatrixArray(RpHAnimHierarchy *hierarchy);
-
-extern RwBool
-RpHAnimHierarchyUpdateMatrices(RpHAnimHierarchy *hierarchy);
-
-/* Macro for legacy support of old function name */
-#define RpHAnimUpdateHierarchyMatrices RpHAnimHierarchyUpdateMatrices
-
-extern RwInt32
-RpHAnimIDGetIndex(RpHAnimHierarchy *hierarchy,
- RwInt32 ID);
-
-/* Animations */
-
-extern RpHAnimAnimation *
-RpHAnimAnimationCreate(RwInt32 typeID,
- RwInt32 numFrames,
- RwInt32 flags,
- RwReal duration);
-
-extern RpHAnimAnimation *
-RpHAnimAnimationDestroy(RpHAnimAnimation *animation);
-
-#ifdef RWDEBUG
-
-extern RwInt32
-RpHAnimAnimationGetTypeID(RpHAnimAnimation *animation);
-
-#else /* RWDEBUG */
-
-#define RpHAnimAnimationGetTypeID(animation) \
- (animation->interpInfo->typeID)
-
-#endif /* RWDEBUG */
-
-extern RpHAnimAnimation *
-RpHAnimAnimationRead(const RwChar * filename);
-
-extern RwBool
-RpHAnimAnimationWrite(RpHAnimAnimation *animation,
- const RwChar * filename);
-
-extern RpHAnimAnimation *
-RpHAnimAnimationStreamRead(RwStream *stream);
-
-extern RwBool
-RpHAnimAnimationStreamWrite(RpHAnimAnimation *animation,
- RwStream *stream);
-
-extern RwInt32
-RpHAnimAnimationStreamGetSize(RpHAnimAnimation *animation);
-
-extern RwBool
-RpHAnimAnimationMakeDelta(RpHAnimAnimation *animation,
- RwInt32 numNodes,
- RwReal time);
-
-/* Plugin support */
-
-extern RwBool
-RpHAnimPluginAttach(void);
-
-/* Overloadable keyframe functions */
-
-#define RpHAnimFrameToMatrixMacro(hierarchy, matrix, iFrame) \
-MACRO_START \
-{ \
- const RpHAnimKeyFrameToMatrixCallBack keyFrameToMatrixCB = \
- (hierarchy)->keyFrameToMatrixCB; \
- \
- if (RpHAnimStdKeyFrameToMatrix == keyFrameToMatrixCB) \
- { \
- RpHAnimStdKeyFrameToMatrixMacro((matrix), (iFrame)); \
- } \
- else \
- { \
- keyFrameToMatrixCB((matrix), (iFrame)); \
- } \
-} \
-MACRO_STOP
-
-#define RpHAnimFrameInterpolateMacro(hierarchy, out, in1, in2, time) \
-MACRO_START \
-{ \
- (hierarchy)->keyFrameInterpolateCB((out), (in1), (in2), (time)); \
-} \
-MACRO_STOP
-
-#define RpHAnimFrameBlendMacro(hierarchy, out, in1, in2, fAlpha) \
-MACRO_START \
-{ \
- (hierarchy)->keyFrameBlendCB((out), (in1), (in2), (fAlpha)); \
-} \
-MACRO_STOP
-
-#define RpHAnimFrameAddTogetherMacro(hierarchy, out, in1, in2) \
-MACRO_START \
-{ \
- (hierarchy)->keyFrameAddCB((out), (in1), (in2)); \
-} \
-MACRO_STOP
-
-#ifdef RWDEBUG
-void
-RpHAnimFrameInterpolate(RpHAnimHierarchy *hierarchy,
- void *out, void *in1,
- void *in2, RwReal time);
-
-void
-RpHAnimFrameBlend(RpHAnimHierarchy *hierarchy,
- void *out,
- void *in1,
- void *in2,
- RwReal alpha);
-
-void
-RpHAnimFrameToMatrix(RpHAnimHierarchy *hierarchy,
- RwMatrix *matrix, void *iFrame);
-
-void
-RpHAnimFrameAddTogether(RpHAnimHierarchy *hierarchy,
- void *out, void *in1, void *in2);
-
-#else /* RWDEBUG */
-
-#define RpHAnimFrameToMatrix(hierarchy, matrix, iFrame) \
- RpHAnimFrameToMatrixMacro(hierarchy, matrix, iFrame)
-
-#define RpHAnimFrameInterpolate(hierarchy, out, in1, in2, time) \
- RpHAnimFrameInterpolateMacro(hierarchy, out, in1, in2, time)
-
-#define RpHAnimFrameBlend(hierarchy, out, in1, in2, alpha) \
- RpHAnimFrameBlendMacro(hierarchy, out, in1, in2, alpha)
-
-#define RpHAnimFrameAddTogether(hierarchy, out, in1, in2) \
- RpHAnimFrameAddTogetherMacro(hierarchy, out, in1, in2)
-
-#endif /* RWDEBUG */
-
-/* Standard keyframe functions */
-
-extern void
-RpHAnimStdKeyFrameToMatrix(RwMatrix *matrix,
- void * voidIFrame);
-
-extern void
-RpHAnimStdKeyFrameBlend(void *voidOut,
- void *voidIn1,
- void *voidIn2,
- RwReal alpha);
-
-extern void
-RpHAnimStdKeyFrameInterpolate(void *voidOut,
- void *voidIn1,
- void *voidIn2,
- RwReal time);
-
-extern void
-RpHAnimStdKeyFrameAdd(void *voidOut,
- void *voidIn1,
- void *voidIn2);
-
-extern void
-RpHAnimStdKeyFrameMulRecip(void *voidFrame,
- void *voidStart);
-
-extern RpHAnimAnimation *
-RpHAnimStdKeyFrameStreamRead(RwStream *stream,
- RpHAnimAnimation *animation);
-
-extern RwBool
-RpHAnimStdKeyFrameStreamWrite(RpHAnimAnimation *animation,
- RwStream *stream);
-
-extern RwInt32
-RpHAnimStdKeyFrameStreamGetSize(RpHAnimAnimation *animation);
-
-/* Hierarchy blending/combination functions */
-
-extern RwBool
-RpHAnimHierarchyBlend(RpHAnimHierarchy *outHierarchy,
- RpHAnimHierarchy *inHierarchy1,
- RpHAnimHierarchy *inHierarchy2,
- RwReal alpha);
-extern RwBool
-RpHAnimHierarchyAddTogether(RpHAnimHierarchy *outHierarchy,
- RpHAnimHierarchy *inHierarchy1,
- RpHAnimHierarchy *inHierarchy2);
-
-extern RwBool
-RpHAnimHierarchyBlendSubHierarchy(RpHAnimHierarchy *outHierarchy,
- RpHAnimHierarchy *inHierarchy1,
- RpHAnimHierarchy *inHierarchy2,
- RwReal alpha);
-extern RwBool
-RpHAnimHierarchyAddSubHierarchy(RpHAnimHierarchy *outHierarchy,
- RpHAnimHierarchy *mainHierarchy,
- RpHAnimHierarchy *subHierarchy);
-
-extern RwBool
-RpHAnimHierarchyCopy(RpHAnimHierarchy *outHierarchy,
- RpHAnimHierarchy *inHierarchy);
-
-/* Access to RwFrame ID's */
-
-extern RwBool
-RpHAnimFrameSetID(RwFrame *frame,
- RwInt32 id);
-
-extern RwInt32
-RpHAnimFrameGetID(RwFrame *frame);
-
-#ifdef __cplusplus
-}
-#endif /* __cplusplus */
-
-
-#endif /* RPHANIM_H */
diff --git a/rwsdk/include/d3d8/rphanim.rpe b/rwsdk/include/d3d8/rphanim.rpe
deleted file mode 100644
index c60f8591..00000000
--- a/rwsdk/include/d3d8/rphanim.rpe
+++ /dev/null
@@ -1,644 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-enum e_rwdb_CriterionHANIM
-{
-
-
-E_RP_HANIM_INTERP_IDINUSE,
-
-E_RP_HANIM_INTERP_BLOCKFULL,
-
-E_RP_HANIM_INTERP_IDUNKNOWN,
-
- e_rwdb_CriterionHANIMLAST = RWFORCEENUMSIZEINT
-};
-
-typedef enum e_rwdb_CriterionHANIM e_rwdb_CriterionHANIM;
-
-
diff --git a/rwsdk/include/d3d8/rplodatm.h b/rwsdk/include/d3d8/rplodatm.h
deleted file mode 100644
index d4583338..00000000
--- a/rwsdk/include/d3d8/rplodatm.h
+++ /dev/null
@@ -1,131 +0,0 @@
-
-/******************************************
- * *
- * 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 : rplodatm.h *
- * *
- * Purpose : LODATM Geometry *
- * *
- **************************************************************************/
-
-#ifndef RPLODATM_H
-#define RPLODATM_H
-
-
-/**
- * \defgroup rplodatm RpLODAtomic
- * \ingroup rpplugin
- *
- * Level of Detail Management Plugin for RenderWare Graphics.
- */
-
-/****************************************************************************
- Includes
- */
-
-#include "rwcore.h"
-#include "rpworld.h"
-
-#include "rpcriter.h" /* Note: each vendor can choose their own method for
- * allocation of unique ID's. This file defines
- * the ID's used by Criterion.
- */
-#include "rplodatm.rpe" /* automatically generated header file */
-
-/****************************************************************************
- Defines
- */
-#define RPLODATOMICMAXLOD 10
-
-
-/****************************************************************************
- Type defs
- */
-typedef RwInt32 (*RpLODAtomicLODCallBack)( RpAtomic *atomic );
-
-/****************************************************************************
- Function prototypes
- */
-
-#ifdef __cplusplus
-extern "C"
-{
-#endif /* __cplusplus */
-
- extern RwBool
- RpLODAtomicPluginAttach( void );
-
- extern RpAtomic *
- RpLODAtomicSetGeometry(
- RpAtomic *atomic, RwInt32 lodIdx, RpGeometry *geometry );
-
- extern RpGeometry *
- RpLODAtomicGetGeometry(
- RpAtomic *atomic, RwInt32 lodIdx );
-
- extern RpAtomic *
- RpLODAtomicSetCurrentLOD(
- RpAtomic *atomic, RwInt32 lodIdx );
-
- extern RwInt32
- RpLODAtomicGetCurrentLOD(
- RpAtomic *atomic );
-
- extern RpAtomic *
- RpLODAtomicSetRange(
- RpAtomic *atomic, RwReal farRange );
-
- extern RwReal
- RpLODAtomicGetRange(
- RpAtomic *atomic );
-
- extern void
- RpLODAtomicSetCamera(
- RwCamera *camera );
-
- extern RpAtomic *
- RpLODAtomicSetLODCallBack(
- RpAtomic *atomic, RpLODAtomicLODCallBack callback );
-
- extern RpAtomic *
- RpLODAtomicSelectLOD(
- RpAtomic *atomic );
-
- extern RpAtomic *
- RpLODAtomicForAllLODGeometries(
- RpAtomic *atomic, RpGeometryCallBack callback, void *pData );
-
- extern RpAtomic *
- RpLODAtomicHookRender(
- RpAtomic *atomic );
-
- extern RpAtomic *
- RpLODAtomicUnHookRender(
- RpAtomic *atomic );
-
-#ifdef __cplusplus
-}
-#endif /* __cplusplus */
-
-#endif /* RPLODATM_H */
-
diff --git a/rwsdk/include/d3d8/rplodatm.rpe b/rwsdk/include/d3d8/rplodatm.rpe
deleted file mode 100644
index 649bc3bc..00000000
--- a/rwsdk/include/d3d8/rplodatm.rpe
+++ /dev/null
@@ -1,642 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-enum e_rwdb_CriterionLODATM
-{
-
-
-
- e_rwdb_CriterionLODATMLAST = RWFORCEENUMSIZEINT
-};
-
-typedef enum e_rwdb_CriterionLODATM e_rwdb_CriterionLODATM;
-
-
diff --git a/rwsdk/include/d3d8/rplogo.h b/rwsdk/include/d3d8/rplogo.h
deleted file mode 100644
index ed527a29..00000000
--- a/rwsdk/include/d3d8/rplogo.h
+++ /dev/null
@@ -1,83 +0,0 @@
-/**
- * Logo plugin
- */
-
-
-/**********************************************************************
- *
- * File : rplogo.h
- *
- * Abstract : Add CSL Logo
- *
- **********************************************************************
- *
- * 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) 1998 Criterion Software Ltd.
- * All Rights Reserved.
- *
- * RenderWare is a trademark of Canon Inc.
- *
- ************************************************************************/
-
-#ifndef RPLOGO_H
-#define RPLOGO_H
-
-/**
- * \defgroup rplogo RpLogo
- * \ingroup rpplugin
- *
- * Logo Plugin for RenderWare Graphics.
- */
-
-/*--- Include files ---*/
-#include "rwcore.h"
-
-#include "rplogo.rpe" /* automatically generated header file */
-
-/*--- Global Structures ---*/
-
-enum RpLogoPosition
-{
- rpNALOGOPOSITION = 0,
- rpLOGOTOP,
- rpLOGOCENTER,
- rpLOGOBOTTOM,
- rpLOGOLEFT,
- rpLOGORIGHT,
- rpLOGOTOPLEFT,
- rpLOGOTOPRIGHT,
- rpLOGOBOTTOMLEFT,
- rpLOGOBOTTOMRIGHT,
- rpLOGOPOSITIONFORCEENUMSIZEINT = RWFORCEENUMSIZEINT
-};
-typedef enum RpLogoPosition RpLogoPosition;
-
-/*--- Plugin API Functions ---*/
-
-#ifdef __cplusplus
-extern "C"
-{
-#endif /* __cplusplus */
-
- RwBool RpLogoPluginAttach(void);
- RwBool RpLogoSetPosition(RpLogoPosition pos);
- RpLogoPosition RpLogoGetPosition(void);
- RwBool RpLogoSetState(RwCamera * cam, RwBool state);
- RwBool RpLogoGetState(RwCamera * cam);
- RwRect *RpLogoGetRenderingRect(void);
-
-#ifdef __cplusplus
-}
-#endif /* __cplusplus */
-
-#endif /* RPLOGO_H */
-
diff --git a/rwsdk/include/d3d8/rplogo.rpe b/rwsdk/include/d3d8/rplogo.rpe
deleted file mode 100644
index f37b6920..00000000
--- a/rwsdk/include/d3d8/rplogo.rpe
+++ /dev/null
@@ -1,639 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-enum e_rwdb_CriterionLogo
-{
-
-
-
- e_rwdb_CriterionLogoLAST = RWFORCEENUMSIZEINT
-};
-
-typedef enum e_rwdb_CriterionLogo e_rwdb_CriterionLogo;
-
-
diff --git a/rwsdk/include/d3d8/rpltmap.h b/rwsdk/include/d3d8/rpltmap.h
deleted file mode 100644
index 5add9a26..00000000
--- a/rwsdk/include/d3d8/rpltmap.h
+++ /dev/null
@@ -1,90 +0,0 @@
-
-/**
- * \defgroup rpltmap RpLtMap
- * \ingroup rpplugin
- *
- * Lightmap Plugin for RenderWare Graphics.
- */
-
-#ifndef RPLTMAP_H
-#define RPLTMAP_H
-
-/*===========================================================================*
- *--- Includes --------------------------------------------------------------*
- *===========================================================================*/
-
-#include "rwcore.h"
-#include "rpworld.h"
-
-
-#define rpLTMAPDEFAULTLIGHTMAPSIZE 128
-#define rpLTMAPMINLIGHTMAPSIZE 16
-#define rpLTMAPMAXLIGHTMAPSIZE 512/*?? any better way of determining this ??*/
-
-#define rpLTMAPMAXPREFIXSTRINGLENGTH 4
-
-#define rpLTMAPDEFAULTMAXAREALIGHTSAMPLESPERMESH 256
-/* The default tolerance for errors induced by area light ROIs is 1
- * (being the smallest difference in lightmap colour values) */
-#define rpLTMAPDEFAULTAREALIGHTROICUTOFF (1.0f)
-
-
-/**
- * \ingroup rpltmap
- * \ref RpLtMapStyle
- * Flags specifying the rendering style of the lightmap plugin.
- *
- * \see RpLtMapGetRenderStyle
- * \see RpLtMapSetRenderStyle
- */
-enum RpLtMapStyle
-{
- rpLTMAPSTYLENASTYLE = 0x0,
-
- rpLTMAPSTYLERENDERBASE = 0x1, /**< The base texture should be rendered */
- rpLTMAPSTYLERENDERLIGHTMAP = 0x2, /**< The lightmap should be rendered */
- rpLTMAPSTYLEPOINTSAMPLE = 0x4, /**< The lightmap should be point-sampled */
-
- rpLTMAPSTYLEFORCEENUMSIZEINT = 0x7FFFFFFF
-};
-typedef enum RpLtMapStyle RpLtMapStyle;
-
-
-#ifdef __cplusplus
-extern "C"
-{
-#endif /* __cplusplus */
-
-
-extern RwBool
-RpLtMapPluginAttach(void);
-
-extern RxPipeline *
-RpLtMapGetPlatformAtomicPipeline(void);
-extern RxPipeline *
-RpLtMapGetPlatformWorldSectorPipeline(void);
-
-extern RwBool
-RpLtMapSetRenderStyle(RpLtMapStyle style, RpWorld *world);
-extern RpLtMapStyle
-RpLtMapGetRenderStyle(void);
-
-extern RwUInt32
-RpLtMapWorldLightMapsQuery(RpWorld *world);
-
-extern RwTexture *
-RpLtMapWorldSectorGetLightMap(RpWorldSector *sector);
-extern RpWorldSector *
-RpLtMapWorldSectorSetLightMap(RpWorldSector *sector, RwTexture *lightMap);
-extern RwTexture *
-RpLtMapAtomicGetLightMap(RpAtomic *atomic);
-extern RpAtomic *
-RpLtMapAtomicSetLightMap(RpAtomic *atomic, RwTexture *lightMap);
-
-#ifdef __cplusplus
-}
-#endif /* __cplusplus */
-
-#endif /* RPLTMAP_H */
-
-
diff --git a/rwsdk/include/d3d8/rpltmap.rpe b/rwsdk/include/d3d8/rpltmap.rpe
deleted file mode 100644
index 413caf4c..00000000
--- a/rwsdk/include/d3d8/rpltmap.rpe
+++ /dev/null
@@ -1,638 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-enum e_rwdb_CriterionLTMAP
-{
-
-
-
- e_rwdb_CriterionLTMAPLAST = RWFORCEENUMSIZEINT
-};
-
-typedef enum e_rwdb_CriterionLTMAP e_rwdb_CriterionLTMAP;
-
-
diff --git a/rwsdk/include/d3d8/rpmatfx.h b/rwsdk/include/d3d8/rpmatfx.h
deleted file mode 100644
index 9b091dd8..00000000
--- a/rwsdk/include/d3d8/rpmatfx.h
+++ /dev/null
@@ -1,237 +0,0 @@
-
-#ifndef RPMATFX_H
-#define RPMATFX_H
-
-/*===========================================================================*
- *--- Include files ---------------------------------------------------------*
- *===========================================================================*/
-
-#include "rwcore.h"
-#include "rpworld.h"
-
-/*---- start: ./matfx.h----*/
-
-#ifndef RPMATFX_MATFX_H
-#define RPMATFX_MATFX_H
-
-
-/**
- * \defgroup rpmatfx RpMatFX
- * \ingroup rpplugin
- *
- * Material Effects Plugin for RenderWare Graphics.
- */
-
-/*===========================================================================*
- *--- Global Types ----------------------------------------------------------*
- *===========================================================================*/
-
-/**
- * \ingroup rpmatfx
- * RpMatFXMaterialFlags, this type represents the different types of
- * material effects that can be used on a material. The effects are
- * initialized with \ref RpMatFXMaterialSetEffects:
- */
-enum RpMatFXMaterialFlags
-{
- rpMATFXEFFECTNULL = 0,
- rpMATFXEFFECTBUMPMAP = 1, /**<Bump mapping */
- rpMATFXEFFECTENVMAP = 2, /**<Environment mapping */
- rpMATFXEFFECTBUMPENVMAP = 3, /**<Bump and environment mapping */
- rpMATFXEFFECTDUAL = 4, /**<Dual pass */
-
- rpMATFXEFFECTMAX,
- rpMATFXNUMEFFECTS = rpMATFXEFFECTMAX - 1,
-
- rpMATFXFORCEENUMSIZEINT = RWFORCEENUMSIZEINT
-};
-typedef enum RpMatFXMaterialFlags RpMatFXMaterialFlags;
-
-
-/*===========================================================================*
- *--- Plugin API Functions --------------------------------------------------*
- *===========================================================================*/
-
-#ifdef __cplusplus
-extern "C"
-{
-#endif /* __cplusplus */
-
-/*--- Plugin functions ------------------------------------------------------*/
-extern RwBool
-RpMatFXPluginAttach( void );
-
-/*--- Setup functions -------------------------------------------------------*/
-extern RpAtomic *
-RpMatFXAtomicEnableEffects( RpAtomic *atomic );
-
-extern RwBool
-RpMatFXAtomicQueryEffects( RpAtomic *atomic );
-
-extern RpWorldSector *
-RpMatFXWorldSectorEnableEffects( RpWorldSector *worldSector );
-
-extern RwBool
-RpMatFXWorldSectorQueryEffects( RpWorldSector *worldSector );
-
-extern RpMaterial *
-RpMatFXMaterialSetEffects( RpMaterial *material,
- RpMatFXMaterialFlags flags );
-
-
-/*--- Setup Effects ---------------------------------------------------------*/
-extern RpMaterial *
-RpMatFXMaterialSetupBumpMap( RpMaterial *material,
- RwTexture *texture,
- RwFrame *frame,
- RwReal coef );
-
-extern RpMaterial *
-RpMatFXMaterialSetupEnvMap( RpMaterial *material,
- RwTexture *texture,
- RwFrame *frame,
- RwBool useFrameBufferAlpha,
- RwReal coef );
-
-extern RpMaterial *
-RpMatFXMaterialSetupDualTexture( RpMaterial *material,
- RwTexture *texture,
- RwBlendFunction srcBlendMode,
- RwBlendFunction dstBlendMode );
-
-/*--- Tinker with effects ---------------------------------------------------*/
-extern RpMatFXMaterialFlags
-RpMatFXMaterialGetEffects( const RpMaterial *material );
-
-/*--- Bump Map --------------------------------------------------------------*/
-extern RpMaterial *
-RpMatFXMaterialSetBumpMapTexture( RpMaterial *material,
- RwTexture *texture );
-
-extern RpMaterial *
-RpMatFXMaterialSetBumpMapFrame( RpMaterial *material,
- RwFrame *frame );
-
-extern RpMaterial *
-RpMatFXMaterialSetBumpMapCoefficient( RpMaterial *material,
- RwReal coef );
-extern RwTexture *
-RpMatFXMaterialGetBumpMapTexture( const RpMaterial *material );
-
-extern RwTexture *
-RpMatFXMaterialGetBumpMapBumpedTexture( const RpMaterial *material );
-
-extern RwFrame *
-RpMatFXMaterialGetBumpMapFrame( const RpMaterial *material );
-
-extern RwReal
-RpMatFXMaterialGetBumpMapCoefficient( const RpMaterial *material );
-
-/*--- Env Map ---------------------------------------------------------------*/
-extern RpMaterial *
-RpMatFXMaterialSetEnvMapTexture( RpMaterial *material,
- RwTexture *texture );
-
-extern RpMaterial *
-RpMatFXMaterialSetEnvMapFrame( RpMaterial *material,
- RwFrame *frame );
-
-extern RpMaterial *
-RpMatFXMaterialSetEnvMapFrameBufferAlpha( RpMaterial *material,
- RwBool useFrameBufferAlpha );
-
-extern RpMaterial *
-RpMatFXMaterialSetEnvMapCoefficient( RpMaterial *material,
- RwReal coef );
-
-extern RwTexture *
-RpMatFXMaterialGetEnvMapTexture( const RpMaterial *material );
-
-extern RwFrame *
-RpMatFXMaterialGetEnvMapFrame( const RpMaterial *material );
-
-extern RwBool
-RpMatFXMaterialGetEnvMapFrameBufferAlpha( const RpMaterial *material );
-
-extern RwReal
-RpMatFXMaterialGetEnvMapCoefficient( const RpMaterial *material );
-
-/*--- Dual Pass -------------------------------------------------------------*/
-extern RpMaterial *
-RpMatFXMaterialSetDualTexture( RpMaterial *material,
- RwTexture *texture );
-
-extern RpMaterial *
-RpMatFXMaterialSetDualBlendModes( RpMaterial *material,
- RwBlendFunction srcBlendMode,
- RwBlendFunction dstBlendMode );
-
-extern RwTexture *
-RpMatFXMaterialGetDualTexture( const RpMaterial *material );
-
-extern const RpMaterial *
-RpMatFXMaterialGetDualBlendModes( const RpMaterial *material,
- RwBlendFunction *srcBlendMode,
- RwBlendFunction *dstBlendMode );
-#ifdef __cplusplus
-}
-#endif /* __cplusplus */
-
-
-#endif /* RPMATFX_MATFX_H */
-
-/*---- end: ./matfx.h----*/
-
-/*---- start: c:/daily/rwsdk/plugin/matfx/d3d8/matfxplatform.h----*/
-
-/**
- * \defgroup rpmatfxd3d8 D3D8
- * \ingroup rpmatfx
- *
- * D3D8 specific documentation.
- */
-
-
-/******************************************************************************
- * Enum types
- */
-
-/**
- * \ingroup rpmatfxd3d8
- * \ref RpMatFXD3D8Pipeline
- */
-enum RpMatFXD3D8Pipeline
-{
- rpNAMATFXD3D8PIPELINE = 0,
- rpMATFXD3D8ATOMICPIPELINE = 1, /**<D3D8 atomic material effect rendering pipeline. */
- rpMATFXD3D8WORLDSECTORPIPELINE = 2, /**<D3D8 world sector material effect rendering pipeline. */
- rpMATFXD3D8PIPELINEMAX,
- rpMATFXD3D8PIPELINEFORCEENUMSIZEINT = RWFORCEENUMSIZEINT
-};
-typedef enum RpMatFXD3D8Pipeline RpMatFXD3D8Pipeline;
-
-/******************************************************************************
- * Global types
- */
-
-/******************************************************************************
- * Functions
- */
-
-#ifdef __cplusplus
-extern "C"
-{
-#endif /* __cplusplus */
-
-extern RxPipeline *
-RpMatFXGetD3D8Pipeline( RpMatFXD3D8Pipeline d3d8Pipeline );
-
-#ifdef __cplusplus
-}
-#endif /* __cplusplus */
-
-/*---- end: c:/daily/rwsdk/plugin/matfx/d3d8/matfxplatform.h----*/
-
-#endif /* RPMATFX_H */
-
-
diff --git a/rwsdk/include/d3d8/rpmatfx.rpe b/rwsdk/include/d3d8/rpmatfx.rpe
deleted file mode 100644
index bbc588e3..00000000
--- a/rwsdk/include/d3d8/rpmatfx.rpe
+++ /dev/null
@@ -1,638 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-enum e_rwdb_CriterionMATERIALEFFECTS
-{
-
-
-
- e_rwdb_CriterionMATERIALEFFECTSLAST = RWFORCEENUMSIZEINT
-};
-
-typedef enum e_rwdb_CriterionMATERIALEFFECTS e_rwdb_CriterionMATERIALEFFECTS;
-
-
diff --git a/rwsdk/include/d3d8/rpmipkl.h b/rwsdk/include/d3d8/rpmipkl.h
deleted file mode 100644
index 5b8f7e51..00000000
--- a/rwsdk/include/d3d8/rpmipkl.h
+++ /dev/null
@@ -1,38 +0,0 @@
-/**
- * PS2 Mipmap K&L plugin for Renderware.
- */
-
-#ifndef RPMIPMAPKLPLUGIN_H
-#define RPMIPMAPKLPLUGIN_H
-
-/**
- * \defgroup rpmipkl RpMipmapKL
- * \ingroup rpplugin
- *
- * PS2/MipMap KL Value Plugin for RenderWare Graphics.
- */
-
-#include <rwcore.h>
-
-#ifdef __cplusplus
-extern "C"
-{
-#endif
-
-extern RwReal RpMipmapKLTextureSetDefaultK(RwReal val);
-extern RwUInt32 RpMipmapKLTextureSetDefaultL(RwUInt32 val);
-extern RwReal RpMipmapKLTextureGetDefaultK(void);
-extern RwUInt32 RpMipmapKLTextureGetDefaultL(void);
-
-extern RwTexture *RpMipmapKLTextureSetK(RwTexture *tex, RwReal val);
-extern RwTexture *RpMipmapKLTextureSetL(RwTexture *tex, RwUInt32 val);
-extern RwReal RpMipmapKLTextureGetK(RwTexture *tex);
-extern RwUInt32 RpMipmapKLTextureGetL(RwTexture *tex);
-
-extern RwBool RpMipmapKLPluginAttach(void);
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* RPMIPMAPKLPLUGIN_H */
diff --git a/rwsdk/include/d3d8/rpmipkl.rpe b/rwsdk/include/d3d8/rpmipkl.rpe
deleted file mode 100644
index 5216ec9c..00000000
--- a/rwsdk/include/d3d8/rpmipkl.rpe
+++ /dev/null
@@ -1,639 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-enum e_rwdb_CriterionLabel
-{
-
-
-
- e_rwdb_CriterionLabelLAST = RWFORCEENUMSIZEINT
-};
-
-typedef enum e_rwdb_CriterionLabel e_rwdb_CriterionLabel;
-
-
diff --git a/rwsdk/include/d3d8/rpmorph.h b/rwsdk/include/d3d8/rpmorph.h
deleted file mode 100644
index 4177fba8..00000000
--- a/rwsdk/include/d3d8/rpmorph.h
+++ /dev/null
@@ -1,138 +0,0 @@
-
-/******************************************/
-/* */
-/* 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.
- */
-
-
-/****************************************************************************
- *
- * Morph animation controller
- * Copyright (C) 1998 Criterion Technologies
- *
- * Module : rpmorph.h
- *
- * Purpose : Functions for controlling morph target animation
- *
- ****************************************************************************/
-
-#ifndef RPMORPH_H
-#define RPMORPH_H
-
-
-/**
- * \defgroup rpmorph RpMorph
- * \ingroup rpplugin
- *
- * Morphing Plugin for RenderWare Graphics.
- */
-
-/****************************************************************************
- Includes
- */
-
-#include "rwcore.h"
-#include "rpworld.h"
-
-#include "rpmorph.rpe" /* automatically generated header file */
-
-/****************************************************************************
- Global Types
- */
-typedef struct RpMorphInterpolator RpMorphInterpolator;
-
-/**
- * \ingroup rpmorph
- * \struct RpMorphInterpolator
- * structure describing morph interpolator
- */
-struct RpMorphInterpolator
-{
- RwInt32 flags; /**< flags */
- RwInt16 startMorphTarget; /**< startMorphTarget */
- RwInt16 endMorphTarget; /**< endMorphTarget */
- RwReal time; /**< time */
- RwReal recipTime; /**< recipTime */
- RpMorphInterpolator *next; /**< next */
-};
-
-/* Morph Animation */
-
-/**
- * \ingroup rpmorph
- * \typedef RpMorphGeometryCallBack
- * This is the callback function supplied to \ref RpMorphGeometrySetCallBack
- * and returned from \ref RpMorphGeometryGetCallBack.
- * The supplied function will be passed a pointer to the geometry's parent atomic,
- * and the position of the current interpolator.
- * The function will only be called when the position of the geometry's current
- * interpolator moves out of the current range.
- *
- * \param atomic Pointer to the geometry's parent atomic.
- * \param position Value of the current interpolator.
- *
- * \return
- *
- * \see RpMorphGeometrySetCallBack
- * \see RpMorphGeometryGetCallBack
- */
-typedef RwReal (*RpMorphGeometryCallBack)(RpAtomic *atomic, RwReal position);
-
-/****************************************************************************
- Function prototypes
- */
-
-#ifdef __cplusplus
-extern "C"
-{
-#endif /* __cplusplus */
-
-extern RwBool RpMorphPluginAttach(void);
-
-/* Morph Animation */
-extern RpGeometry *RpMorphGeometryCreateInterpolators(RpGeometry *geometry, RwInt32 numInterps);
-extern RpGeometry *RpMorphGeometrySetInterpolator(RpGeometry *geometry,
- RwInt32 interpNum,
- RwInt32 startKey, RwInt32 endKey, RwReal time);
-extern RpGeometry *RpMorphGeometrySetNextInterpolator(RpGeometry *geometry,
- RwInt32 interpNum, RwInt32 interpNumNext);
-extern RpGeometry *RpMorphGeometrySetCallBack(RpGeometry *geometry, RpMorphGeometryCallBack animCB);
-extern RpMorphGeometryCallBack RpMorphGeometryGetCallBack(const RpGeometry *geometry);
-
-extern RpAtomic *RpMorphAtomicSetCurrentInterpolator(RpAtomic *atomic, RwInt32 interpNum);
-extern RwInt32 RpMorphAtomicGetCurrentInterpolator(RpAtomic *atomic);
-
-extern RpMorphInterpolator *RpMorphGeometryGetInterpolator(RpGeometry *geometry, RwInt32 interpNum);
-
-extern RpAtomic *RpMorphAtomicSetTime(RpAtomic *atomic, RwReal time);
-extern RpAtomic *RpMorphAtomicAddTime(RpAtomic *atomic, RwReal time);
-
-
-/* LEGACY-SUPPORT version: */
-extern RpMorphInterpolator *_rpMorphAtomicGetInterpolator(RpAtomic *atomic, RwInt32 interpNum);
-
-#ifdef __cplusplus
-}
-#endif /* __cplusplus */
-
-#define RpMorphAtomicGetInterpolator(_atomic, _interpNum) \
- _rpMorphAtomicGetInterpolator(_atomic, _interpNum)
-
-#endif /* RPMORPH_H */
-
diff --git a/rwsdk/include/d3d8/rpmorph.rpe b/rwsdk/include/d3d8/rpmorph.rpe
deleted file mode 100644
index 14b13076..00000000
--- a/rwsdk/include/d3d8/rpmorph.rpe
+++ /dev/null
@@ -1,641 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-enum e_rwdb_CriterionMorph
-{
-
-
-E_RP_MORPH_INVALIDINTERP,
-
-E_RP_MORPH_NOGEOMETRY,
-
- e_rwdb_CriterionMorphLAST = RWFORCEENUMSIZEINT
-};
-
-typedef enum e_rwdb_CriterionMorph e_rwdb_CriterionMorph;
-
-
diff --git a/rwsdk/include/d3d8/rppatch.h b/rwsdk/include/d3d8/rppatch.h
deleted file mode 100644
index eb80663f..00000000
--- a/rwsdk/include/d3d8/rppatch.h
+++ /dev/null
@@ -1,683 +0,0 @@
-
-#ifndef RPPATCH_H
-#define RPPATCH_H
-
-/**
- * \defgroup rppatch RpPatch
- * \ingroup rpplugin
- *
- * Bezier patch library
- *
- * This library provides efficient evaluation of patches.
- */
-
-/*===========================================================================*
- *--- Include files ---------------------------------------------------------*
- *===========================================================================*/
-#include "rwcore.h"
-#include "rpworld.h"
-
-#include "rpcriter.h"
-#include "rppatch.rpe"
-
-/*===========================================================================*
- *--- Defines ---------------------------------------------------------------*
- *===========================================================================*/
-
-/**
- * \ingroup rppatch
- * \def rpQUADPATCHNUMCONTROLPOINTS defines the number of control points in
- * a quadrilateral patch.
- *
- * \see RpQuadPatch
- * \see rpQUADPATCHNUMCONTROLINDICES
- * \see RpPatchMeshSetQuadPatch
- */
-#define rpQUADPATCHNUMCONTROLPOINTS (16)
-
-/**
- * \ingroup rppatch
- * \def rpTRIPATCHNUMCONTROLPOINTS defines the number of control points in
- * a triangular patch.
- *
- * \see RpTriPatch
- * \see rpTRIPATCHNUMCONTROLINDICES
- * \see RpPatchMeshSetTriPatch
- */
-#define rpTRIPATCHNUMCONTROLPOINTS (10)
-
-/**
- * \ingroup rppatch
- * \def rpQUADPATCHNUMCONTROLINDICES defines the number of control point
- * indices in a \ref RpQuadPatch quadrilateral patch.
- *
- * \see rpQUADPATCHNUMCONTROLPOINTS
- * \see RpPatchMeshSetQuadPatch
- */
-#define rpQUADPATCHNUMCONTROLINDICES rpQUADPATCHNUMCONTROLPOINTS
-
-/**
- * \ingroup rppatch
- * \def rpTRIPATCHNUMCONTROLINDICES defines the number of control points
- * indices in a \ref RpTriPatch triangular patch.
- *
- * \see rpTRIPATCHNUMCONTROLPOINTS
- * \see RpPatchMeshSetTriPatch
- */
-#define rpTRIPATCHNUMCONTROLINDICES rpTRIPATCHNUMCONTROLPOINTS
-
-/**
- * \ingroup rppatch
- * \def rpPATCHLODMAXVALUE defines the maximum value that can be returned for
- * the patch evaluation LOD.
- *
- * \see rpPATCHSKINLODMAXVALUE
- * \see rpPATCHLODMINVALUE
- * \see RpPatchLODCallBack
- */
-#define rpPATCHLODMAXVALUE (20)
-
-/**
- * \ingroup rppatch
- * \def rpPATCHSKINLODMAXVALUE defines the maximum value that can be returned
- * for the skinned patch evaluation LOD.
- *
- * \see rpPATCHLODMAXVALUE
- * \see rpPATCHLODMINVALUE
- * \see RpPatchLODCallBack
- */
-#define rpPATCHSKINLODMAXVALUE (18)
-
-/**
- * \ingroup rppatch
- * \def rpPATCHLODMINVALUE defines the minimum value that can be returned for
- * the patch evaluation LOD.
- *
- * \see rpPATCHSKINLODMAXVALUE
- * \see rpPATCHLODMAXVALUE
- * \see RpPatchLODCallBack
- */
-#define rpPATCHLODMINVALUE (4)
-
-/**
- * \ingroup rppatch
- * \def rpPATCHMESHTEXCOORDSETS Multi texture coordinate format specifier
- * for \ref RpPatchMeshCreate(). This should be OR'd into the
- * \ref RpPatchMeshFlag .
- */
-#define rpPATCHMESHTEXCOORDSETS(_num) \
- ((_num & 0xff) << 16)
-
-/**
- * \ingroup rppatch
- * \def rpPATCHMESHLOCKTEXCOORDSIDX
- * Convenience macro for generating a texture coordinate lock flag.
- */
-#define rpPATCHMESHLOCKTEXCOORDSIDX(_idx) \
- (rpPATCHMESHLOCKTEXCOORDS1 << (_idx))
-
-/*===========================================================================*
- *--- Global Types ----------------------------------------------------------*
- *===========================================================================*/
-
-/**
- * \ingroup rppatch
- * \ref RpPatchMeshFlag
- * When creating a \ref RpPatchMesh, these flags can be OR'ed together to
- * specify the format along with the \ref rpPATCHMESHTEXCOORDSETS (n) macro
- * to specify the number of texture coordinate sets required.
- *
- * \see RpPatchMeshCreate
- */
-enum RpPatchMeshFlag
-{
- rpNAPATCHMESHFLAG = 0,
- rpPATCHMESHPOSITIONS = 0x01, /**<Patch mesh contains control point
- positions. */
- rpPATCHMESHNORMALS = 0x02, /**<Patch mesh contains control point
- normals. */
- rpPATCHMESHPRELIGHTS = 0x04, /**<Patch mesh contains control point
- pre-light color values. */
- rpPATCHMESHTEXTURED = 0x08, /**<Patch mesh is textured. The number
- of texture sets must also be
- defined. */
- rpPATCHMESHLIGHT = 0x10, /**<Patch mesh will be lit. */
- rpPATCHMESHMODULATEMATERIALCOLOR = 0x20,
- /**<Control point color will be
- modulated with the material color. */
- rpPATCHMESHSMOOTHNORMALS = 0x40,
- /**<Patch mesh normals will be
- smoothed automatically. */
- rpPATCHMESHFLAGFORCEENUMSIZEINT = RWFORCEENUMSIZEINT
-};
-typedef enum RpPatchMeshFlag RpPatchMeshFlag;
-
-/**
- * \ingroup rppatch
- * \ref RpPatchMeshLockMode patch mesh lock flags.
- *
- * \see rpPATCHMESHLOCKTEXCOORDSIDX
- */
-enum RpPatchMeshLockMode
-{
- rpNAPATCHMESHLOCKMODE = 0,
- rpPATCHMESHLOCKPATCHES = 0x0001, /**<Lock the mesh patches. */
- rpPATCHMESHLOCKPOSITIONS = 0x0002, /**<Lock the control point
- positions. */
- rpPATCHMESHLOCKNORMALS = 0x0004, /**<Lock the control point
- normals. */
- rpPATCHMESHLOCKPRELIGHTS = 0x0008, /**<Lock the control point
- pre-light color values. */
- rpPATCHMESHLOCKTEXCOORDS1 = 0x0100, /**<Lock the texture coordinates
- set 1. */
- rpPATCHMESHLOCKTEXCOORDS2 = 0x0200, /**<Lock the texture coordinates
- set 2. */
- rpPATCHMESHLOCKTEXCOORDS3 = 0x0400, /**<Lock the texture coordinates
- set 3. */
- rpPATCHMESHLOCKTEXCOORDS4 = 0x0800, /**<Lock the texture coordinates
- set 4. */
- rpPATCHMESHLOCKTEXCOORDS5 = 0x1000, /**<Lock the texture coordinates
- set 5. */
- rpPATCHMESHLOCKTEXCOORDS6 = 0x2000, /**<Lock the texture coordinates
- set 6. */
- rpPATCHMESHLOCKTEXCOORDS7 = 0x4000, /**<Lock the texture coordinates
- set 7. */
- rpPATCHMESHLOCKTEXCOORDS8 = 0x8000, /**<Lock the texture coordinates
- set 8. */
- rpPATCHMESHLOCKTEXCOORDSALL = 0xff00, /**<Lock all texture coordinate
- sets. */
- rpPATCHMESHLOCKALL = 0xffff, /**<Combination of all the
- above. */
- rpPATCHMESHLOCKMODEFORCEENUMSIZEINT = RWFORCEENUMSIZEINT
-};
-typedef enum RpPatchMeshLockMode RpPatchMeshLockMode;
-
-typedef struct RpPatchMeshDefinition RpPatchMeshDefinition;
-/**
- * \ingroup rppatch
- * \struct RpPatchMeshDefinition
- * holds the definition sizes of the patch mesh. This data should be considered
- * read only.
- */
-struct RpPatchMeshDefinition
-{
- RwUInt32 flag; /**<Patch mesh definition flag. */
- RwUInt32 numControlPoints; /**<Number of control points. */
- RwUInt32 numTriPatches; /**<Number of tri patches. */
- RwUInt32 numQuadPatches; /**<Number of quad patches. */
- RwUInt32 numTexCoordSets; /**<Number of sets of texture coordinates. */
-};
-
-typedef struct RpPatchMesh RpPatchMesh;
-/**
- * \ingroup rppatch
- * \struct RpPatchMesh
- * holds the control point data for a patch mesh. The patch mesh should be
- * created with \ref RpPatchMeshCreate. The patch mesh should be locked with
- * \ref RpPatchMeshLock before the data is edited. Quadrilateral and triangle
- * patches can be defined from the control points with
- * \ref RpPatchMeshSetQuadPatch and \ref RpPatchMeshSetTriPatch respectively.
- * The patch mesh should be unlocked with \ref RpPatchMeshUnlock before it is
- * added to an \ref RpAtomic with \ref RpPatchAtomicSetPatchMesh.
- *
- * \see RpPatchMesDefinition
- */
-struct RpPatchMesh
-{
- RwV3d *positions; /**<Control point positions. */
- RwV3d *normals; /**<Control point normals. */
- RwRGBA *preLightColors; /**<Control point pre-light colors. */
- RwTexCoords *texCoords[rwMAXTEXTURECOORDS];
- /**<Control point texture coordinates. */
- RpPatchMeshDefinition definition; /**<Patch mesh definition data. */
-};
-
-typedef struct RpQuadPatch RpQuadPatch;
-/**
- * \ingroup rppatch
- * \struct RpQuadPatch
- * holds the control point indices for a quadrilateral patch. There are
- * \ref rpQUADPATCHNUMCONTROLINDICES indices for a quadrilateral patch.
- *
- * \see RpPatchMeshSetQuadPatch
- */
-struct RpQuadPatch
-{
- RwUInt32 cpIndices[rpQUADPATCHNUMCONTROLINDICES]; /**<Control point
- indices. */
-};
-
-typedef struct RpTriPatch RpTriPatch;
-/**
- * \ingroup rppatch
- * \struct RpTriPatch
- * holds the control point indices for a triangle patch. There are
- * \ref rpTRIPATCHNUMCONTROLINDICES indices for a triangular patch.
- *
- * \see RpPatchMeshSetTriPatch
- */
-struct RpTriPatch
-{
- RwUInt32 cpIndices[rpTRIPATCHNUMCONTROLINDICES]; /**<Control point
- indices. */
-};
-
-typedef struct RpPatchLODRange RpPatchLODRange;
-/**
- * \ingroup rppatch
- * \struct RpPatchLODRange
- * holds the variables used by the default atomic LOD call back function.
- */
-struct RpPatchLODRange
-{
- RwUInt32 minLod; /**<Minimum LOD value. */
- RwUInt32 maxLod; /**<Maximum LOD value. */
- RwReal minRange; /**<Minimum LOD range. */
- RwReal maxRange; /**<Maximum LOD range. */
-};
-
-/**
- * \ingroup rppatch
- * \typedef RpPatchLODUserData
- * typedef for the user data passed to the \ref RpPatchLODCallBack
- * function which calculates the atomics' LOD.
- *
- * \see RpPatchAtomicSetPatchLODCallBack
- * \see RpPatchAtomicGetPatchLODCallBack
- */
-typedef void *RpPatchLODUserData;
-
-/**
- * \ingroup rppatch
- * \typedef RpPatchLODCallBack
- * typedef for the patch atomic LOD calculation function.
- *
- * \see RpPatchAtomicSetPatchLODCallBack
- * \see RpPatchAtomicGetPatchLODCallBack
- */
-typedef RwUInt32 (* RpPatchLODCallBack)( RpAtomic *atomic,
- RpPatchLODUserData userData );
-
-/*===========================================================================*
- *--- Plugin API Functions --------------------------------------------------*
- *===========================================================================*/
-#ifdef __cplusplus
-extern "C"
-{
-#endif /* __cplusplus */
-
-/*---------------------------------------------------------------------------*
- *- Plugin functions -*
- *---------------------------------------------------------------------------*/
-extern RwBool
-RpPatchPluginAttach(void);
-
-/*---------------------------------------------------------------------------*
- *- Patch Mesh functions -*
- *---------------------------------------------------------------------------*/
-extern RpPatchMesh *
-RpPatchMeshCreate( RwUInt32 numQuadPatches,
- RwUInt32 numTriPatches,
- RwUInt32 numControlPoints,
- RwUInt32 definitionFlag );
-
-extern RwBool
-RpPatchMeshDestroy( RpPatchMesh *patchMesh );
-
-extern RpPatchMesh *
-RpPatchMeshLock( RpPatchMesh *patchMesh,
- RwUInt32 lockMode );
-
-extern RpPatchMesh *
-RpPatchMeshUnlock( RpPatchMesh *patchMesh );
-
-/*---------------------------------------------------------------------------*
- *- Patch mesh helper functions -*
- *---------------------------------------------------------------------------*/
-
-extern RpPatchMesh *
-RpPatchMeshTransform( RpPatchMesh *patchMesh,
- const RwMatrix *matrix );
-
-/*---------------------------------------------------------------------------*/
-#define RpPatchMeshGetFlagsMacro(patchMesh) \
- (patchMesh->definition.flag)
-
-#define RpPatchMeshSetFlagsMacro(patchMesh, flags) \
- (patchMesh->definition.flag = flags)
-
-#define RpPatchMeshGetNumControlPointsMacro(patchMesh) \
- (patchMesh->definition.numControlPoints)
-
-#define RpPatchMeshGetNumTriPatchesMacro(patchMesh) \
- (patchMesh->definition.numTriPatches)
-
-#define RpPatchMeshGetNumQuadPatchesMacro(patchMesh) \
- (patchMesh->definition.numQuadPatches)
-
-#define RpPatchMeshGetNumTexCoordSetsMacro(patchMesh) \
- (patchMesh->definition.numTexCoordSets)
-
-#define RpPatchMeshGetPositionsMacro(patchMesh) \
- (patchMesh->positions)
-
-#define RpPatchMeshGetNormalsMacro(patchMesh) \
- (patchMesh->normals)
-
-#define RpPatchMeshGetPreLightColorsMacro(patchMesh) \
- (patchMesh->preLightColors)
-
-#define RpPatchMeshGetTexCoordsMacro(patchMesh, index) \
- (patchMesh->texCoords[index - 1])
-/*---------------------------------------------------------------------------*/
-
-#if (defined(RWDEBUG) || defined(RWSUPPRESSINLINE))
-
-/*---------------------------------------------------------------------------*/
-extern RwUInt32
-RpPatchMeshGetFlags( const RpPatchMesh *patchMesh );
-
-extern RpPatchMesh *
-RpPatchMeshSetFlags( RpPatchMesh *patchMesh,
- RwUInt32 flags );
-
-extern RwUInt32
-RpPatchMeshGetNumControlPoints( const RpPatchMesh *patchMesh );
-
-extern RwUInt32
-RpPatchMeshGetNumTriPatches( const RpPatchMesh *patchMesh );
-
-extern RwUInt32
-RpPatchMeshGetNumQuadPatches( const RpPatchMesh *patchMesh );
-
-extern RwUInt32
-RpPatchMeshGetNumTexCoordSets( const RpPatchMesh *patchMesh );
-
-extern RwV3d *
-RpPatchMeshGetPositions( const RpPatchMesh *patchMesh );
-
-extern RwV3d *
-RpPatchMeshGetNormals( const RpPatchMesh *patchMesh );
-
-extern RwRGBA *
-RpPatchMeshGetPreLightColors( const RpPatchMesh *patchMesh );
-
-extern RwTexCoords *
-RpPatchMeshGetTexCoords( const RpPatchMesh *patchMesh,
- RwTextureCoordinateIndex index );
-/*---------------------------------------------------------------------------*/
-
-#else /* (defined(RWDEBUG) || defined(RWSUPPRESSINLINE)) */
-
-/*---------------------------------------------------------------------------*/
-#define RpPatchMeshGetFlags(patchMesh) \
- RpPatchMeshGetFlagsMacro(patchMesh)
-
-#define RpPatchMeshSetFlags(patchMesh, flags) \
- RpPatchMeshSetFlagsMacro(patchMesh, flags)
-
-#define RpPatchMeshGetNumControlPoints(patchMesh) \
- RpPatchMeshGetNumControlPointsMacro(patchMesh)
-
-#define RpPatchMeshGetNumTriPatches(patchMesh) \
- RpPatchMeshGetNumTriPatchesMacro(patchMesh)
-
-#define RpPatchMeshGetNumQuadPatches(patchMesh) \
- RpPatchMeshGetNumQuadPatchesMacro(patchMesh)
-
-#define RpPatchMeshGetNumTexCoordSets(patchMesh) \
- RpPatchMeshGetNumTexCoordSetsMacro(patchMesh)
-
-#define RpPatchMeshGetPositions(patchMesh) \
- RpPatchMeshGetPositionsMacro(patchMesh)
-
-#define RpPatchMeshGetNormals(patchMesh) \
- RpPatchMeshGetNormalsMacro(patchMesh)
-
-#define RpPatchMeshGetPreLightColors(patchMesh) \
- RpPatchMeshGetPreLightColorsMacro(patchMesh)
-
-#define RpPatchMeshGetTexCoords(patchMesh, index) \
- RpPatchMeshGetTexCoordsMacro(patchMesh, index)
-/*---------------------------------------------------------------------------*/
-
-#endif /* (defined(RWDEBUG) || defined(RWSUPPRESSINLINE)) */
-
-/*---------------------------------------------------------------------------*
- *- Patch streaming functions -*
- *---------------------------------------------------------------------------*/
-extern RwUInt32
-RpPatchMeshStreamGetSize( const RpPatchMesh *patchMesh );
-
-extern RpPatchMesh *
-RpPatchMeshStreamRead( RwStream *stream );
-
-extern const RpPatchMesh *
-RpPatchMeshStreamWrite( const RpPatchMesh *patchMesh,
- RwStream *stream );
-
-/*---------------------------------------------------------------------------*
- *- Patch Mesh patch functions -*
- *---------------------------------------------------------------------------*/
-extern RpPatchMesh *
-RpPatchMeshSetQuadPatch( RpPatchMesh *patchMesh,
- RwUInt32 quadIndex,
- RpQuadPatch *quadPatch );
-
-extern RpPatchMesh *
-RpPatchMeshSetTriPatch( RpPatchMesh *patchMesh,
- RwUInt32 triIndex,
- RpTriPatch *triPatch );
-
-extern const RpQuadPatch *
-RpPatchMeshGetQuadPatch( const RpPatchMesh *patchMesh,
- RwUInt32 quadIndex );
-
-extern const RpTriPatch *
-RpPatchMeshGetTriPatch( const RpPatchMesh *patchMesh,
- RwUInt32 triIndex );
-
-/*---------------------------------------------------------------------------*
- *- Patch Mesh material functions -*
- *---------------------------------------------------------------------------*/
-extern RpPatchMesh *
-RpPatchMeshSetQuadPatchMaterial( RpPatchMesh *patchMesh,
- RwUInt32 quadIndex,
- RpMaterial *material );
-
-extern RpPatchMesh *
-RpPatchMeshSetTriPatchMaterial( RpPatchMesh *patchMesh,
- RwUInt32 triIndex,
- RpMaterial *material );
-
-extern RpMaterial *
-RpPatchMeshGetQuadPatchMaterial( const RpPatchMesh *patchMesh,
- RwUInt32 quadIndex );
-
-extern RpMaterial *
-RpPatchMeshGetTriPatchMaterial( const RpPatchMesh *patchMesh,
- RwUInt32 triIndex );
-
-extern const RpPatchMesh *
-RpPatchMeshForAllMaterials( const RpPatchMesh *patchMesh,
- RpMaterialCallBack callBack,
- void *userData );
-
-extern RwUInt32
-RpPatchMeshGetNumMaterials( const RpPatchMesh *patchMesh );
-
-extern RpMaterial *
-RpPatchMeshGetMaterial( const RpPatchMesh *patchMesh,
- RwUInt32 materialIndex );
-
-/*---------------------------------------------------------------------------*
- *- Patch Skin functions -*
- *---------------------------------------------------------------------------*/
-#if (defined(RPSKIN_H))
-
-extern RpSkin *
-RpPatchMeshGetSkin( RpPatchMesh *patchMesh );
-
-extern RpPatchMesh *
-RpPatchMeshSetSkin( RpPatchMesh *patchMesh,
- RpSkin *skin );
-
-#endif /* (defined(RPSKIN_H)) */
-
-/*---------------------------------------------------------------------------*
- *- Patch Atomic functions -*
- *---------------------------------------------------------------------------*/
-extern RpAtomic *
-RpPatchAtomicSetPatchMesh( RpAtomic *atomic,
- RpPatchMesh *patchMesh );
-
-extern RpPatchMesh *
-RpPatchAtomicGetPatchMesh( const RpAtomic *atomic );
-
-/*---------------------------------------------------------------------------*
- *- Patch Atomic LOD functions -*
- *---------------------------------------------------------------------------*/
-extern RwBool
-RpPatchAtomicSetPatchLODCallBack( RpAtomic *atomic,
- RpPatchLODCallBack callback,
- RpPatchLODUserData userData );
-
-extern RwBool
-RpPatchAtomicGetPatchLODCallBack( const RpAtomic *atomic,
- RpPatchLODCallBack *callback,
- RpPatchLODUserData *userData );
-
-/*---------------------------------------------------------------------------*
- *- Patch default LOD range -*
- *---------------------------------------------------------------------------*/
-extern RwBool
-RpPatchSetDefaultLODCallBackRange( RpPatchLODRange *lodRange );
-
-extern RwBool
-RpPatchGetDefaultLODCallBackRange( RpPatchLODRange *lodRange );
-
-/*---------------------------------------------------------------------------*
- *- Patch pipeline -*
- *---------------------------------------------------------------------------*/
-
-/**
- * \ingroup rppatch
- * \ref RpPatchType defines the different ways a patch atomic can be rendered.
- * Once a \ref RpPatchMesh has been attached to an \ref RpAtomic with
- * \ref RpPatchAtomicSetPatchMesh the atomic must be setup with the correct
- * rendering pipeline with \ref RpPatchAtomicSetType .
- *
- * The patch plugin makes no assumptions about how to render the
- * patch atomics. Once an \ref RpPatchMesh has been attached to an
- * \ref RpAtomic it is necessary to attach a suitable patch
- * rendering pipeline. The patch plugin supports four different
- * rendering types, these are defined in the \ref RpPatchType
- * enumeration:-
- * \li \ref rpPATCHTYPEGENERIC
- * The patch \ref RpAtomic will be rendered with the
- * default generic patch rendering pipeline.
- * \li \ref rpPATCHTYPESKIN
- * The patch \ref RpAtomic will be rendered with a
- * custom pipeline for rendering skinning patches. Make sure
- * an \ref RpSkin has been attached to the \ref RpPatchMesh
- * and an \ref RpHAnimHierarchy has been attached to the
- * \ref RpAtomic.
- * \li \ref rpPATCHTYPEMATFX
- * The patch \ref RpAtomic will be rendered with a
- * custom pipeline for rendering the material effects
- * of patches. The
- * patch matfx pipeline supports all the material effects
- * defined in the \ref rpmatfx plugin. The patches
- * materials should be setup as usual.
- * \li \ref rpPATCHTYPESKINMATFX
- * The patch \ref RpAtomic will be rendered with a
- * custom skinned material effects patch rendering pipeline.
- * The \ref RpPatchMesh, \ref RpAtomic and the patches'
- * \ref RpMaterial's must be setup correctly.
- */
-enum RpPatchType
-{
- rpNAPATCHTYPE = 0, /**<Invalid patch pipeline. */
- rpPATCHTYPEGENERIC = 1, /**<Generic patch rendering. */
- rpPATCHTYPESKIN = 2, /**<Skinned patch rendering. */
- rpPATCHTYPEMATFX = 3, /**<Material effects patch rendering. */
- rpPATCHTYPESKINMATFX = 4, /**<Skinned material effects patch rendering. */
- rpPATCHTYPEFORCEENUMSIZEINT = RWFORCEENUMSIZEINT
-};
-typedef enum RpPatchType RpPatchType;
-
-extern RpAtomic *
-RpPatchAtomicSetType( RpAtomic *atomic,
- RpPatchType type );
-
-extern RpPatchType
-RpPatchAtomicGetType( const RpAtomic *atomic );
-
-/*---------------------------------------------------------------------------*/
-#ifdef __cplusplus
-}
-#endif /* __cplusplus */
-
-/*---- start: ./d3d8/patchplatform.h----*/
-
-/**
- * \defgroup rppatchd3d8 D3D8
- * \ingroup rppatch
- *
- * D3D8 patch pipeline extension.
- */
-
-
-/*===========================================================================*
- *--- D3D8 Defines -----------------------------------------------------------*
- *===========================================================================*/
-
-/*===========================================================================*
- *--- D3D8 Global Types ------------------------------------------------------*
- *===========================================================================*/
-
-/**
- * \ingroup rppatchd3d8
- * \ref RpPatchD3D8Pipeline rendering pipelines available within the
- * \ref rppatch plugin. Use \ref RpPatchGetD3D8Pipeline to retrieve
- * the \ref RxPipeline s.
- */
-enum RpPatchD3D8Pipeline
-{
- rpPATCHD3D8PIPELINEGENERIC = 0, /**<D3D8 generic
- patch rendering pipeline. */
- rpPATCHD3D8PIPELINEMATFX = 1, /**<D3D8 material effect
- (single set of texture coordinates)
- patch rendering pipeline. */
- rpPATCHD3D8PIPELINESKINNED = 2, /**<D3D8 skinned
- patch rendering pipeline. */
- rpPATCHD3D8PIPELINESKINMATFX = 3, /**<D3D8 skinned material effect
- (single set of texture coordinates)
- patch rendering pipeline. */
- rpPATCHD3D8PIPELINEMAX,
- rpPATCHD3D8PIPELINEFORCEENUMSIZEINT = RWFORCEENUMSIZEINT
-};
-typedef enum RpPatchD3D8Pipeline RpPatchD3D8Pipeline;
-
-/*===========================================================================*
- *--- D3D8 Plugin API Functions ----------------------------------------------*
- *===========================================================================*/
-#ifdef __cplusplus
-extern "C"
-{
-#endif /* __cplusplus */
-/*---------------------------------------------------------------------------*/
-
-extern RxPipeline *
-RpPatchGetD3D8Pipeline( RpPatchD3D8Pipeline d3d8Pipeline );
-
-/*---------------------------------------------------------------------------*/
-#ifdef __cplusplus
-}
-#endif /* __cplusplus */
-
-/*---- end: ./d3d8/patchplatform.h----*/
-
-#endif /* RPPATCH_H */
-
-
diff --git a/rwsdk/include/d3d8/rppatch.rpe b/rwsdk/include/d3d8/rppatch.rpe
deleted file mode 100644
index 6d433990..00000000
--- a/rwsdk/include/d3d8/rppatch.rpe
+++ /dev/null
@@ -1,638 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-enum e_rwdb_CriterionPATCH
-{
-
-
-
- e_rwdb_CriterionPATCHLAST = RWFORCEENUMSIZEINT
-};
-
-typedef enum e_rwdb_CriterionPATCH e_rwdb_CriterionPATCH;
-
-
diff --git a/rwsdk/include/d3d8/rpprtstd.h b/rwsdk/include/d3d8/rpprtstd.h
deleted file mode 100644
index ad1b87f7..00000000
--- a/rwsdk/include/d3d8/rpprtstd.h
+++ /dev/null
@@ -1,1026 +0,0 @@
-
-#ifndef RPPRTSTD_H
-#define RPPRTSTD_H
-
-/*===========================================================================*
- *--- Include files ---------------------------------------------------------*
- *===========================================================================*/
-
-#include "rwcore.h"
-#include "rpworld.h"
-
-
-/*---- start: ./prtstd.h----*/
-
-#include "rwcore.h"
-#include "rpworld.h"
-#include "rpptank.h"
-
-#include "rpprtstd.rpe"
-
-
-
-/************************************************************************
- *
- *
- *
- ************************************************************************/
-
-/**
- * \defgroup rpprtstd RpPrtStd
- * \ingroup rpplugin
- *
- * Particle Animation Plugin for RenderWare Graphics.
- */
-
-/*
- * Current version stamp
- */
-#define rpPRTSTDVERSIONSTAMP 2
-
-/*
- * Random Number Generation Macros
- */
-#define PRTSTD_SRAND_MAX 0xFFFFFFFF
-#define PRTSTD_SRAND_IMAX ((RwReal) 1.0 / (RwReal) PRTSTD_SRAND_MAX)
-
-#define PRTSTD_SRAND(_seed) ((_seed) = ((_seed) * 196314165 + 907633515))
-
-/* Real rand -1.0 .. + 1.0 */
-#define PRTSTD_RSRAND(_seed) (((RwReal)((RwUInt32) (_seed) * PRTSTD_SRAND_IMAX) * \
- (RwReal) 2.0) - (RwReal) 1.0)
-
-
-
-#define PRTSTD_RSRAND2(_seed) (((RwReal)((RwReal) (_seed) * PRTSTD_SRAND_IMAX) * \
- (RwReal)1.0))
-
-/**
- * \ingroup rpprtstd
- * \ref RpPrtStdParticleFlags, this type represents the different properties of
- * a particle.
- */
-enum RpPrtStdParticleFlags
-{
- rpPRTSTDPARTICLEFLAGEMITTER = 0x00000001, /**<Particle is an emitter. */
-
- rpPRTSTDPARTICLEFLAGFORCEENUMSIZEINT = RWFORCEENUMSIZEINT
-};
-
-typedef enum RpPrtStdParticleFlags RpPrtStdParticleFlags;
-
-/**
- * \ingroup rpprtstd
- * \ref RpPrtStdEmitterFlags, this type represents the different properties of
- * an emitter.
- */
-enum RpPrtStdEmitterFlags
-{
- rpPRTSTDEMITTERFLAGALIVE = 0x00000001, /**< The emitter is alive and should not be removed */
- rpPRTSTDEMITTERFLAGACTIVE = 0x00000002, /**< This indicates the emitter is active or idle */
- rpPRTSTDEMITTERFLAGPTANK = 0x00000004, /**< The emitter uses the \ref rpptank */
- rpPRTSTDEMITTERFLAGEMIT = 0x00000008, /**< This indicates the emitter can emit new particles */
- rpPRTSTDEMITTERFLAGUPDATE = 0x00000010, /**< This indicates if the emitter is to be updated. */
- rpPRTSTDEMITTERFLAGUPDATEPARTICLE = 0x00000020, /**< This indicated if the emitter's particles are updated. */
- rpPRTSTDEMITTERFLAGRENDER = 0x00000040, /**< This indicates if the emitter is rendered. */
- rpPRTSTDEMITTERFLAGRENDERPARTICLE = 0x00000080, /**< This indicates if the emitter's particles are rendered. */
- rpPRTSTDEMITTERFLAGFORCEENUMSIZEINT = RWFORCEENUMSIZEINT
-};
-
-typedef enum RpPrtStdEmitterFlags RpPrtStdEmitterFlags;
-
-/************************************************************************
- *
- *
- *
- ************************************************************************/
-
-#define rpPRTSTDPARTICLECALLBACKMAX 7
-
-/**
- * \ingroup rpprtstd
- * \ref RpPrtStdParticleCallBackCode, this type represents the different callbacks for
- * processing a \ref RpPrtStdParticleBatch. These callbacks will be called at various point for
- * processing the particle's custom data.
- */
-enum RpPrtStdParticleCallBackCode
-{
- rpPRTSTDPARTICLECALLBACKUPDATE = 0, /**< Particle update callback */
- rpPRTSTDPARTICLECALLBACKRENDER, /**< Particle render callback */
- rpPRTSTDPARTICLECALLBACKCREATE, /**< Particle create callback */
- rpPRTSTDPARTICLECALLBACKDESTROY, /**< Particle destroy callback */
- rpPRTSTDPARTICLECALLBACKSTREAMREAD, /**< Particle stream input callback */
- rpPRTSTDPARTICLECALLBACKSTREAMWRITE, /**< Particle stream outout callback */
- rpPRTSTDPARTICLECALLBACKSTREAMGETSIZE, /**< Particle stream get size callback */
- rpPRTSTDPARTICLECALLBACKFORCEENUMSIZEINT = RWFORCEENUMSIZEINT
-};
-
-typedef enum RpPrtStdParticleCallBackCode RpPrtStdParticleCallBackCode;
-
-#define rpPRTSTDEMITTERCALLBACKMAX 10
-
-/**
- * \ingroup rpprtstd
- * \ref RpPrtStdEmitterCallBackCode, this type represents the different callbacks for
- * processing a \ref RpPrtStdEmitter. These callbacks will be called at various point for
- * processing the emitter's custom data.
- */
-enum RpPrtStdEmitterCallBackCode
-{
- rpPRTSTDEMITTERCALLBACKEMIT = 0, /**< Emitter particle emission callback */
- rpPRTSTDEMITTERCALLBACKBEGINUPDATE, /**< Emitter begin update call back */
- rpPRTSTDEMITTERCALLBACKENDUPDATE, /**< Emitter end update callback */
- rpPRTSTDEMITTERCALLBACKBEGINRENDER, /**< Emitter begin render callback */
- rpPRTSTDEMITTERCALLBACKENDRENDER, /**< Emitter end render callback */
- rpPRTSTDEMITTERCALLBACKCREATE, /**< Emitter create callback */
- rpPRTSTDEMITTERCALLBACKDESTROY, /**< Emitter destroy callback */
- rpPRTSTDEMITTERCALLBACKSTREAMREAD, /**< Emitter stream input callback */
- rpPRTSTDEMITTERCALLBACKSTREAMWRITE, /**< Emitter stream output callback */
- rpPRTSTDEMITTERCALLBACKSTREAMGETSIZE, /**< Emitter stream get size callback */
- rpPRTSTDEMITTERCALLBACKFORCEENUMSIZEINT = RWFORCEENUMSIZEINT
-};
-
-typedef enum RpPrtStdEmitterCallBackCode RpPrtStdEmitterCallBackCode;
-
-typedef RwInt32 RpPrtStdPropertyCode;
-
-/************************************************************************
- *
- *
- *
- ************************************************************************/
-
-typedef struct RpPrtStdEmitter RWALIGN(RpPrtStdEmitter, rwMATRIXALIGNMENT);
-
-/**
- * \ingroup rpprtstd
- * \typedef RpPrtStdEmitterCallBack
- * \ref RpPrtStdEmitterCallBack represents the function called for processing
- * a \ref RpPrtStdEmitter. There can several types of the functions, each performing a
- * specific task defined by \ref RpPrtStdEmitterCallBackCode.
- *
- * \param atomic A pointer to the emitter's parent atomic.
- * \param emt A pointer to the emitter.
- * \param data A pointer to user data.
- *
- * \return A pointer to the emitter on success. NULL otherwise.
- */
-typedef RpPrtStdEmitter *
- (*RpPrtStdEmitterCallBack)
- (RpAtomic *atomic, RpPrtStdEmitter *emt, void *data);
-
-typedef struct RpPrtStdParticleBatch RWALIGN(RpPrtStdParticleBatch, rwMATRIXALIGNMENT);
-/**
- * \ingroup rpprtstd
- * \typedef RpPrtStdParticleCallBack
- * \ref RpPrtStdParticleCallBack represents the function called for processing
- * a \ref RpPrtStdParticleBatch. There can be several types of the functions, each
- * performing a specific task defined by \ref RpPrtStdParticleCallBackCode.
- *
- * \param emt A pointer to the particle batch's parent emitter.
- * \param prtBatch A pointer to the particle batch.
- * \param data A pointer to user data.
- *
- * \return A pointer to the particle batch on success. NULL otherwise.
- */
-typedef RpPrtStdParticleBatch *
- (*RpPrtStdParticleCallBack)
- (RpPrtStdEmitter *emt, RpPrtStdParticleBatch *prtBatch, void *data);
-
-/**
- * \ingroup rpprtstd
- * \typedef RpPrtStdEmitterCallBackArray
- * \ref RpPrtStdEmitterCallBackArray represents a set of callback functions for
- * processing a \ref RpPrtStdEmitter. All the functions are of the type \ref
- * RpPrtStdEmitterCallBack.
- *
- * \see RpPrtStdEmitterCallBackCode
- */
-typedef RpPrtStdEmitterCallBack
- RpPrtStdEmitterCallBackArray[rpPRTSTDEMITTERCALLBACKMAX];
-
-/**
- * \ingroup rpprtstd
- * \typedef RpPrtStdParticleCallBackArray
- * \ref RpPrtStdParticleCallBackArray represents a set of callback functions for
- * processing a \ref RpPrtStdParticleBatch. All the functions are of the type \ref
- * RpPrtStdParticleCallBack.
- *
- * \see RpPrtStdParticleCallBackCode
- */
-typedef RpPrtStdParticleCallBack
- RpPrtStdParticleCallBackArray[rpPRTSTDPARTICLECALLBACKMAX];
-
-
-/************************************************************************
- *
- *
- *
- ************************************************************************/
-
-typedef struct RpPrtStdEmitterClass RpPrtStdEmitterClass;
-/**
- * \ingroup rpprtstd
- * \typedef RpPrtStdEClassSetupCallBack
- * \ref RpPrtStdEClassSetupCallBack represents the function called for setting up an
- * emitter class's set of callback function. The callback function is called
- * after an emitter class is streamed in.
- *
- * \param eClass A pointer to an emitter class.
- *
- * \return A pointer to the emitter class on success. NULL otherwise.
- */
-typedef RpPrtStdEmitterClass *
- (*RpPrtStdEClassSetupCallBack)
- (RpPrtStdEmitterClass *eClass);
-
-typedef struct RpPrtStdParticleClass RpPrtStdParticleClass;
-/**
- * \ingroup rpprtstd
- * \typedef RpPrtStdPClassSetupCallBack
- * \ref RpPrtStdPClassSetupCallBack represents the function called for setting up an
- * emitter class's set of callback function. The callback function is called
- * after an emitter class is streamed in.
- *
- * \param pClass A pointer to a particle class.
- *
- * \return A pointer to the particle class on success. NULL otherwise.
- */
-typedef RpPrtStdParticleClass *
- (*RpPrtStdPClassSetupCallBack)
- (RpPrtStdParticleClass *pClass);
-
-/************************************************************************
- *
- *
- *
- ************************************************************************/
-
-typedef struct RpPrtStdPropertyTable RpPrtStdPropertyTable;
-/**
- * \ingroup rpprtstd
- * \struct RpPrtStdPropertyTable
- * A structure representing properties's data present in an emitter or
- * particle.
- * An emitter, or particle, are treated as a single block of memory. The
- * property table is used to describe the data presents in the memory block.
- * It stores the property's id, offset entry from the start of the memory
- * block and size in bytes.
- */
-struct RpPrtStdPropertyTable
-{
- RwUInt32 *propPtr; /**< Internal usage */
- RpPrtStdPropertyTable *next; /**< Internal usage */
-
- RwInt32 id; /**< Property table's id */
-
- RwInt32 numProp; /**< Number of properties in the table */
- RwInt32 maxProp; /**< Internal usage */
- RwInt32 *propID; /**< Array of properties's id */
- RwInt32 *propOffset; /**< Array of properties's offset */
- RwInt32 *propSize; /**< Array of properties's size */
- RwInt32 *propSizeUA; /**< Internal usage */
-};
-
-/**
- * \ingroup rpprtstd
- * \struct RpPrtStdEmitterClass
- * A structure representing the collection of data and callbacks for an emitter. An emitter
- * class is used to create emitters that share the same properties and callback functions.
- * Once created, an emitter class cannot be altered. An emitter class should also not be
- * destroyed if emitters of the class are still in use.
- */
-struct RpPrtStdEmitterClass
-{
- RpPrtStdEmitterClass *next; /**< Internal usage */
-
- RwInt32 id; /**< Emitter class's id */
-
- RwInt32 objSize; /**< Size of the emitter */
- RpPrtStdPropertyTable *propTab; /**< Reference to a table of emitter properties */
-
- RwInt32 numCallback; /**< Number of callback arrays */
- RpPrtStdEmitterCallBackArray *callback; /**< Array of emitter callback functions */
-};
-
-/**
- * \ingroup rpprtstd
- * \struct RpPrtStdParticleClass
- * A structure representing the collection of data and callbacks for a particle. A particle
- * class is used to create particle that share the same properties and callback functions.
- * Once created, a particle class cannot be altered. A particle class should also not be
- * destroyed if particles of the class are still in use.
- */
-struct RpPrtStdParticleClass
-{
- RpPrtStdParticleClass *next; /**< Internal usage */
-
- RwInt32 id; /**< Particle class's id */
-
- RwInt32 objSize; /**< Size of a particle */
- RpPrtStdPropertyTable *propTab; /**< Reference to a table of particle properties */
-
- RwInt32 numCallback; /**< Number of callback sets */
- RpPrtStdParticleCallBackArray *callback; /**< Array of particle batch callback functions */
-};
-
-
-/************************************************************************
- *
- *
- *
- ************************************************************************/
-
-/**
- * \ingroup rpprtstd
- * \struct RpPrtStdParticleBatch
- * A structure repsenting a group of particles. For efficient, particles are stored
- * in batches rather than individually. All live particles are stored at the head
- * of batch with no gaps of dead particles. A counter is used to record the number of
- * live particles in the batch. Once a batch has 0 live particles, it will removed
- * from the emitter's active particle list to the inactive list.
- * The first particle of the batch is given by an offset from the start of the
- * particle batch.
- */
-struct RpPrtStdParticleBatch
-{
- RpPrtStdParticleBatch *next; /**< Pointer to the next particle batch */
-
- RpPrtStdParticleClass *prtClass; /**< Pointer to the particle's class */
-
- RwInt32 numPrt; /**< Number of particles in the batch */
- RwInt32 maxPrt; /**< Maxium number of particles in batch */
- RwInt32 newPrt; /**< Start of newly emitted particles in the batch */
-
- RwInt32 offset; /**< Offset to the first particle, from the start of the
- * particle batch */
-};
-
-/**
- * \ingroup rpprtstd
- * \struct RpPrtStdEmitter
- * A structure repsenting the mandatory data set for any emitter. Each emitter contains information of
- * itself and its particles, via the emitter class and particle class respectively. It also contains the
- * list of particles, in batches, it had emitted.
- * Optional data are stored immediately after the mandatory set. The contents of the optional data are
- * described in the emitter class's property table. The offset from the property table are from the start
- * of the emitter.
- *
- * The type of particles emitted are given by the particle class. Each emitter may have only emitter class
- * and particle class and these should not be changed during the lifetime of the emitter and its particles.
- * The emitter maintains two lists of particle batches, an acitive list, contain still active particles,
- * and an inactive list. The maximum number of particles in each batch is given by the prtBatchMaxPrt field.
- */
-struct RpPrtStdEmitter
-{
- RpPrtStdEmitter *next; /**< Pointer to the next emitter */
-
- RwUInt32 flag; /**< Emitter's property flag */
-
- RpAtomic *atomic; /**< Pointer to emitter's parent atomic */
-
- RpPrtStdEmitterClass *emtClass; /**< Pointer the emitter's class */
-
- RwInt32 prtActive; /**< Number of particles emitted */
- RwInt32 prtBatchMaxPrt; /**< Maximum number of particles per batch */
- RpPrtStdParticleClass *prtClass; /**< Pointer to the particle's class */
-
- RpPrtStdParticleBatch *inactiveBatch, /**< Circular linked list of inactive particle batches */
- *activeBatch; /**< Circular linked list of active particle batches */
-
- RwReal boundingSphere; /**< Emitter's bounding sphere. */
-};
-
-
-
-/************************************************************************
- *
- *
- *
- ************************************************************************/
-
-#define rpPRTSTDPROPERTYCODEEMITTER 0
-#define rpPRTSTDPROPERTYCODEEMITTERSTANDARD 1
-#define rpPRTSTDPROPERTYCODEEMITTERPRTCOLOR 2
-#define rpPRTSTDPROPERTYCODEEMITTERPRTTEXCOORDS 3
-#define rpPRTSTDPROPERTYCODEEMITTERPRTANIMFRAME 4
-#define rpPRTSTDPROPERTYCODEEMITTERPRTSIZE 5
-#define rpPRTSTDPROPERTYCODEEMITTERPTANK 6
-#define rpPRTSTDPROPERTYCODEEMITTERPRTVELOCITY 7
-#define rpPRTSTDPROPERTYCODEEMITTERPRTMATRIX 8
-
-#define rpPRTSTDEMITTERPROPERTYCOUNT 9
-
-#define rpPRTSTDEMITTERDATAFLAGSTANDARD 0x00000001
-#define rpPRTSTDEMITTERDATAFLAGPRTCOLOR 0x00000002
-#define rpPRTSTDEMITTERDATAFLAGPRTTEXCOORDS 0x00000004
-#define rpPRTSTDEMITTERDATAFLAGPRTANIMFRAME 0x00000008
-#define rpPRTSTDEMITTERDATAFLAGPRTSIZE 0x00000010
-#define rpPRTSTDEMITTERDATAFLAGPTANK 0x00000020
-#define rpPRTSTDEMITTERDATAFLAGPRTMATRIX 0x00000040
-
-
-typedef struct RpPrtStdEmitterStandard RpPrtStdEmitterStandard;
-
-/**
- * \ingroup rpprtstd
- * \struct RpPrtStdEmitterStandard
- * A structure represent the set of properties for a basic emitter. The structure is stored as
- * a single optional data in the emitter property table.
- *
- * The basic emitter uses a 'time' variable to control particle emissions. A large time gap between
- * emission can give pulse effects where as a small time gap produces a streaming effects. Particles
- * can be emitted from a single point, line, area or a volume.
- *
- * Particles emitted from an emitter are of the same type. An emitter cannot emit different types of
- * particles. Once an emitter has reached its maximum number of particles, no further particles are
- * emitted until some of the existing particles have died.
- *
- * Most properties have a bias value to vary the property value. This uses the seed field
- * to give a degreee of randomness.
- */
-struct RpPrtStdEmitterStandard
-{
- RwInt32 seed; /**< Seed for random number generator */
-
- RwInt32 maxPrt; /**< Maximum number of active particles */
-
- RwReal currTime, /**< Current timestamp for emitter */
- prevTime; /**< Previous timestamp for emitter */
- RwV3d force; /**< External force applied to particles */
-
- RwV3d emtPos, /**< Emitter position */
- emtSize; /**< Emitter size. This is the volume where new particles
- * are emitted */
- RwReal emtEmitGap, /**< Time gap between emission */
- emtEmitGapBias, /**< Time gap bias */
- emtPrevEmitTime, /**< Previous particle emission time */
- emtEmitTime; /**< Next particle emission time */
- RwInt32 emtPrtEmit, /**< Number of particle emit per emission */
- emtPrtEmitBias; /**< Particle emission bias */
-
- RwReal prtInitVel, /**< Particle's initial speed */
- prtInitVelBias; /**< Particle's initial speed bias */
- RwReal prtLife, /**< Particle's duration */
- prtLifeBias; /**< Particle's duration bias */
-
- RwV3d prtInitDir, /**< Particle's initial direction */
- prtInitDirBias; /**< particle's initial direction bias */
-
- RwV2d prtSize; /**< Particle's size */
-
- RwRGBA prtColor; /**< Particle's color */
-
- RwTexCoords prtUV[4]; /**< Particle's texture coordindates */
- RwTexture *texture; /**< Particle's texture */
-
- RwMatrix *ltm; /**< LTM to transform particle coordinates from local space
- * to world space */
-};
-
-typedef struct RpPrtStdEmitterPrtColor RpPrtStdEmitterPrtColor;
-/**
- * \ingroup rpprtstd
- * \struct RpPrtStdEmitterPrtColor
- * An optional structure to represent the change in color of a particle from birth to death.
- * The particles will start with the prtStartCol and ends with endPrtColor. The particle's
- * life is used to interpolate the colors.
- *
- * If this structure is not present, then the particles will have a constant color.
- */
-struct RpPrtStdEmitterPrtColor
-{
- RwRGBAReal prtStartCol, /**< Particle start color */
- prtStartColBias; /**< Particle start color bias */
- RwRGBAReal prtEndCol, /**< Particle end color */
- prtEndColBias; /**< Particle end color bias */
-};
-
-typedef struct RpPrtStdEmitterPrtTexCoords RpPrtStdEmitterPrtTexCoords;
-
-/**
- * \ingroup rpprtstd
- * \struct RpPrtStdEmitterPrtTexCoords
- * An optional structure to represent the change in texcoords of a particle from birth to death.
- * The particles will start with prtStartUV0 and prtStartUV1 and ends with endPrtEndUV0 and endPrtEndUV1.
- * The particle's life is used to interpolate the texcoords.
- *
- * A particle can have two texcoords representing the top left and bottom right respectively. By varying
- * the texcoords can give an animated texture effect on a particle.
- *
- * If this structure is not present, then the particles will have a constant texcoords.
- */
-struct RpPrtStdEmitterPrtTexCoords
-{
- RwTexCoords prtStartUV0, /**< Particle start top left texcoords */
- prtStartUV0Bias; /**< Particle start top left texcoords bias */
- RwTexCoords prtEndUV0, /**< Particle end top left texcoords */
- prtEndUV0Bias; /**< Particle end top left texcoords bias */
- RwTexCoords prtStartUV1, /**< Particle start bottom right texcoords */
- prtStartUV1Bias; /**< Particle start botton right texcoords bias */
- RwTexCoords prtEndUV1, /**< Particle end bottom right texcoords */
- prtEndUV1Bias; /**< Particle end bottom right texcoords bias */
-};
-
-typedef struct RpPrtStdEmitterPrtAnimFrame RpPrtStdEmitterPrtAnimFrame;
-
-struct RpPrtStdEmitterPrtAnimFrame
-{
- RwInt32 prtNumFrames;
-
- RwTexCoords *prtAnimFrameTexCoords;
-};
-
-typedef struct RpPrtStdEmitterPrtSize RpPrtStdEmitterPrtSize;
-
-/**
- * \ingroup rpprtstd
- * \struct RpPrtStdEmitterPrtSize
- * An optional structure to represent the change in size of a particle from birth to death.
- * The particles will start with prtStartSize and ends with prtEndSize. The particle's life
- * is used to interpolate the size.
- *
- * If this structure is not present, then the particles will have a constant size.
- */
-struct RpPrtStdEmitterPrtSize
-{
- RwV2d prtStartSize, /**< Particle start size */
- prtStartSizeBias; /**< Particle start size bias */
- RwV2d prtEndSize, /**< Particle end size */
- prtEndSizeBias; /**< Particle end size bias */
-};
-
-typedef struct RpPrtStdEmitterPrtMatrix RWALIGN(RpPrtStdEmitterPrtMatrix, rwMATRIXALIGNMENT);
-
-struct RpPrtStdEmitterPrtMatrix
-{
- RwMatrix prtCnsMtx;
-
- RwV3d prtPosMtxAt,
- prtPosMtxAtBias;
- RwV3d prtPosMtxUp,
- prtPosMtxUpBias;
-
- RwInt32 flags;
-};
-
-/************************************************************************
- *
- *
- *
- ************************************************************************/
-
-
-
-enum RpPrtStdPTankPropertyCode
-{
- rpPRTSTDPTANKPROPPARTICLESMAX = 0,
- rpPRTSTDPTANKPROPDATAFLAGS,
- rpPRTSTDPTANKPROPPLATFORMFLAGS,
- rpPRTSTDPTANKPROPPTANK,
- rpPRTSTDPTANKPROPFORCEENUMSIZEINT = RWFORCEENUMSIZEINT
-};
-
-typedef enum RpPrtStdPTankPropertyCode RpPrtStdPTankPropertyCode;
-
-typedef struct RpPrtStdEmitterPTank RpPrtStdEmitterPTank;
-struct RpPrtStdEmitterPTank
-{
- RwUInt32 dataFlags,
- platFlags,
- numPrt,
- maxPrt,
- updateFlags,
- emitFlags;
- RpAtomic *pTank;
- RwChar **dataInPtrs,
- **dataOutPtrs;
- RwInt32 *dataStride;
-};
-
-/************************************************************************
- *
- *
- *
- ************************************************************************/
-
-#define rpPRTSTDPROPERTYCODEPARTICLESTANDARD 0
-#define rpPRTSTDPROPERTYCODEPARTICLEPOSITION 1
-#define rpPRTSTDPROPERTYCODEPARTICLECOLOR 2
-#define rpPRTSTDPROPERTYCODEPARTICLETEXCOORDS 3
-#define rpPRTSTDPROPERTYCODEPARTICLEANIMFRAME 4
-#define rpPRTSTDPROPERTYCODEPARTICLESIZE 5
-#define rpPRTSTDPROPERTYCODEPARTICLEVELOCITY 6
-#define rpPRTSTDPROPERTYCODEPARTICLEMATRIX 7
-
-#define rpPRTSTDPARTICLEPROPERTYCOUNT 8
-
-#define rpPRTSTDPARTICLEDATAFLAGSTANDARD 0x00000001
-#define rpPRTSTDPARTICLEDATAFLAGPOSITION 0x00000002
-#define rpPRTSTDPARTICLEDATAFLAGCOLOR 0x00000004
-#define rpPRTSTDPARTICLEDATAFLAGTEXCOORDS 0x00000008
-#define rpPRTSTDPARTICLEDATAFLAGANIMFRAME 0x00000010
-#define rpPRTSTDPARTICLEDATAFLAGSIZE 0x00000020
-#define rpPRTSTDPARTICLEDATAFLAGVELOCITY 0x00000040
-#define rpPRTSTDPARTICLEDATAFLAGMATRIX 0x00000080
-
-
-/**
- * \ingroup rpprtstd
- * \struct RpPrtStdParticleStandard
- * A structure represent the set of properties for a basic particle. This structure is mandatory
- * for all particles.
- * The structure contain the life duration of the particle. The particle will be removed when the current
- * time is greater than the end time. The particle timer always starts at zero.
- *
- * The inverted end time is for interpolating optional particle properties.
- */
-typedef struct RpPrtStdParticleStandard RpPrtStdParticleStandard;
-struct RpPrtStdParticleStandard
-{
- RwInt32 flag; /**< Particle's property flag */
- RwReal currTime, /**< Particle's curr time */
- endTime, /**< Particle's end time */
- invEndTime; /**< Particle's inv end for interpolation */
-};
-
-
-typedef struct RpPrtStdParticleColor RpPrtStdParticleColor;
-
-/**
- * \ingroup rpprtstd
- * \struct RpPrtStdParticleColor
- * A structure representing the change in a particle's color during its life time. The structure is optional
- * and should not be used if particles have a constant color.
- */
-struct RpPrtStdParticleColor
-{
- RwRGBAReal startCol, /**< Particle's end size bias */
- deltaCol; /**< Particle's color rate of change */
-};
-
-typedef struct RpPrtStdParticleTexCoords RpPrtStdParticleTexCoords;
-
-/**
- * \ingroup rpprtstd
- * \struct RpPrtStdParticleTexCoords
- * A structure representing the change in a particle's texcoords during its life time. The structure is optional
- * and should not be used if particles have a constant texcoords.
- */
-struct RpPrtStdParticleTexCoords
-{
- RwTexCoords startUV0, /**< Particle's starting top left texcoords */
- startUV1; /**< Particle's starting bottom right texcoords */
- RwTexCoords deltaUV0, /**< Particle's top left texcoords rate of change */
- deltaUV1; /**< Particle's bottom right texcoords rate of change */
-};
-
-typedef struct RpPrtStdParticleAnimFrame RpPrtStdParticleAnimFrame;
-
-struct RpPrtStdParticleAnimFrame
-{
- RwInt32 frame;
-
- RwReal delta;
-};
-
-typedef struct RpPrtStdParticleSize RpPrtStdParticleSize;
-
-/**
- * \ingroup rpprtstd
- * \struct RpPrtStdParticleSize
- * A structure representing the change in a particle's size during its life time. The structure is optional
- * and should not be used if particles have a constant size.
- */
-struct RpPrtStdParticleSize
-{
- RwV2d startSize, /**< Particle's starting size */
- deltaSize; /**< Particle's size rate of change */
- RwV2d currSize, /**< Particle's current size. Internal use only */
- invCurrSize; /**< Particle's inverse current size. Internal use only */
-};
-
-/************************************************************************
- *
- *
- *
- ************************************************************************/
-
-#ifdef __cplusplus
-extern "C"
-{
-#endif /* __cplusplus */
-
-/************************************************************************/
-
-extern RwBool
-RpParticleStandardPluginAttach( void );
-
-/************************************************************************/
-
-extern RpAtomic *
-RpPrtStdAtomicCreate(RpPrtStdEmitterClass *eClass, void *data);
-
-extern RpAtomic *
-RpPrtStdAtomicUpdate(RpAtomic *atomic, void *data);
-
-extern RpAtomic *
-RpPrtStdAtomicSetEmitter(RpAtomic *atomic, RpPrtStdEmitter *emt);
-
-extern RpPrtStdEmitter *
-RpPrtStdAtomicGetEmitter(RpAtomic *atomic);
-
-extern RpAtomic *
-RpPrtStdAtomicForAllEmitter(RpAtomic *atomic,
- RpPrtStdEmitterCallBack callback,
- void *data);
-
-extern RpAtomic *
-RpPrtStdAtomicAddEmitter(RpAtomic *,
- RpPrtStdEmitter *emt);
-
-
-/************************************************************************/
-
-
-extern RpPrtStdEmitter *
-RpPrtStdEmitterCreate(RpPrtStdEmitterClass *eClass);
-
-extern RwBool
-RpPrtStdEmitterDestroy(RpPrtStdEmitter *emt);
-
-extern RpPrtStdEmitter *
-RpPrtStdEmitterForAllParticleBatch(RpPrtStdEmitter *emt,
- RpPrtStdParticleCallBack callback,
- void * data);
-
-
-extern RpPrtStdEmitter *
-RpPrtStdEmitterAddEmitter(RpPrtStdEmitter *emtHead,
- RpPrtStdEmitter *emt);
-
-extern RpPrtStdEmitter *
-RpPrtStdEmitterLinkPTank(RpPrtStdEmitter *emt,RpAtomic *ptank);
-
-
-extern RpPrtStdEmitter *
-RpPrtStdEmitterDestroyParticleBatch(RpPrtStdEmitter *emt);
-
-extern RpPrtStdParticleBatch *
-RpPrtStdEmitterNewParticleBatch(RpPrtStdEmitter *emt);
-
-extern RpPrtStdEmitter *
-RpPrtStdEmitterAddParticleBatch(RpPrtStdEmitter *emt,
- RpPrtStdParticleBatch *prtBatch);
-
-
-extern RpPrtStdEmitter *
-RpPrtStdEmitterSetPClass(RpPrtStdEmitter *emt,
- RpPrtStdParticleClass *pClass,
- RwInt32 maxPrt);
-
-extern RpPrtStdEmitter *
-RpPrtStdEmitterGetPClass(RpPrtStdEmitter *emt,
- RpPrtStdParticleClass **pClass,
- RwInt32 *maxPrt);
-
-
-/************************************************************************/
-
-extern RpPrtStdParticleBatch *
-RpPrtStdParticleBatchCreate(RpPrtStdParticleClass *pClass, RwInt32 maxPrt);
-
-extern RwBool
-RpPrtStdParticleBatchDestroy(RpPrtStdParticleBatch *prtBatch);
-
-extern RpPrtStdParticleBatch *
-RpPrtStdParticleBatchAddBatch(RpPrtStdParticleBatch *prtBatchHead,
- RpPrtStdParticleBatch *prtBatch);
-
-/************************************************************************/
-
-extern RpPrtStdPropertyTable *
-RpPrtStdPropTabCreate(RwInt32 numProp,
- RwInt32 *propID, RwInt32 *propStride);
-
-extern RwBool
-RpPrtStdPropTabDestroy(RpPrtStdPropertyTable *propTab);
-
-
-extern RpPrtStdPropertyTable *
-RpPrtStdPropTabGetProperties(RpPrtStdPropertyTable *propTab,
- RwInt32 *numProp,
- RwInt32 **propID,
- RwInt32 **propOffset,
- RwInt32 **propSize);
-
-extern RwInt32
-RpPrtStdPropTabGetPropOffset(RpPrtStdPropertyTable *propTab,
- RwInt32 propID);
-
-extern RwInt32
-RpPrtStdPropTabGetPropIndex(RpPrtStdPropertyTable *propTab,
- RwInt32 propID);
-
-
-extern RpPrtStdPropertyTable *
-RpPrtStdPropTabGet(RwInt32 id);
-
-extern RpPrtStdPropertyTable *
-RpPrtStdPropTabStreamRead(RwStream *stream);
-
-extern RpPrtStdPropertyTable *
-RpPrtStdPropTabStreamWrite(RpPrtStdPropertyTable *eClass,
- RwStream *stream);
-
-extern RwInt32
-RpPrtStdPropTabStreamGetSize(RpPrtStdPropertyTable *eClass);
-
-/************************************************************************/
-
-extern RwBool
-RpPrtStdEClassDestroy(RpPrtStdEmitterClass *eClass);
-
-extern RpPrtStdEmitterClass *
-RpPrtStdEClassCreate( void );
-
-extern RpPrtStdEmitterClass *
-RpPrtStdEClassSetCallBack(RpPrtStdEmitterClass *eClass,
- RwInt32 numCallback,
- RpPrtStdEmitterCallBackArray *emtCB);
-
-extern RpPrtStdEmitterClass *
-RpPrtStdEClassGetCallBack(RpPrtStdEmitterClass *eClass,
- RwInt32 *numCallback,
- RpPrtStdEmitterCallBackArray **emtCB);
-
-extern RpPrtStdEmitterClass *
-RpPrtStdEClassSetPropTab(RpPrtStdEmitterClass *eClass,
- RpPrtStdPropertyTable *propTab);
-
-extern RpPrtStdEmitterClass *
-RpPrtStdEClassGetPropTab(RpPrtStdEmitterClass *eClass,
- RpPrtStdPropertyTable **propTab);
-
-
-extern RpPrtStdEmitterClass *
-RpPrtStdEClassGet(RwInt32 id);
-
-extern RpPrtStdEmitterClass *
-RpPrtStdEClassStreamRead(RwStream *stream);
-
-extern RpPrtStdEmitterClass *
-RpPrtStdEClassStreamWrite(RpPrtStdEmitterClass *eClass,
- RwStream *stream);
-
-extern RwInt32
-RpPrtStdEClassStreamGetSize(RpPrtStdEmitterClass *eClass);
-
-/************************************************************************/
-
-extern RpPrtStdParticleClass *
-RpPrtStdPClassCreate( void );
-
-extern RwBool
-RpPrtStdPClassDestroy(RpPrtStdParticleClass *pClass);
-
-extern RpPrtStdParticleClass *
-RpPrtStdPClassSetCallBack(RpPrtStdParticleClass *pClass,
- RwInt32 numCallback,
- RpPrtStdParticleCallBackArray *prtCB);
-
-extern RpPrtStdParticleClass *
-RpPrtStdPClassGetCallBack(RpPrtStdParticleClass *pClass,
- RwInt32 *numCallback,
- RpPrtStdParticleCallBackArray **prtCB);
-
-extern RpPrtStdParticleClass *
-RpPrtStdPClassSetPropTab(RpPrtStdParticleClass *pClass,
- RpPrtStdPropertyTable *propTab);
-
-extern RpPrtStdParticleClass *
-RpPrtStdPClassGetPropTab(RpPrtStdParticleClass *pClass,
- RpPrtStdPropertyTable **propTab);
-
-extern RpPrtStdParticleClass *
-RpPrtStdPClassGet(RwInt32 id);
-
-extern RpPrtStdParticleClass *
-RpPrtStdPClassStreamRead(RwStream *stream);
-
-extern RpPrtStdParticleClass *
-RpPrtStdPClassStreamWrite(RpPrtStdParticleClass *pClass,
- RwStream *stream);
-
-extern RwInt32
-RpPrtStdPClassStreamGetSize(RpPrtStdParticleClass *pClass);
-
-/************************************************************************/
-
-extern RwBool
-RpPrtStdSetEClassSetupCallBack(RpPrtStdEClassSetupCallBack emtCB);
-
-extern RwBool
-RpPrtStdGetEClassSetupCallBack(RpPrtStdEClassSetupCallBack *emtCB);
-
-extern RwBool
-RpPrtStdSetPClassSetupCallBack(RpPrtStdPClassSetupCallBack prtCB);
-
-extern RwBool
-RpPrtStdGetPClassSetupCallBack(RpPrtStdPClassSetupCallBack *prtCB);
-
-/************************************************************************/
-
-
-extern RwStream *
-RpPrtStdGlobalDataStreamRead(RwStream *stream);
-
-extern RwStream *
-RpPrtStdGlobalDataStreamWrite(RwStream *stream);
-
-extern RwInt32
-RpPrtStdGlobalDataStreamGetSize( void );
-
-
-/************************************************************************/
-
-extern RpPrtStdEmitter *
-RpPrtStdEmitterDefaultCB(RpAtomic * atomic,
- RpPrtStdEmitter *prtEmt, void * data);
-
-
-extern RpPrtStdParticleBatch *
-RpPrtStdParticleDefaultCB(RpPrtStdEmitter * prtEmt,
- RpPrtStdParticleBatch *prtBatch, void * data);
-
-/************************************************************************/
-
-extern RpPrtStdParticleBatch *
-RpPrtStdParticleStdUpdateCB(RpPrtStdEmitter *emt,
- RpPrtStdParticleBatch *prtBatch, void *data);
-
-extern RpPrtStdEmitter *
-RpPrtStdEmitterStdEmitCB(RpAtomic *atomic,
- RpPrtStdEmitter *emt, void *data);
-
-extern RpPrtStdEmitter *
-RpPrtStdEmitterStdCreateCB(RpAtomic *atomic,
- RpPrtStdEmitter *emt, void *data);
-
-extern RpPrtStdEmitter *
-RpPrtStdEmitterStdBeginUpdateCB(RpAtomic *atomic,
- RpPrtStdEmitter *emt, void *data);
-
-extern RpPrtStdEmitter *
-RpPrtStdEmitterStdEndUpdateCB(RpAtomic *atomic,
- RpPrtStdEmitter *emt, void *data);
-
-extern RpPrtStdEmitter *
-RpPrtStdEmitterStdRenderCB(RpAtomic *atomic,
- RpPrtStdEmitter *emt, void *data);
-
-extern RpPrtStdEmitter *
-RpPrtStdEmitterStdStreamReadCB(RpAtomic *atomic,
- RpPrtStdEmitter *emt, void *data);
-
-extern RpPrtStdEmitter *
-RpPrtStdEmitterStdStreamWriteCB(RpAtomic *atomic,
- RpPrtStdEmitter *emt, void *data);
-
-extern RpPrtStdEmitter *
-RpPrtStdEmitterStdStreamGetSizeCB(RpAtomic *atomic,
- RpPrtStdEmitter *emt, void *data);
-
-
-
-extern RpPrtStdEmitterClass *
-RpPrtStdEClassStdCreate( RwInt32 dataFlag );
-
-extern RwInt32
-RpPrtStdEClassStdCreateID( RwInt32 dataFlag );
-
-extern RpPrtStdParticleClass *
-RpPrtStdPClassStdCreate( RwInt32 dataFlag );
-
-extern RwInt32
-RpPrtStdPClassStdCreateID( RwInt32 dataFlag );
-
-extern RpPrtStdEmitterClass *
-RpPrtStdEClassStdSetupCB(RpPrtStdEmitterClass *eClass);
-
-extern RpPrtStdParticleClass *
-RpPrtStdPClassStdSetupCB(RpPrtStdParticleClass *pClass);
-
-
-#ifdef __cplusplus
-}
-#endif /* __cplusplus */
-
-/*---- end: ./prtstd.h----*/
-
-/*---- start: c:/daily/rwsdk/plugin/prtstd/d3d8/prtstdplatform.h----*/
-/*---- end: c:/daily/rwsdk/plugin/prtstd/d3d8/prtstdplatform.h----*/
-
-#endif /* RPPRTSTD_H */
-
-
diff --git a/rwsdk/include/d3d8/rpprtstd.rpe b/rwsdk/include/d3d8/rpprtstd.rpe
deleted file mode 100644
index df860d45..00000000
--- a/rwsdk/include/d3d8/rpprtstd.rpe
+++ /dev/null
@@ -1,639 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-enum e_rwdb_CriterionParticleStandard
-{
-
-
-
- e_rwdb_CriterionParticleStandardLAST = RWFORCEENUMSIZEINT
-};
-
-typedef enum e_rwdb_CriterionParticleStandard e_rwdb_CriterionParticleStandard;
-
-
diff --git a/rwsdk/include/d3d8/rpptank.h b/rwsdk/include/d3d8/rpptank.h
deleted file mode 100644
index 20931f21..00000000
--- a/rwsdk/include/d3d8/rpptank.h
+++ /dev/null
@@ -1,781 +0,0 @@
-
-#ifndef RPPTANK_H
-#define RPPTANK_H
-
-/*===========================================================================*
- *--- Include files ---------------------------------------------------------*
- *===========================================================================*/
-
-#include "rwcore.h"
-#include "rpworld.h"
-
-/*---- start: ./ptank.h----*/
-
-/**
- * \defgroup rpptank RpPTank
- * \ingroup rpplugin
- *
- * PTank Plugin for RenderWare.
- */
-
-/*--- Include files ---*/
-#include <string.h>
-
-#include "rwcore.h"
-
-#include "rpptank.rpe" /* automatically generated header file */
-
-/******************************************************************************
- * Global Types
- */
-
-/**
- * \ingroup rpptank
- * Passed to \ref RpPTankAtomicCreate, these flags specify
- * the type and properties held by the particles.
- * Some flags are mutually exclusive and should not be mixed.
- * The debug version of the library will assert and signal these problems.
- */
-enum RpPTankDataFlags
-{
- rpPTANKDFLAGNONE = ((int)0x00000000),
- rpPTANKDFLAGPOSITION = ((int)0x00000001), /**<Uses a position per particle*/
- rpPTANKDFLAGCOLOR = ((int)0x00000002), /**<Uses a color per particle*/
- rpPTANKDFLAGSIZE = ((int)0x00000004), /**<Uses a size per particle*/
- rpPTANKDFLAGMATRIX = ((int)0x00000008), /**<Uses a matrix per particle*/
- rpPTANKDFLAGNORMAL = ((int)0x00000010), /**<Uses a normal per particle*/
- rpPTANKDFLAG2DROTATE = ((int)0x00000020), /**<Uses a 2D rotation per particle*/
- rpPTANKDFLAGVTXCOLOR = ((int)0x00000040), /**<Uses a color per Billboard vertex*/
- rpPTANKDFLAGVTX2TEXCOORDS = ((int)0x00000080), /**<Uses Top-Left and Bottom-Right Texture coordinates*/
- rpPTANKDFLAGVTX4TEXCOORDS = ((int)0x00000100), /**<Uses a texture UV per vertex*/
-/* free = ((int)0x00000200), */
-/* free = ((int)0x00000400), */
-/* free = ((int)0x00000800), */
-/* free = ((int)0x00001000), */
-/* free = ((int)0x00002000), */
-/* free = ((int)0x00004000), */
- rpPTANKDFLAGCNSMATRIX = ((int)0x00008000), /**<Uses a constant matrix*/
- rpPTANKDFLAGCNSNORMAL = ((int)0x00010000), /**<Uses a constant normal*/
- rpPTANKDFLAGCNS2DROTATE = ((int)0x00020000), /**<Uses a constant 2D rotation*/
- rpPTANKDFLAGCNSVTXCOLOR = ((int)0x00040000), /**<Uses a constant color per Billboard vertex*/
- rpPTANKDFLAGCNSVTX2TEXCOORDS = ((int)0x00080000), /**<Uses constant Top-Left and Bottom-Right Texture coordinates*/
- rpPTANKDFLAGCNSVTX4TEXCOORDS = ((int)0x00100000), /**<Uses a constant texture UV per vertex*/
-/* free = ((int)0x00200000), */
-/* free = ((int)0x00400000), */
-/* free = ((int)0x00800000), */
- rpPTANKDFLAGUSECENTER = ((int)0x01000000), /**<The position of the particles are shifted*/
-/* free = ((int)0x04000000), */
-/* free = ((int)0x08000000), */
- rpPTANKDFLAGARRAY = ((int)0x10000000), /**<Data is organized in an array */
- rpPTANKDFLAGSTRUCTURE = ((int)0x20000000), /**<Data is organized in a structure */
-
- RPPTANKDATAFLAGSFORCEENUMSIZEINT = RWFORCEENUMSIZEINT
-};
-typedef enum RpPTankDataFlags RpPTankDataFlags;
-
-#define rpPTANKDFLAGTHINPARTICLES (rpPTANKDFLAGPOSITION)
-#define rpPTANKDFLAGFATPARTICLES ( rpPTANKDFLAGPOSITION | rpPTANKDFLAGSIZE \
- | rpPTANKDFLAG2DROTATE | rpPTANKDFLAGVTXCOLOR \
- | rpPTANKDFLAGVTX4TEXCOORDS)
-
-
-/**
- * \ingroup rpptank
- * Passed to \ref RpPTankAtomicLock, these flags specify
- * the data accessed.
- * those flags are mutually exclusive and should not be mixed.
- */
-enum RpPTankDataLockFlags
-{
- rpPTANKLFLAGNONE = ((int)0x00000000),
- rpPTANKLFLAGPOSITION = ((int)0x00000001), /**<Access the positions buffer*/
- rpPTANKLFLAGCOLOR = ((int)0x00000002), /**<Access the colors buffer*/
- rpPTANKLFLAGSIZE = ((int)0x00000004), /**<Access the sizes buffer*/
- rpPTANKLFLAGMATRIX = ((int)0x00000008), /**<Access the matrixes buffer*/
- rpPTANKLFLAGNORMAL = ((int)0x00000010), /**<Access the normals buffer*/
- rpPTANKLFLAG2DROTATE = ((int)0x00000020), /**<Access the 2D rotations buffer*/
- rpPTANKLFLAGVTXCOLOR = ((int)0x00000040), /**<Access the colors buffer (when using a color per vertex) */
- rpPTANKLFLAGVTX2TEXCOORDS = ((int)0x00000080), /**<Access the Top-Left and Bottom-Right Texture coordinates buffer*/
- rpPTANKLFLAGVTX4TEXCOORDS = ((int)0x00000100), /**<Access the texture UVs Buffer (when using a color per vertex)*/
-
- RPPTANKLOCKFLAGSFORCEENUMSIZEINT = RWFORCEENUMSIZEINT
-};
-typedef enum RpPTankDataLockFlags RpPTankDataLockFlags;
-
-
-#if (!defined(DOXYGEN))
-
-/**
- * \ingroup rpptank
- * RpPTankInstanceFlags
- */
-enum RpPTankInstanceFlags
-{
- rpPTANKIFLAGNONE = ((int)0x00000000),
- rpPTANKIFLAGPOSITION = ((int)0x00000001), /**<Particles position changed*/
- rpPTANKIFLAGCOLOR = ((int)0x00000002), /**<Particles color changed*/
- rpPTANKIFLAGSIZE = ((int)0x00000004), /**<Particles size changed*/
- rpPTANKIFLAGMATRIX = ((int)0x00000008), /**<Particles matrix changed*/
- rpPTANKIFLAGNORMAL = ((int)0x00000010), /**<Particles normal changed*/
- rpPTANKIFLAG2DROTATE = ((int)0x00000020), /**<Particles 2D rotation changed*/
- rpPTANKIFLAGVTXCOLOR = ((int)0x00000040), /**<Vertex color changed*/
- rpPTANKIFLAGVTX2TEXCOORDS = ((int)0x00000080), /**<Vertex 2 Texture coordinates changed*/
- rpPTANKIFLAGVTX4TEXCOORDS = ((int)0x00000100), /**<Vertex 4 Texture coordinates changed*/
-/* free = ((int)0x00000200), */
-/* free = ((int)0x00000400), */
-/* free = ((int)0x00000800), */
-/* free = ((int)0x00001000), */
- rpPTANKIFLAGCNSCOLOR = ((int)0x00002000), /**<Constant color changed*/
- rpPTANKIFLAGCNSSIZE = ((int)0x00004000), /**<Constant size changed*/
- rpPTANKIFLAGCNSMATRIX = ((int)0x00008000), /**<Constant matrix changed*/
- rpPTANKIFLAGCNSNORMAL = ((int)0x00010000), /**<Constant normal changed*/
- rpPTANKIFLAGCNS2DROTATE = ((int)0x00020000), /**<Constant 2D rotation changed*/
- rpPTANKIFLAGCNSVTXCOLOR = ((int)0x00040000), /**<Constant vertex color changed*/
- rpPTANKIFLAGCNSVTX2TEXCOORDS = ((int)0x00080000), /**<Constant vertex 2 Texture coordinates changed*/
- rpPTANKIFLAGCNSVTX4TEXCOORDS = ((int)0x00100000), /**<Constant vertex 4 Texture coordinates changed*/
-/* free = ((int)0x00200000), */
-/* free = ((int)0x00400000), */
- rpPTANKIFLAGACTNUMCHG = ((int)0x00800000), /**<Number of active particle changed*/
- rpPTANKIFLAGCENTER = ((int)0x01000000), /**<Center position changed*/
-/* free = ((int)0x04000000), */
-/* free = ((int)0x08000000), */
-/* free = ((int)0x10000000), */
- rpPTANKIFLAGALL = ((int)0xFFFFFFFF),
-
- RPPTANKINSTANCEFLAGSFORCEENUMSIZEINT = RWFORCEENUMSIZEINT
-};
-
-typedef enum RpPTankInstanceFlags RpPTankInstanceFlags;
-
-#endif
-
-/**
- * \ingroup rpptank
- * Passed to \ref RpPTankAtomicLock to specify the type of access needed.
- *
- * Accessing data using \ref rpPTANKLOCKWRITE will force the PTank object to reinstance
- * the rendered data. The instantiation of this data takes place at rendering
- * time and is done once per frame.
- */
-enum RpPTankLockFlags
-{
- rpPTANKLOCKWRITE = ((int)0x40000000), /**<Lock data for writing. */
- rpPTANKLOCKREAD = ((int)0x80000000) /**<Lock data for reading. */
-};
-
-typedef enum RpPTankLockFlags RpPTankLockFlags;
-
-typedef struct RpPTankLockStruct RpPTankLockStruct;
-
-/**
- * \ingroup rpptank
- * \struct RpPTankLockStruct
- * Returned by \ref RpPTankAtomicLock
- */
-struct RpPTankLockStruct{
- RwUInt8 *data; /**<Pointer to the locked data. */
- RwInt32 stride; /**<Stride of the data accessed. */
-};
-
-typedef struct RpPTankFormatDescriptor RpPTankFormatDescriptor;
-
-/**
- * \ingroup rpptank
- * \struct RpPTankFormatDescriptor
- * Returned by \ref RpPTankAtomicGetDataFormat
- */
-struct RpPTankFormatDescriptor
-{
- RwInt32 numClusters; /**<Number of clusters */
- RwInt32 stride; /**<Size of a single structure when using
- * structure organization, 0 otherwise */
- RwInt32 dataFlags; /**<flags passed to \ref RpPTankAtomicCreate */
-};
-
-#if (!defined(DOXYGEN))
-
-typedef struct RpPTankData RpPTankData;
-
-struct RpPTankData
-{
- void *data; /* PI data array
- * in the A form :
- * Point to the ptrList table
- * in the S form :
- * point to the structure
- *
- */
- RpPTankLockStruct clusters[9];
-
- void *userData; /* void pointer for platform use */
-
- RpPTankFormatDescriptor format;
-
- /* constant values */
- RwUInt32 srcBlend;
- RwUInt32 dstBlend;
- RwBool vertexAlphaBlend;
-
- RwV2d cCenter;
- RwV2d cSize;
- RwReal cRotate;
- RwRGBA cColor;
- RwRGBA cVtxColor[4];
- RwTexCoords cUV[4];
- RwMatrix cMatrix;
-};
-
-
-
-
-/* data piece size */
-extern const RwInt32 datasize[];
-
-#define RPPTANKSIZEPOSITION 0
-#define RPPTANKSIZEMATRIX 1
-#define RPPTANKSIZENORMAL 2
-#define RPPTANKSIZESIZE 3
-#define RPPTANKSIZECOLOR 4
-#define RPPTANKSIZEVTXCOLOR 5
-#define RPPTANKSIZE2DROTATE 6
-#define RPPTANKSIZEVTX2TEXCOORDS 7
-#define RPPTANKSIZEVTX4TEXCOORDS 8
-
-
-/**
- * \ingroup rpptank
- * \typedef rpptankAllocCallBack
- * ...
- */
-typedef void *(* rpPTankAllocCallBack)(RpPTankData *ptankGlobal,
- RwInt32 maxPCount,
- RwUInt32 dataFlags,
- RwUInt32 platFlags);
-
-/**
- * \ingroup rpptank
- * \typedef rpPTankCreateCallBack
- * ...
- */
-typedef RwBool (* rpPTankCreateCallBack)(RpAtomic *atomic,
- RpPTankData *ptankGlobal,
- RwInt32 maxPCount,
- RwUInt32 dataFlags,
- RwUInt32 platFlags);
-
-/**
- * \ingroup rpptank
- * \typedef rpPTankInstanceCallBack
- * ...
- */
-typedef RwBool (* rpPTankInstanceCallBack)(RpAtomic *atomic,
- RpPTankData *ptankGlobal,
- RwInt32 actPCount,
- RwUInt32 instFlags);
-
-/**
- * \ingroup rpptank
- * \typedef rpPTankRenderCallBack
- * ...
- */
-typedef RwBool (* rpPTankRenderCallBack)(RpAtomic *atomic,
- RpPTankData *ptankGlobal,
- RwInt32 actPCount);
-
-typedef struct rpPTankCallBacks rpPTankCallBacks;
-
-struct rpPTankCallBacks
-{
- rpPTankAllocCallBack alloc;
- rpPTankCreateCallBack create;
- rpPTankInstanceCallBack instance;
- rpPTankRenderCallBack render;
-};
-
-/* private typedefs */
-typedef struct rpPTANKInstanceSetupData rpPTANKInstanceSetupData;
-
-struct rpPTANKInstanceSetupData
-{
- RwBool instancePositions;
- RwBool instanceUVs;
- RwBool instanceColors;
- RwBool instanceNormals;
-
- RpPTankLockStruct positionOut;
- RpPTankLockStruct UVOut;
- RpPTankLockStruct colorsOut;
- RpPTankLockStruct normalsOut;
-
- RwV3d right;
- RwV3d up;
-
-};
-
-typedef void (* rpPTankGENInstancePosCallback)(
- RpPTankLockStruct *dstCluster,
- RwV3d *right,
- RwV3d *up,
- RwInt32 pCount,
- RpPTankData *ptankGlobal);
-
-typedef void (* rpPTankGENInstanceCallback)(
- RpPTankLockStruct *dstCluster,
- RwInt32 pCount,
- RpPTankData *ptankGlobal);
-
-typedef void (* rpPTankGENInstanceSetupCallback)(
- rpPTANKInstanceSetupData *data,
- RpAtomic *atomic,
- RpPTankData *ptankGlobal,
- RwInt32 actPCount,
- RwUInt32 instFlags);
-
-typedef void (* rpPTankGENInstanceEndingCallback)(
- rpPTANKInstanceSetupData *data,
- RpAtomic *atomic,
- RpPTankData *ptankGlobal,
- RwInt32 actPCount,
- RwUInt32 instFlags);
-
-typedef struct RpPTankAtomicExtPrv RpPTankAtomicExtPrv;
-
-struct RpPTankAtomicExtPrv
-{
- RwInt32 maxPCount; /* max number of particles */
- RwInt32 actPCount; /* number of actives particles */
-
- RwBool isAStructure; /* is in a structure of array form */
- void *rawdata; /* unaligned pointer to the PI data */
-
- /* Rendering callback */
- RpAtomicCallBackRender defaultRenderCB;
-
- rpPTankCallBacks ptankCallBacks;
-
- /* Instancing CallBacks */
- rpPTankGENInstanceSetupCallback insSetupCB;
- rpPTankGENInstancePosCallback insPosCB;
- rpPTankGENInstanceCallback insUVCB;
- rpPTankGENInstanceCallback insColorsCB;
- rpPTankGENInstanceCallback insNormalsCB;
- rpPTankGENInstanceEndingCallback insEndingCB;
-
- RwUInt32 lockFlags;
- RwUInt32 instFlags;
- RwUInt32 platFlags;
-
- RpPTankData publicData;
-};
-
-/*--- Plugin API Functions ---*/
-
-#ifdef __cplusplus
-extern "C"
-{
-#endif /* __cplusplus */
-
-/* private globals */
-extern RwInt32 _rpPTankAtomicDataOffset; /* Offset in RpAtomic */
-
-extern RwInt32 _rpPTankGlobalsOffset; /* Offset in RwEngine */
-
-/* Macro tools */
-#define RPATOMICPTANKPLUGINDATA(atomic) \
- (*RWPLUGINOFFSET(RpPTankAtomicExtPrv *, (atomic), _rpPTankAtomicDataOffset))
-
-#define GLOBALPTANKPLUGINDATA() \
- (*RWPLUGINOFFSET(void *, RwEngineInstance, _rpPTankGlobalsOffset))
-
-#endif
-
-
-
-extern RwBool
-RpPTankPluginAttach(void);
-
-
-/*
- * PTank Management API ******************************************************
- */
-
-extern RpAtomic *
-RpPTankAtomicCreate(RwInt32 maxParticleNum,
- RwUInt32 dataFlags,
- RwUInt32 platFlags);
-
-extern void
-RpPTankAtomicDestroy(RpAtomic *ptank);
-
-extern RwBool
-RpAtomicIsPTank(RpAtomic *atomic);
-
-extern const RpPTankFormatDescriptor *
-RpPTankAtomicGetDataFormat(RpAtomic *atomic);
-
-/*
- * Particles Management API **************************************************
- */
-
-#define RpPTankAtomicGetActiveParticlesCountMacro(_atm)\
- (RPATOMICPTANKPLUGINDATA(_atm)->actPCount)
-
-#define RpPTankAtomicGetMaximumParticlesCountMacro(_atm)\
- (RPATOMICPTANKPLUGINDATA(_atm)->maxPCount)
-
-#define RpPTankAtomicSetActiveParticlesCountMacro(atm_,cnt_)\
-MACRO_START\
-{\
- RPATOMICPTANKPLUGINDATA(atm_)->instFlags |= rpPTANKIFLAGACTNUMCHG;\
- RPATOMICPTANKPLUGINDATA(atm_)->actPCount = cnt_;\
-}\
-MACRO_STOP
-
-#define RpPTankAtomicSetTextureMacro(atm_, tex_)\
-MACRO_START\
-{\
-RpMaterialSetTexture(RpGeometryGetMaterial(RpAtomicGetGeometry(atm_),0), tex_);\
-}\
-MACRO_STOP
-
-#define RpPTankAtomicGetTextureMacro(atm_)\
- (RpMaterialGetTexture(RpGeometryGetMaterial(RpAtomicGetGeometry(atm_),0)))
-
-#define RpPTankAtomicGetMaterialMacro(atm_)\
- (RpGeometryGetMaterial(RpAtomicGetGeometry(atm_),0))
-
-#define RpPTankAtomicSetBlendModesMacro(atm_,src_,dst_)\
-MACRO_START\
-{\
- RPATOMICPTANKPLUGINDATA(atm_)->publicData.srcBlend = src_;\
- RPATOMICPTANKPLUGINDATA(atm_)->publicData.dstBlend = dst_;\
-}\
-MACRO_STOP
-
-#define RpPTankAtomicGetBlendModesMacro(atm_,src_,dst_)\
-MACRO_START\
-{\
- *src_ =\
- (RwBlendFunction)(RPATOMICPTANKPLUGINDATA(atm_)->publicData.srcBlend);\
- *dst_ =\
- (RwBlendFunction)(RPATOMICPTANKPLUGINDATA(atm_)->publicData.dstBlend);\
-}\
-MACRO_STOP
-
-#define RpPTankAtomicSetVertexAlphaMacro(atm_, vas_)\
-MACRO_START\
-{\
- RPATOMICPTANKPLUGINDATA(atm_)->publicData.vertexAlphaBlend = vas_;\
-}\
-MACRO_STOP
-
-#define RpPTankAtomicGetVertexAlphaMacro(atm_)\
- (RPATOMICPTANKPLUGINDATA(atm_)->publicData.vertexAlphaBlend)
-
-#define RpPTankAtomicSetConstantCenterMacro(atm_, ctr_)\
-MACRO_START\
-{\
- RPATOMICPTANKPLUGINDATA(atm_)->publicData.cCenter = *ctr_;\
- RPATOMICPTANKPLUGINDATA(atm_)->instFlags |= rpPTANKIFLAGCENTER;\
-}\
-MACRO_STOP
-
-#define RpPTankAtomicGetConstantCenterMacro(atm_)\
- (&(RPATOMICPTANKPLUGINDATA(atm_)->publicData.cCenter))
-
-
-#define RpPTankAtomicSetConstantSizeMacro(atm_, size_)\
-MACRO_START\
-{\
- RPATOMICPTANKPLUGINDATA(atm_)->publicData.cSize = *size_;\
- RPATOMICPTANKPLUGINDATA(atm_)->instFlags |= rpPTANKIFLAGCNSSIZE;\
-}\
-MACRO_STOP
-
-#define RpPTankAtomicGetConstantSizeMacro(atm_)\
- (&RPATOMICPTANKPLUGINDATA(atm_)->publicData.cSize)
-
-#define RpPTankAtomicSetConstantRotateMacro(atm_, rot_)\
-MACRO_START\
-{\
- RPATOMICPTANKPLUGINDATA(atm_)->publicData.cRotate = rot_;\
- RPATOMICPTANKPLUGINDATA(atm_)->instFlags |= rpPTANKIFLAGCNS2DROTATE;\
-}\
-MACRO_STOP
-
-#define RpPTankAtomicGetConstantRotateMacro(atm_)\
- (RPATOMICPTANKPLUGINDATA(atm_)->publicData.cRotate)
-
-#define RpPTankAtomicSetConstantMatrixMacro(atm_, mtx_)\
-MACRO_START\
-{\
- RwMatrixCopy(&(RPATOMICPTANKPLUGINDATA(atm_)->publicData.cMatrix),mtx_);\
- RPATOMICPTANKPLUGINDATA(atm_)->instFlags |= rpPTANKIFLAGCNSMATRIX;\
-}\
-MACRO_STOP
-
-#define RpPTankAtomicGetConstantMatrixMacro(atm_)\
- (&(RPATOMICPTANKPLUGINDATA(atm_)->publicData.cMatrix))
-
-#define RpPTankAtomicSetConstantColorMacro(atm_, col_)\
-MACRO_START\
-{\
- RPATOMICPTANKPLUGINDATA(atm_)->publicData.cColor = *col_;\
- if( RpGeometryGetMaterial(RpAtomicGetGeometry(atm_),0) )\
- {\
- RpMaterialSetColor(\
- RpGeometryGetMaterial(RpAtomicGetGeometry(atm_),0),\
- &RPATOMICPTANKPLUGINDATA(atm_)->publicData.cColor);\
- }\
- RPATOMICPTANKPLUGINDATA(atm_)->instFlags |= rpPTANKIFLAGCNSCOLOR;\
-}\
-MACRO_STOP
-
-#define RpPTankAtomicGetConstantColorMacro(atm_)\
- (&(RPATOMICPTANKPLUGINDATA(atm_)->publicData.cColor))
-
-#define RpPTankAtomicSetConstantVtxColorMacro(atm_, col_)\
-MACRO_START\
-{\
- memcpy(RPATOMICPTANKPLUGINDATA(atm_)->publicData.cVtxColor,\
- col_,\
- sizeof(RwRGBA)*4);\
- RPATOMICPTANKPLUGINDATA(atm_)->instFlags |= rpPTANKIFLAGCNSVTXCOLOR;\
-}\
-MACRO_STOP
-
-#define RpPTankAtomicGetConstantVtxColorMacro(atm_)\
- (RPATOMICPTANKPLUGINDATA(atm_)->publicData.cVtxColor)
-
-#define RpPTankAtomicSetConstantVtx2TexCoordsMacro(atm_, uv_)\
-MACRO_START\
-{\
- memcpy(RPATOMICPTANKPLUGINDATA(atm_)->publicData.cUV,\
- uv_,\
- sizeof(RwTexCoords)*2);\
- RPATOMICPTANKPLUGINDATA(atm_)->instFlags |= rpPTANKIFLAGCNSVTX2TEXCOORDS;\
-}\
-MACRO_STOP
-
-#define RpPTankAtomicGetConstantVtx2TexCoordsMacro(atm_)\
- (RPATOMICPTANKPLUGINDATA(atm_)->publicData.cUV)
-
-#define RpPTankAtomicSetConstantVtx4TexCoordsMacro(atm_, uv_)\
-MACRO_START\
-{\
- memcpy(RPATOMICPTANKPLUGINDATA(atm_)->publicData.cUV,\
- uv_,\
- sizeof(RwTexCoords)*4);\
- RPATOMICPTANKPLUGINDATA(atm_)->instFlags |= rpPTANKIFLAGCNSVTX4TEXCOORDS;\
-}\
-MACRO_STOP
-
-#define RpPTankAtomicGetConstantVtx4TexCoordsMacro(atm_)\
- (RPATOMICPTANKPLUGINDATA(atm_)->publicData.cUV)
-
-#if (defined(RWDEBUG) || defined(RWSUPPRESSINLINE))
-extern RwInt32
-RpPTankAtomicGetActiveParticlesCount(RpAtomic *atomic);
-
-extern RwInt32
-RpPTankAtomicGetMaximumParticlesCount(RpAtomic *atomic);
-
-extern void
-RpPTankAtomicSetActiveParticlesCount(RpAtomic *atomic, RwInt32 count);
-
-extern void
-RpPTankAtomicSetTexture(RpAtomic *atomic, RwTexture *texture);
-
-extern RwTexture *
-RpPTankAtomicGetTexture(RpAtomic *atomic);
-
-extern RpAtomic *
-RpPTankAtomicSetMaterial(RpAtomic *atomic, RpMaterial *material);
-
-extern RpMaterial *
-RpPTankAtomicGetMaterial(RpAtomic *atomic);
-
-extern void
-RpPTankAtomicSetBlendModes(RpAtomic *atomic,
- RwBlendFunction srcBlendMode,
- RwBlendFunction dstBlendMode );
-
-extern void
-RpPTankAtomicGetBlendModes(RpAtomic *atomic,
- RwBlendFunction *srcBlendMode,
- RwBlendFunction *dstBlendMode );
-
-extern void
-RpPTankAtomicSetVertexAlpha(RpAtomic *atomic, RwBool vtxAlphaState);
-
-extern RwBool
-RpPTankAtomicGetVertexAlpha(RpAtomic *atomic);
-
-extern void
-RpPTankAtomicSetConstantCenter(RpAtomic *atomic, RwV2d *center);
-
-const RwV2d *
-RpPTankAtomicGetConstantCenter(RpAtomic *atomic);
-
-extern void
-RpPTankAtomicSetConstantSize(RpAtomic *atomic, RwV2d *size);
-
-extern const RwV2d *
-RpPTankAtomicGetConstantSize(RpAtomic *atomic);
-
-extern void
-RpPTankAtomicSetConstantRotate(RpAtomic *atomic, RwReal rotate);
-
-extern RwReal
-RpPTankAtomicGetConstantRotate(RpAtomic *atomic);
-
-extern void
-RpPTankAtomicSetConstantMatrix(RpAtomic *atomic, RwMatrix *matrix);
-
-extern const RwMatrix *
-RpPTankAtomicGetConstantMatrix(RpAtomic *atomic);
-
-extern void
-RpPTankAtomicSetConstantColor(RpAtomic *atomic, RwRGBA *color);
-
-extern const RwRGBA *
-RpPTankAtomicGetConstantColor(RpAtomic *atomic);
-
-extern void
-RpPTankAtomicSetConstantVtxColor(RpAtomic *atomic, RwRGBA *color);
-
-extern const RwRGBA *
-RpPTankAtomicGetConstantVtxColor(RpAtomic *atomic);
-
-extern void
-RpPTankAtomicSetConstantVtx2TexCoords(RpAtomic *atomic, RwTexCoords *UVs);
-
-extern const RwTexCoords *
-RpPTankAtomicGetConstantVtx2TexCoords(RpAtomic *atomic);
-
-extern void
-RpPTankAtomicSetConstantVtx4TexCoords(RpAtomic *atomic, RwTexCoords *UVs);
-
-extern const RwTexCoords *
-RpPTankAtomicGetConstantVtx4TexCoords(RpAtomic *atomic);
-#else
-
-#define RpPTankAtomicGetActiveParticlesCount(atm_)\
- RpPTankAtomicGetActiveParticlesCountMacro(atm_)
-
-#define RpPTankAtomicGetMaximumParticlesCount(atm_)\
- RpPTankAtomicGetMaximumParticlesCountMacro(atm_)
-
-#define RpPTankAtomicSetActiveParticlesCount(atm_,cnt_)\
- RpPTankAtomicSetActiveParticlesCountMacro(atm_,cnt_)
-
-
-#define RpPTankAtomicSetTexture(atm_,tex_)\
- RpPTankAtomicSetTextureMacro(atm_,tex_)
-
-#define RpPTankAtomicGetTexture(atm_)\
- RpPTankAtomicGetTextureMacro(atm_)
-
-extern RpAtomic *
-RpPTankAtomicSetMaterial(RpAtomic *atomic, RpMaterial *material);
-
-#define RpPTankAtomicGetMaterial(atm_)\
- RpPTankAtomicGetMaterialMacro(atm_)
-
-#define RpPTankAtomicSetBlendModes(atm_,src_,dst_)\
- RpPTankAtomicSetBlendModesMacro(atm_,src_,dst_)
-
-#define RpPTankAtomicGetBlendModes(atm_,src_,dst_)\
- RpPTankAtomicGetBlendModesMacro(atm_,src_,dst_)
-
-#define RpPTankAtomicSetVertexAlpha(atm_, vas_)\
- RpPTankAtomicSetVertexAlphaMacro(atm_, vas_)
-
-#define RpPTankAtomicGetVertexAlpha(atm_)\
- RpPTankAtomicGetVertexAlphaMacro(atm_)
-
-#define RpPTankAtomicSetConstantCenter(atm_, ctr_)\
- RpPTankAtomicSetConstantCenterMacro(atm_, ctr_)
-
-#define RpPTankAtomicGetConstantCenter(atm_)\
- RpPTankAtomicGetConstantCenterMacro(atm_)
-
-#define RpPTankAtomicSetConstantSize(atm_, size_)\
- RpPTankAtomicSetConstantSizeMacro(atm_, size_)
-
-#define RpPTankAtomicGetConstantSize(atm_)\
- RpPTankAtomicGetConstantSizeMacro(atm_)
-
-#define RpPTankAtomicSetConstantRotate(atm_, rot_)\
- RpPTankAtomicSetConstantRotateMacro(atm_, rot_)
-
-#define RpPTankAtomicGetConstantRotate(atm_)\
- RpPTankAtomicGetConstantRotateMacro(atm_)
-
-#define RpPTankAtomicSetConstantMatrix(atm_, mtx_)\
- RpPTankAtomicSetConstantMatrixMacro(atm_, mtx_)
-
-#define RpPTankAtomicGetConstantMatrix(atm_)\
- RpPTankAtomicGetConstantMatrixMacro(atm_)
-
-#define RpPTankAtomicSetConstantColor(atm_, col_)\
- RpPTankAtomicSetConstantColorMacro(atm_, col_)
-
-#define RpPTankAtomicGetConstantColor(atm_)\
- RpPTankAtomicGetConstantColorMacro(atm_)
-
-#define RpPTankAtomicSetConstantVtxColor(atm_, _col)\
- RpPTankAtomicSetConstantVtxColorMacro(atm_, _col)
-
-#define RpPTankAtomicGetConstantVtxColor(atm_)\
- RpPTankAtomicGetConstantVtxColorMacro(atm_)
-
-#define RpPTankAtomicSetConstantVtx2TexCoords(atm_, uv_)\
- RpPTankAtomicSetConstantVtx2TexCoordsMacro(atm_, uv_)
-
-#define RpPTankAtomicGetConstantVtx2TexCoords(atm_)\
- RpPTankAtomicGetConstantVtx2TexCoordsMacro(atm_)\
-
-#define RpPTankAtomicSetConstantVtx4TexCoords(atm_, uv_)\
- RpPTankAtomicSetConstantVtx4TexCoordsMacro(atm_, uv_)
-
-#define RpPTankAtomicGetConstantVtx4TexCoords(atm_)\
- RpPTankAtomicGetConstantVtx4TexCoordsMacro(atm_)
-
-#endif
-
-/*
- * Data access API ***********************************************************
- */
-
-extern RwBool
-RpPTankAtomicLock(RpAtomic *atomic, RpPTankLockStruct *dst,
- RwUInt32 dataFlags, RpPTankLockFlags lockFlag);
-
-extern void *
-RpPTankAtomicLockByIndex(RpAtomic *atomic, RwInt32 idx, RwUInt32 dataFlags, RpPTankLockFlags lockFlag);
-
-extern RpAtomic *
-RpPTankAtomicUnlock(RpAtomic *atomic);
-
-
-#ifdef __cplusplus
-}
-#endif /* __cplusplus */
-
-/*---- end: ./ptank.h----*/
-
-/*---- start: c:/daily/rwsdk/plugin/ptank/d3d8/ptankplatform.h----*/
-
-enum RpPTankD3D8Flags
-{
- rpPTANKD3D8FLAGSUSEPOINTSPRITES = 0x00000001,
-
- rpPTANKD3D8FLAGFORCEENUMSIZEINT = RWFORCEENUMSIZEINT
-};
-
-/*---- end: c:/daily/rwsdk/plugin/ptank/d3d8/ptankplatform.h----*/
-
-#endif /* RPPTANK_H */
-
-
diff --git a/rwsdk/include/d3d8/rpptank.rpe b/rwsdk/include/d3d8/rpptank.rpe
deleted file mode 100644
index 485b5dd8..00000000
--- a/rwsdk/include/d3d8/rpptank.rpe
+++ /dev/null
@@ -1,643 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-enum e_rwdb_CriterionPTank
-{
-
-
-
- e_rwdb_CriterionPTankLAST = RWFORCEENUMSIZEINT
-};
-
-typedef enum e_rwdb_CriterionPTank e_rwdb_CriterionPTank;
-
-
diff --git a/rwsdk/include/d3d8/rppvs.h b/rwsdk/include/d3d8/rppvs.h
deleted file mode 100644
index 29fc2343..00000000
--- a/rwsdk/include/d3d8/rppvs.h
+++ /dev/null
@@ -1,395 +0,0 @@
-/*
- * Potentially Visible Set plug-in
- */
-
-/**********************************************************************
- *
- * file : rppvs.h
- *
- * abstract : handle culling of worldsectors in 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) 2001 Criterion Software Ltd.
- * All Rights Reserved.
- *
- * RenderWare is a trademark of Canon Inc.
- *
- ************************************************************************/
-
-#ifndef _RPPVS_H
-#define _RPPVS_H
-
-/**
- * \defgroup rppvs RpPVS
- * \ingroup rpplugin
- *
- * Geometric Potentially Visible Set Plugin for RenderWare Graphics.
- */
-
-/****************************************************************************
- Defines
- */
-
-typedef RwUInt8 RpPVSVisMap;
-
-#define PVSFROMWORLDSECTOR(sector) \
- ((RpPVS *)(((char *)(sector))+rpPVSGlobals.sectorOffset))
-
-#define WORLDSECTORFROMPVS(pvs) \
- ((RpWorldSector *)(((char *)(pvs))-rpPVSGlobals.sectorOffset))
-
-#define PVSFROMCONSTWORLDSECTOR(sector) \
- ((const RpPVS *)(((const char *)(sector))+rpPVSGlobals.sectorOffset))
-
-
-#define PVSCACHEFROMWORLD(world) \
- ((RpPVSCache *)(((char *)(world))+rpPVSGlobals.worldOffset))
-#define PVSCACHEFROMCONSTWORLD(world) \
- ((const RpPVSCache *)(((const char *)(world))+rpPVSGlobals.worldOffset))
-
-#define PVSVISMAPSETSECTOR(_vismap, _id) \
- (_vismap)[(_id) >> 3] |= (1 << ((_id) & 7))
-
-#define PVSVISMAPUNSETSECTOR(_vismap, _id) \
- (_vismap)[(_id) >> 3] ^= (1 << ((_id) & 7))
-
-#define PVSVISMAPGETSECTOR(_vismap, _id) \
- ((_vismap)[(_id) >> 3] & (1 << ((_id) & 7)))
-
-#define PVSVISMAPLENGTH(_vismaplength, _nosectors) \
- (_vismaplength) = ((_nosectors + 7) >> 3)
-
-
-/* Progress callback message types */
-#define rpPVSPROGRESSSTART 20
-#define rpPVSPROGRESSUPDATE 12
-#define rpPVSPROGRESSEND 22
-
-/**
- * \ingroup rppvs
- * \ref RpPVSProgressCallBack
- * This typedef sets the callback function for sampling within a world sector.
- *
- * \param value A value between 0.0 and 100.0 to represent the percentage completion.
- * \param msg The message may take one of the following:
- *
- * \li rpPVSPROGRESSSTART
- * The PVS creation process is about to start. The argument value is equal to 0.0.
- *
- * \li rpPVSPROGRESSUPDATE
- * The PVS creation process has finished processing a subsection of the world.
- * The argument value is equal to the percentage of the world processed up to this point.
- *
- * \li rpPVSPROGRESSEND
- * The PVS creation process has ended. All world sectors have been processed.
- * The argument value is equal to 100.0.
- *
- * The progress callback may return FALSE to indicate that the generation of PVS data
- * should terminate. Otherwise, return TRUE to continue.
- *
- * The PVS plugin must be attached before using this function.
- *
- *
- */
-typedef RwBool(*RpPVSProgressCallBack) (RwInt32 msg,
- RwReal value);
-
-
-/**
- * \ingroup rppvs
- * \ref RpPVSCallBack
- * This typedef sets the callback function for sampling within a world sector.
- *
- * \param worldSector A pointer to the \ref RpWorldSector being sampled.
- * \param box The bounding box of the region being sampled.
- * \param pData A pointer to private data for the sampling function.
- */
-typedef RpWorldSector *(*RpPVSCallBack) (RpWorldSector * worldSector,
- const RwBBox * box,
- void *pData);
-
-#define RpPVSCallback RpPVSCallBack
-
-typedef struct _RpPVSCallBack _RpPVSCallBack;
-struct _RpPVSCallBack
-{
- RpPVSCallBack callback;
- void *data;
-};
-
-enum _rpPVSPartitionId
-{
- rpNAPVSPARTITIONID = 0,
- rpPVSFRONT,
- rpPVSBACK,
- rpPVSSPLIT,
- rpPVSCOPLANAR,
- rpPVSPARTITIONIDFORCEENUMSIZEINT = RWFORCEENUMSIZEINT
-};
-typedef enum _rpPVSPartitionId _rpPVSPartitionId;
-
-typedef struct _rpPVSPolyList _rpPVSPolyList;
-typedef struct _rpPVSPolyList *_rpPVSPolyListPtr;
-
-typedef struct _rpPVSPoly _rpPVSPoly;
-typedef struct _rpPVSPoly *_rpPVSPolyPtr;
-
-typedef struct _rpPVSPlaneEq _rpPVSPlaneEq;
-struct _rpPVSPlaneEq
-{
- RwReal x;
- RwReal y;
- RwReal z;
- RwReal w;
-
- RwReal l; /* recip of length of the normal */
-
- _rpPVSPartitionId lastresult; /* temp: stores result of last polygon wrt this plane */
-};
-
-typedef struct
-{
- RwInt32 x;
- RwInt32 y;
- RwInt32 z;
-}RwV3i;
-
-typedef struct _rpPVSPolyRecord _rpPVSPolyRecord;
-struct _rpPVSPolyRecord
-{
- RwBool original; /* True if not a fragment */
- RwReal priority; /* Used for sorting, lower values higher priority */
- _rpPVSPolyListPtr parent; /* Unique pointer to original parent */
- _rpPVSPolyPtr geom; /* corners of the poly */
- _rpPVSPlaneEq plane; /* plane equation of the poly */
- RwInt32 home; /* world sector id in range 0..numsectors */
- RpWorldSector *homeaddr; /* world sector pointer */
- RwBool translucent;
-
- RwBool hasbeenclipper; /* Used during WA creation */
-
- /* used by proximity culling, calculated once */
- RwV3d centroid;
- RwReal radius;
- RwV3d extreme; /* the vertex furthest away from the centroid */
-
- RwReal coneRadius; /* Used during clipping only */
-
-};
-
-struct _rpPVSPoly
-{
- RwV3d v;
- _rpPVSPoly *next;
-
- RwInt32 pscalar; /* Used during clipping only */
- RwReal scalar; /* Used during clipping only */
- _rpPVSPlaneEq shadowPlane; /* Used during clipping only */
-};
-
-struct _rpPVSPolyList
-{
- _rpPVSPolyRecord data;
- _rpPVSPolyList *next;
-};
-
-typedef struct RpPVS RpPVS;
-struct RpPVS
-{
- RwInt32 sectorID; /* Id of the sector */
- RwInt32 vismaplength; /* Length of vismap */
- RwInt32 sampleKey; /* Currently unused, for future use */
-
- RpPVSVisMap *vismap;
-
- _rpPVSPolyListPtr sectailpoly; /* Pointer to last polygon in polygons list that is in this sector */
-
- _rpPVSPartitionId potential; /* temp: is sector in out or split from current shadow volume - for heirarchical clip */
- RwUInt32 numpols;
- RwBBox sbox; /* Bounding box of the sector */
- RwBBox gbox; /* Bounding box of the geometry of the sector */
- RwReal diagonal; /* Diagonal size of bounding box of the sector */
- RwV3d centre; /* Centre of the sector */
- RwInt32 axessig[3]; /* sampling significance of the axes of the gbox */
-};
-
-typedef struct RpPVSCache RpPVSCache;
-struct RpPVSCache
-{
- RwBool processed; /* flag to indicate exisiting PVS data for the world */
- RwBool formatted; /* flag to indicate exisiting intermediate polygonal data for PVS generation */
-
- /* stats collection */
- RwInt32 ptotal;
- RwInt32 paccept;
-
- /* pipeline hooking */
- RwBool hooked;
-
- /* used during vismap allocation */
- RwUInt32 nextID;
-
- RwInt32 viscount;
-
- /* Used during construction */
- RpPVSProgressCallBack progressCallBack;
-
- _rpPVSPolyListPtr polygons; /* A copy of the input data set of all world polygons */
-
- RpWorldSectorCallBackRender renderCallBack;
-};
-
-typedef struct RpPVSGlobalVars RpPVSGlobalVars;
-struct RpPVSGlobalVars
-{
- RpWorld *World;
-
- RwInt32 worldOffset; /* Offset into global data */
- RwInt32 sectorOffset; /* Offset into global data */
-
- RwBool collis; /* Collision detection */
- RwBool bfc; /* Backface culling */
-
- RwInt32 NumWorldSectors;
-
- RwInt32 progress_count;
- RwReal diagonal;
-
- RwReal gran;
-
- RwInt32 InSector; /* Current sector id */
- RwV3d ViewPos; /* Current view pos */
- RpPVS *CurrPVS; /* Current PVS sector */
-};
-
-
-/****************************************************************************
- Function prototypes
- */
-
-#ifdef __cplusplus
-extern "C"
-{
-#endif /* __cplusplus */
-
-extern RpPVSGlobalVars rpPVSGlobals;
-
-extern RpWorld *
-RpPVSSetProgressCallBack(RpWorld * wpWorld,
- RpPVSProgressCallBack
- callback);
-
-extern RpWorldSector *
-RpPVSSetViewPosition(RpWorld * wpWorld,
- RwV3d * pos);
-
-extern RpWorldSector *
-RpPVSSetViewSector(RpWorld * wpWorld, RpWorldSector * spSect);
-
-extern RpWorldSector *
-RpPVSSetWorldSectorPairedVisibility(RpWorldSector * spSectA,
- RpWorldSector * spSectB,
- RwBool visible,
- RwBool mutual);
-
-extern RpWorld *
-RpPVSDestroy(RpWorld * wpWorld);
-
-extern RwBool
-RpPVSWorldSectorVisible(RpWorldSector * spSect);
-
-extern RwBool
-RpPVSPluginAttach(void);
-
-extern RwBool
-RpPVSQuery(RpWorld * wpWorld);
-
-extern RwBool
-RpPVSAtomicVisible(RpAtomic * atom);
-
-extern RpWorld *
-RpPVSStatisticsGet(RpWorld * wpWorld,
- RwInt32 * ptotal,
- RwInt32 * paccept);
-
-extern RpPVSProgressCallBack
-RpPVSGetProgressCallBack(RpWorld *
- wpWorld);
-
-extern RpWorld *
-RpPVSConstruct(RpWorld * wpWorld,
- RpPVSCallBack callback,
- void *pData);
-
-extern RpWorld*
-RpPVSConstructSector(RpWorld * wpWorld,
- RpWorldSector * spSector,
- RpPVSCallBack callback,
- void *pData);
-
-
-extern RpWorldSector *
-RpPVSGeneric(RpWorldSector * spSect,
- const RwBBox __RWUNUSED__ * box,
- void *data);
-
-extern RwBool
-RpPVSSetCollisionDetection(RwBool collis);
-
-extern RwBool
-RpPVSSetBackFaceCulling(RwBool bfc);
-
-extern RpWorld *
-RpPVSUnhook(RpWorld * wpWorld);
-
-extern RpWorld *
-RpPVSHook(RpWorld * wpWorld);
-
-extern RpWorldSector *
-RpPVSSetWorldSectorVisibility(RpWorldSector * spSect,
- RwBool visible);
-
-extern RwBool
-RpPVSSamplePOV(RwV3d * pos,
- RwBool colltest);
-
-extern RxNodeDefinition *
-RxNodeDefinitionGetPVSWorldSectorCSL(void);
-
-#ifdef __cplusplus
-}
-#endif /* __cplusplus */
-
-/* These functions are added for backwards compatibility... */
-#define RpPVSCreate(_wpWorld, \
- _raster, _zraster, _mindist, \
- _maxdist, _maxdepth, _callback, _pData) \
- RpPVSConstruct(_wpWorld, _callback, _pData)
-
-#define RpPVSAddPOV(_pos) \
- RpPVSSamplePOV(_pos, FALSE)
-
-#define RpPVSAddWorldSector(_sector) \
- RpPVSSetWorldSectorVisibility(_sector, TRUE)
-
-#define RpPVSAddExtraPOV(_world, _raster, _zraster, _mindist, _mazdist, _matrix) \
-MACRO_START \
-{ \
- rpPVSGlobals.World = (_world); \
- RpPVSSamplePOV(&((_matrix)->pos), TRUE); \
-} \
-MACRO_STOP
-
-
-#endif /* _RPPVS_H */
diff --git a/rwsdk/include/d3d8/rppvs.rpe b/rwsdk/include/d3d8/rppvs.rpe
deleted file mode 100644
index dc060cff..00000000
--- a/rwsdk/include/d3d8/rppvs.rpe
+++ /dev/null
@@ -1,640 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-enum e_rwdb_CriterionGPVS
-{
-
-
-
- e_rwdb_CriterionGPVSLAST = RWFORCEENUMSIZEINT
-};
-
-typedef enum e_rwdb_CriterionGPVS e_rwdb_CriterionGPVS;
-
-
diff --git a/rwsdk/include/d3d8/rprandom.h b/rwsdk/include/d3d8/rprandom.h
deleted file mode 100644
index 8690c69a..00000000
--- a/rwsdk/include/d3d8/rprandom.h
+++ /dev/null
@@ -1,65 +0,0 @@
-/**********************************************************************
- *
- * File : rprandom.h
- *
- * Abstract : Random Number Generator
- *
- **********************************************************************
- *
- * 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) 1998 Criterion Software Ltd.
- * All Rights Reserved.
- *
- * RenderWare is a trademark of Canon Inc.
- *
- ************************************************************************/
-
-#ifndef RPRANDOM_H
-#define RPRANDOM_H
-
-/**
- * \defgroup rprandom RpRandom
- * \ingroup rpplugin
- *
- * Random Number Generation Plugin for RenderWare Graphics.
- */
-
-/*--- Include files ---*/
-#include "rwcore.h"
-
-#include "rprandom.rpe" /* automatically generated header file */
-
-/*--- Plugin API Functions ---*/
-
-#define RPRANDMAX (~((~0)<<31))
-
-#ifdef __cplusplus
-extern "C"
-{
-#endif /* __cplusplus */
-
-RwBool RpRandomPluginAttach(void);
-
-/* Getting values */
-
-extern RwUInt32 RpRandom(void);
-extern void RpRandomSeed(RwUInt32 seed);
-
-extern RwUInt32 RpRandomMT(void);
-extern void RpRandomSeedMT(RwUInt32 seed);
-
-#ifdef __cplusplus
-}
-#endif /* __cplusplus */
-
-#endif /* RPRANDOM_H */
-
diff --git a/rwsdk/include/d3d8/rprandom.rpe b/rwsdk/include/d3d8/rprandom.rpe
deleted file mode 100644
index 8e267eee..00000000
--- a/rwsdk/include/d3d8/rprandom.rpe
+++ /dev/null
@@ -1,638 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-enum e_rwdb_CriterionRandom
-{
-
-
-
- e_rwdb_CriterionRandomLAST = RWFORCEENUMSIZEINT
-};
-
-typedef enum e_rwdb_CriterionRandom e_rwdb_CriterionRandom;
-
-
diff --git a/rwsdk/include/d3d8/rpskin.h b/rwsdk/include/d3d8/rpskin.h
deleted file mode 100644
index df446c1b..00000000
--- a/rwsdk/include/d3d8/rpskin.h
+++ /dev/null
@@ -1,222 +0,0 @@
-
-#ifndef RPSKIN_H
-#define RPSKIN_H
-
-/**
- * \defgroup rpskin RpSkin
- * \ingroup rpplugin
- *
- * Skin Plugin for RenderWare Graphics.
- */
-
-/*===========================================================================*
- *--- Include files ---------------------------------------------------------*
- *===========================================================================*/
-#include "rwcore.h"
-#include "rpworld.h"
-
-#include "rpcriter.h"
-#include "rpskin.rpe"
-
-#include "rphanim.h"
-
-/*===========================================================================*
- *--- Global Types ----------------------------------------------------------*
- *===========================================================================*/
-typedef struct RwMatrixWeights RwMatrixWeights;
-
-/**
- * \ingroup rpskin
- * \struct RwMatrixWeights
- * A structure for defining up to four matrix weights per vertex.
- * Not all entries need to be used.
- *
- * \note
- * Values should be sorted, such that any zero 0.0f entries appear
- * after the valid weights. Any weights that appear after a zero
- * entry will be ignored.
- *
- * \see RpSkinCreate
- */
-struct RwMatrixWeights
-{
- RwReal w0; /**< The first matrix weight. */
- RwReal w1; /**< The second matrix weight. */
- RwReal w2; /**< The third matrix weight. */
- RwReal w3; /**< The fourth matrix weight. */
-};
-
-/**
- * \ingroup rpskin
- * \typedef RpSkin
- *
- * Skin object. This should be considered an opaque type.
- * Use the RpSkin API functions to access.
- *
- * \see RpSkinCreate
- * \see RpSkinDestroy
- */
-typedef struct RpSkin RpSkin;
-
-/*===========================================================================*
- *--- Plugin API Functions --------------------------------------------------*
- *===========================================================================*/
-#ifdef __cplusplus
-extern "C"
-{
-#endif /* __cplusplus */
-
-/*---------------------------------------------------------------------------*
- *- Plugin functions -*
- *---------------------------------------------------------------------------*/
-extern RwBool
-RpSkinPluginAttach(void);
-
-/*---------------------------------------------------------------------------*
- *- Skin Atomic functions -*
- *---------------------------------------------------------------------------*/
-extern RpAtomic *
-RpSkinAtomicSetHAnimHierarchy( RpAtomic *atomic,
- RpHAnimHierarchy *hierarchy );
-
-extern RpHAnimHierarchy *
-RpSkinAtomicGetHAnimHierarchy( const RpAtomic *atomic );
-
-/*---------------------------------------------------------------------------*
- *- Skin Geometry functions -*
- *---------------------------------------------------------------------------*/
-extern RpGeometry *
-RpSkinGeometrySetSkin( RpGeometry *geometry,
- RpSkin *skin );
-
-extern RpSkin *
-RpSkinGeometryGetSkin( RpGeometry *geometry );
-
-extern RpSkin *
-RpSkinCreate( RwUInt32 numVertices,
- RwUInt32 numBones,
- RwMatrixWeights *vertexWeights,
- RwUInt32 *vertexIndices,
- RwMatrix *inverseMatrices );
-
-extern RpSkin *
-RpSkinDestroy( RpSkin *skin );
-
-extern RwUInt32
-RpSkinGetNumBones( RpSkin *skin );
-
-extern const RwMatrixWeights *
-RpSkinGetVertexBoneWeights( RpSkin *skin );
-
-extern const RwUInt32 *
-RpSkinGetVertexBoneIndices( RpSkin *skin );
-
-extern const RwMatrix *
-RpSkinGetSkinToBoneMatrices( RpSkin *skin );
-
-/*---------------------------------------------------------------------------*
- *- Skin pipeline -*
- *---------------------------------------------------------------------------*/
-
-/**
- * \ingroup rpskin
- * \ref RpSkinType defines the different ways a skinned atomic can
- * be rendered. Once a skinned \ref RpGeometry has been attached to
- * an \ref RpAtomic the atomic must be setup with the correct skin
- * rendering pipeline with \ref RpSkinAtomicSetType.
- */
-enum RpSkinType
-{
- rpNASKINTYPE = 0, /**<Invalid skin pipeline. */
- rpSKINTYPEGENERIC = 1, /**<Generic skin rendering. */
- rpSKINTYPEMATFX = 2, /**<Material effects skin rendering. */
- rpSKINTYPETOON = 3, /**<Toon skin rendering. */
- rpSKINTYPEMATFXTOON = 4, /**<Note Toon + MatFX on same object NOT currently supported */
- rpSKINTYPEFORCEENUMSIZEINT = RWFORCEENUMSIZEINT
-};
-typedef enum RpSkinType RpSkinType;
-
-extern RpAtomic *
-RpSkinAtomicSetType( RpAtomic *atomic,
- RpSkinType type );
-
-extern RpSkinType
-RpSkinAtomicGetType( RpAtomic *atomic );
-
-/*---------------------------------------------------------------------------*/
-
-#ifdef __cplusplus
-}
-#endif /* __cplusplus */
-
-/*---------------------------------------------------------------------------*
- *- Backwards macros -*
- *---------------------------------------------------------------------------*/
-
-#define RpSkinAtomicGetSkin(_a) \
- RpSkinGeometryGetSkin(RpAtomicGetGeometry(_a))
-
-/*---------------------------------------------------------------------------*/
-
-/*---- start: ./d3d8/skinplatform.h----*/
-
-/**
- * \defgroup rpskind3d8 D3D8
- * \ingroup rpskin
- *
- * D3D8 skin pipeline extension.
- */
-
-
-/*===========================================================================*
- *--- D3D8 Defines -----------------------------------------------------------*
- *===========================================================================*/
-
-/*===========================================================================*
- *--- D3D8 Global Types ------------------------------------------------------*
- *===========================================================================*/
-
-/**
- * \ingroup rpskind3d8
- * \ref RpSkinD3D8Pipeline rendering pipelines available within
- * the \ref RpSkin plugin. Use \ref RpSkinGetD3D8Pipeline to
- * retrieve the \ref RxPipeline's.
- */
-enum RpSkinD3D8Pipeline
-{
- rpNASKIND3D8PIPELINE = 0,
- rpSKIND3D8PIPELINEGENERIC = 1,
- /**<D3D8 generic skin rendering pipeline. */
- rpSKIND3D8PIPELINEMATFX = 2,
- /**<D3D8 material effect skin rendering pipeline. */
- rpSKIND3D8PIPELINETOON = 3,
- /**<D3D8 toon skin rendering pipeline. */
- rpSKIND3D8PIPELINEMATFXTOON = 4,
- /**<D3D8 toon matfx skin rendering pipeline not supported */
- rpSKIND3D8PIPELINEMAX,
- rpSKIND3D8PIPELINEFORCEENUMSIZEINT = RWFORCEENUMSIZEINT
-};
-typedef enum RpSkinD3D8Pipeline RpSkinD3D8Pipeline;
-
-/*===========================================================================*
- *--- D3D8 Plugin API Functions ----------------------------------------------*
- *===========================================================================*/
-#ifdef __cplusplus
-extern "C"
-{
-#endif /* __cplusplus */
-/*---------------------------------------------------------------------------*/
-
-extern RxPipeline *
-RpSkinGetD3D8Pipeline( RpSkinD3D8Pipeline D3D8Pipeline );
-
-/*---------------------------------------------------------------------------*/
-#ifdef __cplusplus
-}
-#endif /* __cplusplus */
-
-/*---- end: ./d3d8/skinplatform.h----*/
-
-#endif /* RPSKIN_H */
-
-
diff --git a/rwsdk/include/d3d8/rpskin.rpe b/rwsdk/include/d3d8/rpskin.rpe
deleted file mode 100644
index 57cecd5e..00000000
--- a/rwsdk/include/d3d8/rpskin.rpe
+++ /dev/null
@@ -1,638 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-enum e_rwdb_CriterionSKIN
-{
-
-
-
- e_rwdb_CriterionSKINLAST = RWFORCEENUMSIZEINT
-};
-
-typedef enum e_rwdb_CriterionSKIN e_rwdb_CriterionSKIN;
-
-
diff --git a/rwsdk/include/d3d8/rpspline.h b/rwsdk/include/d3d8/rpspline.h
deleted file mode 100644
index 53fd8484..00000000
--- a/rwsdk/include/d3d8/rpspline.h
+++ /dev/null
@@ -1,141 +0,0 @@
-/*
- * 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 rpplugin
- *
- * 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 */
-
-
-
-
-
-
diff --git a/rwsdk/include/d3d8/rpspline.rpe b/rwsdk/include/d3d8/rpspline.rpe
deleted file mode 100644
index 27670751..00000000
--- a/rwsdk/include/d3d8/rpspline.rpe
+++ /dev/null
@@ -1,642 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-enum e_rwdb_CriterionSpline
-{
-
-E_RP_SPLINE_INVNAME,
-E_RP_SPLINE_INVTYPE,
-E_RP_SPLINE_INVCONTROLS,
-E_RP_SPLINE_OPEN,
-E_RP_SPLINE_PLUGINNOTINIT,
-
- e_rwdb_CriterionSplineLAST = RWFORCEENUMSIZEINT
-};
-
-typedef enum e_rwdb_CriterionSpline e_rwdb_CriterionSpline;
-
-
diff --git a/rwsdk/include/d3d8/rpstereo.h b/rwsdk/include/d3d8/rpstereo.h
deleted file mode 100644
index 5a8db912..00000000
--- a/rwsdk/include/d3d8/rpstereo.h
+++ /dev/null
@@ -1,141 +0,0 @@
-/*
- * Stereo camera plugin
- */
-
-/**********************************************************************
- *
- * File : rpstereo.h
- *
- * Abstract : Add Stereo Camera support to 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) 1998 Criterion Software Ltd.
- * All Rights Reserved.
- *
- * RenderWare is a trademark of Canon Inc.
- *
- ************************************************************************/
-
-#ifndef RPSTEREO_H
-#define RPSTEREO_H
-
-/**
- * \defgroup rpstereo RpStereo
- * \ingroup rpplugin
- *
- * Stereo Camera Plugin for RenderWare Graphics.
- */
-
-/*--- Include files ---*/
-#include <rwcore.h>
-#include <rpworld.h>
-
-#include "rpstereo.rpe" /* automatically generated header file */
-
-/*--- Global Structures ---*/
-
-/* Supported Stereo Modes */
-
-/**
- * \ingroup rpstereo
- * \ref RpStereoCameraMode
- * Stereo camera mode enumeration.
- */
-enum RpStereoCameraMode
-{
- rpNASTEREOMODE = 0,
- rpSTEREOMONO, /**< Render as Mono camera - single
- * image
- */
- rpSTEREOLEFTRIGHT, /**< Vertical split screen. Left eye
- * image on left of screen. Right eye
- * image on right of screen.
- */
- rpSTEREORIGHTLEFT, /**< Vertical split screen. Right eye
- * image on left of screen. Left eye image
- * on right of screen.
- */
-
- rpSTEREOROTATE90, /**< As for rpSTEREOLEFTRIGHT - with
- * the images rotated inwards by 90 degrees
- */
- rpSTEREOINTERLACEDLEFTRIGHT, /**< Left and right eye images on
- * alternate scanlines. The left eye image
- * on the topmost line of the display.
- */
-
- rpSTEREOINTERLACEDRIGHTLEFT, /**< Left and right eye images on
- * alternate scanlines. The right eye
- * image is on the topmost line of the
- * display.
- */
- rpSTEREOLASTMODE,
- rpSTEREOCAMERAMODEFORCEENUMSIZEINT = RWFORCEENUMSIZEINT
-};
-
-/*
- * typedef for stereo camera mode enumeration.
- */
-typedef enum RpStereoCameraMode RpStereoCameraMode;
-
-/*--- Constants ---*/
-
-/* These may be used to quickly adapt an existing application to a
- * stereo version.
- */
-
-#ifdef RPSTEREO_OVERLOAD
-#define RwCameraBeginUpdate RpStereoCameraBeginUpdate
-#define RwCameraEndUpdate RpStereoCameraEndUpdate
-#undef RpWorldRender
-#define RpWorldRender RpStereoWorldRender
-#undef RpClumpRender
-#define RpClumpRender RpStereoClumpRender
-#undef RpAtomicRender
-#define RpAtomicRender RpStereoAtomicRender
-#undef RpWorldSectorRender
-#define RpWorldSectorRender RpStereoWorldSectorRender
-#endif
-
-/*--- Plugin API Functions ---*/
-
-#ifdef __cplusplus
-extern "C"
-{
-#endif /* __cplusplus */
-
-RwBool RpStereoPluginAttach(void);
-
-RpWorld *RpStereoWorldRender(RpWorld *world);
-RpClump *RpStereoClumpRender(RpClump *clump);
-RpAtomic *RpStereoAtomicRender(RpAtomic *atomic);
-RpWorldSector *RpStereoWorldSectorRender(RpWorldSector *sector);
-
-RwCamera *RpStereoCameraBeginUpdate(RwCamera *camera);
-RwCamera *RpStereoCameraEndUpdate(RwCamera *stereoCam);
-
-RwReal RpStereoCameraGetSeparation(RwCamera *stereoCam);
-RwReal RpStereoCameraGetFocal(RwCamera *stereoCam);
-RpStereoCameraMode RpStereoCameraGetMode(RwCamera *stereoCam);
-
-RwCamera *RpStereoCameraSetSeparation(RwCamera *stereoCam, RwReal dist);
-RwCamera *RpStereoCameraSetFocal(RwCamera *stereoCam, RwReal focal);
-RwCamera *RpStereoCameraSetMode(RwCamera *stereoCam, RpStereoCameraMode newMode);
-
-#ifdef __cplusplus
-}
-#endif /* __cplusplus */
-
-#endif /* RPSTEREO_H */
-
diff --git a/rwsdk/include/d3d8/rpstereo.rpe b/rwsdk/include/d3d8/rpstereo.rpe
deleted file mode 100644
index b89dde2e..00000000
--- a/rwsdk/include/d3d8/rpstereo.rpe
+++ /dev/null
@@ -1,641 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-enum e_rwdb_CriterionStereo
-{
-
-
-E_RP_STEREO_INVMODE,
-
-E_RP_STEREO_INVFOCAL,
-
- e_rwdb_CriterionStereoLAST = RWFORCEENUMSIZEINT
-};
-
-typedef enum e_rwdb_CriterionStereo e_rwdb_CriterionStereo;
-
-
diff --git a/rwsdk/include/d3d8/rpusrdat.h b/rwsdk/include/d3d8/rpusrdat.h
deleted file mode 100644
index 3665e064..00000000
--- a/rwsdk/include/d3d8/rpusrdat.h
+++ /dev/null
@@ -1,124 +0,0 @@
-#ifndef RPUSERDATAPLUGIN_H
-#define RPUSERDATAPLUGIN_H
-
-/**
- * \defgroup rpuserdata RpUserData
- * \ingroup rpplugin
- *
- * User Data Plugin for RenderWare Graphics.
- */
-
-/*
- * UserData plugin
- */
-
-#include <rwcore.h>
-#include <rpworld.h>
-
-/**
- * \ingroup rpuserdata
- * User data formats
- */
-enum RpUserDataFormat
-{
- rpNAUSERDATAFORMAT = 0,
- rpINTUSERDATA, /**< 32 bit int data */
- rpREALUSERDATA, /**< 32 bit float data */
- rpSTRINGUSERDATA, /**< unsigned byte pointer data */
- rpUSERDATAFORCEENUMSIZEINT = RWFORCEENUMSIZEINT
-};
-typedef enum RpUserDataFormat RpUserDataFormat;
-
-typedef struct RpUserDataArray RpUserDataArray;
-
-/**
- * \ingroup rpuserdata
- * \struct RpUserDataArray
- * A structure representing an array of user data values
- */
-
-struct RpUserDataArray
-{
- RwChar *name; /**< Identifier for this data array */
- RpUserDataFormat format; /**< Data format of this array */
- RwInt32 numElements; /**< Number of elements in this array */
- void *data; /**< Pointer to the array data */
-};
-
-#ifdef __cplusplus
-extern "C"
-{
-#endif
-
-/* Plugin API */
-extern RwBool RpUserDataPluginAttach(void);
-
-/* Geometry API */
-extern RwInt32 RpGeometryAddUserDataArray(RpGeometry *geometry, RwChar *name,
- RpUserDataFormat format, RwInt32 numElements);
-extern RpGeometry *RpGeometryRemoveUserDataArray(RpGeometry *geometry, RwInt32 index);
-extern RpUserDataArray *RpGeometryGetUserDataArray(const RpGeometry *geometry, RwInt32 data);
-extern RwInt32 RpGeometryGetUserDataArrayCount(const RpGeometry *geometry);
-
-/* World Sector API */
-extern RwInt32 RpWorldSectorAddUserDataArray(RpWorldSector *sector, RwChar *name,
- RpUserDataFormat format, RwInt32 numElements);
-extern RpWorldSector *RpWorldSectorRemoveUserDataArray(RpWorldSector *sector, RwInt32 index);
-extern RpUserDataArray *RpWorldSectorGetUserDataArray(const RpWorldSector *sector, RwInt32 data);
-extern RwInt32 RpWorldSectorGetUserDataArrayCount(const RpWorldSector *sector);
-
-/* RwFrame API */
-extern RwInt32 RwFrameAddUserDataArray(RwFrame *frame, RwChar *name,
- RpUserDataFormat format, RwInt32 numElements);
-extern RwFrame *RwFrameRemoveUserDataArray(RwFrame *frame, RwInt32 index);
-extern RpUserDataArray *RwFrameGetUserDataArray(const RwFrame *frame, RwInt32 data);
-extern RwInt32 RwFrameGetUserDataArrayCount(const RwFrame *frame);
-
-/* RwCamera API */
-extern RwInt32 RwCameraAddUserDataArray(RwCamera *camera, RwChar *name,
- RpUserDataFormat format, RwInt32 numElements);
-extern RwCamera *RwCameraRemoveUserDataArray(RwCamera *camera, RwInt32 index);
-extern RpUserDataArray *RwCameraGetUserDataArray(const RwCamera *camera, RwInt32 data);
-extern RwInt32 RwCameraGetUserDataArrayCount(const RwCamera *camera);
-
-/* RpLight API */
-extern RwInt32 RpLightAddUserDataArray(RpLight *light, RwChar *name,
- RpUserDataFormat format, RwInt32 numElements);
-extern RpLight *RpLightRemoveUserDataArray(RpLight *light, RwInt32 index);
-extern RpUserDataArray *RpLightGetUserDataArray(const RpLight *light, RwInt32 data);
-extern RwInt32 RpLightGetUserDataArrayCount(const RpLight *light);
-
-/* RpMaterial API */
-extern RwInt32 RpMaterialAddUserDataArray(RpMaterial *material, RwChar *name,
- RpUserDataFormat format, RwInt32 numElements);
-extern RpMaterial *RpMaterialRemoveUserDataArray(RpMaterial *material, RwInt32 index);
-extern RpUserDataArray *RpMaterialGetUserDataArray(const RpMaterial *material, RwInt32 data);
-extern RwInt32 RpMaterialGetUserDataArrayCount(const RpMaterial *material);
-
-/* RwTexture API */
-extern RwInt32 RwTextureAddUserDataArray(RwTexture *texture, RwChar *name,
- RpUserDataFormat format, RwInt32 numElements);
-extern RwTexture *RwTextureRemoveUserDataArray(RwTexture *texture, RwInt32 index);
-extern RpUserDataArray *RwTextureGetUserDataArray(const RwTexture *texture, RwInt32 data);
-extern RwInt32 RwTextureGetUserDataArrayCount(const RwTexture *texture);
-
-/* User Data Array API */
-extern RwChar *RpUserDataArrayGetName(RpUserDataArray *userData);
-extern RpUserDataFormat RpUserDataArrayGetFormat(RpUserDataArray *userData);
-extern RwInt32 RpUserDataArrayGetNumElements(RpUserDataArray *userData);
-
-extern RwInt32 RpUserDataArrayGetInt(RpUserDataArray *userData, RwInt32 index);
-extern RwReal RpUserDataArrayGetReal(RpUserDataArray *userData, RwInt32 index);
-extern RwChar *RpUserDataArrayGetString(RpUserDataArray *userData, RwInt32 index);
-
-extern void RpUserDataArraySetInt(RpUserDataArray *userData, RwInt32 index, RwInt32 value);
-extern void RpUserDataArraySetReal(RpUserDataArray *userData, RwInt32 index, RwReal value);
-extern void RpUserDataArraySetString(RpUserDataArray *userData, RwInt32 index, RwChar *value);
-
-extern RwInt32 RpUserDataGetFormatSize(RpUserDataFormat format);
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* RPUSERDATAPLUGIN_H */
diff --git a/rwsdk/include/d3d8/rpusrdat.rpe b/rwsdk/include/d3d8/rpusrdat.rpe
deleted file mode 100644
index 31c37fd1..00000000
--- a/rwsdk/include/d3d8/rpusrdat.rpe
+++ /dev/null
@@ -1,639 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-enum e_rwdb_CriterionUserData
-{
-
-
-
- e_rwdb_CriterionUserDataLAST = RWFORCEENUMSIZEINT
-};
-
-typedef enum e_rwdb_CriterionUserData e_rwdb_CriterionUserData;
-
-
diff --git a/rwsdk/include/d3d8/rpworld.h b/rwsdk/include/d3d8/rpworld.h
deleted file mode 100644
index 21fdc31b..00000000
--- a/rwsdk/include/d3d8/rpworld.h
+++ /dev/null
@@ -1,3735 +0,0 @@
-/******************************************/
-/* */
-/* 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) 1999. Criterion Software Ltd.
- * All Rights Reserved.
- */
-
-/*************************************************************************
- *
- * Filename: <C:/daily/rwsdk/include/d3d8/rpworld.h>
- * Automatically Generated on: Wed Jul 10 10:45:01 2002
- *
- ************************************************************************/
-
-#ifndef RPWORLD_H
-#define RPWORLD_H
-
-/*--- Check For Previous Required Includes ---*/
-#ifndef RWCORE_H
-#error "Include RWCORE.H before including this file"
-#endif /* RWCORE_H */
-
-/*--- System Header Files ---*/
-#include <stdarg.h>
-#include <stdlib.h>
-
-/*--- Error enumerations ---*/
-#include "rpworld.rpe"
-
-
-/*--- Automatically derived from: C:/daily/rwsdk/world/pipe/p2/d3d8/native.h ---*/
-
-/*--- Automatically derived from: C:/daily/rwsdk/world/pipe/p2/d3d8/wrldpipe.h ---*/
-
-/*--- Automatically derived from: C:/daily/rwsdk/world/pipe/p2/d3d8/nodeD3D8WorldSectorAllInOne.h ---*/
-
-#ifdef __cplusplus
-extern "C"
-{
-#endif /* __cplusplus */
-
-extern RxNodeDefinition *RxNodeDefinitionGetD3D8WorldSectorAllInOne(void);
-#ifdef __cplusplus
-}
-#endif /* __cplusplus */
-
-
-/*--- Automatically derived from: C:/daily/rwsdk/world/pipe/p2/d3d8/nodeD3D8AtomicAllInOne.h ---*/
-#ifdef __cplusplus
-extern "C"
-{
-#endif /* __cplusplus */
-
-extern RxNodeDefinition *RxNodeDefinitionGetD3D8AtomicAllInOne(void);
-#ifdef __cplusplus
-}
-#endif /* __cplusplus */
-
-/*--- Automatically derived from: C:/daily/rwsdk/world/pipe/p2/d3d8/D3D8VertexBufferManager.h ---*/
-#ifdef __cplusplus
-extern "C"
-{
-#endif /* __cplusplus */
-#ifdef __cplusplus
-}
-#endif /* __cplusplus */
-
-/*--- Automatically derived from: C:/daily/rwsdk/world/pipe/p2/nodeWorldSectorInstance.h ---*/
-
-#ifdef __cplusplus
-extern "C"
-{
-#endif /* __cplusplus */
-
-extern RxNodeDefinition *RxNodeDefinitionGetWorldSectorInstance(void);
-
-#ifdef __cplusplus
-}
-#endif /* __cplusplus */
-
-
-/*--- Automatically derived from: C:/daily/rwsdk/world/pipe/p2/nodeWorldSectorEnumerateLights.h ---*/
-
-#ifdef __cplusplus
-extern "C"
-{
-#endif /* __cplusplus */
-
-extern RxNodeDefinition *RxNodeDefinitionGetWorldSectorEnumerateLights(void);
-
-#ifdef __cplusplus
-}
-#endif /* __cplusplus */
-
-
-/*--- Automatically derived from: C:/daily/rwsdk/world/pipe/p2/nodePreLight.h ---*/
-
-#ifdef __cplusplus
-extern "C"
-{
-#endif /* __cplusplus */
-
-extern RxNodeDefinition *RxNodeDefinitionGetPreLight(void);
-
-#ifdef __cplusplus
-}
-#endif /* __cplusplus */
-
-
-/*--- Automatically derived from: C:/daily/rwsdk/world/pipe/p2/nodePostLight.h ---*/
-
-#ifdef __cplusplus
-extern "C"
-{
-#endif /* __cplusplus */
-
-extern RxNodeDefinition *RxNodeDefinitionGetPostLight(void);
-
-#ifdef __cplusplus
-}
-#endif /* __cplusplus */
-
-
-/*--- Automatically derived from: C:/daily/rwsdk/world/pipe/p2/nodeMaterialScatter.h ---*/
-
-#ifdef __cplusplus
-extern "C"
-{
-#endif /* __cplusplus */
-
-extern RxNodeDefinition *RxNodeDefinitionGetMaterialScatter(void);
-
-#ifdef __cplusplus
-}
-#endif /* __cplusplus */
-
-
-/*--- Automatically derived from: C:/daily/rwsdk/world/pipe/p2/nodeLight.h ---*/
-
-#ifdef __cplusplus
-extern "C"
-{
-#endif /* __cplusplus */
-
-extern RxNodeDefinition *RxNodeDefinitionGetLight(void);
-
-#ifdef __cplusplus
-}
-#endif /* __cplusplus */
-
-
-/*--- Automatically derived from: C:/daily/rwsdk/world/pipe/p2/nodeFastPathSplitter.h ---*/
-
-#ifdef __cplusplus
-extern "C"
-{
-#endif /* __cplusplus */
-
-extern RxNodeDefinition *RxNodeDefinitionGetFastPathSplitter(void);
-
-#ifdef __cplusplus
-}
-#endif /* __cplusplus */
-
-
-/*--- Automatically derived from: C:/daily/rwsdk/world/pipe/p2/nodeAtomicInstance.h ---*/
-
-#ifdef __cplusplus
-extern "C"
-{
-#endif /* __cplusplus */
-
-extern RxNodeDefinition *RxNodeDefinitionGetAtomicInstance(void);
-
-#ifdef __cplusplus
-}
-#endif /* __cplusplus */
-
-
-/*--- Automatically derived from: C:/daily/rwsdk/world/pipe/p2/nodeAtomicEnumerateLights.h ---*/
-
-#ifdef __cplusplus
-extern "C"
-{
-#endif /* __cplusplus */
-
-extern RxNodeDefinition *RxNodeDefinitionGetAtomicEnumerateLights(void);
-
-#ifdef __cplusplus
-}
-#endif /* __cplusplus */
-
-
-/*--- Automatically derived from: c:/daily/rwsdk/world/bamateri.h ---*/
-
-/*
- * Handling surface materials
- * Materials describe how things are to appear when rendered
- *
- * Copyright (c) 1998 Criterion Software Ltd.
- */
-
-/****************************************************************************
- Global Types
- */
-
-
-typedef struct RpMaterialChunkInfo RpMaterialChunkInfo;
-typedef struct RpMaterialChunkInfo _rpMaterial;
-
-struct RpMaterialChunkInfo
-{
- RwInt32 flags; /**< Material flags - unused currently -
- for future expansion */
- RwRGBA color; /**< Colour of material. */
- RwInt32 unused; /**< Not used */
- RwBool textured; /**< Are we textured? */
- RwSurfaceProperties surfaceProps; /**< Surface properties */
-};
-
-#if (!defined(RwMaterialAssign))
-#define RwMaterialAssign(_target, _source) \
- ( *(_target) = *(_source) )
-#endif /* (!defined(RwMaterialAssign)) */
-
-/**
- * \ingroup rpworlddatatypes
- * \typedef RpMaterial
- * Material object. This should be
- * considered an opaque type. Use the RpMaterial API functions to access.
- */
-typedef struct RpMaterial RpMaterial;
-
-#if (!defined(DOXYGEN))
-struct RpMaterial
-{
- RwTexture *texture; /**< texture */
- RwRGBA color; /**< color */
- RxPipeline *pipeline; /**< pipeline */
- RwSurfaceProperties surfaceProps; /**< surfaceProps */
- RwInt16 refCount; /* C.f. rwsdk/world/bageomet.h:RpGeometry */
- RwInt16 pad;
-};
-#endif /* (!defined(DOXYGEN)) */
-
-/**
- * \ingroup rpworlddatatypes
- * \typedef RpMaterialCallBack
- \ref RpMaterialCallBack
- * represents the function called from \ref RpGeometryForAllMaterials and
- * \ref RpWorldForAllMaterials for all materials referenced by polygons in a
- * given geometry. This function should return a pointer to the current
- * material to indicate success. The callback may return NULL to terminate
- * further callbacks on the materials.
- *
- * \param material Pointer to the current material
- * \param data Pointer to developer-defined data structure.
- *
- * \return Pointer to the current material.
- */
-typedef RpMaterial *(*RpMaterialCallBack)(RpMaterial *material, void *data);
-
-/****************************************************************************
- <macro/inline functionality
- */
-
-#define RpMaterialAddRefMacro(_material) \
- (((_material)->refCount++), (_material))
-
-#define RpMaterialAddRefVoidMacro(_material) \
-MACRO_START \
-{ \
- (_material)->refCount++; \
-} \
-MACRO_STOP
-
-
-#define RpMaterialSetColorMacro(_material, _color) \
- (RwRGBAAssign(&((_material)->color), (_color)), (_material))
-
-#define RpMaterialGetColorMacro(_material) \
- (&((_material)->color))
-
-#define RpMaterialSetSurfacePropertiesMacro(_material, _surfProps) \
- (RwSurfacePropertiesAssign(&((_material)->surfaceProps), \
- (_surfProps)), (_material))
-
-#define RpMaterialSetSurfacePropertiesVoidMacro(_material, _surfProps) \
-MACRO_START \
-{ \
- RwSurfacePropertiesAssign(&((_material)->surfaceProps), \
- (_surfProps)); \
-} \
-MACRO_STOP
-
-#define RpMaterialGetSurfacePropertiesMacro(_material) \
- (&((_material)->surfaceProps))
-
-#define RpMaterialGetTextureMacro(_material) \
- ((_material)->texture)
-
-
-#if !(defined(RWDEBUG) || defined(RWSUPPRESSINLINE))
-
-#define RpMaterialAddRef(_material) \
- RpMaterialAddRefMacro(_material)
-
-#define RpMaterialSetColor(_material, _color) \
- RpMaterialSetColorMacro(_material, _color)
-
-#define RpMaterialGetColor(_material) \
- RpMaterialGetColorMacro(_material)
-
-#define RpMaterialSetSurfaceProperties(_material, _surfProps) \
- RpMaterialSetSurfacePropertiesMacro(_material, _surfProps)
-
-#define RpMaterialGetSurfaceProperties(_material) \
- RpMaterialGetSurfacePropertiesMacro(_material)
-
-#define RpMaterialGetTexture(_material) \
- RpMaterialGetTextureMacro(_material)
-
-#endif /* (defined(RWDEBUG) || defined(RWSUPPRESSINLINE)) */
-
-/****************************************************************************
- Function prototypes
- */
-
-#ifdef __cplusplus
-extern "C"
-{
-#endif /* __cplusplus */
-
-
-/* Creating, destroying and referencing materials */
-extern RpMaterial *RpMaterialCreate(void);
-extern RwBool RpMaterialDestroy(RpMaterial *material);
-extern RpMaterial *RpMaterialClone(RpMaterial *material);
-
-/* Textures */
-extern RpMaterial *RpMaterialSetTexture(RpMaterial *material, RwTexture *texture);
-
-
-#if (defined(RWDEBUG) || defined(RWSUPPRESSINLINE))
-extern RpMaterial *RpMaterialAddRef(RpMaterial *material);
-
-/* Textures */
-extern RwTexture *RpMaterialGetTexture(const RpMaterial *material);
-
-/* Setting and getting colors */
-extern RpMaterial *RpMaterialSetColor(RpMaterial *material, const RwRGBA *color);
-extern const RwRGBA *RpMaterialGetColor(const RpMaterial *material);
-
-/* Setting and getting surface properties */
-extern RpMaterial *
-RpMaterialSetSurfaceProperties(RpMaterial *material,
- const RwSurfaceProperties *surfaceProperties);
-
-extern const RwSurfaceProperties *
-RpMaterialGetSurfaceProperties(const RpMaterial *material);
-
-#endif /* (defined(RWDEBUG) || defined(RWSUPPRESSINLINE)) */
-
-
-/* Attaching toolkits */
-extern RwInt32 RpMaterialRegisterPlugin(RwInt32 size, RwUInt32 pluginID,
- RwPluginObjectConstructor constructCB,
- RwPluginObjectDestructor destructCB,
- RwPluginObjectCopy copyCB);
-extern RwInt32 RpMaterialRegisterPluginStream(RwUInt32 pluginID,
- RwPluginDataChunkReadCallBack readCB,
- RwPluginDataChunkWriteCallBack writeCB,
- RwPluginDataChunkGetSizeCallBack getSizeCB);
-extern RwInt32 RpMaterialSetStreamAlwaysCallBack(
- RwUInt32 pluginID,
- RwPluginDataChunkAlwaysCallBack alwaysCB);
-extern RwInt32 RpMaterialGetPluginOffset(RwUInt32 pluginID);
-extern RwBool RpMaterialValidatePlugins(const RpMaterial *material);
-
-/* Binary format */
-extern RwUInt32 RpMaterialStreamGetSize(const RpMaterial *material);
-extern RpMaterial *RpMaterialStreamRead(RwStream *stream);
-extern const RpMaterial *RpMaterialStreamWrite(const RpMaterial *material, RwStream *stream);
-extern RpMaterialChunkInfo *
-_rpMaterialChunkInfoRead(RwStream *stream,
- RpMaterialChunkInfo *materialChunkInfo,
- RwInt32 *bytesRead);
-
-#ifdef __cplusplus
-}
-#endif /* __cplusplus */
-
-#define RpMaterialChunkInfoRead(stream, materialChunkInfo, bytesRead) \
- _rpMaterialChunkInfoRead(stream, materialChunkInfo, bytesRead)
-
-
-/*--- Automatically derived from: c:/daily/rwsdk/world/bamatlst.h ---*/
-/****************************************************************************
- Global Types
- */
-
-typedef struct RpMaterialList RpMaterialList;
-struct RpMaterialList
-{
- RpMaterial **materials;
- RwInt32 numMaterials;
- RwInt32 space;
-};
-
-/****************************************************************************
- Function prototypes
- */
-
-#ifdef __cplusplus
-extern "C"
-{
-#endif /* __cplusplus */
-
-#define rpMaterialListGetNumMaterials(mlist) ((mlist)->numMaterials)
-
-/* Setting up and destroying material lists */
-extern RpMaterialList *_rpMaterialListInitialize(RpMaterialList *matList);
-extern RpMaterialList *_rpMaterialListDeinitialize(RpMaterialList *matList);
-
-/* Accessing material lists */
-extern RpMaterial ** _rpMaterialListAlloc(RwUInt32 count);
-extern RpMaterial *_rpMaterialListGetMaterial(const RpMaterialList *matList,
- RwInt32 matIndex);
-extern RpMaterialList * _rpMaterialListSetSize(RpMaterialList * matList,
- RwInt32 size);
-extern RpMaterialList *_rpMaterialListCopy(RpMaterialList *matListOut,
- const RpMaterialList *matListIn);
-extern RwInt32 _rpMaterialListAppendMaterial(RpMaterialList *matList,
- RpMaterial *material);
-extern RwInt32 _rpMaterialListFindMaterialIndex(const RpMaterialList *matList,
- const RpMaterial *material);
-
-/* Binary format */
-extern RwUInt32 _rpMaterialListStreamGetSize(const RpMaterialList *matList);
-extern RpMaterialList *_rpMaterialListStreamRead(RwStream *stream,
- RpMaterialList *matList);
-extern const RpMaterialList *_rpMaterialListStreamWrite(const RpMaterialList *matList,
- RwStream *stream);
-
-#ifdef __cplusplus
-}
-#endif /* __cplusplus */
-
-#define rpMaterialListInitialize(_matList) \
- _rpMaterialListInitialize(_matList)
-
-#define rpMaterialListDeinitialize(_matList) \
- _rpMaterialListDeinitialize(_matList)
-
-#define rpMaterialListGetMaterial(_matList, _matIndex) \
- _rpMaterialListGetMaterial(_matList, _matIndex)
-
-#define rpMaterialListCopy(_matListOut, _matListIn) \
- _rpMaterialListCopy(_matListOut, _matListIn)
-
-#define rpMaterialListAppendMaterial(_matList, _material) \
- _rpMaterialListAppendMaterial(_matList, _material)
-
-#define rpMaterialListStreamRead(_stream, _matList) \
- _rpMaterialListStreamRead(_stream, _matList)
-
-#define rpMaterialListStreamWrite(_matList, _stream) \
- _rpMaterialListStreamWrite(_matList, _stream)
-
-
-/*--- Automatically derived from: c:/daily/rwsdk/world/bamesh.h ---*/
-
-/*
- *
- * Purpose: Provide construction and enumeration facilities for meshes.
- *
- * Copyright (c) 1998 Criterion Software Ltd.
- */
-
-#define RPMESHGLOBAL(var) \
- (RWPLUGINOFFSET(rpMeshGlobals, \
- RwEngineInstance, \
- meshModule.globalsOffset)->var)
-
-#define rwPRIMTYPEOR \
- (rwPRIMTYPELINELIST | \
- rwPRIMTYPEPOLYLINE | \
- rwPRIMTYPETRILIST | \
- rwPRIMTYPETRISTRIP | \
- rwPRIMTYPETRIFAN | \
- rwPRIMTYPEPOINTLIST)
-
-#define rpMESHHEADERPRIMTYPEOR \
- (0 /* rpMESHHEADERTRILIST*/ | \
- rpMESHHEADERTRISTRIP | \
- rpMESHHEADERTRIFAN | \
- rpMESHHEADERLINELIST | \
- rpMESHHEADERPOLYLINE | \
- rpMESHHEADERPOINTLIST)
-
-/****************************************************************************
- Global variables
- */
-
-#ifdef __cplusplus
-extern "C"
-{
-#endif /* __cplusplus */
-
-extern RwModuleInfo meshModule;
-
-#ifdef __cplusplus
-}
-#endif /* __cplusplus */
-
-/****************************************************************************
- Global types
- */
-
-/**
- * \ingroup rpworlddatatypes
- * \typedef RpMeshHeader
- * typedef for header structure listing all meshes
- * constituting a single RpGeometry or RpWorldSector
- */
-typedef struct RpMeshHeader RpMeshHeader;
-
-/**
- * \ingroup rpworlddatatypes
- * \ref RpMeshHeaderFlags
- * represents the different types of mesh.
- * \see RpMeshHeader
- */
-enum RpMeshHeaderFlags
-{
- /* NOTE: trilists are denoted by absence of any other
- * primtype flags, so be careful that you test:
- * (triListFlag == flags&triListFlag)
- * or:
- * (0 == flags&rpMESHHEADERPRIMMASK)
- * and not:
- * (flags&triListFlag)
- */
- rpMESHHEADERTRISTRIP = 0x0001, /**< Render as tristrips */
- rpMESHHEADERTRIFAN = 0x0002, /**< On PS2 these will be converted to trilists */
- rpMESHHEADERLINELIST = 0x0004, /**< Render as linelists */
- rpMESHHEADERPOLYLINE = 0x0008, /**< On PS2 these will be converted to linelists */
- rpMESHHEADERPOINTLIST = 0x0010, /**< Pointlists are supported only if rendered by
- * custom pipelines; there is no default RenderWare
- * way to render pointlists. */
-
- rpMESHHEADERPRIMMASK = 0x00FF, /**< All bits reserved for specifying primitive type */
- rpMESHHEADERUNINDEXED = 0x0100, /**< Topology is defined implicitly by vertex
- * order, ergo the mesh contains no indices */
- rpMESHHEADERFLAGSFORCEENUMSIZEINT = RWFORCEENUMSIZEINT
-};
-
-/*
- * Typedef for RpMeshHeaderFlags enumeration
- * representing the different types of mesh
- */
-typedef enum RpMeshHeaderFlags RpMeshHeaderFlags;
-
-typedef struct rpMeshGlobals rpMeshGlobals;
-struct rpMeshGlobals
-{
- RwInt16 nextSerialNum;
- RwFreeList *triStripListEntryFreeList;
- RwUInt8 meshFlagsToPrimType[rpMESHHEADERPRIMTYPEOR];
- RwUInt8 primTypeToMeshFlags[rwPRIMTYPEOR];
-};
-
-typedef struct RpBuildMeshTriangle RpBuildMeshTriangle;
-
-/**
- * \ingroup rpworlddatatypes
- * \struct RpBuildMeshTriangle
- * This type represents an array of indices into
- * the object vertex array. Used during the construction
- * of tristrips.
- *
- * See API functions
- * \see RpBuildMeshGeneratePreprocessTriStrip
- * \see RpBuildMeshGenerateExhaustiveTriStrip
- * \see RpBuildMeshGenerateTrivialTriStrip
- * \see RpBuildMeshGenerateDefaultTriStrip
- * and
- * \see RpMeshSetTriStripMethod
- * \see RpMeshGetTriStripMethod
- */
-struct RpBuildMeshTriangle
-{
- RwUInt16 vertIndex[3]; /**< indices into object vertex
- * array. */
- RpMaterial *material; /**< pointer to material used to
- * render the mesh. */
-};
-
-typedef struct RpBuildMesh RpBuildMesh;
-
-/**
- * \ingroup rpworlddatatypes
- * \struct RpBuildMesh
- * This type represents a mesh ready for tri stripping.
- *
- * See API functions
- * \see RpBuildMeshGeneratePreprocessTriStrip
- * \see RpBuildMeshGenerateExhaustiveTriStrip
- * \see RpBuildMeshGenerateTrivialTriStrip
- * \see RpBuildMeshGenerateDefaultTriStrip
- * and
- * \see RpMeshSetTriStripMethod
- * \see RpMeshGetTriStripMethod
- */
-struct RpBuildMesh
-{
- RwUInt32 triangleBufferSize; /**< number of triangles
- * space has been allocated
- * for. */
- RwUInt32 numTriangles; /**< number of triangles to be
- * tristripped. */
- RpBuildMeshTriangle *meshTriangles; /**< pointer to build mesh
- * triangles. */
-};
-
-typedef struct RpMesh RpMesh;
-
-/**
- * \ingroup rpworlddatatypes
- * \struct RpMesh
- * This type represents a single polygon mesh.
- * A mesh is defined as a collection of triangles derived from an RpGeometry
- * or RpWorldSector which have a common material.
- *
- * See API functions \see RpGeometryForAllMeshes and
- * \see RpWorldSectorForAllMeshes and
- * the corresponding function callback types:
- */
-struct RpMesh
-{
- RxVertexIndex *indices; /**< vertex indices defining the mesh */
- RwUInt32 numIndices; /**< number of vertices in mesh */
- RpMaterial *material; /**< pointer to material used to
- * render the mesh. */
-};
-
-/**
- * \ingroup rpworlddatatypes
- * \struct RpMeshHeader
- * Header for all meshes that constitute a single RpGeometry or RpWorldSector
- */
-struct RpMeshHeader
-{
- RwUInt32 flags; /**< \see RpMeshHeaderFlags */
- RwUInt16 numMeshes; /**< Number of meshes in object */
- RwUInt16 serialNum; /**< Determine if mesh has changed
- * since last instance */
- RwUInt32 totalIndicesInMesh; /**< Total triangle index
- * count in all meshes
- */
- RwUInt32 firstMeshOffset; /**< Offset in bytes from end this
- * structure RpMeshHeader
- * to the first mesh
- */
-};
-
-/**
- * \ingroup rpworlddatatypes
- * \typedef RpMeshCallBack
- * \ref RpMeshCallBack is the callback
- * function supplied to \ref RpGeometryForAllMeshes and
- * \ref RpWorldSectorForAllMeshes for all meshes in a given geometry.
- *
- * This function should return a pointer to the current mesh to indicate
- * success. The callback may return NULL to terminate further callbacks
- * on the meshes.
- *
- * \param mesh Pointer to the current mesh, supplied by
- * iterator.
- * \param meshHeader Pointer to the meshes header
- * \param data Pointer to developer-defined data structure.
- *
- * \return
- * Returns a pointer to the current mesh if successful or NULL if an error
- * occurred.
- */
-typedef RpMesh *(*RpMeshCallBack) (RpMesh * mesh,
- RpMeshHeader * meshHeader,
- void *pData);
-
-/****************************************************************************
- Function prototypes
- */
-
-#if !(defined(RWDEBUG) || defined(RWSUPPRESSINLINE))
-
-#define RpMeshHeaderGetPrimType(_mshHdr) \
- ( (RwPrimitiveType)RPMESHGLOBAL(meshFlagsToPrimType)[(_mshHdr)->flags & \
- rpMESHHEADERPRIMMASK] )
-
-#define RpMeshHeaderSetPrimType(_mshHdr, _prmTyp) \
- ( (_mshHdr)->flags = \
- ((_mshHdr)->flags & ~rpMESHHEADERPRIMMASK) | \
- (rpMESHHEADERPRIMMASK & \
- RPMESHGLOBAL(primTypeToMeshFlags)[(_prmTyp) & \
- rpMESHHEADERPRIMMASK]), \
- (_mshHdr) )
-
-#endif /* !(defined(RWDEBUG) || defined(RWSUPPRESSINLINE)) */
-
-#ifdef __cplusplus
-extern "C"
-{
-#endif /* __cplusplus */
-
-/* Opening and closing module */
-extern void *_rpMeshOpen(void *instance, RwInt32 offset,
- RwInt32 size);
-extern void *_rpMeshClose(void *instance, RwInt32 offset,
- RwInt32 size);
-
-extern RwInt16 _rpMeshGetNextSerialNumber(void);
-
-/* Create a build mesh with nothing in */
-extern RpBuildMesh *_rpBuildMeshCreate(RwUInt32 bufferSize);
-
-/* Destroy a build mesh */
-extern RwBool _rpBuildMeshDestroy(RpBuildMesh * mesh);
-
-/* Destroy a build mesh */
-extern RwBool _rpMeshDestroy(RpMeshHeader * mesh);
-
-/* Add a triangle to a mesh */
-extern RpBuildMesh *_rpBuildMeshAddTriangle(RpBuildMesh * mesh,
- RpMaterial * material,
- RwInt32 vert1,
- RwInt32 vert2,
- RwInt32 vert3);
-
-#if (defined(RWDEBUG) || defined(RWSUPPRESSINLINE))
-
-/* Get primtype from a mesh header */
-extern RwPrimitiveType RpMeshHeaderGetPrimType(RpMeshHeader *
- meshHeader);
-
-/* Set primtype for a mesh header */
-extern RpMeshHeader *RpMeshHeaderSetPrimType(RpMeshHeader *
- meshHeader,
- RwPrimitiveType
- primType);
-
-#endif /* (defined(RWDEBUG) || defined(RWSUPPRESSINLINE)) */
-
-/* Enumerate meshes within a mesh header */
-extern RpMeshHeader *_rpMeshHeaderForAllMeshes(RpMeshHeader *
- meshHeader,
- RpMeshCallBack
- fpCallBack,
- void *pData);
-
-/* Mesh serialisation functions */
-extern RwStream *_rpMeshWrite(const RpMeshHeader * meshHeader,
- const void *object,
- RwStream * stream,
- const RpMaterialList * matList);
-extern RpMeshHeader *_rpMeshRead(RwStream * stream,
- const void *object,
- const RpMaterialList * matList);
-extern RwInt32 _rpMeshSize(const RpMeshHeader *meshHeader,
- const void *object);
-/* Mesh header create/destroy functions */
-extern void _rpMeshHeaderDestroy(RpMeshHeader * meshHeader);
-extern RpMeshHeader * _rpMeshHeaderCreate(RwUInt32 size);
-
-
-#ifdef __cplusplus
-}
-#endif /* __cplusplus */
-
-
-/*--- Automatically derived from: c:/daily/rwsdk/world/basector.h ---*/
-
-/*
- * Handling atomic sectors
- * Atomic sectors are use to divide up the world into manageable portions
- *
- * Copyright (c) 1998 Criterion Software Ltd.
-*/
-
-/****************************************************************************
- Defines
- */
-
-/* Type ID */
-#define rpWorldSector 0xff /* Not a true 'type'! */
-
-#define rpMINDISTANCEBETWEENVERTICES (RwReal)(0.0001)
-
-#define RPV3DFROMVERTEXNORMAL(v, n) \
- (v).x = (((RwReal)((n).x)) * ( (RwReal)(1.0/128))); \
- (v).y = (((RwReal)((n).y)) * ( (RwReal)(1.0/128))); \
- (v).z = (((RwReal)((n).z)) * ( (RwReal)(1.0/128)))
-
-#define RPVERTEXNORMALFROMRWV3D(n, v) \
- { \
- RwFixed naTmp[3]; \
- \
- naTmp[0] = RwRealToFixed((v).x); \
- naTmp[1] = RwRealToFixed((v).y); \
- naTmp[2] = RwRealToFixed((v).z); \
- \
- if (naTmp[0] >= RwFixedCast(1)) \
- { \
- naTmp[0] = RwFixedCast(1)-1; \
- } \
- if (naTmp[0] <= RwFixedCast(-1)) \
- { \
- naTmp[0] = RwFixedCast(-1)+1; \
- } \
- if (naTmp[1] >= RwFixedCast(1)) \
- { \
- naTmp[1] = RwFixedCast(1)-1; \
- } \
- if (naTmp[1] <= RwFixedCast(-1)) \
- { \
- naTmp[1] = RwFixedCast(-1)+1; \
- } \
- if (naTmp[2] >= RwFixedCast(1)) \
- { \
- naTmp[2] = RwFixedCast(1)-1; \
- } \
- if (naTmp[2] <= RwFixedCast(-1)) \
- { \
- naTmp[2] = RwFixedCast(-1)+1; \
- } \
- \
- (n).x = (RwInt8)(naTmp[0]>>9); \
- (n).y = (RwInt8)(naTmp[1]>>9); \
- (n).z = (RwInt8)(naTmp[2]>>9); \
- }
-
-/* RpCollSector access macros - for pre v304 data */
-#define RWCOLLSECTORGETTYPE(sect) \
- ((sect).cType&0x80)
-
-#define RWCOLLSECTORGETPLANE(sect) \
- ((((sect).cType)>>3)&0xc)
-
-#define RWCOLLSECTORGETON(sect) \
- (((sect).cType)&0x1f)
-
-#define RWCOLLSECTORGETVERTEX(sect) \
- (sect).vertex
-
-#define RWCOLLSECTORGETSTART(sect) \
- (sect).start
-
-#define RWCOLLSECTORGETNOPOLYS(sect) \
- (sect).cType
-
-#define RWCOLLSECTORSETPOLYGONS(sect,no,st) \
- (sect).cType = (RwUInt8)(no); \
- (sect).start = (RwUInt8)(st)
-
-#define rwMAXCOLLISIONCUTS 7
-
-/****************************************************************************
- Global types
- */
-
-typedef struct RpVertexNormal RpVertexNormal;
-
-struct RpVertexNormal
-{
- RwInt8 x;
- RwInt8 y;
- RwInt8 z;
- RwUInt8 pad; /* pad character to force alignment */
-};
-
-typedef struct RpPolygon RpPolygon;
-
-struct RpPolygon
-{
- RwUInt16 matIndex;
- RwUInt16 vertIndex[3];
-};
-
-/* RpCollSector - for pre v304 data */
-#define RWCOLLSECTORSETPLANE(sect,plane,vert,no,st) \
- (sect).cType = (RwUInt8)(0x80|((plane)<<3)|(no)); \
- (sect).vertex = (RwUInt8)(vert); \
- (sect).start = (RwUInt8)(st)
-
-typedef struct RpCollSector RpCollSector;
-
-struct RpCollSector
-{
- RwUInt8 cType; /* Bit 7 - 1 plane */
- /* 0 polygons */
- /* Bit 6-5 - plane */
- /* Bit 4-0 - amount ON plane */
- RwUInt8 vertex; /* Vertex index used for the split */
- RwUInt8 start; /* Starting polygon */
-};
-
-/**
- * \ingroup rpworlddatatypes
- * \typedef RpWorldSector
- * World Sector object. This should be
- * considered an opaque type. Use the RpWorldSector API functions to access.
- */
-typedef struct RpWorldSector RpWorldSector;
-
-#if (!defined(DOXYGEN))
-struct RpWorldSector
-{
- RwInt32 type;
-
- RpPolygon *polygons; /* Polygons themselves */
-
- RwV3d *vertices; /* Vertex positions */
- RpVertexNormal *normals; /* Vertex normals */
-
- RwTexCoords *texCoords[rwMAXTEXTURECOORDS]; /* Texture coordinates */
-
- RwRGBA *preLitLum; /* Pre lit luminances */
-
- /* Pointer to memory allocated for vertex and poly pointers */
- RwResEntry *repEntry;
-
- /* Atomics in this sectors */
- /* The pointers are frigged so they look like they are pointing to
- Atomics when they are pointing to here */
- RwLinkList collAtomicsInWorldSector; /* Coll priority */
- RwLinkList noCollAtomicsInWorldSector; /* No Coll priority */
-
- /* Lights in an atomic sector */
- RwLinkList lightsInWorldSector;
-
- /* Outer bounding box of sector based on BSP planes */
- RwBBox boundingBox;
-
- /* Bounding box tightly enclosing geometry */
- RwBBox tightBoundingBox;
-
- /* The root of the bsp collision tree for pre v304 data */
- RpCollSector *colSectorRoot;
-
- /* The mesh which groups same material polygons together */
- RpMeshHeader *mesh;
-
- /* The WorldSector object pipeline for this WorldSector */
- RxPipeline *pipeline;
-
- /* Material list window base
- * (triangles in a given sector can "see"
- * the 256 materials from
- * MatList[matListWindowBase] -> MatList[matListWindowBase + 255])
- */
- RwUInt16 matListWindowBase;
-
- RwUInt16 numVertices; /* Num vertices */
- RwUInt16 numPolygons; /* Num polygons */
- RwUInt16 pad;
-};
-#endif /* (!defined(DOXYGEN)) */
-
-/**
- * \ingroup rpworlddatatypes
- * \typedef RpWorldSectorCallBack
- \ref RpWorldSectorCallBack
- * represents the function called from \ref RpWorldForAllWorldSectors,
- * \ref RpAtomicForAllWorldSectors and \ref RpLightForAllWorldSectors for all
- * world sectors in a given world or world sectors a given atomic or light lies
- * in. This function should return a pointer to the current world sector to
- * indicate success. The callback may return NULL to terminate further
- * callbacks on the atomic or light.
- *
- * \return Pointer to the current world sector.
- *
- * \param sector Pointer to the current world sector
- * \param data Pointer to developer-defined data structure.
- */
-typedef RpWorldSector *(*RpWorldSectorCallBack)(RpWorldSector *worldSector, void *data);
-
-typedef struct RpSector RpSector;
-
-struct RpSector
-{
- RwInt32 type;
-};
-
-/* NOTE: The left and right pointers can point to an RpPlaneSector or
- * an RpWorldSector
- * This is determined what the type is via the type value
- */
-
-typedef struct RpPlaneSector RpPlaneSector;
-
-struct RpPlaneSector
-{
- RwInt32 type;
-
- RwReal value;
- RpSector *leftSubTree; /* Sector 'left' (less) of the plane */
- RpSector *rightSubTree; /* Sector 'right' (more) of the plane */
- RwReal leftValue;
- RwReal rightValue;
-};
-
-
-#ifdef __cplusplus
-extern "C"
-{
-#endif /* __cplusplus */
-
-extern RwPluginRegistry sectorTKList;
-
-#ifdef __cplusplus
-}
-#endif /* __cplusplus */
-
-#define RpWorldSectorGetBBoxMacro(_sctr) (&((_sctr)->boundingBox))
-#define RpWorldSectorGetTightBBoxMacro(_sctr) (&((_sctr)->tightBoundingBox))
-
-#if ((!defined(RWDEBUG)) && (!defined(RWSUPPRESSINLINE)))
-
-#define RpWorldSectorGetBBox RpWorldSectorGetBBoxMacro
-#define RpWorldSectorGetTightBBox RpWorldSectorGetTightBBoxMacro
-
-#endif /* (defined(RWDEBUG) || defined(RWSUPPRESSINLINE)) */
-
-/****************************************************************************
- Function prototypes
- */
-
-#ifdef __cplusplus
-extern "C"
-{
-#endif /* __cplusplus */
-
-
-/* Get info from atomic sectors */
-extern RwInt32 RpWorldSectorGetNumPolygons(const RpWorldSector *Sector);
-extern RwInt32 RpWorldSectorGetNumVertices(const RpWorldSector *Sector);
-
-/* Instancing and deinstancing sectors */
-extern RpWorldSector * RpWorldSectorRender(RpWorldSector *worldSector);
-
-extern const RpWorldSector *RpWorldSectorForAllMeshes(const RpWorldSector *sector,
- RpMeshCallBack fpCallBack,
- void *pData);
-
-
-#if (defined(RWDEBUG) || defined(RWSUPPRESSINLINE))
-
-extern const RwBBox *RpWorldSectorGetBBox(const RpWorldSector *sector);
-extern const RwBBox *RpWorldSectorGetTightBBox(const RpWorldSector *sector);
-
-#endif /* (defined(RWDEBUG) || defined(RWSUPPRESSINLINE)) */
-
-/* Plugins */
-extern RwInt32 RpWorldSectorRegisterPlugin(RwInt32 size, RwUInt32 pluginID,
- RwPluginObjectConstructor constructCB,
- RwPluginObjectDestructor destructCB,
- RwPluginObjectCopy copyCB);
-extern RwInt32 RpWorldSectorRegisterPluginStream(RwUInt32 pluginID,
- RwPluginDataChunkReadCallBack readCB,
- RwPluginDataChunkWriteCallBack writeCB,
- RwPluginDataChunkGetSizeCallBack getSizeCB);
-extern RwInt32 RpWorldSectorSetStreamAlwaysCallBack(
- RwUInt32 pluginID,
- RwPluginDataChunkAlwaysCallBack alwaysCB);
-extern RwInt32 RpWorldSectorSetStreamRightsCallBack(RwUInt32 pluginID,
- RwPluginDataChunkRightsCallBack rightsCB);
-extern RwInt32 RpWorldSectorGetPluginOffset(RwUInt32 pluginID);
-extern RwBool RpWorldSectorValidatePlugins(const RpWorldSector *sector);
-
-#ifdef __cplusplus
-}
-#endif /* __cplusplus */
-
-/*--- Automatically derived from: c:/daily/rwsdk/world/bameshop.h ---*/
-
-/****************************************************************************
- Defines
- */
-
-/**
- * \ingroup rpworlddatatypes
- * \typedef RpTriStripMeshCallBack
- * \ref RpTriStripMeshCallBack is the callback to generate triangle strips
- * when the triangle stripped geometries or world sectors are unlocked.
- *
- * \param buildMesh pointer to the mesh which the triangle strip will be
- * generated from.
- * \param data pointer to user-supplied data to pass to the callback
- * function.
- *
- * \return a pointer to the constructed mesh header.
- *
- */
-typedef RpMeshHeader *
-(*RpTriStripMeshCallBack) (RpBuildMesh *buildMesh, void *data);
-
-
-/****************************************************************************
- Global types
- */
-
-
-/****************************************************************************
- Global Variables
- */
-
-
-/****************************************************************************
- Function prototypes
- */
-
-#ifdef __cplusplus
-extern "C"
-{
-#endif /* __cplusplus */
-
-
-/* Callback mesh generating functions */
-extern RpMeshHeader *
-RpBuildMeshGenerateTrivialTriStrip(RpBuildMesh *buildMesh, void *data);
-
-extern RpMeshHeader *
-RpBuildMeshGenerateDefaultTriStrip(RpBuildMesh *buildmesh, void *data);
-
-extern RpMeshHeader *
-RpBuildMeshGeneratePreprocessTriStrip(RpBuildMesh *buildmesh, void *data);
-
-extern RpMeshHeader *
-RpBuildMeshGenerateExhaustiveTriStrip(RpBuildMesh *buildmesh, void *data);
-
-extern RpMeshHeader *
-RpBuildMeshGenerateDefaultIgnoreWindingTriStrip(RpBuildMesh *buildmesh,
- void *data);
-
-extern RpMeshHeader *
-RpBuildMeshGeneratePreprocessIgnoreWindingTriStrip(RpBuildMesh *buildmesh,
- void *data);
-
-extern RpMeshHeader *
-RpBuildMeshGenerateExhaustiveIgnoreWindingTriStrip(RpBuildMesh *buildmesh,
- void *data);
-
-/* Functions to set and get the global mesh tristrip algorithm */
-extern RwBool
-RpMeshSetTriStripMethod(RpTriStripMeshCallBack callback, void *data);
-
-extern RwBool
-RpMeshGetTriStripMethod(RpTriStripMeshCallBack *callback, void **data);
-
-
-extern RpMeshHeader *
-_rpTriListMeshGenerate(RpBuildMesh *buildMesh, void *data);
-
-/*
- * Optimise the mesh ordering
- * (sort on material and place transparent materials last)
- */
-extern RpMeshHeader *
-_rpMeshOptimise(RpBuildMesh *buildmesh, RwUInt32 flags);
-
-#ifdef __cplusplus
-}
-#endif /* __cplusplus */
-
-
-#define _rpTriStripMeshTrivialGenerate(_buildMesh, _data) \
- RpBuildMeshGenerateTrivialTriStrip(_buildMesh, _data)
-
-#define _rpTriStripMeshDefaultGenerate(_buildmesh, _data) \
- RpBuildMeshGenerateDefaultTriStrip(_buildmesh, _data)
-
-#define _rpTriStripMeshPreprocessGenerate(_buildmesh, _data) \
- RpBuildMeshGeneratePreprocessTriStrip(_buildmesh, _data)
-
-#define _rpTriStripMeshExhaustiveGenerate(_buildmesh, _data) \
- RpBuildMeshGenerateExhaustiveTriStrip(_buildmesh, _data)
-
-#define _rpMeshSetTristripMethod(_callback, _data) \
- RpMeshSetTriStripMethod(_callback, _data)
-
-#define _rpMeshGetTristripMethod(_callback, _data) \
- RpMeshGetTriStripMethod(_callback, _data)
-
-
-
-/*--- Automatically derived from: c:/daily/rwsdk/world/balight.h ---*/
-
-/*
- * Lighting 3D objects.
- * Lights are used to illuminate atomics and worlds
- *
- * Copyright (c) 1998 Criterion Software Ltd.
- */
-
-
-/****************************************************************************
- Defines
- */
-
-/* Binary Light */
-typedef struct RpLightChunkInfo RpLightChunkInfo;
-typedef struct RpLightChunkInfo _rpLight;
-
-struct RpLightChunkInfo
-{
- RwReal radius; /**< radius */
- RwReal red; /**< red */
- RwReal green; /**< green */
- RwReal blue; /**< blue */
- RwReal minusCosAngle; /**< minusCosAngle */
- RwUInt32 typeAndFlags; /**< typeAndFlags */
-};
-
-/* Type ID */
-#define rpLIGHT 3
-
-/* Beyond this the lights must be positioned */
-#define rpLIGHTPOSITIONINGSTART 0x80
-
-/**
- * \ingroup rpworlddatatypes
- * \ref RpLightType are
- * light sub types. This type represents the different
- * types of light source that can be created using the API function \ref RpLightCreate.
- * Note that lights of types rpLIGHTPOINT, rpLIGHTSPOT and rpLIGHTSPOTSOFT have linear
- * intensity fall-off with distance from the source, reducing to zero at the light's radius:*/
-enum RpLightType
-{
- rpNALIGHTTYPE = 0,
-
- /* These don't take part in the tie mechanism (no position) */
- rpLIGHTDIRECTIONAL, /**<Directional Light */
- rpLIGHTAMBIENT, /**<Ambient Light */
-
- /* These do take part in the tie mechanism (do have position) */
- rpLIGHTPOINT = rpLIGHTPOSITIONINGSTART, /**<Point Light */
- rpLIGHTSPOT, /**<Spot Light */
- rpLIGHTSPOTSOFT, /**<Soft Spot Light */
- rpLIGHTTYPEFORCEENUMSIZEINT = RWFORCEENUMSIZEINT
-};
-typedef enum RpLightType RpLightType;
-
-#define rpLIGHTMINCONEANGLE ((RwReal)0.0f)
-#if ((defined(XBOX_DRVMODEL_H)) || (defined(OPENGL_DRVMODEL_H)) || (defined(GCN_DRVMODEL_H)))
-/* XBox has Micro$oft-penned drivers, no wonder it crashes... */
-/* OpenGL and GCN clamp to 90 internally, so we mirror that behaviour */
-#define rpLIGHTMAXCONEANGLE ((RwReal)89.9999f)
-#else
-#define rpLIGHTMAXCONEANGLE ((RwReal)180.0f)
-#endif
-
-/*************/
-
-/*** FLAGS ***/
-
-/*************/
-
-/**
- * \ingroup rpworlddatatypes
- * \ref RpLightFlag defines what geometry is influenced by the light.
- * The bit-field RpLightFlag specifies the options available for controlling the scope
- * of a light source (see API function \ref RpLightSetFlags):*/
-enum RpLightFlag
-{
- rpLIGHTLIGHTATOMICS = 0x01, /**<The light source illuminates all atomics in a world */
- rpLIGHTLIGHTWORLD = 0x02, /**<The light source illuminates all static geometry in a world */
- rpLIGHTFLAGFORCEENUMSIZEINT = RWFORCEENUMSIZEINT
-};
-typedef enum RpLightFlag RpLightFlag;
-
-/* rpLIGHTPRIVATENOCHROMA - turns on optimisations to do with
- * lights which are a shade of grey
- */
-enum rpLightPrivateFlag
-{
- rpLIGHTPRIVATENOCHROMA = 0x01,
- rpLIGHTPRIVATEFLAGFORCEENUMSIZEINT = RWFORCEENUMSIZEINT
-};
-typedef enum rpLightPrivateFlag rpLightPrivateFlag;
-
-/*********************/
-
-
-#define RWMINUSCOSFROMTAN(_minusCosAngle, _tanAngle) \
-MACRO_START \
-{ \
- const RwReal TanAngle2 = (_tanAngle) * (_tanAngle); \
- const RwReal CosAngle2 = ((RwReal)1) / ( ((RwReal)1) + TanAngle2); \
- RwReal CosAngle; \
- rwSqrtMacro(&CosAngle, CosAngle2); \
- (_minusCosAngle) = - CosAngle; \
-} \
-MACRO_STOP
-
-#define RWTANFROMMINUSCOS(_tanAngle, _minusCosAngle) \
-MACRO_START \
-{ \
- const RwReal CosAngle2 = (_minusCosAngle) * (_minusCosAngle); \
- const RwReal TanAngle2 = (((RwReal)1) - (CosAngle2)) / (CosAngle2); \
- rwSqrtMacro(&_tanAngle, TanAngle2); \
-} \
-MACRO_STOP
-
-
-/**
- * \ingroup rpworlddatatypes
- * \typedef RpLight
- * Light. This should be
- * considered an opaque type. User the RpLight API functions to access.
- */
-typedef struct RpLight RpLight;
-
-#if (!defined(DOXYGEN))
-struct RpLight
-{
- RwObjectHasFrame object; /**< object */
- RwReal radius; /**< radius */
- RwRGBAReal color; /**< color */ /* Light color */
- RwReal minusCosAngle; /**< minusCosAngle */
- RwLinkList WorldSectorsInLight; /**< WorldSectorsInLight */
- RwLLLink inWorld; /**< inWorld */
- RwUInt16 lightFrame; /**< lightFrame */
- RwUInt16 pad;
-};
-#endif /* (!defined(DOXYGEN)) */
-
-/**
- * \ingroup rpworlddatatypes
- * \typedef RpLightCallBack
- * \ref RpLightCallBack
- * represents the function called from \ref RpWorldForAllLights and
- * \ref RpWorld SectorForAllLights for all lights in a given world or world
- * sector. This function should return a pointer to the current light to
- * indicate success. The callback may return NULL to terminate further
- * callbacks on the world sector.
- *
- * \return Pointer to the current light.
- *
- * \param light Pointer to the current light in the world
- * sector.
- * \param data Pointer to developer-defined data structure.
- */
-typedef RpLight *(*RpLightCallBack) (RpLight * light, void *data);
-
-typedef struct RpLightTie RpLightTie;
-
-struct RpLightTie
-{
- /* Information for an atomic sector */
- RwLLLink lightInWorldSector; /* Lights IN this ATOMIC SECTOR */
- RpLight *light;
-
- /* Information for a atomic */
- RwLLLink WorldSectorInLight; /* Atomic sectors HOLDING this Light */
- RpWorldSector *sect;
-};
-
-
-/****************************************************************************
- <macro/inline functionality
- */
-
-#define RpLightGetRadiusMacro(_light) \
- ((_light)->radius)
-
-#define RpLightGetColorMacro(_light) \
- (&((_light)->color))
-
-#define RpLightSetFrameMacro(_light, _frame) \
- (rwObjectHasFrameSetFrame((_light), (_frame)), (_light))
-
-#define RpLightGetFrameMacro(_light) \
- ((RwFrame *)rwObjectGetParent((_light)))
-
-#define RpLightGetTypeMacro(_light) \
- ((RpLightType)rwObjectGetSubType((_light)))
-
-#define RpLightSetFlagsMacro(_light, _flags) \
- ((rwObjectSetFlags((_light), (_flags))), (_light))
-
-#define RpLightGetFlagsMacro(_light) \
- (rwObjectGetFlags((_light)))
-
-
-#if !(defined(RWDEBUG) || defined(RWSUPPRESSINLINE))
-
-#define RpLightGetRadius(_light) \
- RpLightGetRadiusMacro(_light)
-
-#define RpLightGetColor(_light) \
- RpLightGetColorMacro(_light)
-
-#define RpLightSetFrame(_light, _frame) \
- RpLightSetFrameMacro(_light, _frame)
-
-#define RpLightGetFrame(_light) \
- RpLightGetFrameMacro(_light)
-
-#define RpLightGetType(_light) \
- RpLightGetTypeMacro(_light)
-
-#define RpLightSetFlags(_light, _flags) \
- RpLightSetFlagsMacro(_light, _flags)
-
-#define RpLightGetFlags(_light) \
- RpLightGetFlagsMacro(_light)
-
-#endif /* !(defined(RWDEBUG) || defined(RWSUPPRESSINLINE)) */
-
-
-/****************************************************************************
- Function prototypes
- */
-
-#ifdef __cplusplus
-extern "C"
-{
-#endif /* __cplusplus */
-
-
-#if (defined(RWDEBUG) || defined(RWSUPPRESSINLINE))
-extern RwReal RpLightGetRadius(const RpLight *light);
-extern const RwRGBAReal *RpLightGetColor(const RpLight *light);
-extern RpLight *RpLightSetFrame(RpLight *light, RwFrame *frame);
-extern RwFrame *RpLightGetFrame(const RpLight *light);
-extern RpLightType RpLightGetType(const RpLight *light);
-extern RpLight *RpLightSetFlags(RpLight *light, RwUInt32 flags);
-extern RwUInt32 RpLightGetFlags(const RpLight *light);
-#endif /* (defined(RWDEBUG) || defined(RWSUPPRESSINLINE)) */
-
-/* API Functions */
-extern RpLight *RpLightCreate(RwInt32 type);
-extern RwBool RpLightDestroy(RpLight *light);
-extern RpLight *RpLightSetRadius(RpLight *light, RwReal radius);
-extern RpLight *RpLightSetColor(RpLight *light, const RwRGBAReal *color);
-extern RwReal RpLightGetConeAngle(const RpLight *light);
-extern RpLight *RpLightSetConeAngle(RpLight * ight, RwReal angle);
-extern RwUInt32 RpLightStreamGetSize(const RpLight *light);
-extern RpLight *RpLightStreamRead(RwStream *stream);
-extern const RpLight *RpLightStreamWrite(const RpLight *light,
- RwStream *stream);
-extern RpLightChunkInfo *_rpLightChunkInfoRead(RwStream *stream,
- RpLightChunkInfo *lightChunkInfo,
- RwInt32 *bytesRead);
-
-/* Attaching toolkits */
-extern RwInt32 RpLightRegisterPlugin(RwInt32 size,
- RwUInt32 pluginID,
- RwPluginObjectConstructor constructCB,
- RwPluginObjectDestructor destructCB,
- RwPluginObjectCopy copyCB);
-extern RwInt32 RpLightRegisterPluginStream(RwUInt32 pluginID,
- RwPluginDataChunkReadCallBack readCB,
- RwPluginDataChunkWriteCallBack writeCB,
- RwPluginDataChunkGetSizeCallBack getSizeCB);
-extern RwInt32 RpLightSetStreamAlwaysCallBack(RwUInt32 pluginID,
- RwPluginDataChunkAlwaysCallBack alwaysCB);
-extern RwInt32 RpLightGetPluginOffset(RwUInt32 pluginID);
-extern RwBool RpLightValidatePlugins(const RpLight * light);
-
-#ifdef __cplusplus
-}
-#endif /* __cplusplus */
-
-#define RpLightChunkInfoRead(stream, lightChunkInfo, bytesRead) \
- _rpLightChunkInfoRead(stream, lightChunkInfo, bytesRead)
-
-
-/*--- Automatically derived from: C:/daily/rwsdk/world/pipe/p2/d3d8/D3D8lights.h ---*/
-/**
- * \ingroup rplightd3d8
- * \typedef RpD3D8AttenuationParams
- * typedef for struct RpD3D8AttenuationParams
- */
-typedef struct RpD3D8AttenuationParams RpD3D8AttenuationParams;
-/**
- * \ingroup rplightd3d8
- * \struct RpD3D8AttenuationParams
- * This type represents the attenuation model of a spot or point light.
- */
-struct RpD3D8AttenuationParams
-{
- RwReal constant; /**< Constant attenuation coefficient */
- RwReal linear; /**< Linear attenuation coefficient */
- RwReal quadratic; /**< Quadratic attenuation coefficient */
-};
-
-#ifdef __cplusplus
-extern "C"
-{
-#endif /* __cplusplus */
-
-extern void
-RpD3D8LightSetAttenuationParams(RpLight *light,
- const RpD3D8AttenuationParams *params);
-
-extern void
-RpD3D8LightGetAttenuationParams(const RpLight *light,
- RpD3D8AttenuationParams *params);
-
-extern RwBool
-_rwD3D8LightsOpen(void);
-
-extern RwBool
-_rwD3D8LightsGlobalEnable(RpLightFlag flags);
-
-extern RwBool
-_rwD3D8LightDirectionalEnable(RpLight *light);
-
-extern RwBool
-_rwD3D8LightLocalEnable(RpLight *light);
-
-extern void
-_rwD3D8LightsEnable(RwBool enable, RwUInt32 type);
-
-extern void
-_rwD3D8LightsClose(void);
-
-
-#ifdef __cplusplus
-}
-#endif /* __cplusplus */
-
-
-/*--- Automatically derived from: C:/daily/rwsdk/world/pipe/p2/p2stdclsw.h ---*/
-typedef RpLight *RxLight;
-#ifdef __cplusplus
-extern "C"
-{
-#endif /* __cplusplus */
-
-extern RxClusterDefinition RxClLights; /* Uses the RxLight type (see above) */
-
-#ifdef __cplusplus
-}
-#endif /* __cplusplus */
-
-
-
-/*--- Automatically derived from: c:/daily/rwsdk/world/bageomet.h ---*/
-
-/*
- * Handling atomic's geometry
- * Geometry describe objects, and are the building blocks for atomics
- *
- * Copyright (c) 1998 Criterion Software Ltd.
-*/
-
-
-/****************************************************************************
- Defines
- */
-
-/* Type ID */
-#define rpGEOMETRY 8
-
-/**
- * \ingroup rpworlddatatypes
- * RpGeometryFlag
- * Geometry type flags
- *
- * When creating a geometry, these flags can be OR'ed together to
- * specify the format along with the rpGEOMETRYTEXCOORDSETS(n) macro if more
- * than two sets of texture coordinates are required. See \ref RpGeometryCreate
- * for more details.
- *
- * \see RpGeometryCreate().
- */
-enum RpGeometryFlag
-{
- rpGEOMETRYTRISTRIP = 0x00000001, /**<This geometry's meshes can be
- rendered as strips.
- \ref RpMeshSetTriStripMethod is
- used to change this method.*/
- rpGEOMETRYPOSITIONS = 0x00000002, /**<This geometry has positions */
- rpGEOMETRYTEXTURED = 0x00000004, /**<This geometry has only one set of
- texture coordinates. Texture
- coordinates are specified on a per
- vertex basis */
- rpGEOMETRYPRELIT = 0x00000008, /**<This geometry has pre-light colors */
- rpGEOMETRYNORMALS = 0x00000010, /**<This geometry has vertex normals */
- rpGEOMETRYLIGHT = 0x00000020, /**<This geometry will be lit */
- rpGEOMETRYMODULATEMATERIALCOLOR = 0x00000040, /**<Modulate material color
- with vertex colors
- (pre-lit + lit) */
-
- rpGEOMETRYTEXTURED2 = 0x00000080, /**<This geometry has at least 2 sets of
- texture coordinates. */
-
- /*
- * These above flags were stored in the flags field in an RwObject, they
- * are now stored in the flags file of the RpGeometry.
- */
-
- rpGEOMETRYNATIVE = 0x01000000,
- rpGEOMETRYNATIVEINSTANCE = 0x02000000,
-
- rpGEOMETRYFLAGSMASK = 0x000000FF,
- rpGEOMETRYNATIVEFLAGSMASK = 0x0F000000,
-
- rpGEOMETRYFLAGFORCEENUMSIZEINT = RWFORCEENUMSIZEINT
-};
-typedef enum RpGeometryFlag RpGeometryFlag;
-
-/* Multi texture coordinate format specifier for RpGeometryCreate() */
-#define rpGEOMETRYTEXCOORDSETS(_num) ((_num & 0xff) << 16)
-
-/**
- * \ingroup rpworlddatatypes
- * RpGeometryLockMode
- * Geometry lock flags
- */
-enum RpGeometryLockMode
-{
- rpGEOMETRYLOCKPOLYGONS = 0x01, /**<Lock the polygons (triangle list) */
- rpGEOMETRYLOCKVERTICES = 0x02, /**<Lock the vertex positional data */
- rpGEOMETRYLOCKNORMALS = 0x04, /**<Lock the vertex normal data */
- rpGEOMETRYLOCKPRELIGHT = 0x08, /**<Lock the pre-light values */
- rpGEOMETRYLOCKTEXCOORDS = 0x10, /**<Lock the texture coordinates set 1*/
- rpGEOMETRYLOCKTEXCOORDS1 = 0x10, /**<Lock the texture coordinates set 1*/
- rpGEOMETRYLOCKTEXCOORDS2 = 0x20, /**<Lock the texture coordinates set 2*/
- rpGEOMETRYLOCKTEXCOORDS3 = 0x40, /**<Lock the texture coordinates set 3*/
- rpGEOMETRYLOCKTEXCOORDS4 = 0x80, /**<Lock the texture coordinates set 4*/
- rpGEOMETRYLOCKTEXCOORDS5 = 0x0100, /**<Lock the texture coordinates set 5*/
- rpGEOMETRYLOCKTEXCOORDS6 = 0x0200, /**<Lock the texture coordinates set 6*/
- rpGEOMETRYLOCKTEXCOORDS7 = 0x0400, /**<Lock the texture coordinates set 7*/
- rpGEOMETRYLOCKTEXCOORDS8 = 0x0800, /**<Lock the texture coordinates set 8*/
- rpGEOMETRYLOCKTEXCOORDSALL = 0x0ff0, /**<Lock all texture coordinate sets*/
- rpGEOMETRYLOCKALL = 0x0fff, /**<Combination of all the above */
-
- rpGEOMETRYLOCKMODEFORCEENUMSIZEINT = RWFORCEENUMSIZEINT
-};
-typedef enum RpGeometryLockMode RpGeometryLockMode;
-
-/* Convenience macro for generating a tex coord lock flag */
-#define rpGEOMETRYLOCKTEXCOORDSIDX(_idx) (rpGEOMETRYLOCKTEXCOORDS1 << (_idx))
-
-
-/****************************************************************************
- Global Types
- */
-
-typedef struct rpGeometryGlobals rpGeometryGlobals;
-struct rpGeometryGlobals
-{
- RwFreeList *geomFreeList;
-};
-
-/**
- * \ingroup rpworlddatatypes
- * \typedef RpGeometry
- * Geometry object. This should be considered an opaque type.
- * Use the RpGeometry API functions to access.
- */
-typedef struct RpGeometry RpGeometry;
-
-/**
- * \ingroup rpworlddatatypes
- * \typedef RpMorphTarget
- * Morph target -- vertex positions and normals.
- * This should be considered an opaque type.
- * Use RpMorphTarget API functions to access.
- */
-typedef struct RpMorphTarget RpMorphTarget;
-
-#if (!defined(DOXYGEN))
-struct RpMorphTarget
-{
- RpGeometry *parentGeom;
- RwSphere boundingSphere;
- RwV3d *verts;
- RwV3d *normals;
-};
-#endif /* (!defined(DOXYGEN)) */
-
-typedef struct RpTriangle RpTriangle;
-
-/**
- * \ingroup rpworlddatatypes
- * \struct RpTriangle
- * This type represents a triangle in a geometry specified
- * by three indices into the geometry's vertex list (vertIndex)
- * together with an index in to the geometry's
- * material list (matIndex) (see API function \ref RpGeometryGetTriangles)
- */
-struct RpTriangle
-{
- RwUInt16 vertIndex[3]; /**< vertex indices */
- RwInt16 matIndex; /**< Index into material list */
-};
-
-#if (!defined(DOXYGEN))
-struct RpGeometry
-{
- RwObject object; /* Generic type */
-
- RwUInt32 flags; /* Geometry flags */
-
- RwUInt16 lockedSinceLastInst; /* What has been locked since we last instanced - for re-instancing */
- RwInt16 refCount; /* Reference count (for keeping track of atomics referencing geometry) */
-
- RwInt32 numTriangles; /* Quantity of various things (polys, verts and morph targets) */
- RwInt32 numVertices;
- RwInt32 numMorphTargets;
- RwInt32 numTexCoordSets;
-
- RpMaterialList matList;
-
- RpTriangle *triangles; /* The triangles */
-
- RwRGBA *preLitLum; /* The pre-lighting values */
-
- RwTexCoords *texCoords[rwMAXTEXTURECOORDS]; /* Texture coordinates */
-
- RwSurfaceProperties ignoredSurfaceProps; /* Not used in pp rendering, but present
- * so if pipe1 files are read and written these
- * values are not lost
- */
-
- RpMeshHeader *mesh; /* The mesh - groups polys of the same material */
-
- RwResEntry *repEntry; /* Information for an instance */
-
- RpMorphTarget *morphTarget; /* The Morph Target */
-};
-#endif /* (!defined(DOXYGEN)) */
-
-typedef struct RpGeometryChunkInfo RpGeometryChunkInfo;
-typedef struct RpGeometryChunkInfo _rpGeometry;
-
-struct RpGeometryChunkInfo
-{
- RwInt32 format; /* Compression flags and number of texture coord sets */
-
- RwInt32 numTriangles;
- RwInt32 numVertices;
-
- RwInt32 numMorphTargets;
-
- RwSurfaceProperties ignoredSurfaceProps;
-};
-
-/* Callbacks */
-
-/**
- * \ingroup rpworlddatatypes
- * \typedef RpGeometryCallBack
- * \ref RpGeometryCallBack represents the simple callback function for the \ref RpGeometry object.
- * The callback may return NULL to terminate further callbacks on
- * the geometry.
- *
- * \param geometry Pointer to the current geometry, supplied by iterator.
- * \param data Pointer to developer-defined data structure.
- */
-typedef RpGeometry *(*RpGeometryCallBack)(RpGeometry *geometry, void *data);
-
-/**
- * \ingroup rpworlddatatypes
- * \typedef RpGeometrySortByMaterialCallBack
- * \ref RpGeometrySortByMaterialCallBack is used by
- * \ref RpGeometrySortByMaterial in order to preserve the validity of plugin
- * data when the vertices in an \ref RpGeometry are sorted (and some possibly
- * duplicated).
- *
- * A vertex map table is provided to the callback - this contains, for each
- * vertex in the new geometry, the index of the corresponding vertex in the
- * original geometry.
- *
- * \param oldGeom Pointer to the source geometry.
- * \param newGeom Pointer to the new, sorted geometry.
- * \param remapTable pointer to the vertex map table
- * \param numberOfEntries Number of vertices in the new
- * geometry (size of the map table)
- */
-typedef void (*RpGeometrySortByMaterialCallBack)(const RpGeometry *oldGeom,
- RpGeometry *newGeom,
- RwUInt16 *remapTable,
- RwUInt16 numberOfEntries);
-
-
-/****************************************************************************
- <macro/inline functionality
- */
-
-#define RpMorphTargetSetBoundingSphereMacro(_mt, _sphere) \
- (RwSphereAssign(&((_mt)->boundingSphere), (_sphere)), (_mt))
-
-#define RpMorphTargetGetBoundingSphereMacro(_mt) \
- (&((_mt)->boundingSphere))
-
-#define RpGeometryGetNumMorphTargetsMacro(_geometry) \
- ((_geometry)->numMorphTargets)
-
-#define RpGeometryGetMorphTargetMacro(_geometry, _index) \
- (&((_geometry)->morphTarget[(_index)]))
-
-#define RpGeometryGetPreLightColorsMacro(_geometry) \
- ((_geometry)->preLitLum)
-
-#define RpGeometryGetVertexTexCoordsMacro(_geometry, _uvIndex) \
- ((_geometry)->texCoords[(_uvIndex) - 1])
-
-#define RpGeometryGetNumTexCoordSetsMacro(_geometry) \
- ((_geometry)->numTexCoordSets)
-
-#define RpGeometryGetNumVerticesMacro(_geometry) \
- ((_geometry)->numVertices)
-
-#define RpMorphTargetGetVerticesMacro(_mt) \
- ((_mt)->verts)
-
-#define RpMorphTargetGetVertexNormalsMacro(_mt) \
- ((_mt)->normals)
-
-#define RpGeometryGetTrianglesMacro(_geometry) \
- ((_geometry)->triangles)
-
-#define RpGeometryGetNumTrianglesMacro(_geometry) \
- ((_geometry)->numTriangles)
-
-#define RpGeometryGetMaterialMacro(_geometry, _num) \
- (((_geometry)->matList.materials)[(_num)])
-
-#define RpGeometryGetNumMaterialsMacro(_geometry) \
- ((_geometry)->matList.numMaterials)
-
-#define RpGeometryGetFlagsMacro(_geometry) \
- ((_geometry)->flags)
-
-#define RpGeometrySetFlagsMacro(_geometry, _flags) \
- (((_geometry)->flags = (_flags)), (_geometry))
-
-
-#if !(defined(RWDEBUG) || defined(RWSUPPRESSINLINE))
-
-#define RpMorphTargetSetBoundingSphere(_geometry, _sphere) \
- RpMorphTargetSetBoundingSphereMacro(_geometry, _sphere)
-
-#define RpMorphTargetGetBoundingSphere(_geometry) \
- RpMorphTargetGetBoundingSphereMacro(_geometry)
-
-#define RpGeometryGetNumMorphTargets(_geometry) \
- RpGeometryGetNumMorphTargetsMacro(_geometry)
-
-#define RpGeometryGetMorphTarget(_geometry, _index) \
- RpGeometryGetMorphTargetMacro(_geometry, _index)
-
-#define RpGeometryGetPreLightColors(_geometry) \
- RpGeometryGetPreLightColorsMacro(_geometry)
-
-#define RpGeometryGetVertexTexCoords(_geometry, _uvIndex) \
- RpGeometryGetVertexTexCoordsMacro(_geometry, _uvIndex)
-
-#define RpGeometryGetNumTexCoordSets(_geometry) \
- RpGeometryGetNumTexCoordSetsMacro(_geometry)
-
-#define RpGeometryGetNumVertices(_geometry) \
- RpGeometryGetNumVerticesMacro(_geometry)
-
-#define RpMorphTargetGetVertices(_mt) \
- RpMorphTargetGetVerticesMacro(_mt)
-
-#define RpMorphTargetGetVertexNormals(_mt) \
- RpMorphTargetGetVertexNormalsMacro(_mt)
-
-#define RpGeometryGetTriangles(_geometry) \
- RpGeometryGetTrianglesMacro(_geometry)
-
-#define RpGeometryGetNumTriangles(_geometry) \
- RpGeometryGetNumTrianglesMacro(_geometry)
-
-#define RpGeometryGetMaterial(_geometry, _num) \
- RpGeometryGetMaterialMacro(_geometry, _num)
-
-#define RpGeometryGetNumMaterials(_geometry) \
- RpGeometryGetNumMaterialsMacro(_geometry)
-
-#define RpGeometryGetFlags(_geometry) \
- RpGeometryGetFlagsMacro(_geometry)
-
-#define RpGeometrySetFlags(_geometry, _flags) \
- RpGeometrySetFlagsMacro(_geometry, _flags)
-
-#endif /* !(defined(RWDEBUG) || defined(RWSUPPRESSINLINE)) */
-
-
-/****************************************************************************
- Function prototypes
- */
-
-#ifdef __cplusplus
-extern "C"
-{
-#endif /* __cplusplus */
-
-
-/* Transforms geometry morph target vertices */
-
-extern RpGeometry *
-RpGeometryTransform(RpGeometry *geometry,
- const RwMatrix *matrix);
-
-/* Create geometry for a 'space' marker */
-
-extern RpGeometry *
-RpGeometryCreateSpace(RwReal radius);
-
-/* Morph targets - Accessing geometry contents */
-
-#if (defined(RWDEBUG) || defined(RWSUPPRESSINLINE))
-
-extern RpMorphTarget *
-RpMorphTargetSetBoundingSphere(RpMorphTarget *morphTarget,
- const RwSphere *boundingSphere);
-
-extern RwSphere *
-RpMorphTargetGetBoundingSphere(RpMorphTarget *morphTarget);
-
-#endif /* (defined(RWDEBUG) || defined(RWSUPPRESSINLINE)) */
-
-extern const RpMorphTarget *
-RpMorphTargetCalcBoundingSphere(const RpMorphTarget *morphTarget,
- RwSphere *boundingSphere);
-
-extern RwInt32
-RpGeometryAddMorphTargets(RpGeometry *geometry,
- RwInt32 mtcount);
-
-extern RwInt32
-RpGeometryAddMorphTarget(RpGeometry *geometry);
-
-extern RpGeometry *
-RpGeometryRemoveMorphTarget(RpGeometry *geometry,
- RwInt32 morphTarget);
-
-#if (defined(RWDEBUG) || defined(RWSUPPRESSINLINE))
-extern RwInt32
-RpGeometryGetNumMorphTargets(const RpGeometry *geometry);
-
-extern RpMorphTarget *
-RpGeometryGetMorphTarget(const RpGeometry *geometry,
- RwInt32 morphTarget);
-
-extern RwRGBA *
-RpGeometryGetPreLightColors(const RpGeometry *geometry);
-
-extern RwTexCoords *
-RpGeometryGetVertexTexCoords(const RpGeometry *geometry,
- RwTextureCoordinateIndex uvIndex);
-
-extern RwInt32
-RpGeometryGetNumTexCoordSets(const RpGeometry *geometry);
-
-extern RwInt32
-RpGeometryGetNumVertices (const RpGeometry *geometry);
-
-extern RwV3d *
-RpMorphTargetGetVertices(const RpMorphTarget *morphTarget);
-
-extern RwV3d *
-RpMorphTargetGetVertexNormals(const RpMorphTarget *morphTarget);
-
-extern RpTriangle *
-RpGeometryGetTriangles(const RpGeometry *geometry);
-
-extern RwInt32
-RpGeometryGetNumTriangles(const RpGeometry *geometry);
-
-extern RpMaterial *
-RpGeometryGetMaterial(const RpGeometry *geometry,
- RwInt32 matNum);
-
-#endif /* (defined(RWDEBUG) || defined(RWSUPPRESSINLINE)) */
-
-extern const RpGeometry *
-RpGeometryTriangleSetVertexIndices(const RpGeometry *geometry,
- RpTriangle *triangle,
- RwUInt16 vert1,
- RwUInt16 vert2,
- RwUInt16 vert3);
-
-extern RpGeometry *
-RpGeometryTriangleSetMaterial(RpGeometry *geometry,
- RpTriangle *triangle,
- RpMaterial *material);
-
-extern const RpGeometry *
-RpGeometryTriangleGetVertexIndices(const RpGeometry *geometry,
- const RpTriangle *triangle,
- RwUInt16 *vert1,
- RwUInt16 *vert2,
- RwUInt16 *vert3);
-
-extern RpMaterial *
-RpGeometryTriangleGetMaterial(const RpGeometry *geometry,
- const RpTriangle *triangle);
-
-#if (defined(RWDEBUG) || defined(RWSUPPRESSINLINE))
-extern RwInt32
-RpGeometryGetNumMaterials(const RpGeometry *geometry);
-
-#endif /* (defined(RWDEBUG) || defined(RWSUPPRESSINLINE)) */
-
-extern RpGeometry *
-RpGeometryForAllMaterials(RpGeometry *geometry,
- RpMaterialCallBack fpCallBack,
- void *pData);
-
-/* Accessing the inards of geometry */
-extern RpGeometry *
-RpGeometryLock(RpGeometry *geometry,
- RwInt32 lockMode);
-
-extern RpGeometry *
-RpGeometryUnlock(RpGeometry *geometry);
-
-extern const RpGeometry *
-RpGeometryForAllMeshes(const RpGeometry *geometry,
- RpMeshCallBack fpCallBack,
- void *pData);
-
-/* Creation and destruction */
-extern RpGeometry *
-RpGeometryCreate(RwInt32 numVert,
- RwInt32 numTriangles,
- RwUInt32 format);
-
-extern RwBool
-RpGeometryDestroy(RpGeometry *geometry);
-
-extern RpGeometry *
-_rpGeometryAddRef(RpGeometry *geometry);
-
-/* Attaching toolkits */
-extern RwInt32
-RpGeometryRegisterPlugin(RwInt32 size,
- RwUInt32 pluginID,
- RwPluginObjectConstructor constructCB,
- RwPluginObjectDestructor destructCB,
- RwPluginObjectCopy copyCB);
-
-extern RwInt32
-RpGeometryRegisterPluginStream(RwUInt32 pluginID,
- RwPluginDataChunkReadCallBack readCB,
- RwPluginDataChunkWriteCallBack writeCB,
- RwPluginDataChunkGetSizeCallBack getSizeCB);
-
-extern RwInt32
-RpGeometrySetStreamAlwaysCallBack(RwUInt32 pluginID,
- RwPluginDataChunkAlwaysCallBack alwaysCB);
-
-extern RwInt32
-RpGeometryGetPluginOffset(RwUInt32 pluginID);
-
-extern RwBool
-RpGeometryValidatePlugins(const RpGeometry *geometry);
-
-/* Binary format */
-extern RwUInt32
-RpGeometryStreamGetSize(const RpGeometry *geometry);
-
-extern const RpGeometry *
-RpGeometryStreamWrite(const RpGeometry *geometry,
- RwStream *stream);
-
-extern RpGeometry *
-RpGeometryStreamRead(RwStream *stream);
-
-extern RpGeometryChunkInfo *
-_rpGeometryChunkInfoRead(RwStream *stream,
- RpGeometryChunkInfo *geometryChunkInfo,
- RwInt32 *bytesRead);
-
-#if (defined(RWDEBUG) || defined(RWSUPPRESSINLINE))
-/* Flags */
-extern RwUInt32
-RpGeometryGetFlags(const RpGeometry *geometry);
-
-extern RpGeometry *
-RpGeometrySetFlags(RpGeometry *geometry,
- RwUInt32 flags);
-
-#endif
-
-/* Lighting characteristics */
-
-extern const RwSurfaceProperties *
-_rpGeometryGetSurfaceProperties(const RpGeometry *geometry);
-
-extern RpGeometry *
-_rpGeometrySetSurfaceProperties(RpGeometry *geometry,
- const RwSurfaceProperties *surfaceProperties);
-
-#ifdef __cplusplus
-}
-#endif /* __cplusplus */
-
-#define RpGeometryGetSurfaceProperties(_geometry) \
- _rpGeometryGetSurfaceProperties(_geometry)
-
-#define RpGeometrySetSurfaceProperties(_geometry, _surfaceProperties) \
- _rpGeometrySetSurfaceProperties(_geometry, _surfaceProperties)
-
-#define rpGeometryAddRef(_geometry) \
- _rpGeometryAddRef(_geometry)
-
-#define RpGeometryChunkInfoRead(stream, geometryChunkInfo, bytesRead) \
- _rpGeometryChunkInfoRead(stream, geometryChunkInfo, bytesRead)
-
-
-/*--- Automatically derived from: c:/daily/rwsdk/world/baclump.h ---*/
-
-/*
- * Clump and atomic handling.
- * Clumps and atomics are the movable rendered objects in the world
- *
- * Copyright (c) 1998 Criterion Software Ltd.
- */
-
-
-/****************************************************************************
- Defines
- */
-
-/****************************** Object type ID ******************************/
-
-/* Type IDs */
-
-#define rpATOMIC 1
-#define rpCLUMP 2
-
-/* Interpolator flags */
-enum RpInterpolatorFlag
-{
- rpINTERPOLATORDIRTYINSTANCE = 0x01,
- rpINTERPOLATORDIRTYSPHERE = 0x02,
- rpINTERPOLATORNOFRAMEDIRTY = 0x04,
- rpINTERPOLATORFLAGFORCEENUMSIZEINT = RWFORCEENUMSIZEINT
-};
-typedef enum RpInterpolatorFlag rpInterpolatorFlag;
-
-/**
- * \ingroup rpworlddatatypes
- * The bit-field type RpAtomicFlag specifies the options available for
- * controlling the behavior of atomics. See API function \ref RpAtomicSetFlags.
- *
- * \see RpAtomicSetFlags
- * \see RpAtomicGetFlags
- * \see RpWorldSectorForAllCollisionAtomics
- */
-
-enum RpAtomicFlag
-{
- rpATOMICCOLLISIONTEST = 0x01, /**<A generic collision flag to indicate
- * that the atomic should be considered
- * in collision tests.
- */
- rpATOMICRENDER = 0x04, /**<The atomic is rendered if it is
- * in the view frustum.
- */
-
- rpATOMICFLAGFORCEENUMSIZEINT = RWFORCEENUMSIZEINT
-};
-typedef enum RpAtomicFlag RpAtomicFlag;
-
-/**
- * \ingroup rpworlddatatypes
- * \ref RpAtomicSetGeomFlag defines how an atomic references a new geometry
- *
- * \see RpAtomicSetGeometry
- */
-enum RpAtomicSetGeomFlag
-{
- rpATOMICSAMEBOUNDINGSPHERE = 0x01, /**<The bounding-sphere for the
- * new geometry is assumed to be the
- * same as the old one, if any, and
- * should not be recalculated.
- */
-
- rpATOMICSETGEOMFLAGFORCEENUMSIZEINT = RWFORCEENUMSIZEINT
-};
-typedef enum RpAtomicSetGeomFlag RpAtomicSetGeomFlag;
-
-enum RpAtomicPrivateFlag
-{
- rpATOMICPRIVATEWORLDBOUNDDIRTY = 0x01,
- rpATOMICPRIVATEFLAGFORCEENUMSIZEINT = RWFORCEENUMSIZEINT
-};
-typedef enum RpAtomicPrivateFlag rpAtomicPrivateFlag;
-
-
-/**
- * \ingroup rpworlddatatypes
- * \typedef RpAtomic
- * Atomic Geometry object. This should be
- * considered an opaque type. Use the RpAtomic API functions to access.
- */
-typedef struct RpAtomic RpAtomic;
-
-/**
- * \ingroup rpworlddatatypes
- * \typedef RpInterpolator
- * Morph Target Interpolator.
- * This should be considered an opaque type.
- * Use the RpInterpolator API functions to access.
- */
-typedef struct RpInterpolator RpInterpolator;
-
-#if (!defined(DOXYGEN))
-struct RpInterpolator
-{
- RwInt32 flags; /**< flags */
- RwInt16 startMorphTarget; /**< startMorphTarget */
- RwInt16 endMorphTarget; /**< endMorphTarget */
- RwReal time; /**< time */
- RwReal recipTime; /**< recipTime */
- RwReal position; /**< position */
-};
-#endif /* (!defined(DOXYGEN)) */
-
-/* More callbacks */
-
-/**
- * \ingroup rpworlddatatypes
- * \typedef RpClump
- * Clump Geometry object. This should be
- * considered an opaque type. Use the RpClump API functions to access.
- */
-typedef struct RpClump RpClump;
-
-/**
- * \ingroup rpworlddatatypes
- * \typedef RpClumpCallBack
- * \ref RpClumpCallBack represents the
- * function called from \ref RwCameraForAllClumpsInFrustum and
- * \ref RwCameraForAllClumpsNotInFrustum when a clump lies inside the current camera's
- * view frustum. It is also called from \ref RpWorldForAllClumps. This function should
- * return a pointer to the current clump to indicate success. The callback may return
- * NULL to terminate further callbacks on the clumps.
- *
- * \param clump Pointer to the current clump, supplied by
- * iterator.
- * \param data Pointer to developer-defined data structure.
- *
- * \return Pointer to the current clump.
- *
- * \see RpWorldForAllClumps
- * \see RpClumpGetCallBack
- * \see RpClumpSetCallBack
- * \see RwCameraForAllClumpsInFrustum
- * \see RwCameraForAllClumpsNotInFrustum
- */
-typedef RpClump *(*RpClumpCallBack) (RpClump * clump, void *data);
-
-#if (!defined(DOXYGEN))
-struct RpClump
-{
- RwObject object;
-
- /* Information about all the Atomics */
- RwLinkList atomicList;
-
- /* Lists of lights and cameras */
- RwLinkList lightList;
- RwLinkList cameraList;
-
- /* The clump in the world */
- RwLLLink inWorldLink;
-
- /* Clump callback */
- RpClumpCallBack callback;
-
- /* Render frame - used to prevent multiple invocations
- * of the clump frustum callback
- */
- RwUInt16 renderFrame;
- RwUInt16 pad;
-};
-#endif /* (!defined(DOXYGEN)) */
-
-/**
- * \ingroup rpworlddatatypes
- * \typedef RpAtomicCallBackRender
- * \ref RpAtomicCallBackRender represents the function called from
- * \ref RpAtomicRender when the specified atomic
- * lies inside the current camera's view frustum. The default callback
- * initiates execution of the atomic rendering pipeline. This function should
- * return a pointer to the atomic to indicate success.
- *
- * \param atomic Pointer to the current atomic, supplied by
- * iterator.
- *
- * \see RpAtomicRender
- */
-typedef RpAtomic *(*RpAtomicCallBackRender) (RpAtomic * atomic);
-
-#if (!defined(DOXYGEN))
-struct RpAtomic
-{
- RwObjectHasFrame object;
-
- /* Information for an instance */
- RwResEntry *repEntry;
-
- /* Triangles making the object */
- RpGeometry *geometry;
-
- /* Interpolated bounding sphere (in object space and world space) */
- RwSphere boundingSphere;
- RwSphere worldBoundingSphere;
-
- /* Connections to other atomics */
- RpClump *clump;
- RwLLLink inClumpLink;
-
- /* callbacks */
- RpAtomicCallBackRender renderCallBack;
-
- /* Interpolation animation pointer */
- RpInterpolator interpolator;
-
- /* Counter for checks of "render has occurred already" */
- RwUInt16 renderFrame;
- RwUInt16 pad;
-
- /* Connections to sectors */
- RwLinkList llWorldSectorsInAtomic;
-
- /* The Atomic object pipeline for this Atomic */
- RxPipeline *pipeline;
-};
-#endif /* (!defined(DOXYGEN)) */
-
-/**
- * \ingroup rpworlddatatypes
- * \typedef RpAtomicCallBack
- * \ref RpAtomicCallBack represents the function called from \ref RpWorldSectorForAllAtomics and
- * \ref RpClumpForAllAtomics for all atomics in a given world sector or clump.
- * This function should return a pointer to the current atomic to indicate
- * success. The callback may return NULL to terminate further callbacks on
- * the world sector.
- *
- * \param atomic Pointer to the current atomic, supplied by
- * iterator.
- * \param data Pointer to developer-defined data structure.
- */
-typedef RpAtomic *(*RpAtomicCallBack) (RpAtomic * atomic, void *data);
-
-typedef struct RpTie RpTie;
-
-struct RpTie
-{
- /* Information for an atomic sector */
- RwLLLink lAtomicInWorldSector; /* Atomics IN this ATOMIC SECTOR */
- RpAtomic *apAtom;
-
- /* Information for a atomic */
- RwLLLink lWorldSectorInAtomic; /* Atomic sectors HOLDING this atomic */
- RpWorldSector *worldSector;
-};
-
-typedef struct RpClumpChunkInfo RpClumpChunkInfo;
-typedef struct RpClumpChunkInfo _rpClump;
-typedef struct RpClumpChunkInfo33000 _rpClump33000;
-
-struct RpClumpChunkInfo
-{
- RwInt32 numAtomics;
- RwInt32 numLights;
- RwInt32 numCameras;
-};
-
-struct RpClumpChunkInfo33000
-{
- RwInt32 numAtomics;
-};
-
-/****************************************************************************
- <macro/inline functionality
-
- */
-
-/* NB "RpAtomicRender(atom++) will break it */
-#define RpAtomicRenderMacro(_atomic) \
- ((_atomic)->renderCallBack(_atomic))
-
-#define RpAtomicGetGeometryMacro(_atomic) \
- ((_atomic)->geometry)
-
-#if (!defined(RpAtomicSetRenderCallBackMacro))
-
-/* NB "RpAtomicSetRenderCallBack(atom++, callback)" will break it */
-#define RpAtomicSetRenderCallBackMacro(_atomic, _callback) \
-MACRO_START \
-{ \
- (_atomic)->renderCallBack = (_callback); \
- if (!(_atomic)->renderCallBack) \
- { \
- (_atomic)->renderCallBack = AtomicDefaultRenderCallBack; \
- } \
-} \
-MACRO_STOP
-
-#endif /* (!defined(RpAtomicSetRenderCallBackMacro)) */
-
-#define RpAtomicGetRenderCallBackMacro(_atomic) \
- ((_atomic)->renderCallBack)
-
-#define RpAtomicGetInterpolatorMacro(_atomic) \
- (&((_atomic)->interpolator))
-
-#define RpInterpolatorGetStartMorphTargetMacro(_intrp) \
- ((_intrp)->startMorphTarget)
-
-#define RpInterpolatorGetEndMorphTargetMacro(_intrp) \
- ((_intrp)->endMorphTarget)
-
-#define RpInterpolatorGetValueMacro(_intrp) \
- ((_intrp)->position)
-
-#define RpInterpolatorGetScaleMacro(_intrp) \
- ((_intrp)->time)
-
-/* NB "RpInterpolatorSetStartMorphTarget(interp++, target)" will break it */
-#define RpInterpolatorSetStartMorphTargetMacro(_intrp, _target, _atomic)\
- ((_intrp)->startMorphTarget = (RwInt16) (_target), \
- (_intrp)->flags |= (RwInt32)(rpINTERPOLATORDIRTYINSTANCE | \
- rpINTERPOLATORDIRTYSPHERE ), \
- ((!((_intrp)->flags & rpINTERPOLATORNOFRAMEDIRTY))? \
- ((RpAtomicGetFrame(_atomic))? \
- (RwFrameUpdateObjects(RpAtomicGetFrame(_atomic))): \
- (0)): \
- (0)), \
- (_intrp))
-
-/* NB "RpInterpolatorSetEndMorphTarget(interp++, target)" will break it */
-#define RpInterpolatorSetEndMorphTargetMacro(_intrp, _target, _atomic) \
- ((_intrp)->endMorphTarget = (RwInt16) (_target), \
- (_intrp)->flags |= (RwInt32)(rpINTERPOLATORDIRTYINSTANCE | \
- rpINTERPOLATORDIRTYSPHERE ), \
- ((!((_intrp)->flags & rpINTERPOLATORNOFRAMEDIRTY))? \
- ((RpAtomicGetFrame(_atomic))? \
- (RwFrameUpdateObjects(RpAtomicGetFrame(_atomic))): \
- (0)): \
- (0)), \
- (_intrp))
-
-/* NB "RpInterpolatorSetValue(interp++, value)" will break it */
-#define RpInterpolatorSetValueMacro(_intrp, _value, _atomic) \
- ((_intrp)->position = (_value), \
- (_intrp)->flags |= (RwInt32)(rpINTERPOLATORDIRTYINSTANCE | \
- rpINTERPOLATORDIRTYSPHERE ), \
- ((!((_intrp)->flags & rpINTERPOLATORNOFRAMEDIRTY))? \
- ((RpAtomicGetFrame(_atomic))? \
- (RwFrameUpdateObjects(RpAtomicGetFrame(_atomic))): \
- (0)): \
- (0)), \
- (_intrp))
-
-/* NB "RpInterpolatorSetScale(interp++, *(scale++))" will break it */
-#define RpInterpolatorSetScaleMacro(_intrp, _scale, _atomic) \
- ((_intrp)->time = (_scale), \
- (_intrp)->recipTime = (RwReal) (1.0) / (_scale), \
- (_intrp)->flags |= (RwInt32)(rpINTERPOLATORDIRTYINSTANCE | \
- rpINTERPOLATORDIRTYSPHERE ), \
- ((!((_intrp)->flags & rpINTERPOLATORNOFRAMEDIRTY))? \
- ((RpAtomicGetFrame(_atomic))? \
- (RwFrameUpdateObjects(RpAtomicGetFrame(_atomic))): \
- (0)): \
- (0)), \
- (_intrp))
-
-#define RpAtomicGetClumpMacro(_atomic) \
- ((_atomic)->clump)
-
-/* NB "RpAtomicGetBoundingSphere(atomic++)" will break it */
-#define RpAtomicGetBoundingSphereMacro(_atomic) \
- ((((_atomic)->interpolator.flags & rpINTERPOLATORDIRTYSPHERE)? \
- _rpAtomicResyncInterpolatedSphere(_atomic), 0: 0), \
- &((_atomic)->boundingSphere))
-#define RpAtomicGetFrameMacro(_atomic) \
- ((RwFrame *) rwObjectGetParent(_atomic))
-
-/* NB "RpClumpSetFrame(clump++, frame)" will break it */
-#if (!defined(RpClumpSetFrameMacro))
-#define RpClumpSetFrameMacro(_clump, _frame) \
- (rwObjectSetParent(_clump, _frame), \
- (_clump))
-#endif /* (!defined(RpClumpSetFrameMacro)) */
-
-#if (!defined(RpClumpSetFrameVoidMacro))
-#define RpClumpSetFrameVoidMacro(_clump, _frame) \
-MACRO_START \
-{ \
- rwObjectSetParent(_clump, _frame); \
-} \
-MACRO_STOP
-#endif /* (!defined(RpClumpSetFrameVoidMacro)) */
-
-#define RpClumpGetFrameMacro(_clump) \
- ((RwFrame *) rwObjectGetParent(_clump))
-
-/* NB "RpAtomicSetFlags(atomic++, flags)" will break it */
-#if (!defined(RpAtomicSetFlagsMacro))
-#define RpAtomicSetFlagsMacro(_atomic, _flags) \
- (rwObjectSetFlags(_atomic, _flags), \
- (_atomic))
-#endif /* (!defined(RpAtomicSetFlagsMacro)) */
-
-#define RpAtomicGetFlagsMacro(_atomic) \
- (rwObjectGetFlags(_atomic))
-
-#if (! ( defined(RWDEBUG) || defined(RWSUPPRESSINLINE) ))
-
-#define RpAtomicRender(_atomic) \
- RpAtomicRenderMacro(_atomic)
-
-#define RpAtomicGetGeometry(_atomic) \
- RpAtomicGetGeometryMacro(_atomic)
-
-#define RpAtomicSetRenderCallBack(_atomic, _callback) \
- RpAtomicSetRenderCallBackMacro(_atomic, _callback)
-
-#define RpAtomicGetRenderCallBack(_atomic) \
- RpAtomicGetRenderCallBackMacro(_atomic)
-
-#define RpAtomicGetInterpolator(_atomic) \
- RpAtomicGetInterpolatorMacro(_atomic)
-
-#define RpInterpolatorGetStartMorphTarget(_intrp) \
- RpInterpolatorGetStartMorphTargetMacro(_intrp)
-
-#define RpInterpolatorGetEndMorphTarget(_intrp) \
- RpInterpolatorGetEndMorphTargetMacro(_intrp)
-
-#define RpInterpolatorGetValue(_intrp) \
- RpInterpolatorGetValueMacro(_intrp)
-
-#define RpInterpolatorGetScale(_intrp) \
- RpInterpolatorGetScaleMacro(_intrp)
-
-#define RpInterpolatorSetStartMorphTarget(_intrp, _target, _atomic) \
- RpInterpolatorSetStartMorphTargetMacro(_intrp, _target, _atomic)
-
-#define RpInterpolatorSetEndMorphTarget(_intrp, _target, _atomic) \
- RpInterpolatorSetEndMorphTargetMacro(_intrp, _target, _atomic)
-
-#define RpInterpolatorSetValue(_intrp, _value, _atomic) \
- RpInterpolatorSetValueMacro(_intrp, _value, _atomic)
-
-#define RpInterpolatorSetScale(_intrp, _scale, _atomic) \
- RpInterpolatorSetScaleMacro(_intrp, _scale, _atomic)
-
-#define RpAtomicGetClump(_atomic) \
- RpAtomicGetClumpMacro(_atomic)
-
-#define RpAtomicGetBoundingSphere(_atomic) \
- RpAtomicGetBoundingSphereMacro(_atomic)
-
-#define RpAtomicGetFrame(_atomic) \
- RpAtomicGetFrameMacro(_atomic)
-
-#define RpClumpSetFrame(_clump, _frame) \
- RpClumpSetFrameMacro(_clump, _frame)
-
-#define RpClumpGetFrame(_clump) \
- RpClumpGetFrameMacro(_clump)
-
-#define RpAtomicSetFlags(_atomic, _flags) \
- RpAtomicSetFlagsMacro(_atomic, _flags)
-
-#define RpAtomicGetFlags(_atomic) \
- RpAtomicGetFlagsMacro(_atomic)
-
-#endif /* (! ( defined(RWDEBUG) || defined(RWSUPPRESSINLINE) )) */
-
-/****************************************************************************
- Function prototypes
- */
-
-#ifdef __cplusplus
-extern "C"
-{
-#endif /* __cplusplus */
-
-
-/* Macro version of RpAtomicSetRenderCallBack needs this */
-extern RpAtomic *
-AtomicDefaultRenderCallBack(RpAtomic * atomic);
-
-extern void
-_rpAtomicResyncInterpolatedSphere(RpAtomic * atomic);
-
-extern const RwSphere *
-RpAtomicGetWorldBoundingSphere(RpAtomic * atomic);
-
-/* Enumeration */
-extern RpClump *
-RpClumpForAllAtomics(RpClump * clump,
- RpAtomicCallBack callback,
- void *pData);
-
-extern RpClump *
-RpClumpForAllLights(RpClump * clump,
- RpLightCallBack callback,
- void *pData);
-
-extern RpClump *
-RpClumpForAllCameras(RpClump * clump,
- RwCameraCallBack callback,
- void *pData);
-
-/* Frames */
-extern RpAtomic *
-RpAtomicSetFrame(RpAtomic * atomic,
- RwFrame * frame);
-
-/* Create a space marking clump */
-extern RpClump *
-RpClumpCreateSpace(const RwV3d * position,
- RwReal radius);
-
-/* Instancing and rendering */
-extern RpClump *
-RpClumpRender(RpClump * clump);
-
-extern RpClump *
-RpClumpRemoveAtomic(RpClump * clump,
- RpAtomic * atomic);
-
-extern RpClump *
-RpClumpAddAtomic(RpClump * clump,
- RpAtomic * atomic);
-
-extern RpClump *
-RpClumpRemoveLight(RpClump * clump,
- RpLight * light);
-
-extern RpClump *
-RpClumpAddLight(RpClump * clump,
- RpLight * light);
-
-extern RpClump *
-RpClumpRemoveCamera(RpClump * clump,
- RwCamera * camera);
-
-extern RpClump *
-RpClumpAddCamera(RpClump * clump,
- RwCamera * camera);
-
-/* Creation and destruction of clumps */
-extern RwBool
-RpClumpDestroy(RpClump * clump);
-
-extern RpClump *
-RpClumpCreate(void);
-
-extern RpClump *
-RpClumpClone(RpClump * clump);
-
-/* Creation and destruction of atomics*/
-extern RwBool
-RpAtomicDestroy(RpAtomic * atomic);
-
-extern RpAtomic *
-RpAtomicClone(RpAtomic * atomic);
-
-extern RpAtomic *
-RpAtomicCreate(void);
-
-/* Setting and getting geometry for an atomic */
-extern RpAtomic *
-RpAtomicSetGeometry(RpAtomic * atomic,
- RpGeometry * geometry,
- RwUInt32 flags);
-
-/* Frustum callbacks */
-extern RpClump *
-RpClumpSetCallBack(RpClump * clump,
- RpClumpCallBack callback);
-
-extern RpClumpCallBack
-RpClumpGetCallBack(const RpClump * clump);
-
-/* The number of atomics in a clump */
-extern RwInt32
-RpClumpGetNumAtomics(RpClump * clump);
-
-extern RwInt32
-RpClumpGetNumLights(RpClump * clump);
-
-extern RwInt32
-RpClumpGetNumCameras(RpClump * clump);
-
-/* Light and camera extensions */
-extern RpClump *
-RpLightGetClump(const RpLight *light);
-
-extern RpClump *
-RwCameraGetClump(const RwCamera *camera);
-
-/* Binary format */
-extern RwUInt32
-RpAtomicStreamGetSize(RpAtomic * atomic);
-
-extern RpAtomic *
-RpAtomicStreamRead(RwStream * stream);
-
-extern RpAtomic *
-RpAtomicStreamWrite(RpAtomic * atomic,
- RwStream * stream);
-
-extern RwUInt32
-RpClumpStreamGetSize(RpClump * clump);
-
-extern RpClump *
-RpClumpStreamRead(RwStream * stream);
-
-extern RpClump *
-RpClumpStreamWrite(RpClump * clump,
- RwStream * stream);
-
-extern RpClumpChunkInfo *
-_rpClumpChunkInfoRead(RwStream * stream,
- RpClumpChunkInfo * clumpChunkInfo,
- RwInt32 * bytesRead);
-
-/* Attaching toolkits */
-extern RwInt32
-RpAtomicRegisterPlugin(RwInt32 size,
- RwUInt32 pluginID,
- RwPluginObjectConstructor constructCB,
- RwPluginObjectDestructor destructCB,
- RwPluginObjectCopy copyCB);
-
-extern RwInt32
-RpClumpRegisterPlugin(RwInt32 size,
- RwUInt32 pluginID,
- RwPluginObjectConstructor constructCB,
- RwPluginObjectDestructor destructCB,
- RwPluginObjectCopy copyCB);
-
-extern RwInt32
-RpAtomicRegisterPluginStream(RwUInt32 pluginID,
- RwPluginDataChunkReadCallBack
- readCB,
- RwPluginDataChunkWriteCallBack
- writeCB,
- RwPluginDataChunkGetSizeCallBack
- getSizeCB);
-
-extern RwInt32
-RpAtomicSetStreamAlwaysCallBack(RwUInt32 pluginID,
- RwPluginDataChunkAlwaysCallBack alwaysCB);
-
-extern RwInt32
-RpAtomicSetStreamRightsCallBack(RwUInt32 pluginID,
- RwPluginDataChunkRightsCallBack rightsCB);
-
-extern RwInt32
-RpClumpRegisterPluginStream(RwUInt32 pluginID,
- RwPluginDataChunkReadCallBack readCB,
- RwPluginDataChunkWriteCallBack writeCB,
- RwPluginDataChunkGetSizeCallBack getSizeCB);
-
-extern RwInt32
-RpClumpSetStreamAlwaysCallBack(RwUInt32 pluginID,
- RwPluginDataChunkAlwaysCallBack alwaysCB);
-
-extern RwInt32
-RpAtomicGetPluginOffset(RwUInt32 pluginID);
-
-extern RwInt32
-RpClumpGetPluginOffset(RwUInt32 pluginID);
-
-extern RwBool
-RpAtomicValidatePlugins(const RpAtomic * atomic);
-
-extern RwBool
-RpClumpValidatePlugins(const RpClump * clump);
-
-#if ( defined(RWDEBUG) || defined(RWSUPPRESSINLINE) )
-extern RwFrame *
-RpAtomicGetFrame(const RpAtomic * atomic);
-
-extern RwFrame *
-RpClumpGetFrame(const RpClump * clump);
-
-extern RpClump *
-RpClumpSetFrame(RpClump * clump,
- RwFrame * frame);
-
-/* Flags */
-extern RpAtomic *
-RpAtomicSetFlags(RpAtomic * atomic,
- RwUInt32 flags);
-
-extern RwUInt32
-RpAtomicGetFlags(const RpAtomic * atomic);
-
-extern RwSphere *
-RpAtomicGetBoundingSphere(RpAtomic * atomic);
-
-extern RwInt32
-RpInterpolatorGetEndMorphTarget(const RpInterpolator * interpolator);
-
-extern RwInt32
-RpInterpolatorGetStartMorphTarget(const RpInterpolator * interpolator);
-
-extern RwReal
-RpInterpolatorGetValue(const RpInterpolator * interpolator);
-
-extern RwReal
-RpInterpolatorGetScale(const RpInterpolator * interpolator);
-
-extern RpInterpolator *
-RpInterpolatorSetEndMorphTarget(RpInterpolator * interpolator,
- RwInt32 morphTarget,
- RpAtomic * atomic);
-
-extern RpInterpolator *
-RpInterpolatorSetStartMorphTarget(RpInterpolator * interpolator,
- RwInt32 morphTarget,
- RpAtomic * atomic);
-
-extern RpInterpolator *
-RpInterpolatorSetValue(RpInterpolator * interpolator,
- RwReal value,
- RpAtomic *atomic);
-
-extern RpInterpolator *
-RpInterpolatorSetScale(RpInterpolator * interpolator,
- RwReal scale,
- RpAtomic *atomic);
-
-extern RpAtomic *
-RpAtomicRender(RpAtomic * atomic);
-
-/* Building clumps */
-extern RpClump *
-RpAtomicGetClump(const RpAtomic * atomic);
-
-extern RpInterpolator *
-RpAtomicGetInterpolator(RpAtomic * atomic);
-
-extern RpGeometry *
-RpAtomicGetGeometry(const RpAtomic * atomic);
-
-extern void
-RpAtomicSetRenderCallBack(RpAtomic * atomic,
- RpAtomicCallBackRender callback);
-
-extern RpAtomicCallBackRender
-RpAtomicGetRenderCallBack(const RpAtomic * atomic);
-
-#endif
-
-/* ( defined(RWDEBUG) || defined(RWSUPPRESSINLINE) ) */
-
-extern RwBool RpAtomicInstance(RpAtomic *atomic);
-
-#ifdef __cplusplus
-}
-#endif /* __cplusplus */
-
-#define RpClumpChunkInfoRead(stream, clumpChunkInfo, bytesRead) \
- _rpClumpChunkInfoRead(stream, clumpChunkInfo, bytesRead)
-
-
-/*--- Automatically derived from: c:/daily/rwsdk/world/baworld.h ---*/
-
-/*
- * World handling.
- * World give objects scope, and provide a mechanism for
- * efficiency static object rendering.
- *
- * Copyright (c) 1998 Criterion Software Ltd.
- *
- */
-
-/****************************************************************************
- Defines
- */
-
-/* Type ID */
-#define rpWORLD 7
-
-/* RpWorld private flags (in RwObject) */
-enum RpWorldPrivateFlag
-{
- rpWORLDSINGLEMALLOC = 0x01,
- rpWORLDPRIVATEFLAGFORCEENUMSIZEINT = RWFORCEENUMSIZEINT
-};
-typedef enum RpWorldPrivateFlag RpWorldPrivateFlag;
-
-/**
- * \ingroup rpworlddatatypes
- * The bit-field type \ref RpWorldFlag specifies the options available
- * for creating the static geometry component of a world (see API function \ref RpWorldSetFlags):
- */
-enum RpWorldFlag
-{
- rpWORLDTRISTRIP = 0x01, /**<This world's meshes can be rendered
- as tri strips */
- rpWORLDPOSITIONS = 0x02, /**<This world has positions */
- rpWORLDTEXTURED = 0x04, /**<This world has only one set of texture coordinates */
- rpWORLDPRELIT = 0x08, /**<This world has luminance values */
- rpWORLDNORMALS = 0x10, /**<This world has normals */
- rpWORLDLIGHT = 0x20, /**<This world will be lit */
- rpWORLDMODULATEMATERIALCOLOR = 0x40,
- /**<Modulate material color with vertex colors
- (pre-lit + lit) */
- rpWORLDTEXTURED2 = 0x80, /**<This world has 2 or more sets of texture coordinates */
-
- /*
- * These above flags were stored in the flags field in an RwObject, they
- * are now stored in the flags file of the RpWorld.
- */
-
- rpWORLDNATIVE = 0x01000000,
- rpWORLDNATIVEINSTANCE = 0x02000000,
-
- rpWORLDFLAGSMASK = 0x000000FF,
- rpWORLDNATIVEFLAGSMASK = 0x0F000000,
-
- rpWORLDSECTORSOVERLAP = 0x40000000,
-
- rpWORLDFLAGFORCEENUMSIZEINT = RWFORCEENUMSIZEINT
-};
-typedef enum RpWorldFlag RpWorldFlag;
-
-/* Multi texture coordinate format specifier */
-#define rpWORLDTEXCOORDSETS(_num) ((_num & 0xff) << 16)
-
-/* Maximum depth of BSP tree */
-#define rpWORLDMAXBSPDEPTH 64
-
-
-/* macro/inline functionality */
-#define RpWorldGetBBoxMacro(_world) \
- (&((_world)->boundingBox))
-
-#define RpWorldGetOriginMacro(_world) \
- (&((_world)->worldOrigin))
-
-#define RpWorldGetNumMaterialsMacro(_world) \
- ((_world)->matList.numMaterials)
-
-#define RpWorldGetMaterialMacro(_world, _num) \
- (((_world)->matList.materials)[(_num)])
-
-#define RpWorldGetNumClumpsMacro(_world) \
- ((_world)->numClumpsInWorld)
-
-#define RpWorldSetRenderOrderMacro(_world, _renderOrder) \
- (((_world)->renderOrder = _renderOrder), (_world))
-
-#define RpWorldGetRenderOrderMacro(_world) \
- ((_world)->renderOrder)
-
-#define RpWorldSetFlagsMacro(_world, _flags) \
- (((_world)->flags = (_flags)), (_world))
-
-#define RpWorldGetFlagsMacro(_world) \
- ((_world)->flags)
-
-
-#if !(defined(RWDEBUG) || defined(RWSUPPRESSINLINE))
-
-#define RpWorldGetBBox(_world) \
- RpWorldGetBBoxMacro(_world)
-
-#define RpWorldGetOrigin(_world) \
- RpWorldGetOriginMacro(_world)
-
-#define RpWorldGetNumMaterials(_world) \
- RpWorldGetNumMaterialsMacro(_world)
-
-#define RpWorldGetMaterial(_world, _num) \
- RpWorldGetMaterialMacro(_world, _num)
-
-#define RpWorldGetNumClumps(_world) \
- RpWorldGetNumClumpsMacro(_world)
-
-#define RpWorldSetRenderOrder(_world, _renderOrder) \
- RpWorldSetRenderOrderMacro(_world, _renderOrder)
-
-#define RpWorldGetRenderOrder(_world) \
- RpWorldGetRenderOrderMacro(_world)
-
-#define RpWorldSetFlags(_world, _flags) \
- RpWorldSetFlagsMacro(_world, _flags)
-
-#define RpWorldGetFlags(_world) \
- RpWorldGetFlagsMacro(_world)
-
-#endif /* !(defined(RWDEBUG) || defined(RWSUPPRESSINLINE)) */
-
-
-/****************************************************************************
- Global types
- */
-
-
-/**
- * \ingroup rpworlddatatypes
- * \ref RpWorldRenderOrder
- * represents the options available for
- * the rendering order of world sectors in the camera's view frustum (see
- * API function \ref RpWorldSetRenderOrder).
- */
-enum RpWorldRenderOrder
-{
- rpWORLDRENDERNARENDERORDER = 0,
- rpWORLDRENDERFRONT2BACK, /**<Renders nearest sectors first */
- rpWORLDRENDERBACK2FRONT, /**<Renders furthest sectors first */
- rpWORLDRENDERORDERFORCEENUMSIZEINT = RWFORCEENUMSIZEINT
-};
-typedef enum RpWorldRenderOrder RpWorldRenderOrder;
-
-/**
- * \ingroup rpworlddatatypes
- * \typedef RpWorldSectorCallBackRender
- * \ref RpWorldSectorCallBackRender represents the function called from
- * \ref RpWorldSectorRender when the specified world sector lies inside the
- * current camera's view frustum. The default callback initiates execution of
- * the world sector rendering pipeline. This function should return a pointer
- * to the world sector to indicate success
- *
- * \return Pointer to the world sector.
- *
- * \param worldSector Pointer to the world sector to be
- * rendered
- */
-typedef RpWorldSector *(*RpWorldSectorCallBackRender) (RpWorldSector *
- worldSector);
-
-/**
- * \ingroup rpworlddatatypes
- * \typedef RpWorld
- * World object. This should be considered an opaque type.
- * Use the RpWorld API functions to access.
- */
-typedef struct RpWorld RpWorld;
-
-#if (!defined(DOXYGEN))
-struct RpWorld
-{
- RwObject object;
-
- RwUInt32 flags;
-
- RpWorldRenderOrder renderOrder;
-
- /* Materials */
- RpMaterialList matList;
-
- /* The world stored as a BSP tree */
- RpSector *rootSector;
-
- /* The number of texture coordinate sets in each sector */
- RwInt32 numTexCoordSets;
-
- /* Render frame used when last rendered */
- RwInt32 numClumpsInWorld;
- RwLLLink *currentClumpLink;
-
- /* All the clumps in the world */
- RwLinkList clumpList;
-
- /* All of the lights in the world */
- RwLinkList lightList;
-
- /* Directional lights in the world */
- RwLinkList directionalLightList;
-
- /* The worlds origin offset */
- RwV3d worldOrigin;
-
- /* Bounding box around the whole world */
- RwBBox boundingBox;
-
- /* Surface properties */
- RwSurfaceProperties surfaceProps;
-
- /* The callbacks functions */
- RpWorldSectorCallBackRender renderCallBack;
-
- RxPipeline *pipeline;
-};
-#endif /* (!defined(DOXYGEN)) */
-
-/****************************************************************************
- Global Variables
- */
-
-#ifdef __cplusplus
-extern "C"
-{
-#endif /* __cplusplus */
-
-extern RwPluginRegistry worldTKList;
-
-#ifdef __cplusplus
-}
-#endif /* __cplusplus */
-
-/****************************************************************************
- Function prototypes
- */
-
-#ifdef __cplusplus
-extern "C"
-{
-#endif /* __cplusplus */
-
-extern RwBool _rpWorldFindBBox(RpWorld * world,
- RwBBox * boundingBox);
-
-/* Generate sector bounding boxes from BSP planes (not tight boxes) */
-extern RpWorld *_rpWorldSetupSectorBoundingBoxes(RpWorld *world);
-
-
-/* These stealth-API */
-extern RwBool _rpWorldForAllGlobalLights(RpLightCallBack callBack,
- void *pData);
-extern RpWorldSector *_rpWorldSectorForAllLocalLights(RpWorldSector *
- sector,
- RpLightCallBack
- callBack,
- void *pData);
-
-extern RpWorldSector *_rpSectorDefaultRenderCallBack(RpWorldSector *
- sector);
-
-/* Accessing worlds geometry */
-extern RpWorld *RpWorldLock(RpWorld * world);
-extern RpWorld *RpWorldUnlock(RpWorld * world);
-
-/* Managing a list of the worlds */
-extern void _rpWorldRegisterWorld(RpWorld * world,
- RwUInt32 memorySize);
-extern void _rpWorldUnregisterWorld(RpWorld * world);
-
-/* Hook into world management */
-extern RwBool RpWorldPluginAttach(void);
-
-/* Enumerating objects in the world */
-extern RpWorld *RpWorldForAllClumps(RpWorld * world,
- RpClumpCallBack fpCallBack,
- void *pData);
-extern RpWorld *RpWorldForAllMaterials(RpWorld * world,
- RpMaterialCallBack fpCallBack,
- void *pData);
-extern RpWorld *RpWorldForAllLights(RpWorld * world,
- RpLightCallBack fpCallBack,
- void *pData);
-extern RpWorld *RpWorldForAllWorldSectors(RpWorld * world,
- RpWorldSectorCallBack
- fpCallBack, void *pData);
-
-/* Rendering */
-extern RpWorld *RpWorldRender(RpWorld * world);
-
-/* Creation/destruction */
-extern RwBool RpWorldDestroy(RpWorld * world);
-extern RpWorld *RpWorldCreate(RwBBox * boundingBox);
-extern RwBool RpWorldInstance(RpWorld *world);
-
-/* Getting/setting */
-extern RpWorld *_rpWorldSetSurfaceProperties(RpWorld * world,
- const RwSurfaceProperties
- * surface);
-extern const RwSurfaceProperties *
- _rpWorldGetSurfaceProperties(const RpWorld *world);
-
-/* Sector callbacks */
-extern RpWorld *RpWorldSetSectorRenderCallBack(RpWorld * world,
- RpWorldSectorCallBackRender
- fpCallBack);
-extern RpWorldSectorCallBackRender RpWorldGetSectorRenderCallBack(const
- RpWorld
- *
- world);
-
-/* Getting world from sector */
-extern RpWorld *RpWorldSectorGetWorld(const RpWorldSector * sector);
-
-extern RwInt32 RpWorldRegisterPlugin(RwInt32 size, RwUInt32 pluginID,
- RwPluginObjectConstructor
- constructCB,
- RwPluginObjectDestructor
- destructCB,
- RwPluginObjectCopy copyCB);
-extern RwInt32 RpWorldRegisterPluginStream(RwUInt32 pluginID,
- RwPluginDataChunkReadCallBack
- readCB,
- RwPluginDataChunkWriteCallBack
- writeCB,
- RwPluginDataChunkGetSizeCallBack
- getSizeCB);
-extern RwInt32 RpWorldSetStreamAlwaysCallBack(
- RwUInt32 pluginID,
- RwPluginDataChunkAlwaysCallBack alwaysCB);
-extern RwInt32 RpWorldSetStreamRightsCallBack(RwUInt32 pluginID,
- RwPluginDataChunkRightsCallBack rightsCB);
-extern RwInt32 RpWorldGetPluginOffset(RwUInt32 pluginID);
-extern RwBool RpWorldValidatePlugins(RpWorld * world);
-
-
-#if (defined(RWDEBUG) || defined(RWSUPPRESSINLINE))
-
-/* Getting/setting */
-extern const RwBBox *RpWorldGetBBox(const RpWorld *world);
-extern const RwV3d *RpWorldGetOrigin(const RpWorld *world);
-
-/* Accessing a worlds materials */
-extern RwInt32 RpWorldGetNumMaterials(const RpWorld *world);
-extern RpMaterial *RpWorldGetMaterial(const RpWorld *world, RwInt32 matNum);
-
-/* Clumps */
-extern RwInt32 RpWorldGetNumClumps(RpWorld *world);
-
-/* Render order */
-extern RpWorld *RpWorldSetRenderOrder(RpWorld *world,
- RpWorldRenderOrder renderOrder);
-extern RpWorldRenderOrder RpWorldGetRenderOrder(const RpWorld *world);
-
-/* Flags */
-extern RpWorld *RpWorldSetFlags(RpWorld *world, RwUInt32 flags);
-extern RwUInt32 RpWorldGetFlags(const RpWorld *world);
-
-#endif /* (defined(RWDEBUG) || defined(RWSUPPRESSINLINE)) */
-
-#ifdef __cplusplus
-}
-#endif /* __cplusplus */
-
-#define RpWorldSetSurfaceProperties(_world, _surface) \
- _rpWorldSetSurfaceProperties(_world, _surface)
-
-#define RpWorldGetSurfaceProperties(_world) \
- _rpWorldGetSurfaceProperties(_world)
-
-#define rpWorldFindBBox(_world, _boundingBox) \
- _rpWorldFindBBox(_world, _boundingBox)
-
-#define rpWorldForAllGlobalLights(_callBack, _pData) \
- _rpWorldForAllGlobalLights(_callBack, _pData)
-
-#define rpWorldSectorForAllLocalLights(_sector, _callBack, _pData) \
- _rpWorldSectorForAllLocalLights(_sector, _callBack, _pData)
-
-#define _rpWorldLock(_world) \
- RpWorldLock(_world)
-
-#define _rpWorldUnlock(_world) \
- RpWorldUnlock(_world)
-
-#define rpWorldLock(_world) \
- RpWorldLock(_world)
-
-#define rpWorldUnlock(_world) \
- RpWorldUnlock(_world)
-
-
-/*--- Automatically derived from: C:/daily/rwsdk/world/pipe/p2/d3d8/D3D8pipe.h ---*/
-
-typedef struct RxD3D8ResEntryHeader RxD3D8ResEntryHeader;
-/**
- * \ingroup rpworldd3d8
- * \struct RxD3D8ResEntryHeader
- * This structure contains D3D8 resource specific components.
- */
-struct RxD3D8ResEntryHeader
-{
- RwUInt16 serialNumber; /**< The mesh headers serial number */
- RwUInt16 numMeshes; /**< The number of meshes */
-};
-
-/* This is what I keep in memory as part of the instance data setup */
-typedef struct RxD3D8InstanceData RxD3D8InstanceData;
-/**
- * \ingroup rpworldd3d8
- * \struct RxD3D8InstanceData
- * This structure contains D3D8 resource specific components.
- */
-struct RxD3D8InstanceData
-{
- RwUInt32 minVert; /**< The vertex index where the
- meshes vertices begin. Needed for
- reinstancing, not for rendering */
-
- RwInt32 stride; /**< Stride of vertex */
-
- RwInt32 numVertices; /**< Number of vertices in the vertex buffer */
- RwInt32 numIndices; /**< Number of indices to render the primitive */
-
- RpMaterial *material; /**< The material for this instanced data */
-
- RwUInt32 vertexShader; /**< Vertex shader or FVF flags */
-
- RwUInt32 primType; /**< Primitive type */
-
- void *indexBuffer; /**< Index buffer */
- void *vertexBuffer; /**< Vertex buffer */
-
- RwUInt32 baseIndex; /**< Needed if we share the vertex buffer */
-
- RwUInt8 vertexAlpha; /**< The prelight data contains alpha */
- RwUInt8 managed; /**< Created by the Vertex Buffer Manager */
- RwUInt8 remapped; /**< Vertices where remapped to save VB space */
-};
-
-/**
- * \ingroup rpworldd3d8
- * \ref RxD3D8AllInOneInstanceCallBack callback function.
- *
- * \param object Pointer to the object.
- * \param instancedData Pointer to \ref RxD3D8InstanceData.
- * \param reinstance Boolean whether to reinstance.
- *
- * \see RxD3D8AllInOneSetInstanceCallBack
- * \see RxD3D8AllInOneGetInstanceCallBack
- * \see RxNodeDefinitionGetD3D8AtomicAllInOne
- * \see RxNodeDefinitionGetD3D8WorldSectorAllInOne
- */
-typedef RwBool (*RxD3D8AllInOneInstanceCallBack)(void *object,
- RxD3D8InstanceData *instancedData,
- RwBool reinstance);
-
-/**
- * \ingroup rpworldd3d8
- * \ref RxD3D8AllInOneReinstanceCallBack callback function.
- *
- * \param object Pointer to the object.
- * \param meshHeader Const pointer to \ref RpMeshHeader.
- * \param resEntry Pointer to \ref RxD3D8ResEntryHeader.
- * \param instanceCallback Pointer to \ref RxD3D8AllInOneInstanceCallBack.
- *
- * \see RxD3D8AllInOneSetReinstanceCallBack
- * \see RxD3D8AllInOneGetReinstanceCallBack
- * \see RxNodeDefinitionGetD3D8AtomicAllInOne
- * \see RxNodeDefinitionGetD3D8WorldSectorAllInOne
- */
-typedef RwBool (*RxD3D8AllInOneReinstanceCallBack)(void *object,
- RwResEntry *resEntry,
- const RpMeshHeader *meshHeader,
- RxD3D8AllInOneInstanceCallBack instanceCallback);
-
-/**
- * \ingroup rpworldd3d8
- * \ref RxD3D8AllInOneLightingCallBack callback function.
- *
- * \param object Void pointer to the object.
- *
- * \see RxD3D8AllInOneSetLightingCallBack
- * \see RxD3D8AllInOneGetLightingCallBack
- * \see RxNodeDefinitionGetD3D8AtomicAllInOne
- * \see RxNodeDefinitionGetD3D8WorldSectorAllInOne
- */
-typedef void (*RxD3D8AllInOneLightingCallBack)(void *object);
-
-/**
- * \ingroup rpworldd3d8
- * \ref RxD3D8AllInOneRenderCallBack callback function.
- *
- * \param repEntry Pointer to a resource entry.
- * \param object Pointer to a object that the resource entry belongs to.
- * \param type rpATOMIC or rwSECTORATOMIC.
- * \param flags \ref RpGeometryFlag's or \ref RpWorldFlag's.
- *
- * \see RxD3D8AllInOneSetRenderCallBack
- * \see RxD3D8AllInOneGetRenderCallBack
- * \see RxNodeDefinitionGetD3D8AtomicAllInOne
- * \see RxNodeDefinitionGetD3D8WorldSectorAllInOne
- */
-typedef void (*RxD3D8AllInOneRenderCallBack)(RwResEntry *repEntry,
- void *object,
- RwUInt8 type,
- RwUInt32 flags);
-
-#ifdef __cplusplus
-extern "C"
-{
-#endif /* __cplusplus */
-extern void
-RxD3D8AllInOneSetInstanceCallBack(RxPipelineNode *node,
- RxD3D8AllInOneInstanceCallBack callback);
-
-extern RxD3D8AllInOneInstanceCallBack
-RxD3D8AllInOneGetInstanceCallBack(RxPipelineNode *node);
-
-extern void
-RxD3D8AllInOneSetReinstanceCallBack(RxPipelineNode *node,
- RxD3D8AllInOneReinstanceCallBack callback);
-
-extern RxD3D8AllInOneReinstanceCallBack
-RxD3D8AllInOneGetReinstanceCallBack(RxPipelineNode *node);
-
-extern void
-RxD3D8AllInOneSetLightingCallBack(RxPipelineNode *node,
- RxD3D8AllInOneLightingCallBack callback);
-
-extern RxD3D8AllInOneLightingCallBack
-RxD3D8AllInOneGetLightingCallBack(RxPipelineNode *node);
-
-extern void
-RxD3D8AllInOneSetRenderCallBack(RxPipelineNode *node,
- RxD3D8AllInOneRenderCallBack callback);
-
-extern RxD3D8AllInOneRenderCallBack
-RxD3D8AllInOneGetRenderCallBack(RxPipelineNode *node);
-
-
-#ifdef __cplusplus
-}
-#endif /* __cplusplus */
-
-/*--- Automatically derived from: C:/daily/rwsdk/world/pipe/p2/bapipew.h ---*/
-
-#define RpWorldGetGenericSectorPipelineMacro() \
- (RXPIPELINEGLOBAL(genericWorldSectorPipeline))
-
-#define RpWorldGetDefaultSectorPipelineMacro() \
- (RXPIPELINEGLOBAL(currentWorldSectorPipeline))
-
-#define RpWorldSetSectorPipelineMacro(_world, _pipeline) \
- ( ((_world)->pipeline = _pipeline), _world )
-
-#define RpWorldGetSectorPipelineMacro(_world, _pipeline) \
- ( (*(_pipeline) = (_world)->pipeline), _world )
-
-#define RpWorldSectorSetPipelineMacro(_sector, _pipeline) \
- ( ((_sector)->pipeline = _pipeline), _sector )
-
-#define RpWorldSectorGetPipelineMacro(_sector, _pipeline) \
- ( (*(_pipeline) = (_sector)->pipeline), _sector )
-
-#define RpAtomicGetGenericPipelineMacro() \
- (RXPIPELINEGLOBAL(genericAtomicPipeline))
-
-#define RpAtomicGetDefaultPipelineMacro() \
- (RXPIPELINEGLOBAL(currentAtomicPipeline))
-
-#define RpAtomicSetPipelineMacro(_atomic, _pipeline) \
- ( ((_atomic)->pipeline = _pipeline), _atomic )
-
-#define RpAtomicGetPipelineMacro(_atomic, _pipeline) \
- ( (*(_pipeline) = (_atomic)->pipeline), _atomic )
-
-#define RpMaterialGetGenericPipelineMacro() \
- (RXPIPELINEGLOBAL(genericMaterialPipeline))
-
-#define RpMaterialGetDefaultPipelineMacro() \
- (RXPIPELINEGLOBAL(currentMaterialPipeline))
-
-#define RpMaterialSetPipelineMacro(_material, _pipeline) \
- ( ((_material)->pipeline = _pipeline), _material )
-
-#define RpMaterialGetPipelineMacro(_material, _pipeline) \
- ( (*(_pipeline) = (_material)->pipeline), _material )
-
-
-#if !(defined(RWDEBUG) || defined(RWSUPPRESSINLINE))
-
-#define RpWorldGetGenericSectorPipeline RpWorldGetGenericSectorPipelineMacro
-#define RpWorldGetDefaultSectorPipeline RpWorldGetDefaultSectorPipelineMacro
-#define RpWorldSetSectorPipeline RpWorldSetSectorPipelineMacro
-#define RpWorldGetSectorPipeline RpWorldGetSectorPipelineMacro
-#define RpWorldSectorSetPipeline RpWorldSectorSetPipelineMacro
-#define RpWorldSectorGetPipeline RpWorldSectorGetPipelineMacro
-
-#define RpAtomicGetGenericPipeline RpAtomicGetGenericPipelineMacro
-#define RpAtomicGetDefaultPipeline RpAtomicGetDefaultPipelineMacro
-#define RpAtomicSetPipeline RpAtomicSetPipelineMacro
-#define RpAtomicGetPipeline RpAtomicGetPipelineMacro
-
-#define RpMaterialGetGenericPipeline RpMaterialGetGenericPipelineMacro
-#define RpMaterialGetDefaultPipeline RpMaterialGetDefaultPipelineMacro
-#define RpMaterialSetPipeline RpMaterialSetPipelineMacro
-#define RpMaterialGetPipeline RpMaterialGetPipelineMacro
-
-#endif /* !(defined(RWDEBUG) || defined(RWSUPPRESSINLINE)) */
-
-
-#ifdef __cplusplus
-extern "C"
-{
-#endif /* __cplusplus */
-
-extern RxPipeline *RpWorldSetDefaultSectorPipeline(RxPipeline *pipeline);
-extern RxPipeline *RpAtomicSetDefaultPipeline(RxPipeline *pipeline);
-extern RxPipeline *RpMaterialSetDefaultPipeline(RxPipeline *pipeline);
-
-#if (defined(RWDEBUG) || defined(RWSUPPRESSINLINE))
-
-extern RxPipeline *RpWorldGetGenericSectorPipeline(void);
-extern RxPipeline *RpWorldGetDefaultSectorPipeline(void);
-extern RpWorld *RpWorldSetSectorPipeline(RpWorld *world,
- RxPipeline *pipeline);
-extern RpWorld *RpWorldGetSectorPipeline(RpWorld *world,
- RxPipeline **pipeline);
-extern RpWorldSector *RpWorldSectorSetPipeline(RpWorldSector *sector,
- RxPipeline *pipeline);
-extern RpWorldSector *RpWorldSectorGetPipeline(RpWorldSector *sector,
- RxPipeline **pipeline);
-
-extern RxPipeline *RpAtomicGetGenericPipeline(void);
-extern RxPipeline *RpAtomicGetDefaultPipeline(void);
-extern RpAtomic *RpAtomicSetPipeline(RpAtomic *atomic,
- RxPipeline *pipeline);
-extern const RpAtomic *RpAtomicGetPipeline(const RpAtomic *const atomic,
- RxPipeline **pipeline);
-
-extern RxPipeline *RpMaterialGetGenericPipeline(void);
-extern RxPipeline *RpMaterialGetDefaultPipeline(void);
-extern RpMaterial *RpMaterialSetPipeline(RpMaterial *material,
- RxPipeline *pipeline);
-extern RpMaterial *RpMaterialGetPipeline(RpMaterial *material,
- RxPipeline **pipeline);
-
-#endif /* (defined(RWDEBUG) || defined(RWSUPPRESSINLINE)) */
-
-extern const RpGeometry *RpGeometryIsCorrectlySorted(const RpGeometry * geometry,
- RwBool * result);
-extern RpGeometry *RpGeometrySortByMaterial(const RpGeometry * geometry,
- RpGeometrySortByMaterialCallBack callback);
-
-#ifdef __cplusplus
-}
-#endif /* __cplusplus */
-
-/* LEGACY-SUPPORT macros */
-#define RpWorldGetGenericSectorInstancePipeline RpWorldGetGenericSectorPipeline
-#define RpWorldSetDefaultSectorInstancePipeline RpWorldSetDefaultSectorPipeline
-#define RpWorldGetDefaultSectorInstancePipeline RpWorldGetDefaultSectorPipeline
-#define RpWorldSetSectorInstancePipeline RpWorldSetSectorPipeline
-#define RpWorldGetSectorInstancePipeline RpWorldGetSectorPipeline
-#define RpWorldSectorSetInstancePipeline RpWorldSectorSetPipeline
-#define RpWorldSectorGetInstancePipeline RpWorldSectorGetPipeline
-
-#define RpAtomicGetGenericInstancePipeline RpAtomicGetGenericPipeline
-#define RpAtomicGetDefaultInstancePipeline RpAtomicGetDefaultPipeline
-#define RpAtomicSetDefaultInstancePipeline RpAtomicSetDefaultPipeline
-#define RpAtomicSetInstancePipeline RpAtomicSetPipeline
-#define RpAtomicGetInstancePipeline RpAtomicGetPipeline
-
-#define RpMaterialGetGenericRenderPipeline RpMaterialGetGenericPipeline
-#define RpMaterialSetDefaultRenderPipeline RpMaterialSetDefaultPipeline
-#define RpMaterialGetDefaultRenderPipeline RpMaterialGetDefaultPipeline
-#define RpMaterialSetRenderPipeline RpMaterialSetPipeline
-#define RpMaterialGetRenderPipeline RpMaterialGetPipeline
-
-
-/*--- Automatically derived from: c:/daily/rwsdk/world/baworobj.h ---*/
-/****************************************************************************
- Function prototypes
- */
-
-#ifdef __cplusplus
-extern "C"
-{
-#endif /* __cplusplus */
-
-/* Adding and removing cameras to/from the world */
-extern RpWorld *RpWorldRemoveCamera(RpWorld *world, RwCamera *camera);
-extern RpWorld *RpWorldAddCamera(RpWorld *world, RwCamera *camera);
-extern RpWorld *RwCameraGetWorld(const RwCamera *camera);
-
-/* Adding and removing atomics to/from the world */
-extern RpWorld *RpWorldRemoveAtomic(RpWorld *world, RpAtomic *atomic);
-extern RpWorld *RpWorldAddAtomic(RpWorld *world, RpAtomic *atomic);
-extern RpWorld *RpAtomicGetWorld(const RpAtomic *atomic);
-
-/* Adding and removing clumps to/from the world */
-extern RpWorld *RpWorldAddClump(RpWorld *world, RpClump *clump);
-extern RpWorld *RpWorldRemoveClump(RpWorld *world, RpClump *clump);
-extern RpWorld *RpClumpGetWorld(const RpClump *clump);
-
-/* Adding and removing lights to/from the world */
-extern RpWorld *RpWorldAddLight(RpWorld *world, RpLight *light);
-extern RpWorld *RpWorldRemoveLight(RpWorld *world, RpLight *light);
-extern RpWorld *RpLightGetWorld(const RpLight *light);
-
-/* Finding whats in the view frustum */
-extern RwCamera *RwCameraForAllClumpsInFrustum(RwCamera *camera, void *data);
-extern RwCamera *RwCameraForAllClumpsNotInFrustum(RwCamera *camera,
- RwInt32 numClumps, void *data);
-extern RwCamera *RwCameraForAllSectorsInFrustum(RwCamera *camera,
- RpWorldSectorCallBack callBack,
- void *pData);
-
-/* Enumeration involving the world sectors */
-extern RpLight *RpLightForAllWorldSectors(RpLight *light,
- RpWorldSectorCallBack callback,
- void *data);
-extern RpAtomic *RpAtomicForAllWorldSectors(RpAtomic *atomic,
- RpWorldSectorCallBack callback,
- void *data);
-extern RpWorldSector *RpWorldSectorForAllAtomics(RpWorldSector *sector,
- RpAtomicCallBack callback,
- void *data);
-extern RpWorldSector *RpWorldSectorForAllCollisionAtomics(RpWorldSector *sector,
- RpAtomicCallBack callback,
- void *data);
-extern RpWorldSector *RpWorldSectorForAllLights(RpWorldSector *sector,
- RpLightCallBack callback,
- void *data);
-
-#ifdef __cplusplus
-}
-#endif /* __cplusplus */
-
-
-/*--- Automatically derived from: c:/daily/rwsdk/world/babinwor.h ---*/
-/****************************************************************************
- Global types
- */
-
-/* Binary Representation
- *
- */
-typedef struct RpWorldChunkInfoSector RpWorldSectorChunkInfo;
-typedef struct RpWorldChunkInfoSector _rpWorldSector;
-
-struct RpWorldChunkInfoSector
-{
- RwInt32 matListWindowBase;
- RwInt32 numPolygons;
- RwInt32 numVertices;
- RwV3d inf;
- RwV3d sup;
- RwBool collSectorPresent;
- RwBool unused;
-};
-
-typedef struct RpPlaneSectorChunkInfo RpPlaneSectorChunkInfo;
-typedef struct RpPlaneSectorChunkInfo _rpPlaneSector;
-
-struct RpPlaneSectorChunkInfo
-{
- RwInt32 type;
- RwReal value;
- RwBool leftIsWorldSector;
- RwBool rightIsWorldSector;
- RwReal leftValue;
- RwReal rightValue;
-};
-
-typedef struct RpWorldChunkInfo RpWorldChunkInfo;
-typedef struct RpWorldChunkInfo _rpWorld;
-
-struct RpWorldChunkInfo
-{
- RwBool rootIsWorldSector;
-
- RwV3d invWorldOrigin;
-
- RwSurfaceProperties surfaceProps;
-
- RwInt32 numPolygons;
- RwInt32 numVertices;
- RwInt32 numPlaneSectors;
- RwInt32 numWorldSectors;
- RwInt32 colSectorSize;
-
- RwInt32 format; /* Flags about the world */
-};
-
-/****************************************************************************
- Function prototypes
- */
-
-#ifdef __cplusplus
-extern "C"
-{
-#endif /* __cplusplus */
-
-/* Binary format */
-extern RwUInt32 RpWorldStreamGetSize(const RpWorld *world);
-extern RpWorld *RpWorldStreamRead(RwStream *stream);
-extern const RpWorld *RpWorldStreamWrite(const RpWorld *world,
- RwStream *stream);
-extern RpWorldSectorChunkInfo *
-_rpWorldSectorChunkInfoRead(RwStream *stream,
- RpWorldSectorChunkInfo *worldSectorChunkInfo,
- RwInt32 *bytesRead);
-extern RpPlaneSectorChunkInfo *
-_rpPlaneSectorChunkInfoRead(RwStream *stream,
- RpPlaneSectorChunkInfo *planeSectorChunkInfo,
- RwInt32 *bytesRead);
-extern RpWorldChunkInfo *
-_rpWorldChunkInfoRead(RwStream *stream,
- RpWorldChunkInfo *worldChunkInfo,
- RwInt32 *bytesRead);
-
-#ifdef __cplusplus
-}
-#endif /* __cplusplus */
-
-#define RpWorldSectorChunkInfoRead(stream, worldSectorChunkInfo, bytesRead) \
- _rpWorldSectorChunkInfoRead(stream, worldSectorChunkInfo, bytesRead)
-
-#define RpPlaneSectorChunkInfoRead(stream, planeSectorChunkInfo, bytesRead) \
- _rpPlaneSectorChunkInfoRead(stream, planeSectorChunkInfo, bytesRead)
-
-#define RpWorldChunkInfoRead(stream, worldChunkInfo, bytesRead) \
- _rpWorldChunkInfoRead(stream, worldChunkInfo, bytesRead)
-
-#endif /* RPWORLD_H */
diff --git a/rwsdk/include/d3d8/rpworld.rpe b/rwsdk/include/d3d8/rpworld.rpe
deleted file mode 100644
index 080eefa5..00000000
--- a/rwsdk/include/d3d8/rpworld.rpe
+++ /dev/null
@@ -1,63 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-enum e_rwdb_CriterionWorld
-{
-
-
-E_RP_WORLD_INVSPHERE,
-
-E_RP_WORLD_INVINTERSECTION,
-
-E_RP_WORLD_MATRANGE,
-
-E_RP_WORLD_CLUMPINWORLD,
-
-E_RP_WORLD_CLUMPNOTINWORLD,
-
-E_RP_WORLD_ATOMICNOFRAME,
-
-E_RP_WORLD_TOOMANYVERTICES,
-
- e_rwdb_CriterionWorldLAST = RWFORCEENUMSIZEINT
-};
-
-typedef enum e_rwdb_CriterionWorld e_rwdb_CriterionWorld;
-
-
diff --git a/rwsdk/include/d3d8/rt2d.h b/rwsdk/include/d3d8/rt2d.h
deleted file mode 100644
index 5bf1faea..00000000
--- a/rwsdk/include/d3d8/rt2d.h
+++ /dev/null
@@ -1,911 +0,0 @@
-/*
- * Data structures for 2d toolkit
- *
- * Copyright (c) Criterion Software Limited
- */
-
-/***************************************************************************
- * *
- * Module : rt2d.h *
- * *
- * Purpose : *
- * *
- **************************************************************************/
-
-#ifndef RT2D_H
-#define RT2D_H
-
-/**
- * \defgroup rt2d Rt2d
- * \ingroup rttool
- *
- * 2D Rendering Toolkit for RenderWare.
- */
-
-/**
- * \defgroup rt2ddatatypes Data Types
- * \ingroup rt2d
- *
- * Basic Data Types
- */
-
-/**
- * \defgroup rt2dsub Rt2d
- * \ingroup rt2d
- *
- * Rt2d functions
- */
-
-/**
- * \defgroup rt2dbrush Rt2dBrush
- * \ingroup rt2d
- *
- * Brush functions
- */
-
-/**
- * \defgroup rt2dctm Rt2dCTM
- * \ingroup rt2d
- *
- * Current Transformation Matrix (CTM)
- */
-
-/**
- * \defgroup rt2ddevice Rt2dDevice
- * \ingroup rt2d
- *
- * Camera device functions
- */
-
-/**
- * \defgroup rt2dfont Rt2dFont
- * \ingroup rt2d
- *
- * Font functions
- */
-
-/**
- * \defgroup rt2dobject Rt2dObject
- * \ingroup rt2d
- *
- * Objects
- */
-
-/**
- * \defgroup rt2dobjectstring Rt2dObjectString
- * \ingroup rt2d
- *
- * String functions
- */
-
-/**
- * \defgroup rt2dpath Rt2dPath
- * \ingroup rt2d
- *
- * Path functions
- */
-
-/**
- * \defgroup rt2dpickregion Rt2dPickRegion
- * \ingroup rt2d
- *
- * Pick regions
- */
-
-/**
- * \defgroup rt2dscene Rt2dScene
- * \ingroup rt2d
- *
- * Scenes
- */
-
-/**
- * \defgroup rt2dshape Rt2dShape
- * \ingroup rt2d
- *
- * Shapes
- */
-
-/**
- * \defgroup rt2drwv2d RwV2d
- * \ingroup rt2d
- *
- * Rt2d plugin directly extends the Core Library's RwV2d API functions.
- */
-
-/****************************************************************************
- Includes
- */
-
-#include "rt2d.rpe" /* automatically generated header file */
-
-/****************************************************************************
- Defines
- */
-
-#define Rt2dBrushSetWidthMacro(_brush, _width) \
- ( ( (_brush)->halfwidth = ((_width) * 0.5f) ), (_brush) )
-
-#define Rt2dBrushGetWidthMacro(_brush) \
- ( (_brush)->halfwidth * 2.0f )
-
-#define Rt2dCTMReadMacro(_result) \
- (RwMatrixCopy((_result), _rt2dCTMGet()), (_result))
-
-/****************************************************************************
- Global Types
- */
-
-#ifdef __cplusplus
-extern "C"
-{
-#endif /* __cplusplus */
-
-/*
- * rt2dShadeParameters
- * typedef for a structure describing Shade Parameters
- */
-typedef struct rt2dShadeParameters rt2dShadeParameters;
-
-/*
- *
- * rt2dShadeParameters
- * describes Shade Parameters
- */
-struct rt2dShadeParameters
-{
- RwRGBAReal col; /* col */
- RwV2d uv; /* uv */
-};
-
-/**
- * \ingroup rt2ddatatypes
- * \typedef Rt2dBrush
- * typedef for a structure describing a Brush (opaque)
- */
-typedef struct Rt2dBrush Rt2dBrush;
-
-/*
- * Rt2dBrush
- * structure describing a Brush
- */
-#if defined (GCN_DRVMODEL_H)
- #define VERTEXCACHESIZE 64
-#else
- #define VERTEXCACHESIZE 256
-#endif
-
-struct Rt2dBrush
-{
- RWIM3DVERTEX vertex[VERTEXCACHESIZE];
- rt2dShadeParameters top;
- rt2dShadeParameters dtop;
- rt2dShadeParameters bottom;
- rt2dShadeParameters dbottom;
- RwInt32 calcFields;
- RwTexture *texture;
- RwReal halfwidth;
-};
-
-/**
- * \ingroup rt2ddatatypes
- * \typedef Rt2dPath
- * typedef for a structure describing a Path (opaque)
- */
-typedef struct Rt2dPath Rt2dPath;
-
-/**
- * \ingroup rt2ddatatypes
- * \typedef Rt2dFont
- * typedef for a structure describing a Font (opaque)
- */
-typedef struct Rt2dFont Rt2dFont;
-
-/*
- * typedef used for referencing a spot in a font dictionary
- */
-typedef struct _rt2dFontDictionaryNode _rt2dFontDictionaryNode;
-
-/**
- * \ingroup rt2ddatatypes
- * \typedef Rt2dBBox
- * typedef for a structure describing a Bounding Box
- */
-
-typedef struct Rt2dBBox Rt2dBBox;
-/**
-* \ingroup rt2ddatatypes
- * \struct Rt2dBBox
- * structure describing a Bounding Box
- */
-struct Rt2dBBox
-{
- RwReal x; /**< x-coordinate of lower-left corner */
- RwReal y; /**< y-coordinate of lower-left corner */
- RwReal w; /**< Width */
- RwReal h; /**< Height */
-};
-
-/**
- * \ingroup rt2ddatatypes
- * \typedef Rt2dObject
- * typedef for a structure describing a 2d Object
- * This should be considered an opaque type.
- * Use Rt2dObject, Rt2dScene, Rt2dShape, Rt2dPickRegion or Rt2dObjectString
- * API functions to access.
- */
-typedef struct Rt2dObject Rt2dObject;
-
-/*
- * typedef for a structure describing a scene of shapes (opaque)
- */
-typedef struct _rt2dScene _rt2dScene;
-
-/*
- * typedef for a structure describing the depth of an object
- */
-typedef struct _rt2dDepthOfObject _rt2dDepthOfObject;
-
-/*
- * typedef for a structure describing the depth of an object
- */
-struct _rt2dDepthOfObject
-{
- Rt2dObject *object;
- RwInt32 depth;
-};
-
-/*
- * structure describing a scene of shapes
- */
-struct _rt2dScene
-{
- RwSList *objects; /* collection of objects in scene */
- RwInt32 objectCount; /* number of objects */
- RwSList *depths; /* depths for depthsort */
- RwBool isDirtyDepths; /* depthsort needs updating */
-};
-
-/*
- * typedef for a structure describing a shape (opaque)
- */
-typedef struct _rt2dShape _rt2dShape;
-
-struct _rt2dShape
-{
- RwSList *nodes; /* individual stroked/filled regions of the shape */
-};
-
-/*
- * typedef for a structure describing a pick region that can be tested for point inclusion (opaque)
- */
-typedef struct _rt2dPickRegion _rt2dPickRegion;
-
-/*
- * structure describing a pick region that can be tested for point inclusion
- */
-struct _rt2dPickRegion
-{
- Rt2dPath *path; /* path that defines region for testing */
- Rt2dBBox bbox; /* bounding box of path */
- RwMatrix transformation;
- /* ivnert transformation used to place the pick region */
-};
-
-/*
- * structure describing a renderable text string
- */
-struct _rt2dObjectString
-{
- RwChar *textString; /* Text string to be rendered */
- Rt2dBrush *brush; /* Brush to be used to draw text */
- RwInt32 maxLength; /* Maximum string length before reallocation, excluding null */
- RwReal height; /* Font rendering Height */
- _rt2dFontDictionaryNode *font; /* Dictionary node identifying font to be used */
-};
-
-/*
- * typedef for a renderable string
- */
-typedef struct _rt2dObjectString _rt2dObjectString;
-/**
- * \ingroup rt2ddatatypes
- * \ref Rt2dObjectTypeEnum
- * enumeration describing types of Rt2dObject
- */
-enum Rt2dObjectTypeEnum {
- rt2DOBJECTTYPEOBJECT=0, /**<An untyped (yet) object */
- rt2DOBJECTTYPESCENE, /**<Container of objects */
- rt2DOBJECTTYPESHAPE, /**<Shape object */
- rt2DOBJECTTYPEPICKREGION, /**<Pick region object */
- rt2DOBJECTTYPEOBJECTSTRING, /**<Text string object */
- rt2DOBJECTTYPEFORCEENUMSIZEINT = RWFORCEENUMSIZEINT /* Ensures sizeof(enum) == sizeof(RwInt32)) */
-};
-
-typedef union _rt2dObjectdata _rt2dObjectdata;
-
-union _rt2dObjectdata
-{
- _rt2dShape shape;
- _rt2dScene scene;
- _rt2dPickRegion pickRegion;
- _rt2dObjectString objectString;
-};
-
-/*
- * A base structure for forming a hierarchy of 2D shapes
- */
-#if (!defined(DOXYGEN))
-
-#define Rt2dObjectIsLocked 0x00000001
-#define Rt2dObjectDirtyLTM 0x00000002
-#define Rt2dObjectVisible 0x00000004
-
-struct Rt2dObject
-{
- RwInt32 type; /* tag identifying type of object */
- RwInt32 depth; /* z-order of object under parent */
- RwInt32 flag; /* ... */
- RwMatrix MTM; /* local transformation matrix for object */
- RwMatrix LTM; /* global transformation matrix for object */
- RwRGBAReal colorMult; /* color multiply applied to object */
- RwRGBAReal colorOffs; /* color offset applied to object */
- _rt2dObjectdata data;
-};
-#endif /* (!defined(DOXYGEN)) */
-
-
-/**
- * \ingroup rt2ddatatypes
- * \typedef Rt2dObjectCallBack
- * typedef for a callback on an object
- */
-typedef Rt2dObject *(* Rt2dObjectCallBack)(Rt2dObject *object, Rt2dObject *parent, void *data);
-
-/**
- * \ingroup rt2ddatatypes
- * \ref Rt2dJustificationType
- * enumeration describing Justification
- */
-enum Rt2dJustificationType
-{
- rt2dJUSTIFYLEFT, /**<Left-justification */
- rt2dJUSTIFYCENTER, /**<Center-justification */
- rt2dJUSTIFYRIGHT, /**<Right-justification */
- rt2DJUSTIFICATIONTYPEFORCEENUMSIZEINT = RWFORCEENUMSIZEINT /* Ensures sizeof(enum) == sizeof(RwInt32)) */
-};
-
-/*
- * Rt2dObjectEnum
- * typedef for a enumeration describing an object type enclosed by Rt2dObject
- */
-typedef enum Rt2dJustificationType Rt2dJustificationType;
-
-#if (! ( defined(RWDEBUG) || defined(RWSUPPRESSINLINE) ))
-
-#define Rt2dBrushSetWidth(_brush, _width) \
- Rt2dBrushSetWidthMacro(_brush, _width)
-
-#define Rt2dBrushGetWidth(_brush) \
- Rt2dBrushGetWidthMacro(_brush)
-
-#define Rt2dCTMRead(_result) \
- Rt2dCTMReadMacro(_result)
-
-#endif /* (! ( defined(RWDEBUG) || defined(RWSUPPRESSINLINE) )) */
-
-/****************************************************************************
- Function prototypes
- */
-
-
-/*
- * INITIALIZE
- */
-extern void
-Rt2dOpen(RwCamera *cam);
-
-extern void
-Rt2dClose(void);
-/*
- * PATHS
- */
-extern Rt2dPath *
-Rt2dPathCreate(void);
-
-extern RwBool
-Rt2dPathDestroy(Rt2dPath *path);
-
-extern Rt2dPath *
-Rt2dPathLock(Rt2dPath *path);
-
-extern Rt2dPath *
-Rt2dPathUnlock(Rt2dPath *path);
-
-extern RwBool
-Rt2dPathIsLocked(Rt2dPath *path);
-
-extern RwUInt32
-Rt2dPathStreamGetSize(Rt2dPath *path);
-
-extern Rt2dPath *
-Rt2dPathStreamWrite(Rt2dPath *path, RwStream *stream);
-
-extern Rt2dPath *
-Rt2dPathStreamRead(RwStream *stream);
-
-extern Rt2dPath *
-Rt2dPathEmpty(Rt2dPath *path);
-
-extern Rt2dPath *
-Rt2dPathCopy(Rt2dPath *dst, const Rt2dPath *src);
-
-extern Rt2dPath *
-Rt2dPathInset(Rt2dPath *path, RwReal inset);
-
-extern Rt2dPath *
-Rt2dPathMoveto(Rt2dPath *path, RwReal x, RwReal y);
-
-extern Rt2dPath *
-Rt2dPathLineto(Rt2dPath *path, RwReal x, RwReal y);
-
-extern Rt2dPath *
-Rt2dPathRLineto(Rt2dPath *path, RwReal x, RwReal y);
-
-extern Rt2dPath *
-Rt2dPathCurveto(Rt2dPath *path, RwReal x1, RwReal y1, RwReal x2, RwReal y2, RwReal x3, RwReal y3);
-
-extern Rt2dPath *
-Rt2dPathRCurveto(Rt2dPath *path, RwReal x1, RwReal y1, RwReal x2, RwReal y2, RwReal x3, RwReal y3);
-
-extern Rt2dPath *
-Rt2dPathClose(Rt2dPath *path);
-
-extern Rt2dPath *
-Rt2dPathRect(Rt2dPath *path, RwReal x, RwReal y, RwReal w, RwReal h);
-
-extern Rt2dPath *
-Rt2dPathRoundRect(Rt2dPath *path, RwReal x, RwReal y, RwReal w, RwReal h, RwReal radius);
-
-extern Rt2dPath *
-Rt2dPathOval(Rt2dPath *path, RwReal x, RwReal y, RwReal w, RwReal h);
-
-extern Rt2dPath *
-Rt2dPathFlatten(Rt2dPath *path);
-
-extern const Rt2dPath *
-Rt2dPathGetBBox(const Rt2dPath *path, Rt2dBBox *bbox);
-
-extern Rt2dPath *
-Rt2dPathCreateMorphResultPath(Rt2dPath *path);
-
-extern Rt2dPath *
-Rt2dPathMorph(Rt2dPath *result, Rt2dPath *source, Rt2dPath *destination, RwReal alpha);
-
-/*
- * BRUSHES
- */
-extern Rt2dBrush *
-Rt2dBrushCreate(void);
-
-extern RwBool
-Rt2dBrushDestroy(Rt2dBrush * brush);
-
-extern Rt2dBrush *
-Rt2dBrushSetRGBA(Rt2dBrush *brush, RwRGBA * col0, RwRGBA * col1, RwRGBA * col2, RwRGBA * col3);
-
-extern Rt2dBrush *
-Rt2dBrushSetUV(Rt2dBrush *brush, RwV2d *uv0, RwV2d *uv1, RwV2d *uv2, RwV2d *uv3);
-
-extern Rt2dBrush *
-Rt2dBrushSetTexture(Rt2dBrush* brush, RwTexture* texture);
-
-extern RwUInt32
-Rt2dBrushStreamGetSize(Rt2dBrush *brush);
-
-extern Rt2dBrush *
-Rt2dBrushStreamWrite(Rt2dBrush *brush, RwStream *stream);
-
-extern Rt2dBrush *
-Rt2dBrushStreamRead(RwStream *stream);
-
-/*
- * FONTS
- */
-extern const RwChar *
-Rt2dFontSetPath(const RwChar *path);
-
-extern Rt2dFont *
-Rt2dFontRead(const RwChar *name);
-
-extern RwUInt32
-_rt2dFontStreamGetSize(Rt2dFont *font);
-
-extern Rt2dFont *
-_rt2dFontStreamWrite(Rt2dFont *font, RwStream *stream);
-
-extern Rt2dFont *
-_rt2dFontStreamRead(RwStream *stream);
-
-extern RwBool
-Rt2dFontDestroy(Rt2dFont *font);
-
-extern RwReal
-Rt2dFontGetHeight(Rt2dFont *font);
-
-extern RwReal
-Rt2dFontGetStringWidth(Rt2dFont *font, const RwChar *string, RwReal height);
-
-extern Rt2dFont *
-Rt2dFontShow(Rt2dFont *font, const RwChar *string, RwReal height, RwV2d *anchor, Rt2dBrush *brush);
-
-extern Rt2dFont *
-Rt2dFontFlow(Rt2dFont* font, RwChar* string, RwReal height, Rt2dBBox* bbox, Rt2dJustificationType format, Rt2dBrush* brush);
-
-extern Rt2dFont *
-Rt2dFontSetIntergapSpacing(Rt2dFont *font, RwReal gap);
-
-
-extern RwBool
-Rt2dFontCacheFlush(void);
-
-
-/*
- * FILLING
- */
-extern Rt2dPath *
-Rt2dPathFill(Rt2dPath *path, Rt2dBrush *brush);
-/*
- * STROKING
- */
-extern Rt2dPath *
-Rt2dPathStroke(Rt2dPath *path, Rt2dBrush *brush);
-
-/*
- * TRANSFORMS
- */
-extern RwBool
-Rt2dCTMPush(void);
-
-extern RwBool
-Rt2dCTMPop(void);
-
-extern RwBool
-Rt2dCTMSetIdentity(void);
-
-extern RwBool
-Rt2dCTMScale(RwReal x, RwReal y);
-
-extern RwBool
-Rt2dCTMTranslate(RwReal x, RwReal y);
-
-extern RwBool
-Rt2dCTMRotate(RwReal theta);
-
-extern RwBool
-RwV2dIsInPath(RwV2d *point, Rt2dPath *path);
-
-extern RwV2d *
-RwV2dInvertTransform(RwV2d *pointOut, RwV2d *pointIn);
-
-
-/*
- * DEVICE SETTINGS
- */
-extern RwBool
-Rt2dDeviceSetCamera(RwCamera *cam);
-
-extern RwCamera *
-Rt2dDeviceGetCamera(void);
-
-extern RwBool
-Rt2dDeviceGetStep(RwV2d *xstep, RwV2d *ystep, RwV2d *origin);
-
-extern RwBool
-Rt2dDeviceSetMetric(RwReal x, RwReal y, RwReal w, RwReal h);
-
-extern RwBool
-Rt2dDeviceGetMetric(RwReal *x, RwReal *y, RwReal *w, RwReal *h);
-
-extern RwBool
-Rt2dDeviceSetFlat(RwReal r);
-
-extern RwBool
-Rt2dDeviceGetClippath(Rt2dPath *path);
-
-extern RwBool
-Rt2dVisible(RwReal x, RwReal y, RwReal w, RwReal h);
-
-extern RwBool
-Rt2dDeviceSetLayerDepth(RwReal depth);
-
-extern RwBool
-Rt2dSetPipelineFlags(RwUInt32 flags);
-
-/*
- * HIERARCHICAL SCENE FUNCTIONS - OBJECT MANIPULATION
- */
-
-extern Rt2dObject *
-Rt2dObjectSetVisible(Rt2dObject *object,RwBool visible);
-
-extern RwBool
-Rt2dObjectIsVisible(Rt2dObject *object);
-
-extern void
-Rt2dObjectMTMChanged(Rt2dObject *object);
-
-extern RwMatrix *
-Rt2dObjectGetLTM(Rt2dObject *object);
-
-extern RwMatrix *
-Rt2dObjectGetMTM(Rt2dObject *object);
-
-extern Rt2dObject *
-Rt2dObjectSetMTM(Rt2dObject *object, RwMatrix *mtm);
-
-extern void
-Rt2dObjectApplyCTM(Rt2dObject *object);
-
-extern Rt2dObject *
-Rt2dObjectMTMSetIdentity(Rt2dObject *object);
-
-extern Rt2dObject *
-Rt2dObjectMTMScale(Rt2dObject *object, RwReal x, RwReal y);
-
-extern Rt2dObject *
-Rt2dObjectMTMTranslate(Rt2dObject *object, RwReal x, RwReal y);
-
-extern Rt2dObject *
-Rt2dObjectMTMRotate(Rt2dObject *object, RwReal theta);
-
-extern RwRGBAReal *
-Rt2dObjectGetColorMultiplier(Rt2dObject *object);
-
-extern Rt2dObject *
-Rt2dObjectSetColorMultiplier(Rt2dObject *object, RwRGBAReal *multCol);
-
-extern RwRGBAReal *
-Rt2dObjectGetColorOffset(Rt2dObject *object);
-
-extern Rt2dObject *
-Rt2dObjectSetColorOffset(Rt2dObject *object, RwRGBAReal *oofsCol);
-
-extern RwInt32
-Rt2dObjectGetObjectType(Rt2dObject *object);
-
-extern RwInt32
-Rt2dObjectGetDepth(Rt2dObject *object);
-
-extern Rt2dObject *
-Rt2dObjectSetDepth(Rt2dObject *object, RwInt32 depth);
-
-extern RwBool
-Rt2dObjectIsScene(Rt2dObject *object);
-
-extern RwBool
-Rt2dObjectIsShape(Rt2dObject *object);
-
-extern RwBool
-Rt2dObjectIsPickRegion(Rt2dObject *object);
-
-extern RwBool
-Rt2dObjectIsObjectString(Rt2dObject *object);
-
-extern Rt2dObject *
-Rt2dObjectCopy(Rt2dObject *dst, Rt2dObject *src);
-
-/*
- * HIERARCHICAL SCENE FUNCTIONS - SCENE
- */
-extern Rt2dObject *
-Rt2dSceneCreate(void);
-
-extern RwBool
-Rt2dSceneDestroy(Rt2dObject *scene);
-
-extern Rt2dObject *
-Rt2dSceneLock(Rt2dObject *object);
-
-extern Rt2dObject *
-Rt2dSceneUnlock(Rt2dObject *object);
-
-extern RwInt32
-Rt2dSceneGetChildCount(Rt2dObject *scene);
-
-extern Rt2dObject *
-Rt2dSceneGetChildByIndex(Rt2dObject *scene, RwInt32 index);
-
-extern RwV2d
-Rt2dSceneGetCoordFromScreen(Rt2dObject *scene,RwV2d screenCoord );
-
-extern Rt2dObject *
-Rt2dSceneAddChild(Rt2dObject *scene, Rt2dObject *object);
-
-/* Those are keeped for compatiblity with the present code */
-extern Rt2dObject *
-Rt2dSceneGetNewChildScene(Rt2dObject *object);
-
-extern Rt2dObject *
-Rt2dSceneGetNewChildShape(Rt2dObject *object);
-
-extern Rt2dObject *
-Rt2dSceneGetNewChildPickRegion(Rt2dObject *object);
-
-extern Rt2dObject *
-Rt2dSceneGetNewChildObjectString(Rt2dObject *object, const RwChar *text,
- const RwChar *font);
-
-extern Rt2dObject *
-Rt2dSceneStreamWrite(Rt2dObject *shape, RwStream *stream);
-
-extern RwUInt32
-Rt2dSceneStreamGetSize(Rt2dObject *scene);
-
-extern Rt2dObject *
-Rt2dSceneStreamRead(RwStream *stream);
-
-extern Rt2dObject *
-Rt2dSceneRender(Rt2dObject *object);
-
-extern Rt2dObject *
-Rt2dSceneForAllChildren(Rt2dObject *scene, Rt2dObjectCallBack callback, void *pData );
-
-extern Rt2dObject *
-Rt2dSceneSetDepthDirty(Rt2dObject *scene);
-
-extern Rt2dObject *
-Rt2dSceneUpdateLTM(Rt2dObject *scene);
-
-/*
- * HIERARCHICAL SCENE FUNCTIONS - SHAPE
- */
-extern Rt2dObject *
-Rt2dShapeCreate(void);
-
-extern RwBool
-Rt2dShapeDestroy(Rt2dObject * shape);
-
-extern Rt2dBrush *
-Rt2dShapeGetNewBrush(Rt2dObject *shape);
-
-extern Rt2dPath *
-Rt2dShapeGetNewPath(Rt2dObject *shape);
-
-extern Rt2dObject *
-Rt2dShapeAddNode(Rt2dObject *shape, Rt2dPath *path, Rt2dBrush *fill, Rt2dBrush *stroke );
-
-extern RwInt32
-Rt2dShapeGetNodeCount(Rt2dObject *shape);
-
-extern Rt2dObject *
-Rt2dShapeStreamWrite(Rt2dObject *shape, RwStream *stream);
-
-extern RwUInt32
-Rt2dShapeStreamGetSize(Rt2dObject *shape);
-
-extern Rt2dObject *
-Rt2dShapeStreamRead(RwStream *stream);
-
-extern Rt2dObject *
-Rt2dShapeRender(Rt2dObject *object);
-
-extern Rt2dObject *
-Rt2dShapeMorph(Rt2dObject *result,
- Rt2dObject *source,
- Rt2dObject *destination,
- RwReal alpha);
-
-/*
- * HIERARCHICAL SCENE FUNCTIONS - PICK REGION
- */
-extern Rt2dObject *
-Rt2dPickRegionCreate(void);
-
-extern RwBool
-Rt2dPickRegionDestroy(Rt2dObject *pickRegion);
-
-extern Rt2dPath *
-Rt2dPickRegionGetPath(Rt2dObject *pickRegion);
-
-extern RwBool
-Rt2dPickRegionIsPointIn(Rt2dObject *pickRegion, RwV2d *point);
-
-extern Rt2dObject *
-Rt2dPickRegionStreamWrite(Rt2dObject *pickRegion, RwStream *stream);
-
-extern RwUInt32
-Rt2dPickRegionStreamGetSize(Rt2dObject *pickRegion);
-
-extern Rt2dObject *
-Rt2dPickRegionStreamRead(RwStream *stream);
-
-/*
- * HIERARCHICAL SCENE FUNCTIONS - TEXT STRINGS
- */
-extern Rt2dObject *
-Rt2dObjectStringCreate(const RwChar *textString, const RwChar *font);
-
-extern RwBool
-Rt2dObjectStringDestroy(Rt2dObject *object);
-
-extern Rt2dBrush *
-Rt2dObjectStringGetBrush(Rt2dObject *object);
-
-extern RwChar *
-Rt2dObjectStringGetText(Rt2dObject *object);
-
-extern RwChar *
-Rt2dObjectStringGetFont(Rt2dObject *object);
-
-extern RwReal
-Rt2dObjectStringGetHeight(Rt2dObject *object);
-
-extern Rt2dObject *
-Rt2dObjectStringSetBrush(Rt2dObject *object, Rt2dBrush *);
-
-extern Rt2dObject *
-Rt2dObjectStringSetText(Rt2dObject *object, const RwChar *text);
-
-extern Rt2dObject *
-Rt2dObjectStringSetFont(Rt2dObject *object, const RwChar *font);
-
-extern Rt2dObject *
-Rt2dObjectStringSetHeight(Rt2dObject *object, const RwReal height);
-
-extern Rt2dObject *
-Rt2dObjectStringStreamRead(RwStream *stream);
-
-extern Rt2dObject *
-Rt2dObjectStringStreamWrite(Rt2dObject *object, RwStream *stream);
-
-extern RwUInt32
-Rt2dObjectStringStreamGetSize(Rt2dObject *object);
-
-extern Rt2dObject *
-Rt2dObjectStringRender(Rt2dObject *object);
-
-
-/*
- * SPI for macros
- */
-
-extern RwBool
-_rt2dCTMPush(RwMatrix *matrix);
-
-extern RwBool
-_rt2dCTMSet(RwMatrix *matrix);
-
-extern RwMatrix *
-_rt2dCTMGet(void);
-
-extern RwMatrix *
-_rt2dCTMGetDirect(void);
-
-
-#if ( defined(RWDEBUG) || defined(RWSUPPRESSINLINE) )
-
-extern Rt2dBrush *
-Rt2dBrushSetWidth(Rt2dBrush *brush, RwReal width);
-extern RwReal
-Rt2dBrushGetWidth(Rt2dBrush * brush);
-
-extern RwMatrix *
-Rt2dCTMRead(RwMatrix * result);
-
-#endif /* ( defined(RWDEBUG) || defined(RWSUPPRESSINLINE) ) */
-
-#ifdef __cplusplus
-}
-#endif /* __cplusplus */
-
-#define Rt2dFontStreamGetSize(_font) \
- _rt2dFontStreamGetSize(_font)
-
-#define Rt2dFontStreamWrite(_font,_stream) \
- _rt2dFontStreamWrite(_font,_stream)
-
-#define Rt2dFontStreamRead(_stream) \
- _rt2dFontStreamRead(_stream)
-
-#endif /* RT2D_H */
diff --git a/rwsdk/include/d3d8/rt2d.rpe b/rwsdk/include/d3d8/rt2d.rpe
deleted file mode 100644
index 1f9f8881..00000000
--- a/rwsdk/include/d3d8/rt2d.rpe
+++ /dev/null
@@ -1,629 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-enum e_rwdb_Criterion2D
-{
-
-
-
- e_rwdb_Criterion2DLAST = RWFORCEENUMSIZEINT
-};
-
-typedef enum e_rwdb_Criterion2D e_rwdb_Criterion2D;
-
-
diff --git a/rwsdk/include/d3d8/rt2danim.h b/rwsdk/include/d3d8/rt2danim.h
deleted file mode 100644
index cd593a8e..00000000
--- a/rwsdk/include/d3d8/rt2danim.h
+++ /dev/null
@@ -1,1056 +0,0 @@
-/***************************************************************************
- * *
- * Module : rt2danim.h *
- * *
- * Purpose : . *
- * *
- **************************************************************************/
-
-#ifndef RT2DANIM_H
-#define RT2DANIM_H
-
-/**
- * \defgroup rt2danim Rt2dAnim
- * \ingroup rttool
- *
- * 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
- * \typedef Rt2dAnimProps
- * typedef for a structure describing the current state of a scene (opaque)
- */
-typedef struct Rt2dAnimProps Rt2dAnimProps;
-
-/**
- * \ingroup rt2danimsub
- * \typedef Rt2dKeyFrameList
- * typedef for a structure describing a list of keyframes
- */
-typedef struct Rt2dKeyFrameList Rt2dKeyFrameList;
-
-/**
- * \ingroup rt2danimsub
- * \typedef Rt2dAnimObjectUpdate
- * typedef for a structure describing a set of changes to a 2d object (opaque)
- */
-typedef struct Rt2dAnimObjectUpdate Rt2dAnimObjectUpdate;
-
-/**
- * \ingroup rt2danimsub
- * \typedef Rt2dKeyFrameTransform
- * typedef for a structure describing a transform change to a 2d object (opaque)
- */
-typedef struct Rt2dKeyFrameTransform Rt2dKeyFrameTransform;
-
-/**
- * \ingroup rt2danimsub
- * \typedef Rt2dKeyFrameColor
- * typedef for a structure describing a color change to a 2d object (opaque)
- */
-typedef struct Rt2dKeyFrameColor Rt2dKeyFrameColor;
-
-/**
- * \ingroup rt2danimsub
- * \typedef Rt2dKeyFrameShow
- * typedef for a structure describing a displayable or depth change to a 2d object (opaque)
- */
-typedef struct Rt2dKeyFrameShow Rt2dKeyFrameShow;
-
-/**
- * \ingroup rt2danimsub
- * \typedef Rt2dKeyFrameMorph
- * typedef for a structure describing a morph change to a 2d object (opaque)
- */
-typedef struct Rt2dKeyFrameMorph Rt2dKeyFrameMorph;
-
-/**
- * \ingroup rt2danimsub
- * \typedef Rt2dAnim
- * typedef for a structure describing a 2d animation (opaque)
- */
-typedef struct Rt2dAnim Rt2dAnim;
-
-/**
- * \ingroup rt2dbutton
- * \typedef Rt2dButton
- * typedef for a structure describing a button (opaque)
- */
-typedef struct Rt2dButton Rt2dButton;
-
-/**
- * \ingroup rt2dcel
- * \typedef Rt2dCel
- * typedef for a structure describing a cel (opaque)
- */
-typedef struct Rt2dCel Rt2dCel;
-
-/**
- * \ingroup rt2dcel
- * \typedef Rt2dCelList
- * typedef for a structure describing a cel list (opaque)
- */
-typedef struct Rt2dCelList Rt2dCelList;
-
-/**
- * \ingroup rt2dmaestro
- * \typedef Rt2dMaestro
- * typedef for a structure describing a maestro (opaque)
- */
-typedef struct Rt2dMaestro Rt2dMaestro;
-
-/**
- * \ingroup rt2dmessage
- * \typedef Rt2dMessage
- * typedef for a structure describing a message (opaque)
- */
-typedef struct Rt2dMessage Rt2dMessage;
-
-typedef struct Rt2dMessageList Rt2dMessageList;
-
-/**
- * \ingroup rt2dstringlabel
- * \typedef Rt2dStringLabel
- * typedef for a structure describing a string label (opaque)
- */
-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 setting action
- */
-struct Rt2dKeyFrameColor
-{
- RwRGBAReal color; /**< Color value for a keyframe */ /*16*/
-};
-
-/**
- * \ingroup rt2danimsub
- * \struct Rt2dKeyFrameShow
- * structure describing a show/hide action
- */
-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 action
- */
-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
-
-/**
- * \ingroup rt2dstringlabel
- * \struct Rt2dStringLabel
- * structure containing label information. The enitityType 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.
- */
-struct Rt2dStringLabel
-{
- RwUInt32 entityType; /**< type of the label
- (\ref Rt2dStringLabelType) */
- RwInt32 nameIndex; /**< index of name in internal data
- area */
- void *internalData; /**< internal data */
- void *userData; /**< customizable data */
-
-};
-
-#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));
-
-/**
- * \ingroup rt2dcel
- * \struct Rt2dCel
- * 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.
- */
-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 */
-};
-
-#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
- * \typedef 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
- */
-typedef Rt2dKeyFrameList *(Rt2dKeyFrameListCallBack)(
- Rt2dAnim *anim,
- Rt2dAnimProps *props,
- Rt2dKeyFrameList *keyframeList,
- RwReal keyframeListTime,
- void *data);
-
-/**
- * \ingroup rt2danimsub
- * \typedef 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
- */
-typedef Rt2dAnim *(*Rt2dAnimOnEndReachedCallBack)(Rt2dAnim *anim,
- Rt2dAnimProps *props,
- RwReal remainingDeltaTime);
-
-/**
- * \ingroup rt2dmaestro
- * \typedef 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
- * \typedef Rt2dMessageHandlerCallBack
- * \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.
- */
-
-/*
- * 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,
- 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, RwChar *lookupName,
- RwInt32 *index);
-
-extern Rt2dStringLabel *
-Rt2dMaestroGetStringLabelByIndex(Rt2dMaestro *maestro, RwInt32 index);
-
-extern Rt2dMaestro *
-Rt2dMaestroAddStringLabel(Rt2dMaestro *maestro,
- Rt2dStringLabelType entityType, 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*/
diff --git a/rwsdk/include/d3d8/rt2danim.rpe b/rwsdk/include/d3d8/rt2danim.rpe
deleted file mode 100644
index 82a9dac9..00000000
--- a/rwsdk/include/d3d8/rt2danim.rpe
+++ /dev/null
@@ -1,629 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-enum rwPLUGIN_ERRENUM
-{
-
-
-
- rwPLUGIN_ERRENUMLAST = RWFORCEENUMSIZEINT
-};
-
-typedef enum rwPLUGIN_ERRENUM rwPLUGIN_ERRENUM;
-
-
diff --git a/rwsdk/include/d3d8/rtbary.h b/rwsdk/include/d3d8/rtbary.h
deleted file mode 100644
index 61c39b07..00000000
--- a/rwsdk/include/d3d8/rtbary.h
+++ /dev/null
@@ -1,141 +0,0 @@
-/***************************************************************************
- * *
- * Module : rtbary.h *
- * *
- * Purpose : Barycentric operations *
- * *
- **************************************************************************/
-
-#ifndef RTBARY_H
-#define RTBARY_H
-
-/**
- * \defgroup rtbary RtBary
- * \ingroup rttool
- *
- * Barycentric Toolkit for RenderWare.
- */
-
-
-/****************************************************************************
- Includes
- */
-
-#include <rwcore.h>
-
-#include <rtbary.rpe> /* automatically generated header file */
-
-
-/****************************************************************************
- Global types
- */
-
-/**
- * \ingroup rtbary
- * \typedef RtBaryV4d
- * typedef for the 4 element homogeneous row of a transform matrix mapping
- * a point from Cartesian space to the barycentric space defined by a triangle.
- */
-typedef RwReal RtBaryV4d[4];
-
-/**
- * \ingroup rtbary
- * \typedef RtBaryTransform
- * typedef for the 4x4 homogeneous transform matrix mapping a point
- * from Cartesian space to the barycentric space defined by a triangle.
- */
-typedef RtBaryV4d RtBaryTransform[4];
-
-/****************************************************************************
- Defines
- */
-
-#define RtBaryV3dFromWeightsMacro(_out, _b, _v0, _v1, _v2) \
-MACRO_START \
-{ \
- (_out)->x = (RwReal)( ((_v0)->x * (_b)[0]) + \
- ((_v1)->x * (_b)[1]) + \
- ((_v2)->x * (_b)[2]) ); \
- (_out)->y = (RwReal)( ((_v0)->y * (_b)[0]) + \
- ((_v1)->y * (_b)[1]) + \
- ((_v2)->y * (_b)[2]) ); \
- (_out)->z = (RwReal)( ((_v0)->z * (_b)[0]) + \
- ((_v1)->z * (_b)[1]) + \
- ((_v2)->z * (_b)[2]) ); \
-} \
-MACRO_STOP
-
-#define RtBaryWeightsFromV3dMacro(_out, _m, _in) \
-MACRO_START \
-{ \
- (_out)[0] = ( (_m)[0][0] * (_in)->x + \
- (_m)[1][0] * (_in)->y + \
- (_m)[2][0] * (_in)->z + \
- (_m)[3][0] ); \
- (_out)[1] = ( (_m)[0][1] * (_in)->x + \
- (_m)[1][1] * (_in)->y + \
- (_m)[2][1] * (_in)->z + \
- (_m)[3][1] ); \
- (_out)[2] = ( (_m)[0][2] * (_in)->x + \
- (_m)[1][2] * (_in)->y + \
- (_m)[2][2] * (_in)->z + \
- (_m)[3][2] ); \
- (_out)[3] = ( (_m)[0][3] * (_in)->x + \
- (_m)[1][3] * (_in)->y + \
- (_m)[2][3] * (_in)->z + \
- (_m)[3][3] ); \
-} \
-MACRO_STOP
-
-#if (! ( defined(RWDEBUG) || defined(RWSUPPRESSINLINE) ))
-
-#define RtBaryV3dFromWeights(_out, _b, _v0, _v1, _v2) \
- RtBaryV3dFromWeightsMacro(_out, _b, _v0, _v1, _v2)
-
-#define RtBaryWeightsFromV3d(_out, _m, _in) \
- RtBaryWeightsFromV3dMacro(_out, _m, _in)
-
-#endif /* (! ( defined(RWDEBUG) || defined(RWSUPPRESSINLINE) )) */
-
-/****************************************************************************
- Function prototypes
- */
-
-#ifdef __cplusplus
-extern "C"
-{
-#endif /* __cplusplus */
-
-extern RwBool
-RtBaryGetTransform(RtBaryTransform m,
- RwReal * const area,
- const RwV3d * const v0,
- const RwV3d * const v1,
- const RwV3d * const v2);
-
-#if ( defined(RWDEBUG) || defined(RWSUPPRESSINLINE) )
-
-extern void
-RtBaryV3dFromWeights(RwV3d * const out,
- const RtBaryV4d weights,
- const RwV3d * const v0,
- const RwV3d * const v1,
- const RwV3d * const v2);
-
-extern void
-RtBaryWeightsFromV3d(RtBaryV4d out,
- RtBaryTransform mat,
- const RwV3d * const in);
-
-extern void
-_rtImportWorldBaryFromEdge(RtBaryV4d out,
- RtBaryTransform mat,
- const RwV3d * const in);
-
-#endif /* ( defined(RWDEBUG) || defined(RWSUPPRESSINLINE) ) */
-
-#ifdef __cplusplus
-}
-#endif /* __cplusplus */
-
-#endif /* RTBARY_H */
diff --git a/rwsdk/include/d3d8/rtbary.rpe b/rwsdk/include/d3d8/rtbary.rpe
deleted file mode 100644
index fdfe3afe..00000000
--- a/rwsdk/include/d3d8/rtbary.rpe
+++ /dev/null
@@ -1,645 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-enum e_rwdb_CriterionBary
-{
-
-
-
- e_rwdb_CriterionBaryLAST = RWFORCEENUMSIZEINT
-};
-
-typedef enum e_rwdb_CriterionBary e_rwdb_CriterionBary;
-
-
diff --git a/rwsdk/include/d3d8/rtbezpat.h b/rwsdk/include/d3d8/rtbezpat.h
deleted file mode 100644
index 8a5960cb..00000000
--- a/rwsdk/include/d3d8/rtbezpat.h
+++ /dev/null
@@ -1,401 +0,0 @@
-/*
- * Data structures for rtbezpat toolkit
- * Copyright (c) Criterion Software Limited
- */
-
-#if (!defined(RTBEZPAT_H))
-#define RTBEZPAT_H
-
-/**
- * \defgroup rtbezpatch RtBezPat
- * \ingroup rttool
- *
- * The Bezier Patch Toolkit is a group of functions that support the way
- * RenderWare processes patches.
- */
-
-/**
- * \ingroup rtbezpatch
- * \typedef RtBezierV4d
- * typedef for struct RtBezierV4d.
- */
-typedef struct RtBezierV4d RtBezierV4d;
-
-/**
- * \ingroup rtbezpatch
- * \struct RtBezierV4d
- * This type represents 4d points and vectors specified by
- * the (x, y, z, w) coordinates of a 4d point or
- * the (x, y, z, w) components of a 4d vector.
- */
-struct RtBezierV4d
-{
- RwReal x;
- /**< X value */
- RwReal y;
- /**< Y value */
- RwReal z;
- /**< Z value */
- RwReal w;
- /**< W value */
-};
-
-/**
- * \ingroup rtbezpatch
- * \typedef RtBezierRow
- * typedef for a row of vectors.
- * RtBezierRow is an array of 4 vectors
- */
-typedef RtBezierV4d RtBezierRow[4];
-
-/**
- * \ingroup rtbezpatch
- * \typedef RtBezierMatrix
- * typedef for a matrix of 4*4 vectors.
- * RtBezierMatrix is an array of 4 rows.
- */
-typedef RtBezierRow RtBezierMatrix[4];
-
-/*
- * Bernstein polynomials;
- */
-
-#define RtBern03(_u, _cu) ( (_cu) * (_cu) * (_cu) )
-#define RtBern13(_u, _cu) ( 3 * (_u) * (_cu) * (_cu) )
-#define RtBern23(_u, _cu) ( 3 * (_u) * (_u) * (_cu) )
-#define RtBern33(_u, _cu) ( (_u) * (_u) * (_u) )
-
-#define RtBezierQuadSample3dMacro(_out, _P, _u, _v) \
-MACRO_START \
-{ \
- const RtBezierV4d * const P0 = &(_P)[0][0]; \
- const RtBezierV4d * const P1 = &(_P)[1][0]; \
- const RtBezierV4d * const P2 = &(_P)[2][0]; \
- const RtBezierV4d * const P3 = &(_P)[3][0]; \
- const RwReal _pu = (_u); \
- const RwReal _cu = ((RwReal)1) - _pu; \
- const RwReal B03u = RtBern03(_pu,_cu); \
- const RwReal B13u = RtBern13(_pu,_cu); \
- const RwReal B23u = RtBern23(_pu,_cu); \
- const RwReal B33u = RtBern33(_pu,_cu); \
- const RwReal _pv = (_v); \
- const RwReal _cv = ((RwReal)1) - _pv; \
- const RwReal B03v = RtBern03(_pv,_cv); \
- const RwReal B13v = RtBern13(_pv,_cv); \
- const RwReal B23v = RtBern23(_pv,_cv); \
- const RwReal B33v = RtBern33(_pv,_cv); \
- RtBezierRow A; \
- \
- A[0].x = B03u*P0[0].x + B13u*P1[0].x + B23u*P2[0].x + B33u*P3[0].x; \
- A[0].y = B03u*P0[0].y + B13u*P1[0].y + B23u*P2[0].y + B33u*P3[0].y; \
- A[0].z = B03u*P0[0].z + B13u*P1[0].z + B23u*P2[0].z + B33u*P3[0].z; \
- A[1].x = B03u*P0[1].x + B13u*P1[1].x + B23u*P2[1].x + B33u*P3[1].x; \
- A[1].y = B03u*P0[1].y + B13u*P1[1].y + B23u*P2[1].y + B33u*P3[1].y; \
- A[1].z = B03u*P0[1].z + B13u*P1[1].z + B23u*P2[1].z + B33u*P3[1].z; \
- A[2].x = B03u*P0[2].x + B13u*P1[2].x + B23u*P2[2].x + B33u*P3[2].x; \
- A[2].y = B03u*P0[2].y + B13u*P1[2].y + B23u*P2[2].y + B33u*P3[2].y; \
- A[2].z = B03u*P0[2].z + B13u*P1[2].z + B23u*P2[2].z + B33u*P3[2].z; \
- A[3].x = B03u*P0[3].x + B13u*P1[3].x + B23u*P2[3].x + B33u*P3[3].x; \
- A[3].y = B03u*P0[3].y + B13u*P1[3].y + B23u*P2[3].y + B33u*P3[3].y; \
- A[3].z = B03u*P0[3].z + B13u*P1[3].z + B23u*P2[3].z + B33u*P3[3].z; \
- \
- (_out)->x = A[0].x*B03v + A[1].x*B13v + A[2].x*B23v + A[3].x*B33v; \
- (_out)->y = A[0].y*B03v + A[1].y*B13v + A[2].y*B23v + A[3].y*B33v; \
- (_out)->z = A[0].z*B03v + A[1].z*B13v + A[2].z*B23v + A[3].z*B33v; \
-} \
-MACRO_STOP
-
-#define RtBezierQuadDifferenceStepU3dMacro(_row) \
-MACRO_START \
-{ \
- (_row)[0].x += (_row)[1].x; \
- (_row)[0].y += (_row)[1].y; \
- (_row)[0].z += (_row)[1].z; \
- \
- (_row)[1].x += (_row)[2].x; \
- (_row)[1].y += (_row)[2].y; \
- (_row)[1].z += (_row)[2].z; \
- \
- (_row)[2].x += (_row)[3].x; \
- (_row)[2].y += (_row)[3].y; \
- (_row)[2].z += (_row)[3].z; \
- \
-} \
-MACRO_STOP
-
-#define RtBezierQuadDifferenceStepU4dMacro(_row) \
-MACRO_START \
-{ \
- (_row)[0].x += (_row)[1].x; \
- (_row)[0].y += (_row)[1].y; \
- (_row)[0].z += (_row)[1].z; \
- (_row)[0].w += (_row)[1].w; \
- \
- (_row)[1].x += (_row)[2].x; \
- (_row)[1].y += (_row)[2].y; \
- (_row)[1].z += (_row)[2].z; \
- (_row)[1].w += (_row)[2].w; \
- \
- (_row)[2].x += (_row)[3].x; \
- (_row)[2].y += (_row)[3].y; \
- (_row)[2].z += (_row)[3].z; \
- (_row)[2].w += (_row)[3].w; \
- \
-} \
-MACRO_STOP
-
-#define RtBezierQuadDifferenceStepV3dMacro(_mat) \
-MACRO_START \
-{ \
- RtBezierV4d * const m0 = &(_mat)[0][0]; \
- RtBezierV4d * const m1 = &(_mat)[1][0]; \
- RtBezierV4d * const m2 = &(_mat)[2][0]; \
- RtBezierV4d * const m3 = &(_mat)[3][0]; \
- \
- /* (_row) 0 */ \
- m0[0].x += m1[0].x; \
- m0[0].y += m1[0].y; \
- m0[0].z += m1[0].z; \
- \
- m0[1].x += m1[1].x; \
- m0[1].y += m1[1].y; \
- m0[1].z += m1[1].z; \
- \
- m0[2].x += m1[2].x; \
- m0[2].y += m1[2].y; \
- m0[2].z += m1[2].z; \
- \
- m0[3].x += m1[3].x; \
- m0[3].y += m1[3].y; \
- m0[3].z += m1[3].z; \
- \
- /* (_row) 1 */ \
- m1[0].x += m2[0].x; \
- m1[0].y += m2[0].y; \
- m1[0].z += m2[0].z; \
- \
- m1[1].x += m2[1].x; \
- m1[1].y += m2[1].y; \
- m1[1].z += m2[1].z; \
- \
- m1[2].x += m2[2].x; \
- m1[2].y += m2[2].y; \
- m1[2].z += m2[2].z; \
- \
- m1[3].x += m2[3].x; \
- m1[3].y += m2[3].y; \
- m1[3].z += m2[3].z; \
- \
- /* (_row) 2 */ \
- m2[0].x += m3[0].x; \
- m2[0].y += m3[0].y; \
- m2[0].z += m3[0].z; \
- \
- m2[1].x += m3[1].x; \
- m2[1].y += m3[1].y; \
- m2[1].z += m3[1].z; \
- \
- m2[2].x += m3[2].x; \
- m2[2].y += m3[2].y; \
- m2[2].z += m3[2].z; \
- \
- m2[3].x += m3[3].x; \
- m2[3].y += m3[3].y; \
- m2[3].z += m3[3].z; \
-} \
-MACRO_STOP
-
-#define RtBezierQuadDifferenceStepV4dMacro(_mat) \
-MACRO_START \
-{ \
- RtBezierV4d * const m0 = &(_mat)[0][0]; \
- RtBezierV4d * const m1 = &(_mat)[1][0]; \
- RtBezierV4d * const m2 = &(_mat)[2][0]; \
- RtBezierV4d * const m3 = &(_mat)[3][0]; \
- \
- /* (_row) 0 */ \
- m0[0].x += m1[0].x; \
- m0[0].y += m1[0].y; \
- m0[0].z += m1[0].z; \
- m0[0].w += m1[0].w; \
- \
- m0[1].x += m1[1].x; \
- m0[1].y += m1[1].y; \
- m0[1].z += m1[1].z; \
- m0[1].w += m1[1].w; \
- \
- m0[2].x += m1[2].x; \
- m0[2].y += m1[2].y; \
- m0[2].z += m1[2].z; \
- m0[2].w += m1[2].w; \
- \
- m0[3].x += m1[3].x; \
- m0[3].y += m1[3].y; \
- m0[3].z += m1[3].z; \
- m0[3].w += m1[3].w; \
- \
- /* (_row) 1 */ \
- m1[0].x += m2[0].x; \
- m1[0].y += m2[0].y; \
- m1[0].z += m2[0].z; \
- m1[0].w += m2[0].w; \
- \
- m1[1].x += m2[1].x; \
- m1[1].y += m2[1].y; \
- m1[1].z += m2[1].z; \
- m1[1].w += m2[1].w; \
- \
- m1[2].x += m2[2].x; \
- m1[2].y += m2[2].y; \
- m1[2].z += m2[2].z; \
- m1[2].w += m2[2].w; \
- \
- m1[3].x += m2[3].x; \
- m1[3].y += m2[3].y; \
- m1[3].z += m2[3].z; \
- m1[3].w += m2[3].w; \
- \
- /* (_row) 2 */ \
- m2[0].x += m3[0].x; \
- m2[0].y += m3[0].y; \
- m2[0].z += m3[0].z; \
- m2[0].w += m3[0].w; \
- \
- m2[1].x += m3[1].x; \
- m2[1].y += m3[1].y; \
- m2[1].z += m3[1].z; \
- m2[1].w += m3[1].w; \
- \
- m2[2].x += m3[2].x; \
- m2[2].y += m3[2].y; \
- m2[2].z += m3[2].z; \
- m2[2].w += m3[2].w; \
- \
- m2[3].x += m3[3].x; \
- m2[3].y += m3[3].y; \
- m2[3].z += m3[3].z; \
- m2[3].w += m3[3].w; \
-} \
-MACRO_STOP
-
-#ifdef __cplusplus
-extern "C"
-{
-#endif /* __cplusplus */
-extern void
-RtBezierQuadControlFit3d(RtBezierMatrix B,
- RtBezierMatrix P);
-
-extern void
-RtBezierQuadBernsteinWeight3d(RtBezierMatrix W,
- RtBezierMatrix B);
-
-extern void
-RtBezierQuadBernsteinWeight4d(RtBezierMatrix W,
- RtBezierMatrix B);
-
-extern void
-RtBezierQuadPointDifference3d(RtBezierMatrix D,
- RtBezierMatrix W,
- RwReal PointU,
- RwReal PointV,
- RwReal StepU,
- RwReal stepV);
-
-extern void
-RtBezierQuadPointDifference4d(RtBezierMatrix D,
- RtBezierMatrix W,
- RwReal PointU,
- RwReal PointV,
- RwReal StepU,
- RwReal stepV);
-
-extern void
-RtBezierQuadOriginDifference3d(RtBezierMatrix D,
- RtBezierMatrix W,
- RwReal stepU,
- RwReal setpV);
-
-extern void
-RtBezierQuadOriginDifference4d(RtBezierMatrix D,
- RtBezierMatrix W,
- RwReal stepU,
- RwReal setpV);
-
-#if ( defined(RWDEBUG) || defined(RWSUPPRESSINLINE) )
-
-extern void
-RtBezierQuadSample3d(RwV3d * out,
- RtBezierMatrix B,
- RwReal u,
- RwReal v);
-
-extern void RtBezierQuadDifferenceStepU3d(RtBezierRow row);
-extern void RtBezierQuadDifferenceStepU4d(RtBezierRow row);
-
-extern void RtBezierQuadDifferenceStepV3d(RtBezierMatrix mat);
-extern void RtBezierQuadDifferenceStepV4d(RtBezierMatrix mat);
-
-
-#else /* ( defined(RWDEBUG) || defined(RWSUPPRESSINLINE) ) */
-
-#define RtBezierQuadSample3d(_out, _P, _u, _v) \
- RtBezierQuadSample3dMacro(_out, _P, _u, _v)
-
-#define RtBezierQuadDifferenceStepU3d(_row) \
- RtBezierQuadDifferenceStepU3dMacro(_row)
-
-#define RtBezierQuadDifferenceStepU4d(_row) \
- RtBezierQuadDifferenceStepU4dMacro(_row)
-
-#define RtBezierQuadDifferenceStepV3d(_mat) \
- RtBezierQuadDifferenceStepV3dMacro(_mat)
-
-#define RtBezierQuadDifferenceStepV4d(_mat) \
- RtBezierQuadDifferenceStepV4dMacro(_mat)
-
-#endif /* ( defined(RWDEBUG) || defined(RWSUPPRESSINLINE) ) */
-
-/*
- *
- */
-
-extern void
-RtBezierTriangleControlFit3d(RtBezierMatrix T, RtBezierMatrix P);
-
-extern void
-RtBezierQuadFromTriangle(RtBezierMatrix Q, RtBezierMatrix T);
-
-extern void
-RtBezierQuadTangent(RtBezierMatrix D,
- RwReal theta,
- RtBezierMatrix P);
-
-extern void
-RtBezierQuadTangentPair(RtBezierMatrix Dt,
- RtBezierMatrix Dp,
- RwReal theta,
- RtBezierMatrix P);
-
-extern void
-RtBezierQuadGetNormals(RtBezierMatrix N,
- RtBezierMatrix B);
-
-#if (defined(RWDEBUG) && defined(RWVERBOSE))
-
-extern void
-_rtBezierGnuPlot(RtBezierMatrix B,
- RwChar * name,
- RwChar * title);
-
-#else /* (defined(RWDEBUG) && defined(RWVERBOSE)) */
-
-#define _rtBezierGnuPlot(B, name, title) /* No-op */
-
-#endif /* (defined(RWDEBUG) && defined(RWVERBOSE)) */
-
-#ifdef __cplusplus
-}
-#endif /* __cplusplus */
-
-#endif /* (!defined(RTBEZPAT_H)) */
diff --git a/rwsdk/include/d3d8/rtbezpat.rpe b/rwsdk/include/d3d8/rtbezpat.rpe
deleted file mode 100644
index e49b65b4..00000000
--- a/rwsdk/include/d3d8/rtbezpat.rpe
+++ /dev/null
@@ -1,629 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-enum e_rwdb_CriterionBEZPATCH
-{
-
-
-
- e_rwdb_CriterionBEZPATCHLAST = RWFORCEENUMSIZEINT
-};
-
-typedef enum e_rwdb_CriterionBEZPATCH e_rwdb_CriterionBEZPATCH;
-
-
diff --git a/rwsdk/include/d3d8/rtbmp.h b/rwsdk/include/d3d8/rtbmp.h
deleted file mode 100644
index 37b5c97b..00000000
--- a/rwsdk/include/d3d8/rtbmp.h
+++ /dev/null
@@ -1,51 +0,0 @@
-
-/***************************************************************************
- * *
- * Module : rtBMP.h *
- * *
- * Purpose : Load BMP format files *
- * *
- **************************************************************************/
-
-#ifndef RTBMP_H
-#define RTBMP_H
-
-/**
- * \defgroup rtbmp RtBMP
- * \ingroup rttool
- *
- * BMP Image Format Toolkit for RenderWare.
- *
- * See also http://www.daubnet.com/formats/BMP.html
- */
-
-/****************************************************************************
- Includes
- */
-
-/*--- Include files ---*/
-#include "rwcore.h"
-
-#include "rtbmp.rpe" /* automatically generated header file */
-
-/****************************************************************************
- Function prototypes
- */
-
-#ifdef __cplusplus
-extern "C"
-{
-#endif /* __cplusplus */
-
-extern RwImage *RtBMPImageWrite(RwImage * image,
- const RwChar * imageName);
-extern RwImage *RtBMPImageRead(const RwChar * imageName);
-
-
-#ifdef __cplusplus
-}
-#endif /* __cplusplus */
-
-/* RWPUBLICEND */
-
-#endif /* RTBMP_H */
diff --git a/rwsdk/include/d3d8/rtbmp.rpe b/rwsdk/include/d3d8/rtbmp.rpe
deleted file mode 100644
index 29dad089..00000000
--- a/rwsdk/include/d3d8/rtbmp.rpe
+++ /dev/null
@@ -1,629 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-enum e_rwdb_CriterionBMP
-{
-
-
-
- e_rwdb_CriterionBMPLAST = RWFORCEENUMSIZEINT
-};
-
-typedef enum e_rwdb_CriterionBMP e_rwdb_CriterionBMP;
-
-
diff --git a/rwsdk/include/d3d8/rtcharse.h b/rwsdk/include/d3d8/rtcharse.h
deleted file mode 100644
index 4fdc2568..00000000
--- a/rwsdk/include/d3d8/rtcharse.h
+++ /dev/null
@@ -1,111 +0,0 @@
-/*
- *
- * Data structures for the charse toolkit
- */
-
-/***************************************************************************
- * *
- * Module : rtcharse.h *
- * *
- * Purpose : Charset handling *
- * *
- **************************************************************************/
-
-#ifndef RTCHARSE_H
-#define RTCHARSE_H
-
-/**
- * \defgroup rtcharset RtCharset
- * \ingroup rttool
- *
- * Character Set/Foot Toolkit for RenderWare.
- */
-
-/****************************************************************************
- Includes
- */
-
-#include <rwcore.h>
-
-/****************************************************************************
- Global Types
- */
-
-/* RWPUBLIC */
-
-typedef struct RtCharsetDesc RtCharsetDesc;
-
-/**
- * \ingroup rtcharset
- * \struct RtCharsetDesc
- * Holds information about a character set.
- */
-struct RtCharsetDesc
-{
- RwInt32 width;
- /**< Pixel-width of each character. */
- RwInt32 height;
- /**< Pixel-height of each character. */
- RwInt32 width_internal;
- /**< Pixel-width used internally, this is usually width+1 to add a border */
- RwInt32 height_internal;
- /**< Pixel-height used internally, this is usually height+1 to add a border */
- RwInt32 count;
- /**< Number of characters in the set. */
- RwInt32 tilewidth;
- /**< Width of raster in characters. */
- RwInt32 tileheight;
- /**< Height of raster in characters. */
-
-};
-
-/**
- * \ingroup rtcharset
- * \typedef RtCharset
- * typedef for a structure defining a character set (opaque).
- * \see RtCharsetCreate
- */
-typedef RwRaster RtCharset;
-
-/* RWPUBLICEND */
-
-/****************************************************************************
- Function prototypes
- */
-
-/* RWPUBLIC */
-
-#ifdef __cplusplus
-extern "C"
-{
-#endif /* __cplusplus */
-
-extern RwBool RtCharsetOpen(void);
-extern void RtCharsetClose(void);
-
-extern RtCharset *RtCharsetPrint(RtCharset * charSet,
- const RwChar * string,
- RwInt32 x, RwInt32 y);
-extern RtCharset *RtCharsetPrintBuffered(RtCharset * charSet,
- const RwChar * string,
- RwInt32 x, RwInt32 y,
- RwBool hideSpaces);
-extern RwBool RtCharsetBufferFlush(void);
-
-extern RtCharset *RtCharsetSetColors(RtCharset * charSet,
- const RwRGBA * foreGround,
- const RwRGBA * backGround);
-extern RtCharset *RtCharsetGetDesc(RtCharset * charset,
- RtCharsetDesc * desc);
-
-extern RtCharset *RtCharsetCreate(const RwRGBA * foreGround,
- const RwRGBA * backGround);
-extern RwBool RtCharsetDestroy(RtCharset * charSet);
-
-#ifdef __cplusplus
-}
-#endif /* __cplusplus */
-
-/* RWPUBLICEND */
-
-#endif /* RTCHARSE_H */
diff --git a/rwsdk/include/d3d8/rtcharse.rpe b/rwsdk/include/d3d8/rtcharse.rpe
deleted file mode 100644
index 39c37312..00000000
--- a/rwsdk/include/d3d8/rtcharse.rpe
+++ /dev/null
@@ -1,629 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-enum e_rwdb_CriterionCharset
-{
-
-
-
- e_rwdb_CriterionCharsetLAST = RWFORCEENUMSIZEINT
-};
-
-typedef enum e_rwdb_CriterionCharset e_rwdb_CriterionCharset;
-
-
diff --git a/rwsdk/include/d3d8/rtimport.h b/rwsdk/include/d3d8/rtimport.h
deleted file mode 100644
index cf4e6283..00000000
--- a/rwsdk/include/d3d8/rtimport.h
+++ /dev/null
@@ -1,1278 +0,0 @@
-/***************************************************************************
- * *
- * Module : rtimport.h *
- * *
- * Purpose : World handling functions. *
- * *
- **************************************************************************/
-
-#ifndef RTIMPORT_H
-#define RTIMPORT_H
-
-/**
- * \defgroup rtimport RtWorldImport
- * \ingroup rttool
- *
- * World Import Toolkit for Renderware.
- */
-
-/**
- * \defgroup selectors RtWorldImportPartitionSelectors
- * \ingroup rtimport
- *
- * The set of provided RtWorldImportPartitionSelectors:
- * Selects a good partition by calling one of the
- * \ref iterators and then
- * one of the \ref evaluators to
- * see which is best.
- */
-
-/**
- * \defgroup iterators RtWorldImportPartitionIterators
- * \ingroup rtimport
- *
- * The set of provided RtWorldImportPartitionIterators:
- * Iterates through a set of candidate partitions, possibly
- * using the geometric information in the build sector, or perhaps
- * using some other criteria.
- */
-
-/**
- * \defgroup evaluators RtWorldImportPartitionEvaluators
- * \ingroup rtimport
- *
- * The set of provided RtWorldImportPartitionEvaluators:
- * Uses a combination of statistics, build sector, build status, and
- * possibly other criteria to evaluate a partition. While the value
- * returned can be any real value, all provided evaluators are return
- * lower values for better partitioners, and are in the range [0..1]
- * where appropriate
- */
-
-/**
- * \defgroup terminators RtWorldImportPartitionTerminators
- * \ingroup rtimport
- *
- * The set of provided RtWorldImportPartitionTerminators:
- * Checks given criteria about the statistics, build sector, build status, and
- * possibly other criteria to see whether the building process should be
- * allowed to terminate, or whether more parititoning is necessary.
- */
-
-/**
- * \defgroup kd RtWorldImportGuideKD
- * \ingroup rtimport
- *
- * Tools to manipulate the \ref RtWorldImportGuideKDTree that is used to
- * manually build the sectors of a world.
- */
-
-/**
- * \defgroup hints RtWorldImportHints
- * \ingroup rtimport
- *
- * Tools to aid the build process by giving hints as to what geometry should
- * not be split, and what geometry makes for a good partitioning guide.
- */
-
-/****************************************************************************
- Includes
- */
-#include "rwcore.h"
-#include "rpworld.h"
-
-#include "rtimport.rpe" /* automatically generated header file */
-
-/****************************************************************************
- Defines
- */
-
-/* Progress callback message types */
-#define rtWORLDIMPORTPROGRESSBSPBUILDSTART 0
-#define rtWORLDIMPORTPROGRESSBSPBUILDUPDATE 1
-#define rtWORLDIMPORTPROGRESSBSPBUILDEND 2
-#define rtWORLDIMPORTPROGRESSBSPCOMPRESSSTART 3
-#define rtWORLDIMPORTPROGRESSBSPCOMPRESSUPDATE 4
-#define rtWORLDIMPORTPROGRESSBSPCOMPRESSEND 5
-
-/**
- * \ingroup rtimport
- * \def rtWORLDIMPORTINVALIDPARTITION
- *
- * This value means that no partition was found, or that the partition was
- * invalid or impractical. The value represents infinity.
- */
-#define rtWORLDIMPORTINVALIDPARTITION RwRealMAXVAL
-
-/****************************************************************************
- Global types
- */
-
-/**
- * Internal use only
- */
-typedef union RtWorldImportVertexState RtWorldImportVertexState;
-
-
-/**
- * \ingroup rtimport
- * \typedef RtWorldImportVertex
- *
- * typedef for struct \ref RtWorldImportVertex
- */
-typedef struct RtWorldImportVertex RtWorldImportVertex;
-
-/**
- * \ingroup rtimport
- * \typedef RtWorldImportWeldVertex
- *
- * typedef for struct \ref RtWorldImportWeldVertex
- */
-typedef struct RtWorldImportWeldVertex RtWorldImportWeldVertex;
-
-/**
- * \ingroup rtimport
- * \typedef RtWorldImportBuildVertex
- *
- * typedef for struct \ref RtWorldImportBuildVertex
- */
-typedef struct RtWorldImportBuildVertex RtWorldImportBuildVertex;
-
-
-
-/**
- * \ingroup rtimport
- * \typedef RtWorldImportBuildPolyInfo
- *
- * typedef for struct \ref RtWorldImportBuildPolyInfo
- */
-typedef struct RtWorldImportBuildPolyInfo RtWorldImportBuildPolyInfo;
-/**
- * \ingroup rtimport
- * \struct RtWorldImportBuildPolyInfo
- *
- * Information about a polygon
- */
-struct RtWorldImportBuildPolyInfo
-{
- RwInt16 matIndex;
- /**< The material index */
- RwUInt8 clipFlags;
- /**< Clipping flags */
- RwUInt8 hasAlpha;
- /**< Alpha status */
- void *pUserdata;
- /**< Userdata */
-};
-
-typedef union RtWorldImportBuildVertexMode RtWorldImportBuildVertexMode;
-/**
- * \ingroup rtimport
- * \struct RtWorldImportBuildVertexMode
- *
- * Mode of the vertex.
- *
- */
-union RtWorldImportBuildVertexMode
-{
- RtWorldImportVertex *vpVert;
- /**< The vertex */
- RwInt32 index;
- /**< The index */
-};
-
-/**
- * \ingroup rtimport
- * \struct RtWorldImportBuildVertex
- *
- * A list of polygons as a list of vertices where the end of poly boundary
- * is marked by mode.vpVert == NULL.
- *
- */
-struct RtWorldImportBuildVertex
-{
- RtWorldImportBuildVertexMode mode;
- /**< The mode of the element */
-
- RtWorldImportBuildPolyInfo pinfo;
- /**< we store some poly info in the end marker of a boundary */
-};
-
-
-
-/**
- * \ingroup rtimport
- * \typedef RtWorldImportGuideKDTree
- *
- * typedef for struct \ref RtWorldImportGuideKDTree
- */
-typedef struct RtWorldImportGuideKDTree RtWorldImportGuideKDTree;
-
-/* NB Merged RtWorldImportPartition with RtWorldImportBuildClipStatistics because
- * there was a unique one-to-one relationship between them, and it made things easier
- * just updating one stucture, without having to update both in sequence...
- */
-
-/**
- * \ingroup rtimport
- * \typedef RtWorldImportBuildClipStatistics
- *
- * typedef for struct \ref RtWorldImportBuildClipStatistics
- */
-typedef struct RtWorldImportBuildClipStatistics RtWorldImportBuildClipStatistics;
-/**
- * \ingroup rtimport
- * \struct RtWorldImportBuildClipStatistics
- *
- * Holds statistics about a partition or candidate partition during
- * the build process.
- */
-struct RtWorldImportBuildClipStatistics
-{
- RwInt32 numPotentialSplit;
- /**< The number of polygons split by the partition,
- * disgregarding overlaps */
-
- RwInt32 numPotentialLeft;
- /**< The number of potential polygons and fragments on the
- * left of the partition, disgregarding overlaps */
-
- RwInt32 numPotentialRight;
- /**< The number of potential polygons and fragments on the
- * right of the partition, disgregarding overlaps */
-
-
- RwInt32 numActualSplit;
- /**< The number of polygons split by the partition */
-
- RwInt32 numActualLeft;
- /**< The number of polygons and fragments on the
- * left of the partition */
-
- RwInt32 numActualRight;
- /**< The number of polygons and fragments on the
- * right of the partition */
-
-
- RwInt32 numMaterialLeft;
- /**< The number of materials on the left of the partition */
-
- RwInt32 numMaterialRight;
- /**< The number of materials on the right of the partition */
-
- RwInt32 numMaterialSplits;
- /**< The number of materials split by the partition */
-
-
- RwInt32 numMaterialSector;
- /**< The total number of materials in the sector containing
- * the partition */
-
-
- RwReal overlapLeft;
- /**< The actual, relative size of the overlap on the left of the partition */
-
- RwReal overlapRight;
- /**< The actual, relative size of the overlap on the right of the partition */
-};
-
-/**
- * \ingroup rtimport
- * \typedef RtWorldImportPartition
- *
- * typedef for struct \ref RtWorldImportPartition
- */
-typedef struct RtWorldImportPartition RtWorldImportPartition;
-/**
- * \ingroup rtimport
- * \struct RtWorldImportPartition
- *
- * A partitioning plane.
- */
-struct RtWorldImportPartition
-{
- RwInt32 type;
- /**< Plane type, i.e. 0,4,8 for being normal to the x,y,z axes respectively. */
-
- RwReal value;
- /**< The distance of the plane from the origin */
-
- RwReal maxLeftValue;
- /**< The maximum value of the left face of the overlap. This is derived
- * from the maxOverlapPercent value in \ref RtWorldImportParameters
- */
-
- RwReal maxRightValue;
- /**< The maximum value of the right face of the overlap. This is derived
- * from the maxOverlapPercent value in \ref RtWorldImportParameters
- */
-
- RtWorldImportBuildClipStatistics buildStats;
- /**< The statistics for the partition */
-};
-
-/**
- * \ingroup rtimport
- * \struct RtWorldImportGuideKDTree
- * Represents the structure of a binary tree with
- * no contents per se. It is used to build a BSP in a user specified
- * manner instead of using any heuristic.
- *
- */
-struct RtWorldImportGuideKDTree
-{
- RtWorldImportPartition partition;
- /**< A partitioning plane */
-
- RwBBox bbox;
- /**< Bounding box of the sector or super-sector */
-
- RtWorldImportGuideKDTree *parent;
- /**< Pointer to its parent */
-
- RwInt32 order;
- /**< Relationship information - 0 for left child, 1 for right child */
-
- RtWorldImportGuideKDTree *left;
- /**< Left child */
-
- RtWorldImportGuideKDTree *right;
- /**< Right child */
-};
-
-typedef struct _rtWorldImportGuideKDStackElement _rtWorldImportGuideKDStackElement;
-
-struct _rtWorldImportGuideKDStackElement
-{
- RwBool terminal;
- RtWorldImportGuideKDTree *node;
- _rtWorldImportGuideKDStackElement *next;
-};
-
-typedef struct _rtWorldImportGuideKDStack _rtWorldImportGuideKDStack;
-
-struct _rtWorldImportGuideKDStack
-{
- _rtWorldImportGuideKDStackElement *top;
- _rtWorldImportGuideKDStackElement *current;
- _rtWorldImportGuideKDStackElement *bottom;
-};
-
-/**
- * \ingroup rtimport
- * \typedef RtWorldImportBuildSector
- *
- * typedef for struct \ref RtWorldImportBuildSector
- */
-typedef struct RtWorldImportBuildSector RtWorldImportBuildSector;
-/**
- * \ingroup rtimport
- * \struct RtWorldImportBuildSector
- *
- * Holds information about the sector that is being subdivided
- */
-struct RtWorldImportBuildSector
-{
- RwInt32 type;
- /**< Sector type (so can handle in an RpWorld) */
-
- RtWorldImportVertex *vertices;
- /**< A pointer to the list of vertices */
-
- RwInt32 numVertices;
- /**< The number of vertices */
-
- RtWorldImportBuildVertex *boundaries;
- /**< A list of boundaries \see RtWorldImportBuildVertex */
-
- RwInt32 numBoundaries;
- /**< The number of boundaries */
-
- RwInt32 numPolygons;
- /**< The number of polygons (triangles) */
-
- RwBBox boundingBox;
- /**< Sector's bounding box */
-
- RwReal overlap;
- /**< The percentage that the sector overlaps with its neighbour */
-
- RwUInt32 maxNumMaterials;
- /**< Maximum number of materials in the in the world */
-};
-
-/**
- * \ingroup rtimport
- * \typedef RtWorldImportBuildStatus
- *
- * typedef for struct \ref RtWorldImportBuildStatus
- */
-typedef struct RtWorldImportBuildStatus RtWorldImportBuildStatus;
-/**
- * \ingroup rtimport
- * \struct RtWorldImportBuildStatus
- * World Import Build Status Structure
- * Used to store the current tree's build status
- */
-struct RtWorldImportBuildStatus
-{
- RwInt32 depth; /**< current depth in the tree */
-};
-
-/**
- * Internal use only
- */
-union RtWorldImportVertexState
-{
- /* clipFlags, two types, first is based on partition only, 2nd is
- * also based on partition, but takes overlaps into consideration. i.e.
- * number splits is usually higher in clipFlags[0] than [1] */
- RwInt32 clipFlags[2]; /**< Internal use only */
- RwInt32 forwardingAddress; /**< Internal use only */
- RtWorldImportVertex *vpVert; /**< Internal use only */
- RtWorldImportWeldVertex *vpWeldVert; /**< Internal use only */
- RtWorldImportBuildVertex *vpBuildVert; /**< Internal use only */
- RwSList *slist; /**< Internal use only */
-};
-
-/**
- * \ingroup rtimport
- * \struct RtWorldImportVertex
- * Holds data for each vertex in the import world.
- *
- */
-struct RtWorldImportVertex
-{
- RwV3d OC; /**< World space vertex position */
- RwV3d normal; /**< World space vertex normal */
- RwRGBA preLitCol; /**< Vertex Prelight color */
- RwTexCoords texCoords[rwMAXTEXTURECOORDS];
- /**< Vertex texture coordinates */
- RtWorldImportVertexState state; /**< Internal use only */
- RwInt32 matIndex; /**< Vertex material index */
- void *pUserdata; /**< Pointer to unspecified per vertex user data */
-};
-
-/**
- * \ingroup rtimport
- * \typedef RtWorldImportTriangle
- * Holds data for each triangle in the import world.
- *
- * \see RtWorldImportTriangle
- */
-typedef struct RtWorldImportTriangle RtWorldImportTriangle;
-/**
- * \ingroup rtimport
- * \struct RtWorldImportTriangle
- * Holds data for each triangle in the import world.
- *
- * \see RtWorldImportTriangle
- */
-struct RtWorldImportTriangle
-{
- RwInt32 matIndex; /**< Index into material list */
- RwInt32 vertIndex[3]; /**< Indices into vertex list */
- void *pUserdata; /**< Pointer to unspecified per triangle user data */
-};
-
-
-/**
- * \ingroup rtimport
- * \typedef RtWorldImportHints
- *
- * typedef for struct \ref RtWorldImportHints
- */
-typedef struct RtWorldImportHints RtWorldImportHints;
-
-/**
- * \ingroup rtimport
- * \struct RtWorldImportHints
- * Bounding box hints used to control the world sectorization process.
- * \see RtWorldImportHintsSet
- */
-struct RtWorldImportHints
-{
- /** The bounding box hints */
- RwBBox *boundingBoxes;
- /** The number of bounding box hints */
- RwInt32 numBoundingBoxes;
-};
-
-/**
- * \ingroup rtimport
- * \typedef RtWorldImportParameters
- *
- * typedef for struct \ref RtWorldImportParameters
- */
-typedef struct RtWorldImportParameters RtWorldImportParameters;
-
-/**
- * \ingroup rtimport
- * \struct RtWorldImportParameters
- * Parameters used with \ref RtWorldImportCreateWorld.
- * They are initialized to default values using \ref RtWorldImportParametersInit.
- *
- */
-struct RtWorldImportParameters
-{
- RwReal worldSectorMaxSize;
- /**< The maximum world sector size. */
- RwInt32 maxWorldSectorPolygons;
- /**< The maximum number of polygons in a world sector. */
- RwReal maxOverlapPercent;
- /**< Total fraction of world sector overlap allowed. */
- RwReal weldThreshold;
- /**< Threshold for welding vertices. */
- RwReal angularThreshold;
- /**< Angular threshold for welding vertex normals */
- RwBool calcNormals;
- /**< If TRUE then importer creates normals. */
- RwBool conditionGeometry;
- /**< If TRUE perform vertex welding and degenerate triangle removal.*/
- RwBool userSpecifiedBBox;
- /**< If TRUE allows user to specify minimum bounding-box for the
- * world using the userBBox parameter. */
- RwBBox userBBox;
- /**< User specified world bounding-box if userSpecifiedBBox is TRUE.*/
- RwReal uvLimit;
- /**< If conditionGeometry is TRUE limit texture coordinates to this
- * value. */
- RwBool retainCreases;
- /**< If TRUE then duplicate vertices with differing normals will not
- * be merged. */
- RwBool fixTJunctions;
- /**< If TRUE then T-junctions are fixed in the geometry (slow). */
- RwBool weldPolygons;
- /**< If TRUE then polygons are welded where possible to reduce the
- * polygon count. */
- RwInt32 flags;
- /**< Conversion flags (see RpWorldFlag). */
- RwTextureAddressMode mode;
- /**< If \ref rwTEXTUREADDRESSWRAP than weld vertices according to
- * mod(1) congruent texture coordinates */
- RwBool sortPolygons;
- /**< If TRUE then polygons are sorted by their centroid */
- RwBool cullZeroAreaPolygons;
- /**< If TRUE then zero-area polygons are culled */
- RwInt32 numTexCoordSets;
- /**< The number of texture coordinate sets to use. If set to zero, then
- * the number is taken from the flags parameter which, for backward
- * compatibility, can include the \ref rpWORLDTEXTURED or \ref rpWORLDTEXTURED2
- * flags. These specify one or two sets respectively. */
- RwBool terminatorCheck;
- /**< If TRUE the world will be checked for validity during the build process. */
-};
-
-/**
- * \ingroup rtimport
- * \typedef RtWorldImport
- *
- * typedef for struct \ref RtWorldImport
- */
-typedef struct RtWorldImport RtWorldImport;
-/**
- * \ingroup rtimport
- * \struct RtWorldImport
- * World Import State Structure
- */
-struct RtWorldImport
-{
- RpMaterialList matList; /**< Material list */
- RtWorldImportVertex *vertices; /**< Vertex array */
- RwInt32 numVertices; /**< Vertex count */
-
- RtWorldImportTriangle *polygons; /**< Triangle array */
- RwInt32 numPolygons; /**< Triangle count */
-
-
- RwSurfaceProperties surfaceProps; /**< The world's surface
- lighting properties */
-};
-
-/**
- * \ingroup rtimport
- * \ref RtWorldImportProgressCallBack is the type for the callback function supplied to
- * \ref RtWorldImportSetProgressCallBack.
- *
- * \param msg Message type corresponding to one of the following:
- * \li rtWORLDIMPORTPROGRESSBSPBUILDSTART -
- * The BSP creation process is about to start.
- * The argument value is equal to 0.0.
- * \li rtWORLDIMPORTPROGRESSBSPBUILDUPDATE -
- * The BSP creation process has finished processing a subsection of
- * the world. The argument value is equal to the percentage of the
- * world processed up to this point.
- * \li rtWORLDIMPORTPROGRESSBSPBUILDEND -
- * The BSP creation process has ended.
- * The argument value is equal to 100.0.
- * \li rtWORLDIMPORTPROGRESSBSPCOMPRESSSTART -
- * The BSP compression process is about to start. The argument value
- * is equal to 0.0.
- * \li rtWORLDIMPORTPROGRESSBSPCOMPRESSUPDATE -
- * The BSP compression has finished processing a subsection of the
- * world. The argument value is equal to the percentage of the world
- * processed up to this point.
- * \li rtWORLDIMPORTPROGRESSBSPCOMPRESSEND -
- * The BSP compression process has ended. The argument value is equal
- * to 100.0.
- *
- * \param value The percentage of the progress made in either BSP
- * building or BSP compression.
- *
- * \return TRUE to continue BSP processing, FALSE to abort.
- *
- * \see RtWorldImportSetProgressCallBack
- */
-typedef RwBool (*RtWorldImportProgressCallBack)(RwInt32 msg, RwReal value);
-
-/**
- * \ingroup rtimport
- * \typedef RtWorldImportDestroyVertexUserdataCallBack
- *
- * A pointer to the CallBack function that will be called during
- * vertex destruction.
- */
-typedef RwBool (*RtWorldImportDestroyVertexUserdataCallBack)(void **pUserdata);
-
-/**
- * \ingroup rtimport
- * \typedef RtWorldImportCloneVertexUserdataCallBack
- *
- * A pointer to the CallBack function that will be called during
- * vertex cloning.
- */
-typedef RwBool (*RtWorldImportCloneVertexUserdataCallBack)(void **pUserdataDst, void **pUserdataSrc);
-
-/**
- * \ingroup rtimport
- * \typedef RtWorldImportInterpVertexUserdataCallBack
- *
- * A pointer to the CallBack function that will be called during
- * vertex interpolation.
- */
-typedef RwBool (*RtWorldImportInterpVertexUserdataCallBack)(void **pUserdataDst, void **pUserdata1, void **pUserdata2, RwReal delta);
-
-/**
- * \ingroup rtimport
- * \typedef RtWorldImportDestroyPolygonUserdataCallBack
- *
- * A pointer to the CallBack function that will be called during
- * polygon destruction.
- */
-typedef RwBool (*RtWorldImportDestroyPolygonUserdataCallBack)(void **pUserdata);
-
-/**
- * \ingroup rtimport
- * \typedef RtWorldImportSplitPolygonUserdataCallBack
- *
- * A pointer to the CallBack function that will be called during
- * polygon division.
- */
-typedef RwBool (*RtWorldImportSplitPolygonUserdataCallBack)(void **pUserdataDst, void **pUserdataSrc);
-
-/**
- * \ingroup rtimport
- * \typedef RtWorldImportSectorSetVertexUserdataCallBack
- *
- * A pointer to the CallBack function that will be called during
- * the setting of the vertex user data.
- */
-typedef RwBool (*RtWorldImportSectorSetVertexUserdataCallBack)(void **pUserdata, RpWorldSector *sector, RwInt32 index);
-
-/**
- * \ingroup rtimport
- * \typedef RtWorldImportSectorSetPolygonUserdataCallBack
- *
- * A pointer to the CallBack function that will be called during
- * the setting of the polygon user data.
- */
-typedef RwBool (*RtWorldImportSectorSetPolygonUserdataCallBack)(void **pUserdata, RpWorldSector *sector, RwInt32 index);
-
-
-
-
-/**
- * \ingroup rtimport
- * \typedef RtWorldImportTerminationBuildCallBack
- *
- * A pointer to the function that will be called during the
- * build process to determine whether the current sector should
- * be subdivided further, or terminated.
- */
-typedef RwBool (*RtWorldImportTerminationBuildCallBack)
- (RtWorldImportBuildSector *buildSector,
- RtWorldImportBuildStatus *buildStatus,
- void *pData);
-
-/**
- * \ingroup rtimport
- * \typedef RtWorldImportPartitionBuildCallBack
- *
- * A pointer to the function that will be called during the
- * build process to select a suitable sector partition.
- */
-typedef RwReal (*RtWorldImportPartitionBuildCallBack)
- (RtWorldImportBuildSector *buildSector,
- RtWorldImportBuildStatus *buildStatus,
- RtWorldImportPartition *partition,
- void *pData);
-
-/**
- * \ingroup rtimport
- * \typedef RtWorldImportBuildCallBacks
- *
- * typedef for struct \ref RtWorldImportBuildCallBacks
- */
-typedef struct RtWorldImportBuildCallBacks RtWorldImportBuildCallBacks; /* MAYBE: rename to SectorCallBacks ?*/
-/**
- * \ingroup rtimport
- * \struct RtWorldImportBuildCallBacks
- * Sectorization callbacks
- */
-struct RtWorldImportBuildCallBacks
-{
- RtWorldImportPartitionBuildCallBack partitionBuild;
- /**< Callback for choosing partition */
- void *partitionUserData;
- /**< Partition callback user data */
- RtWorldImportTerminationBuildCallBack terminationBuild;
- /**< Callback for termination of further partitioning */
- void *terminationUserData;
- /**< Termination callback user data */
-};
-
-/**
- * \ingroup rtimport
- * \typedef RtWorldImportUserdataCallBacks
- *
- * typedef for struct \ref RtWorldImportUserdataCallBacks
- */
-typedef struct RtWorldImportUserdataCallBacks RtWorldImportUserdataCallBacks;
-/**
- * \ingroup rtimport
- * \struct RtWorldImportUserdataCallBacks
- * Bundle of callbacks
- */
-struct RtWorldImportUserdataCallBacks
-{
- RtWorldImportDestroyVertexUserdataCallBack destroyVertexUserdata;
- /**< Callback on vertex destruction */
- RtWorldImportCloneVertexUserdataCallBack cloneVertexUserdata;
- /**< Callback on vertex cloning */
- RtWorldImportInterpVertexUserdataCallBack interpVertexUserdata;
- /**< Callback on vertex interpolation */
- RtWorldImportDestroyPolygonUserdataCallBack destroyPolygonUserdata;
- /**< Callback on polygon destruction */
- RtWorldImportSplitPolygonUserdataCallBack splitPolygonUserdata;
- /**< Callback on polygon division */
- RtWorldImportSectorSetVertexUserdataCallBack sectorSetVertexUserdata;
- /**< Callback on setting vertex user data */
- RtWorldImportSectorSetPolygonUserdataCallBack sectorSetPolygonUserdata;
- /**< Callback on setting polygon user data */
-};
-
-/**
- * \ingroup rtimport
- * \typedef RtWorldImportBuildPartitionSelector
- *
- * An enumeration that can be passed to
- * \ref RtWorldImportSetStandardBuildPartitionSelector to determine
- * whether partitioning will be achieved automatically, using the
- * default partition selected, or manually using the \ref RtWorldImportGuideKDTree
- */
-typedef enum
-{
- rwBUILDPARTITIONSELECTOR_DEFAULT,
- /**< Sets the default automated process */
- rwBUILDPARTITIONSELECTOR_GUIDED
- /**< Sets the guided manual process */
-}
-RtWorldImportBuildPartitionSelector;
-
-
-
-
-/* Builds overlaps from plane and conversion params */
-#define BuildSectorSetOverlapsMacro(_boundingBox, _partition, _conversionParams) \
-MACRO_START \
-{ \
- RwReal sup = GETCOORD((_boundingBox).sup, (_partition).type); \
- RwReal inf = GETCOORD((_boundingBox).inf, (_partition).type); \
- \
- (_partition).maxLeftValue = \
- (_partition).value + \
- ((sup - (_partition).value) * (_conversionParams).maxOverlapPercent); \
- \
- (_partition).maxRightValue = \
- (_partition).value - \
- ((((_partition).value) - inf) * (_conversionParams).maxOverlapPercent); \
-} \
-MACRO_STOP
-
-/*****************************************************************************
- * Function prototypes
- */
-
-#ifdef __cplusplus
-extern "C"
-{
-#endif /* __cplusplus */
-
-extern RwBool
-_rtImportBuildSectorFindBBox(RtWorldImportBuildSector *buildSector, RwBBox *bbpOut);
-
-/* TODO: decide where these scheme functions are going and which ones are public and
- whether _rt or RT should be used */
-extern void
- _rtWorldImportGuideKDCopy(RtWorldImportGuideKDTree *KD, RpSector *spSector, RwInt32 depth);
-extern void _rtWorldImportGuideKDStackDestroy(_rtWorldImportGuideKDStack *stack);
-extern void
-_rtWorldImportGuideKDEncodeAsStack(RtWorldImportGuideKDTree *tree, _rtWorldImportGuideKDStack *stack);
-
-extern RtWorldImportGuideKDTree *RtWorldImportGuideKDCreate(RwBBox *bbox);
-extern RtWorldImportGuideKDTree *RtWorldImportGuideKDAddPartition
- (RtWorldImportGuideKDTree *KD, RwInt32 type, RwReal value);
-extern void RtWorldImportGuideKDDeletePartition(RtWorldImportGuideKDTree *KD);
-extern void RtWorldImportGuideKDDestroy(RtWorldImportGuideKDTree *KD);
-
-extern RtWorldImportGuideKDTree *RtWorldImportGuideKDWrite(
- RtWorldImportGuideKDTree *guideKD, const RwChar *filename);
-extern RtWorldImportGuideKDTree * RtWorldImportGuideKDRead(
- const RwChar *filename, const RwBBox *bbox);
-
-/*****************************************************************************
- * PARTITION SELECTORS - These callbacks for used to select a partition
- * from a sector.
- */
-
-extern RwReal
-RtWorldImportBalancedCullPartitionSelector(RtWorldImportBuildSector *buildSector,
- RtWorldImportBuildStatus *buildStatus,
- RtWorldImportPartition *partition,
- void *userData);
-
-extern RwReal
-RtWorldImportMaterialCountPartitionSelector(RtWorldImportBuildSector *buildSector,
- RtWorldImportBuildStatus *buildStatus,
- RtWorldImportPartition *partition,
- void *userData);
-
-extern RwReal
-RtWorldImportMaterialSeparatePartitionSelector(RtWorldImportBuildSector *buildSector,
- RtWorldImportBuildStatus *buildStatus,
- RtWorldImportPartition *partition,
- void *userData);
-
-extern RwReal
-RtWorldImportMaximumOccluderPartitionSelector(RtWorldImportBuildSector *buildSector,
- RtWorldImportBuildStatus *buildStatus,
- RtWorldImportPartition *partition,
- void * userData);
-
-extern RwReal
-RtWorldImportDisjointOccluderPartitionSelector(RtWorldImportBuildSector *buildSector,
- RtWorldImportBuildStatus *buildStatus,
- RtWorldImportPartition *partition,
- void * userData);
-
-extern RwReal
-RtWorldImportLeastCutAndBalancedPartitionSelector(RtWorldImportBuildSector *buildSector,
- RtWorldImportBuildStatus *buildStatus,
- RtWorldImportPartition *partition,
- void * userData);
-
-extern RwReal
-RtWorldImportMaximumExtentPartitionSelector(RtWorldImportBuildSector *buildSector,
- RtWorldImportBuildStatus *buildStatus,
- RtWorldImportPartition *partition,
- void * userData);
-
-extern RwReal
-RtWorldImportCullMiddleSpacePartitionSelector(RtWorldImportBuildSector *buildSector,
- RtWorldImportBuildStatus *buildStatus,
- RtWorldImportPartition *partition,
- void *userData);
-
-extern RwReal
-RtWorldImportCullEndSpacePartitionSelector(RtWorldImportBuildSector * buildSector,
- RtWorldImportBuildStatus *buildStatus,
- RtWorldImportPartition *partition,
- void *userData);
-
-extern RwReal
-RtWorldImportCullSpacePartitionSelector(RtWorldImportBuildSector *buildSector,
- RtWorldImportBuildStatus *buildStatus,
- RtWorldImportPartition *partition,
- void *userData);
-
-extern RwReal
-RtWorldImportHintBBoxPartitionSelector(RtWorldImportBuildSector *buildSector,
- RtWorldImportBuildStatus *buildStatus,
- RtWorldImportPartition *partition,
- void *userData);
-
-extern RwReal
-RtWorldImportGeneralOccluderPartitionSelector(RtWorldImportBuildSector *buildSector,
- RtWorldImportBuildStatus *buildStatus,
- RtWorldImportPartition *partition,
- void * userData);
-
-extern RwReal
-RtWorldImportBalancedTreePartitionSelector(RtWorldImportBuildSector *buildSector,
- RtWorldImportBuildStatus *buildStatus,
- RtWorldImportPartition *partition,
- void * userData);
-
-/*****************************************************************************
- * PARTITION ITERATORS - These callbacks iterate though a set of partitions
- */
-
-extern RwBool
-RtWorldImportOrthogonalAutoPartitionIterator(RtWorldImportBuildSector *buildSector,
- RtWorldImportBuildStatus *buildStatus,
- RtWorldImportPartition *partition,
- void * userData,
- RwInt32* loopCounter);
-
-
-extern RwBool
-RtWorldImportRegularIntervalPartitionIterator(RtWorldImportBuildSector *buildSector,
- RtWorldImportBuildStatus *buildStatus,
- RtWorldImportPartition *partition,
- void * userData,
- RwInt32* loopCounter);
-
-
-extern RwBool
-RtWorldImportMiddleAxisPartitionIterator(RtWorldImportBuildSector *buildSector,
- RtWorldImportBuildStatus *buildStatus,
- RtWorldImportPartition *partition,
- void * userData,
- RwInt32 * loopCounter);
-
-
-extern RwBool
-RtWorldImportMedianPercentagePartitionIterator(RtWorldImportBuildSector *buildSector,
- RtWorldImportBuildStatus *buildStatus,
- RtWorldImportPartition *partition,
- void *userData,
- RwInt32 *loopCounter);
-
-
-extern RwBool
-RtWorldImportHintBBoxPartitionIterator(RtWorldImportBuildSector *buildSector,
- RtWorldImportBuildStatus *buildStatus,
- RtWorldImportPartition *partition,
- void * userData,
- RwInt32* loopCounter);
-
-extern RwBool
-RtWorldImportHighestVertexAccommodatingPlanePartitionIterator(RtWorldImportBuildSector *buildSector,
- RtWorldImportBuildStatus * buildStatus,
- RtWorldImportPartition *partition,
- void * userData,
- RwInt32* loopCounter);
-
-extern RwBool
-RtWorldImportMaterialBoundsPartitionIterator(RtWorldImportBuildSector *buildSector,
- RtWorldImportBuildStatus * buildStatus,
- RtWorldImportPartition *partition,
- void *userData,
- RwInt32 *loopCounter);
-
-/*****************************************************************************
- * PARTITION EVALUATORS - These callbacks iterate though a set of partitions
- */
-
-extern RwReal
-RtWorldImportFuzzyBalancedPartitionEvaluator(RtWorldImportBuildSector *buildSector,
- RtWorldImportBuildStatus *buildStatus,
- RtWorldImportPartition *partition,
- void *userData);
-
-
-extern RwReal
-RtWorldImportPotentialSplitPartitionEvaluator(RtWorldImportBuildSector *buildSector,
- RtWorldImportBuildStatus *buildStatus,
- RtWorldImportPartition *partition,
- void * userData);
-
-
-extern RwReal
-RtWorldImportBalancedPartitionEvaluator(RtWorldImportBuildSector *buildSector,
- RtWorldImportBuildStatus *buildStatus,
- RtWorldImportPartition *partition,
- void * userData);
-
-
-extern RwReal
-RtWorldImportExtentPartitionEvaluator(RtWorldImportBuildSector *buildSector,
- RtWorldImportBuildStatus *buildStatus,
- RtWorldImportPartition *partition,
- void * userData);
-
-
-extern RwReal
-RtWorldImportOccluderPartitionEvaluator(RtWorldImportBuildSector *buildSector,
- RtWorldImportBuildStatus *buildStatus,
- RtWorldImportPartition *partition,
- void * userData);
-
-
-extern RwReal
-RtWorldImportWeightedOccluderPartitionEvaluator(RtWorldImportBuildSector *buildSector,
- RtWorldImportBuildStatus *buildStatus,
- RtWorldImportPartition *partition,
- void * userData);
-
-extern RwReal
-RtWorldImportHintBBoxPartitionEvaluator(RtWorldImportBuildSector *buildSector,
- RtWorldImportBuildStatus *buildStatus,
- RtWorldImportPartition *partition,
- void *userData);
-
-extern RwReal
-RtWorldImportVolumeBalancedPartitionEvaluator(RtWorldImportBuildSector * buildSector,
- RtWorldImportBuildStatus * buildStatus,
- RtWorldImportPartition *partition,
- void * userData);
-
-extern RwReal
-RtWorldImportWeightedDisjointOccluderPartitionEvaluator(RtWorldImportBuildSector *buildSector,
- RtWorldImportBuildStatus *buildStatus,
- RtWorldImportPartition *partition,
- void * userData);
-
-extern RwReal
-RtWorldImportMaterialCutsPartitionEvaluator(RtWorldImportBuildSector * buildSector,
- RtWorldImportBuildStatus * buildStatus,
- RtWorldImportPartition *partition,
- void * userData);
-
-extern RwReal
-RtWorldImportMaterialBalancedPartitionEvaluator(RtWorldImportBuildSector * buildSector,
- RtWorldImportBuildStatus *buildStatus,
- RtWorldImportPartition *partition,
- void * userData);
-
-extern RwReal
-RtWorldImportAspectPartitionEvaluator(RtWorldImportBuildSector *buildSector,
- RtWorldImportBuildStatus * buildStatus,
- RtWorldImportPartition *partition,
- void * userData);
-
-extern RwReal
-RtWorldImportMaterialSeparatorPartitionEvaluator(RtWorldImportBuildSector * buildSector,
- RtWorldImportBuildStatus * buildStatus,
- RtWorldImportPartition *partition,
- void * userData);
-/*****************************************************************************
- * PARTITION TERMINATORS - These callbacks are used to decide when
- * partitioning of a sector should stop
- */
-extern RwBool
-RtWorldImportNeverPartitionTerminator(RtWorldImportBuildSector * buildSector,
- RtWorldImportBuildStatus * buildStatus,
- void * userData);
-
-extern RwBool
-RtWorldImportMaximumLegalPartitionTerminator(RtWorldImportBuildSector * buildSector,
- RtWorldImportBuildStatus * __RWUNUSED__ buildStatus,
- void * __RWUNUSED__ userData);
-
-extern RwBool
-RtWorldImportDefaultPartitionTerminator(RtWorldImportBuildSector * buildSector,
- RtWorldImportBuildStatus * buildStatus,
- void * pData);
-
-
-extern RwBool
-RtWorldImportDepthPartitionTerminator(RtWorldImportBuildSector * buildSector,
- RtWorldImportBuildStatus * buildStatus,
- void * userData);
-
-
-extern RwBool
-RtWorldImportSectorHeightPartitionTerminator(RtWorldImportBuildSector * buildSector,
- RtWorldImportBuildStatus * buildStatus,
- void * userData);
-
-extern RwBool
-RtWorldImportSizePartitionTerminator(RtWorldImportBuildSector * buildSector,
- RtWorldImportBuildStatus * buildStatus,
- void * userData);
-
-extern RwBool
-RtWorldImportSectorAspectSizePartitionTerminator(RtWorldImportBuildSector * buildSector,
- RtWorldImportBuildStatus * buildStatus,
- void * userData);
-
-
-
-/* END TODO */
-
-/* WorldImport hints */
-extern void
-RtWorldImportHintsSet(RtWorldImportHints *hints);
-
-extern RtWorldImportHints *
-RtWorldImportHintsGet(void);
-
-extern RtWorldImportHints *
-RtWorldImportHintsCreate(void);
-
-extern RwBool
-RtWorldImportHintsDestroy(RtWorldImportHints *hints);
-
-extern RtWorldImportHints *
-RtWorldImportHintsAddBoundingBoxes(RtWorldImportHints *hints, RwInt32 numBoundingBoxes);
-
-extern void
-RtWorldImportMaterialGroupHintGenerator(RtWorldImportBuildSector *buildSector,
- RtWorldImportHints *materialGroupHints);
-
-/* Initializing the conversion structure */
-extern RtWorldImportParameters *RtWorldImportParametersInit(void);
-extern void RtWorldImportParametersSet(RtWorldImportParameters *params);
-extern RtWorldImportParameters *RtWorldImportParametersGet(void);
-
-
-extern RpWorld *RtWorldImportCreateWorld(RtWorldImport *
- nohsworld,
- RtWorldImportParameters
- * conversionParams);
-
-extern RpGeometry *RtWorldImportCreateGeometry(RtWorldImport *
- nohsworld,
- RtWorldImportParameters
- * conversionParams);
-
-extern RtWorldImport *RtWorldImportCreate(void);
-
-extern RwBool RtWorldImportDestroy(RtWorldImport * nohsworld);
-
-extern RtWorldImport *RtWorldImportAddNumVertices(RtWorldImport *
- nohsworld,
- RwInt32
- numNewVertices);
-
-extern RtWorldImport *RtWorldImportAddNumTriangles(RtWorldImport *
- nohsworld,
- RwInt32
- numNewTriangles);
-
-extern RpMaterial *RtWorldImportGetMaterial(RtWorldImport *
- nohsworld,
- RwInt32 matInd);
-
-extern RwInt32 RtWorldImportGetNumVertices(RtWorldImport * nohsworld);
-
-extern RtWorldImportVertex *RtWorldImportGetVertices(RtWorldImport *
- nohsworld);
-
-extern RwInt32 RtWorldImportGetNumTriangles(RtWorldImport * nohsworld);
-
-extern RtWorldImportTriangle *
-RtWorldImportGetTriangles(RtWorldImport * nohsworld);
-
-/* Surface lighting characteristics */
-extern RtWorldImport *
-RtWorldImportSetSurfaceProperties(RtWorldImport * world,
- RwSurfaceProperties *
- surface);
-
-extern RwSurfaceProperties *
-RtWorldImportGetSurfaceProperties(RtWorldImport * world);
-
-/* Progress callbacks */
-extern void
-RtWorldImportSetProgressCallBack(RtWorldImportProgressCallBack CB);
-
-extern RpWorldSector * RtWorldImportGetNumMaterials(RpWorldSector *worldSector, void *data);
-
-extern void
-_rtImportWorldSendProgressMessage(RwInt32 msgtype, RwReal value);
-
-/* Reading and Writing */
-
-extern RtWorldImport *RtWorldImportWrite(RtWorldImport * world,
- RwChar * filename);
-
-extern RtWorldImport *RtWorldImportRead(RwChar * filename);
-
-extern RwInt32 RtWorldImportAddMaterial(RtWorldImport * nohsworld,
- RpMaterial * material);
-
-extern RwInt32 RtWorldImportGetMaterialIndex(RtWorldImport * nohsworld,
- RpMaterial * material);
-
-extern RtWorldImport *RtWorldImportForAllMaterials(RtWorldImport *
- nohsworld,
- RpMaterialCallBack
- fpCallBack,
- void *pData);
-
-extern void
-RtWorldImportSetUserdataCallBacks(RtWorldImportDestroyVertexUserdataCallBack
- destroyVertexUserdataCB,
- RtWorldImportCloneVertexUserdataCallBack
- cloneVertexUserdataCB,
- RtWorldImportInterpVertexUserdataCallBack
- interpVertexUserdataCB,
- RtWorldImportSectorSetVertexUserdataCallBack
- sectorSetVertexUserdata,
- RtWorldImportDestroyPolygonUserdataCallBack
- destroyPolygonUserdataCB,
- RtWorldImportSplitPolygonUserdataCallBack
- splitPolygonUserdataCB,
- RtWorldImportSectorSetPolygonUserdataCallBack
- sectorSetPolygonUserdata);
-
-extern void
-RtWorldImportSetBuildCallBacks(RtWorldImportPartitionBuildCallBack
- partitionBuildCB,
- RtWorldImportTerminationBuildCallBack
- terminationBuildCB);
-
-extern void
-RtWorldImportSetPartitionStatistics(RtWorldImportBuildSector * buildSector,
- RtWorldImportPartition * partition);
-
-extern void
-RtWorldImportSetBuildCallBacksUserData(void *partitionUserData,
- void *terminateUserData);
-
-
-extern void
-RtWorldImportSetStandardBuildPartitionSelector(RtWorldImportBuildPartitionSelector partitionSelector, void* userData);
-
-#ifdef __cplusplus
-}
-#endif /* __cplusplus */
-
-
-#define RtWorldImportParametersInitialize(_paramsPtr) \
- *(_paramsPtr) = *RtWorldImportParametersInit();
-
-
-
-#endif /* RTIMPORT_H */
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/rwsdk/include/d3d8/rtimport.rpe b/rwsdk/include/d3d8/rtimport.rpe
deleted file mode 100644
index d4b7ad2b..00000000
--- a/rwsdk/include/d3d8/rtimport.rpe
+++ /dev/null
@@ -1,640 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-enum e_rwdb_CriterionNoHSWorld
-{
-
-
-E_RW_SECTORDEGENERATE,
-
-E_RW_SECTORINVNOPOLYGONS,
-
-E_RW_NOPLANE,
-
-E_RW_SECTORINVPOLY,
-
-E_RW_SECTORUSED,
-
-E_RW_MAXBSPDEPTHEXCEEDED,
-
-
- e_rwdb_CriterionNoHSWorldLAST = RWFORCEENUMSIZEINT
-};
-
-typedef enum e_rwdb_CriterionNoHSWorld e_rwdb_CriterionNoHSWorld;
-
-
diff --git a/rwsdk/include/d3d8/rtintel.h b/rwsdk/include/d3d8/rtintel.h
deleted file mode 100644
index c11329df..00000000
--- a/rwsdk/include/d3d8/rtintel.h
+++ /dev/null
@@ -1,1206 +0,0 @@
-/**
- * Intel specific support toolkit
- */
-
-/**********************************************************************
- *
- * File : rtintel.h
- *
- * Abstract : Intel specific support/emulation
- *
- **********************************************************************
- *
- * 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) 1998 Criterion Software Ltd.
- * All Rights Reserved.
- *
- * RenderWare is a trademark of Canon Inc.
- *
- ************************************************************************/
-
-#ifndef RTINTEL_H
-#define RTINTEL_H
-
-/**
- * \defgroup rtintel RtIntel
- * \ingroup rttool
- *
- * Intel CPU Toolkit for RenderWare.
- */
-
-/****************************************************************************
- Include files
- */
-
-/*
- * Pick up
- * typedef struct _rwResEntryTag RwResEntry;
- * from baresour.h (internal) / rwcore.h (external)
- */
-
-/****************************************************************************
- Global Types
- */
-
-#include "rtintel.rpe" /* automatically generated header file */
-
-#if (!defined(RW_FIXED_64))
-typedef struct RwFixed64 RwFixed64;
-struct RwFixed64
-{
- RwInt32 msb;
- RwUInt32 lsb;
-};
-
-#define RW_FIXED_64
-#endif /* (!defined(RW_FIXED_64)) */
-
-#define doubleFromRwFixed64(x) \
- ( ((double)((x).msb))*((double)(1<<16))*((double)(1<<16)) \
- + ((double)((x).lsb)) )
-
-#if (!defined(RPINTELTIMEFUNCTION))
-typedef RwBool(*RtIntelTimeFunction) (void *data);
-
-#define RPINTELTIMEFUNCTION
-#endif /* (!defined(RPINTELTIMEFUNCTION)) */
-
-typedef struct RtIntelOverload RtIntelOverload;
-
-typedef void (*RwTransformFunction) (RwResEntry * repEntry);
-
-struct RtIntelOverload
-{
- rwMatrixMultFn MatrixMultiplyFunction;
- rwVectorMultFn VectorMultPointFunction;
- rwVectorMultFn VectorMultVectorFunction;
- RwTransformFunction TransformFunction;
-};
-
-#if (defined(__ICL))
-#define DEFINED__ICL " __ICL"
-#define UNDEFINED__ICL ""
-#else /* (defined(__ICL)) */
-#define DEFINED__ICL ""
-#define UNDEFINED__ICL " __ICL"
-#endif /* (defined(__ICL)) */
-
-#if (defined(_MSC_VER))
-
-# pragma comment ( user, "comment:" __FILE__ "(" RW_STRINGIFY_EXPANDED(__LINE__) ") : " "DEFINED " DEFINED__ICL " ; UNDEFINED " UNDEFINED__ICL )
-/* # pragma message (__FILE__ "(" RW_STRINGIFY_EXPANDED(__LINE__) ") : " "DEFINED " DEFINED__ICL " ; UNDEFINED " UNDEFINED__ICL ) */
-/* # pragma comment ( user, "comment:" __FILE__ "(" RW_STRINGIFY_EXPANDED(__LINE__) ") : " "DEFINED " DEFINED__ICL " ; UNDEFINED " UNDEFINED__ICL ) */
-#if (! (defined(__ICL) || defined(XBOX_DRVMODEL_H)) )
-#pragma message (__DATE__ " " __TIME__ " " __FILE__ "(" RW_STRINGIFY_EXPANDED(__LINE__) ") : No MMX intrinsics - defaulting to software emulation")
-#pragma message (__DATE__ " " __TIME__ " " __FILE__ "(" RW_STRINGIFY_EXPANDED(__LINE__) ") : No SSE intrinsics - defaulting to software emulation")
-#pragma comment ( user, "comment:" __FILE__ "(" RW_STRINGIFY_EXPANDED(__LINE__) ") : No MMX intrinsics - defaulting to software emulation")
-#endif /* (! (defined(__ICL) || defined(XBOX_DRVMODEL_H)) ) */
-#endif /* (defined(_MSC_VER)) */
-
-/*
- * MMX
- */
-
-#if (defined(__ICL))
-
-#if (!defined(MMINTRIN_H))
-#include "mmintrin.h"
-#define MMINTRIN_H
-#endif /* (!defined(MMINTRIN_H)) */
-
-#else /* (defined(__ICL)) */
-
-#if (defined(_MSC_VER))
-
-#if (!defined(__M64))
-typedef __int64 Rt_m64;
-
-#define __M64
-#endif /* (!defined(__M64)) */
-
-#else /* (defined(_MSC_VER)) -- e.g. __GNUC__ */
-
-#if (!defined(__M64))
-
-typedef RwInt64 Rt_m64;
-
-#define __M64
-
-#endif /* (!defined(__M64)) */
-
-#endif /* (defined(_MSC_VER)) */
-
-#endif /* (defined(__ICL)) */
-
-/*
- * SSE
- */
-
-/*
- * From
- * ccomp.pdf
- * 12 Intel C/C++ Compiler User's Guide
- * for Win32 Systems With Katmai New Instruction Support
- * --------------------------------------------------------
- * Functionality Intrinsics Usage
- * You need only define one preprocessor symbol and include the header file
- * xmmintrin.h in your application to use the following functionality
- * intrinsics:
- * #define _MM_FUNCTIONALITY
- * #include "xmmintrin.h"
- * To encourage the compiler to inline the functionality intrinsic functions for
- * better performance, consider using the -Qip and -Qipo compiler switches.
- */
-
-#if (defined(__ICL))
-
-/* #define _MM2_FUNCTIONALITY */
-
-/* #define _MM_FUNCTIONALITY */
-
-/* #define _MM_NO_ABORT */
-
-/* #define _MM_NO_ACCURACY */
-
-/* #define _MM_NO_ALIGN_CHECK */
-
-/* #define _MM_NO_INLINE */
-
-/*
- * Undefine "or", since this is valid assembler; e.g. in
- * SDK10/include/xmm_func.h
- * _asm {
- * push eax
- * fld f
- * fstcw saved_cw
- * mov eax, saved_cw
- * or eax, 3072
- * mov new_cw, eax
- * fldcw new_cw
- * fistp ret
- * fldcw saved_cw
- * pop eax
- * }
- */
-
-#if (!defined(XMMINTRIN_H))
-#include "xmmintrin.h"
-#define XMMINTRIN_H
-#endif /* (!defined(XMMINTRIN_H)) */
-
-typedef __m64 Rt_m64;
-typedef __m128 Rt_m128;
-
-#if (450 <= __ICL)
-#if (!defined(EMMINTRIN_H))
-#include "emmintrin.h"
-#define EMMINTRIN_H
-typedef __m128d Rt_m128d;
-typedef __m128i Rt_m128i;
-#endif /* (!defined(EMMINTRIN_H)) */
-#else /* (450 <= __ICL) */
-typedef __m128 Rt_m128d;
-typedef __m128 Rt_m128i;
-#endif /* (450 <= __ICL) */
-
-/*
- * Report SSE options as compiler messages and object file comments
- */
-
-#ifdef _MM2_FUNCTIONALITY
-#define DEFINED__MM2_FUNCTIONALITY " _MM2_FUNCTIONALITY"
-#define UNDEFINED__MM2_FUNCTIONALITY ""
-#else /* _MM2_FUNCTIONALITY */
-#define DEFINED__MM2_FUNCTIONALITY ""
-#define UNDEFINED__MM2_FUNCTIONALITY " _MM2_FUNCTIONALITY"
-#endif /* _MM2_FUNCTIONALITY */
-
-#ifdef _MM_FUNCTIONALITY
-#define DEFINED__MM_FUNCTIONALITY DEFINED__MM2_FUNCTIONALITY ## " _MM_FUNCTIONALITY"
-#define UNDEFINED__MM_FUNCTIONALITY UNDEFINED__MM2_FUNCTIONALITY
-#else /* _MM_FUNCTIONALITY */
-#define DEFINED__MM_FUNCTIONALITY DEFINED__MM2_FUNCTIONALITY
-#define UNDEFINED__MM_FUNCTIONALITY UNDEFINED__MM2_FUNCTIONALITY ## " _MM_FUNCTIONALITY"
-#endif /* _MM_FUNCTIONALITY */
-
-#ifdef _MM_NO_ABORT
-#define DEFINED__MM_NO_ABORT DEFINED__MM_FUNCTIONALITY ## " _MM_NO_ABORT"
-#define UNDEFINED__MM_NO_ABORT UNDEFINED__MM_FUNCTIONALITY
-#else /* _MM_NO_ABORT */
-#define DEFINED__MM_NO_ABORT DEFINED__MM_FUNCTIONALITY
-#define UNDEFINED__MM_NO_ABORT UNDEFINED__MM_FUNCTIONALITY ## " _MM_NO_ABORT"
-#endif /* _MM_NO_ABORT */
-
-#ifdef _MM_NO_ACCURACY
-#define DEFINED__MM_NO_ACCURACY DEFINED__MM_NO_ABORT ## " _MM_NO_ACCURACY"
-#define UNDEFINED__MM_NO_ACCURACY UNDEFINED__MM_NO_ABORT
-#else /* _MM_NO_ACCURACY */
-#define DEFINED__MM_NO_ACCURACY DEFINED__MM_NO_ABORT
-#define UNDEFINED__MM_NO_ACCURACY UNDEFINED__MM_NO_ABORT ## " _MM_NO_ACCURACY"
-#endif /* _MM_NO_ACCURACY */
-
-#ifdef _MM_NO_ALIGN_CHECK
-#define DEFINED__MM_NO_ALIGN_CHECK DEFINED__MM_NO_ACCURACY ## " _MM_NO_ALIGN_CHECK"
-#define UNDEFINED__MM_NO_ALIGN_CHECK UNDEFINED__MM_NO_ACCURACY
-#else /* _MM_NO_ALIGN_CHECK */
-#define DEFINED__MM_NO_ALIGN_CHECK DEFINED__MM_NO_ACCURACY
-#define UNDEFINED__MM_NO_ALIGN_CHECK UNDEFINED__MM_NO_ACCURACY ## " _MM_NO_ALIGN_CHECK"
-#endif /* _MM_NO_ALIGN_CHECK */
-
-#ifdef _MM_NO_INLINE
-#define DEFINED__MM_NO_INLINE DEFINED__MM_NO_ALIGN_CHECK ## " _MM_NO_INLINE"
-#define UNDEFINED__MM_NO_INLINE UNDEFINED__MM_NO_ALIGN_CHECK
-#else /* _MM_NO_INLINE */
-#define DEFINED__MM_NO_INLINE DEFINED__MM_NO_ALIGN_CHECK
-#define UNDEFINED__MM_NO_INLINE UNDEFINED__MM_NO_ALIGN_CHECK ## " _MM_NO_INLINE"
-#endif /* _MM_NO_INLINE */
-
-#pragma comment ( user, "comment:" __DATE__" " __TIME__ " - " __FILE__ ":" RW_STRINGIFY_EXPANDED(__LINE__) )
-#pragma comment ( user, "comment:" "DEFINED :" DEFINED__MM_NO_INLINE )
-#pragma comment ( user, "comment:" "UNDEFINED:" UNDEFINED__MM_NO_INLINE )
-
-#pragma message (__DATE__" " __TIME__ " - " __FILE__ ":" RW_STRINGIFY_EXPANDED(__LINE__) )
-#pragma message ("DEFINED :" DEFINED__MM_NO_INLINE )
-#pragma message ("UNDEFINED:" UNDEFINED__MM_NO_INLINE )
-
-#else /* (defined(__ICL)) */
-
-#define _MM_HINT_T0 1
-#define _MM_HINT_T1 2
-#define _MM_HINT_T2 3
-#define _MM_HINT_NTA 0
-
-#if (defined(__R5900__))
-typedef RwInt128 Rt_m128;
-#else /* (defined(__R5900__)) */
-#if (!defined(_PAIR__M64))
-struct Rt_m128
-{
- Rt_m64 lo;
- Rt_m64 hi;
-};
-#define _PAIR__M64
-typedef struct Rt_m128 Rt_m128;
-#endif /* (!defined(_PAIR__M64)) */
-#endif /* (defined(__R5900__)) */
-
-typedef Rt_m128 Rt_m128d;
-typedef Rt_m128 Rt_m128i;
-#endif /* (defined(__ICL)) */
-
-typedef struct RtIntelV4d RtIntelV4d;
-struct RtIntelV4d
-{
- RwReal w;
- RwV3d v3d;
-};
-
-typedef union _RpSSEOverlayM128 RpSSEOverlayM128;
-
-union _RpSSEOverlayM128
-{
- float _f[4];
- RwInt32 _d[4];
- RwUInt32 ud[4];
- RwInt16 _w[8];
- RwUInt16 uw[8];
- RwInt8 _b[16];
- RwUInt8 ub[16];
- Rt_m64 m64[2];
- Rt_m128 m128;
- RtIntelV4d v4d;
- RwSplitBits bits[4];
-};
-
-typedef RpSSEOverlayM128 RpWNIOverlayM128;
-
-typedef union _RpWNIOverlayM128d RpWNIOverlayM128d;
-
-union _RpWNIOverlayM128d
-{
- double df[2];
- float _f[4];
- RwInt32 _d[4];
- RwUInt32 ud[4];
- RwInt16 _w[8];
- RwUInt16 uw[8];
- RwInt8 _b[16];
- RwUInt8 ub[16];
- Rt_m64 m64[2];
- Rt_m128d m128d;
- RtIntelV4d v4d;
- RwSplitBits bits[4];
-};
-
-typedef union _RpWNIOverlayM128i RpWNIOverlayM128i;
-
-union _RpWNIOverlayM128i
-{
- double df[2];
- float _f[4];
- RwInt32 _d[4];
- RwUInt32 ud[4];
- RwInt16 _w[8];
- RwUInt16 uw[8];
- RwInt8 _b[16];
- RwUInt8 ub[16];
- Rt_m64 m64[2];
- Rt_m128i m128i;
- RtIntelV4d v4d;
- RwSplitBits bits[4];
-};
-
-#define RWUNALIGNED16BYTE(ptr) (0x0000000FUL & ((RwUInt32)(ptr)))
-
-/*--- Plugin API Functions ---*/
-
-#ifdef __cplusplus
-extern "C"
-{
-#endif /* __cplusplus */
-
-/*
- * MMX
- */
-
-/* General support intrinsics */
-extern void Rt_m_empty(void);
-extern Rt_m64 Rt_m_from_int(int i);
-extern int Rt_m_to_int(Rt_m64 m);
-extern Rt_m64 Rt_m_packsswb(Rt_m64 m1, Rt_m64 m2);
-extern Rt_m64 Rt_m_packssdw(Rt_m64 m1, Rt_m64 m2);
-extern Rt_m64 Rt_m_packuswb(Rt_m64 m1, Rt_m64 m2);
-extern Rt_m64 Rt_m_punpckhbw(Rt_m64 m1, Rt_m64 m2);
-extern Rt_m64 Rt_m_punpckhwd(Rt_m64 m1, Rt_m64 m2);
-extern Rt_m64 Rt_m_punpckhdq(Rt_m64 m1, Rt_m64 m2);
-extern Rt_m64 Rt_m_punpcklbw(Rt_m64 m1, Rt_m64 m2);
-extern Rt_m64 Rt_m_punpcklwd(Rt_m64 m1, Rt_m64 m2);
-extern Rt_m64 Rt_m_punpckldq(Rt_m64 m1, Rt_m64 m2);
-
-/* Packed arithmetic intrinsics */
-extern Rt_m64 Rt_m_paddb(Rt_m64 m1, Rt_m64 m2);
-extern Rt_m64 Rt_m_paddw(Rt_m64 m1, Rt_m64 m2);
-extern Rt_m64 Rt_m_paddd(Rt_m64 m1, Rt_m64 m2);
-extern Rt_m64 Rt_m_paddsb(Rt_m64 m1, Rt_m64 m2);
-extern Rt_m64 Rt_m_paddsw(Rt_m64 m1, Rt_m64 m2);
-extern Rt_m64 Rt_m_paddusb(Rt_m64 m1, Rt_m64 m2);
-extern Rt_m64 Rt_m_paddusw(Rt_m64 m1, Rt_m64 m2);
-extern Rt_m64 Rt_m_psubb(Rt_m64 m1, Rt_m64 m2);
-extern Rt_m64 Rt_m_psubw(Rt_m64 m1, Rt_m64 m2);
-extern Rt_m64 Rt_m_psubd(Rt_m64 m1, Rt_m64 m2);
-extern Rt_m64 Rt_m_psubsb(Rt_m64 m1, Rt_m64 m2);
-extern Rt_m64 Rt_m_psubsw(Rt_m64 m1, Rt_m64 m2);
-extern Rt_m64 Rt_m_psubusb(Rt_m64 m1, Rt_m64 m2);
-extern Rt_m64 Rt_m_psubusw(Rt_m64 m1, Rt_m64 m2);
-extern Rt_m64 Rt_m_pmaddwd(Rt_m64 m1, Rt_m64 m2);
-extern Rt_m64 Rt_m_pmulhw(Rt_m64 m1, Rt_m64 m2);
-extern Rt_m64 Rt_m_pmullw(Rt_m64 m1, Rt_m64 m2);
-
-/* Shift intrinsics */
-extern Rt_m64 Rt_m_psllw(Rt_m64 m, Rt_m64 count);
-extern Rt_m64 Rt_m_psllwi(Rt_m64 m, int count);
-extern Rt_m64 Rt_m_pslld(Rt_m64 m, Rt_m64 count);
-extern Rt_m64 Rt_m_pslldi(Rt_m64 m, int count);
-extern Rt_m64 Rt_m_psllq(Rt_m64 m, Rt_m64 count);
-extern Rt_m64 Rt_m_psllqi(Rt_m64 m, int count);
-extern Rt_m64 Rt_m_psraw(Rt_m64 m, Rt_m64 count);
-extern Rt_m64 Rt_m_psrawi(Rt_m64 m, int count);
-extern Rt_m64 Rt_m_psrad(Rt_m64 m, Rt_m64 count);
-extern Rt_m64 Rt_m_psradi(Rt_m64 m, int count);
-extern Rt_m64 Rt_m_psrlw(Rt_m64 m, Rt_m64 count);
-extern Rt_m64 Rt_m_psrlwi(Rt_m64 m, int count);
-extern Rt_m64 Rt_m_psrld(Rt_m64 m, Rt_m64 count);
-extern Rt_m64 Rt_m_psrldi(Rt_m64 m, int count);
-extern Rt_m64 Rt_m_psrlq(Rt_m64 m, Rt_m64 count);
-extern Rt_m64 Rt_m_psrlqi(Rt_m64 m, int count);
-
-/* Logical intrinsics */
-extern Rt_m64 Rt_m_pand(Rt_m64 m1, Rt_m64 m2);
-extern Rt_m64 Rt_m_pandn(Rt_m64 m1, Rt_m64 m2);
-extern Rt_m64 Rt_m_por(Rt_m64 m1, Rt_m64 m2);
-extern Rt_m64 Rt_m_pxor(Rt_m64 m1, Rt_m64 m2);
-
-/* Comparision intrinsics */
-extern Rt_m64 Rt_m_pcmpeqb(Rt_m64 m1, Rt_m64 m2);
-extern Rt_m64 Rt_m_pcmpeqw(Rt_m64 m1, Rt_m64 m2);
-extern Rt_m64 Rt_m_pcmpeqd(Rt_m64 m1, Rt_m64 m2);
-extern Rt_m64 Rt_m_pcmpgtb(Rt_m64 m1, Rt_m64 m2);
-extern Rt_m64 Rt_m_pcmpgtw(Rt_m64 m1, Rt_m64 m2);
-extern Rt_m64 Rt_m_pcmpgtd(Rt_m64 m1, Rt_m64 m2);
-
-/*
- * SSE
- */
-
-/*
- * Arithmetic Operations
- */
-
-extern Rt_m128 Rt_mm_add_ss(Rt_m128 a, Rt_m128 b) /* ADDSS */ ;
-extern Rt_m128 Rt_mm_add_ps(Rt_m128 a, Rt_m128 b) /* ADDPS */ ;
-extern Rt_m128 Rt_mm_sub_ss(Rt_m128 a, Rt_m128 b) /* SUBSS */ ;
-extern Rt_m128 Rt_mm_sub_ps(Rt_m128 a, Rt_m128 b) /* SUBPS */ ;
-extern Rt_m128 Rt_mm_mul_ss(Rt_m128 a, Rt_m128 b) /* MULSS */ ;
-extern Rt_m128 Rt_mm_mul_ps(Rt_m128 a, Rt_m128 b) /* MULPS */ ;
-extern Rt_m128 Rt_mm_div_ss(Rt_m128 a, Rt_m128 b) /* DIVSS */ ;
-extern Rt_m128 Rt_mm_div_ps(Rt_m128 a, Rt_m128 b) /* DIVPS */ ;
-extern Rt_m128 Rt_mm_sqrt_ss(Rt_m128 a) /* SQRTSS */ ;
-extern Rt_m128 Rt_mm_sqrt_ps(Rt_m128 a) /* SQRTPS */ ;
-extern Rt_m128 Rt_mm_rcp_ss(Rt_m128 a) /* RCPSS */ ;
-extern Rt_m128 Rt_mm_rcp_ps(Rt_m128 a) /* RCPPS */ ;
-extern Rt_m128 Rt_mm_rsqrt_ss(Rt_m128 a) /* RSQRTSS */ ;
-extern Rt_m128 Rt_mm_rsqrt_ps(Rt_m128 a) /* RSQRTPS */ ;
-extern Rt_m128 Rt_mm_min_ss(Rt_m128 a, Rt_m128 b) /* MINSS */ ;
-extern Rt_m128 Rt_mm_min_ps(Rt_m128 a, Rt_m128 b) /* MINPS */ ;
-extern Rt_m128 Rt_mm_max_ss(Rt_m128 a, Rt_m128 b) /* MAXSS */ ;
-extern Rt_m128 Rt_mm_max_ps(Rt_m128 a, Rt_m128 b) /* MAXPS */ ;
-
-/*
- * Logical Operations
- */
-
-extern Rt_m128 Rt_mm_and_ps(Rt_m128 a, Rt_m128 b) /* ANDPS */ ;
-extern Rt_m128 Rt_mm_andnot_ps(Rt_m128 a,
- Rt_m128 b) /* ANDNPS */ ;
-extern Rt_m128 Rt_mm_or_ps(Rt_m128 a, Rt_m128 b) /* ORPS */ ;
-extern Rt_m128 Rt_mm_xor_ps(Rt_m128 a, Rt_m128 b) /* XORPS */ ;
-
-/*
- * Comparisons
- */
-
-extern Rt_m128 Rt_mm_cmpeq_ss(Rt_m128 a,
- Rt_m128 b) /* CMPEQSS */ ;
-extern Rt_m128 Rt_mm_cmpeq_ps(Rt_m128 a,
- Rt_m128 b) /* CMPEQPS */ ;
-extern Rt_m128 Rt_mm_cmplt_ss(Rt_m128 a,
- Rt_m128 b) /* CMPLTSS */ ;
-extern Rt_m128 Rt_mm_cmplt_ps(Rt_m128 a,
- Rt_m128 b) /* CMPLTPS */ ;
-extern Rt_m128 Rt_mm_cmple_ss(Rt_m128 a,
- Rt_m128 b) /* CMPLESS */ ;
-extern Rt_m128 Rt_mm_cmple_ps(Rt_m128 a,
- Rt_m128 b) /* CMPLEPS */ ;
-extern Rt_m128 Rt_mm_cmpgt_ss(Rt_m128 a, Rt_m128 b) /* CMPLTSS r */
- ;
-extern Rt_m128 Rt_mm_cmpgt_ps(Rt_m128 a, Rt_m128 b) /* CMPLTPS r */
- ;
-extern Rt_m128 Rt_mm_cmpge_ss(Rt_m128 a, Rt_m128 b) /* CMPLESS r */
- ;
-extern Rt_m128 Rt_mm_cmpge_ps(Rt_m128 a, Rt_m128 b) /* CMPLEPS r */
- ;
-extern Rt_m128 Rt_mm_cmpneq_ss(Rt_m128 a,
- Rt_m128 b) /* CMPNEQSS */ ;
-extern Rt_m128 Rt_mm_cmpneq_ps(Rt_m128 a,
- Rt_m128 b) /* CMPNEQPS */ ;
-extern Rt_m128 Rt_mm_cmpnlt_ss(Rt_m128 a,
- Rt_m128 b) /* CMPNLTSS */ ;
-extern Rt_m128 Rt_mm_cmpnlt_ps(Rt_m128 a,
- Rt_m128 b) /* CMPNLTPS */ ;
-extern Rt_m128 Rt_mm_cmpnle_ss(Rt_m128 a,
- Rt_m128 b) /* CMPNLESS */ ;
-extern Rt_m128 Rt_mm_cmpnle_ps(Rt_m128 a,
- Rt_m128 b) /* CMPNLEPS */ ;
-extern Rt_m128 Rt_mm_cmpngt_ss(Rt_m128 a, Rt_m128 b)
- /* CMPNLTSS r */ ;
-extern Rt_m128 Rt_mm_cmpngt_ps(Rt_m128 a, Rt_m128 b)
- /* CMPNLTPS r */ ;
-extern Rt_m128 Rt_mm_cmpnge_ss(Rt_m128 a, Rt_m128 b)
- /* CMPNLESS r */ ;
-extern Rt_m128 Rt_mm_cmpnge_ps(Rt_m128 a, Rt_m128 b)
- /* CMPNLEPS r */ ;
-extern Rt_m128 Rt_mm_cmpord_ss(Rt_m128 a,
- Rt_m128 b) /* CMPORDSS */ ;
-extern Rt_m128 Rt_mm_cmpord_ps(Rt_m128 a,
- Rt_m128 b) /* CMPORDPS */ ;
-extern Rt_m128 Rt_mm_cmpunord_ss(Rt_m128 a,
- Rt_m128 b) /* CMPUNORDSS */ ;
-extern Rt_m128 Rt_mm_cmpunord_ps(Rt_m128 a,
- Rt_m128 b) /* CMPUNORDPS */ ;
-extern int Rt_mm_comieq_ss(Rt_m128 a,
- Rt_m128 b) /* COMISS */ ;
-extern int Rt_mm_comilt_ss(Rt_m128 a,
- Rt_m128 b) /* COMISS */ ;
-extern int Rt_mm_comile_ss(Rt_m128 a,
- Rt_m128 b) /* COMISS */ ;
-extern int Rt_mm_comigt_ss(Rt_m128 a,
- Rt_m128 b) /* COMISS */ ;
-extern int Rt_mm_comige_ss(Rt_m128 a,
- Rt_m128 b) /* COMISS */ ;
-extern int Rt_mm_comineq_ss(Rt_m128 a,
- Rt_m128 b) /* COMISS */ ;
-extern int Rt_mm_ucomieq_ss(Rt_m128 a,
- Rt_m128 b) /* UCOMISS */ ;
-extern int Rt_mm_ucomilt_ss(Rt_m128 a,
- Rt_m128 b) /* UCOMISS */ ;
-extern int Rt_mm_ucomile_ss(Rt_m128 a,
- Rt_m128 b) /* UCOMISS */ ;
-extern int Rt_mm_ucomigt_ss(Rt_m128 a,
- Rt_m128 b) /* UCOMISS */ ;
-extern int Rt_mm_ucomige_ss(Rt_m128 a,
- Rt_m128 b) /* UCOMISS */ ;
-extern int Rt_mm_ucomineq_ss(Rt_m128 a,
- Rt_m128 b) /* UCOMISS */ ;
-
-/*
- * Conversion Operations
- */
-
-extern int Rt_mm_cvt_ss2si(Rt_m128 a) /* CVTSS2SI */ ;
-extern Rt_m64 Rt_mm_cvt_ps2pi(Rt_m128 a) /* CVTPS2PI */ ;
-extern int Rt_mm_cvtt_ss2si(Rt_m128 a) /* CVTTSS2SI */ ;
-extern Rt_m64 Rt_mm_cvtt_ps2pi(Rt_m128 a) /* CVTTPS2PI */ ;
-extern Rt_m128 Rt_mm_cvt_si2ss(Rt_m128 a,
- int b) /* CVTSI2SS */ ;
-extern Rt_m128 Rt_mm_cvt_pi2ps(Rt_m128 a,
- Rt_m64 b) /* CVTPI2PS */ ;
-
-/*
- * Miscellaneous
- */
-
-extern Rt_m128 Rt_mm_shuffle_ps(Rt_m128 a, Rt_m128 b,
- int i) /* SHUFPS */ ;
-extern Rt_m128 Rt_mm_unpackhi_ps(Rt_m128 a,
- Rt_m128 b) /* UNPCKHPS */ ;
-extern Rt_m128 Rt_mm_unpacklo_ps(Rt_m128 a,
- Rt_m128 b) /* UNPCKLPS */ ;
-extern Rt_m128 Rt_mm_loadh_pi(Rt_m128 a, Rt_m64 * p) /* MOVHPS reg, mem */
- ;
-extern void Rt_mm_storeh_pi(Rt_m64 * p, Rt_m128 a) /* MOVHPS mem, reg */
- ;
-extern Rt_m128 Rt_mm_movehl_ps(Rt_m128 a,
- Rt_m128 b) /* MOVHLPS */ ;
-extern Rt_m128 Rt_mm_movelh_ps(Rt_m128 a,
- Rt_m128 b) /* MOVLHPS */ ;
-extern Rt_m128 Rt_mm_loadl_pi(Rt_m128 a, Rt_m64 * p)
- /* MOVLPS reg, mem */ ;
-extern void Rt_mm_storel_pi(Rt_m64 * p, Rt_m128 a) /* MOVLPS mem, reg */
- ;
-extern int Rt_mm_movemask_ps(Rt_m128 a) /* MOVMSKPS */ ;
-extern unsigned int Rt_mm_getcsr(void) /* STMXCSR */ ;
-extern void Rt_mm_setcsr(unsigned int i) /* LDMXCSR */ ;
-
-/*
- * Load Operations
- */
-
-extern Rt_m128 Rt_mm_load_ss(float *p) /* MOVSS */ ;
-extern Rt_m128 Rt_mm_load_ps1(float *p) /* MOVSS + shuffling */
- ;
-extern Rt_m128 Rt_mm_load_ps(float *p) /* MOVAPS */ ;
-extern Rt_m128 Rt_mm_loadu_ps(float *p) /* MOVUPS */ ;
-extern Rt_m128 Rt_mm_loadr_ps(float *p)
- /* MOVAPS + shuffling */ ;
-
-/*
- * Set Operations
- */
-
-extern Rt_m128 Rt_mm_set_ss(float w) /* (composite) */ ;
-extern Rt_m128 Rt_mm_set_ps1(float w) /* (composite) */ ;
-extern Rt_m128 Rt_mm_set_ps(float z, float y, float x,
- float w) /* (composite) */ ;
-extern Rt_m128 Rt_mm_setr_ps(float z, float y, float x,
- float w) /* (composite) */ ;
-extern Rt_m128 Rt_mm_setzero_ps(void) /* (composite) */ ;
-
-/*
- * Store Operations
- */
-
-extern void Rt_mm_store_ss(float *p,
- Rt_m128 a) /* MOVSS */ ;
-extern void Rt_mm_store_ps1(float *p, Rt_m128 a)
- /* MOVSS + shuffling */ ;
-extern void Rt_mm_store_ps(float *p,
- Rt_m128 a) /* MOVAPS */ ;
-extern void Rt_mm_storeu_ps(float *p,
- Rt_m128 a) /* MOVUPS */ ;
-extern void Rt_mm_storer_ps(float *p, Rt_m128 a)
- /* MOVAPS + shuffling */ ;
-extern Rt_m128 Rt_mm_move_ss(Rt_m128 a,
- Rt_m128 b) /* MOVSS */ ;
-
-/*
- * Integer Intrinsics
- */
-
-extern int Rt_m_pextrw(Rt_m64 a, int n) /* PEXTRW */ ;
-extern Rt_m64 Rt_m_pinsrw(Rt_m64 a, int d,
- int n) /* PINSRW */ ;
-extern Rt_m64 Rt_m_pmaxsw(Rt_m64 a, Rt_m64 b) /* PMAXSW */ ;
-extern Rt_m64 Rt_m_pmaxub(Rt_m64 a, Rt_m64 b) /* PMAXUB */ ;
-extern Rt_m64 Rt_m_pminsw(Rt_m64 a, Rt_m64 b) /* PMINSW */ ;
-extern Rt_m64 Rt_m_pminub(Rt_m64 a, Rt_m64 b) /* PMINUB */ ;
-extern int Rt_m_pmovmskb(Rt_m64 a) /* PMOVMSKB */ ;
-extern Rt_m64 Rt_m_pmulhuw(Rt_m64 a, Rt_m64 b) /* PMULHUW */ ;
-extern Rt_m64 Rt_m_pshufw(Rt_m64 a, int n) /* PSHUFW */ ;
-extern void Rt_m_lwmaskmovq(Rt_m64 d, Rt_m64 n,
- char *p) /* MASKMOVQ */ ;
-
-/*
- * Cacheability Support
- */
-
-extern void Rt_mm_prefetch(char *p, int i) /* PREFETCH */ ;
-extern void Rt_mm_stream_pi(Rt_m64 * p,
- Rt_m64 a) /* MOVNTQ */ ;
-extern void Rt_mm_stream_ps(float *p,
- Rt_m128 a) /* MOVNTPS */ ;
-extern void Rt_mm_sfence(void) /* SFENCE */ ;
-
-/*
- * WNI
- */
-
-/* Arithmetic Operations */
-
-extern Rt_m128d Rt_mm_add_sd(Rt_m128d a, Rt_m128d b);
-extern Rt_m128d Rt_mm_add_pd(Rt_m128d a, Rt_m128d b);
-extern Rt_m128d Rt_mm_div_sd(Rt_m128d a, Rt_m128d b);
-extern Rt_m128d Rt_mm_div_pd(Rt_m128d a, Rt_m128d b);
-extern Rt_m128d Rt_mm_max_sd(Rt_m128d a, Rt_m128d b);
-extern Rt_m128d Rt_mm_max_pd(Rt_m128d a, Rt_m128d b);
-extern Rt_m128d Rt_mm_min_sd(Rt_m128d a, Rt_m128d b);
-extern Rt_m128d Rt_mm_min_pd(Rt_m128d a, Rt_m128d b);
-extern Rt_m128d Rt_mm_mul_sd(Rt_m128d a, Rt_m128d b);
-extern Rt_m128d Rt_mm_mul_pd(Rt_m128d a, Rt_m128d b);
-extern Rt_m128d Rt_mm_sqrt_sd(Rt_m128d a, Rt_m128d b);
-extern Rt_m128d Rt_mm_sqrt_pd(Rt_m128d a);
-extern Rt_m128d Rt_mm_sub_sd(Rt_m128d a, Rt_m128d b);
-extern Rt_m128d Rt_mm_sub_pd(Rt_m128d a, Rt_m128d b);
-extern Rt_m128d Rt_mm_andnot_pd(Rt_m128d a, Rt_m128d b);
-extern Rt_m128d Rt_mm_and_pd(Rt_m128d a, Rt_m128d b);
-extern Rt_m128d Rt_mm_or_pd(Rt_m128d a, Rt_m128d b);
-extern Rt_m128d Rt_mm_xor_pd(Rt_m128d a, Rt_m128d b);
-
-/* Comparisons */
-
-extern Rt_m128d Rt_mm_cmpeq_pd(Rt_m128d a, Rt_m128d b);
-extern Rt_m128d Rt_mm_cmplt_pd(Rt_m128d a, Rt_m128d b);
-extern Rt_m128d Rt_mm_cmple_pd(Rt_m128d a, Rt_m128d b);
-extern Rt_m128d Rt_mm_cmpgt_pd(Rt_m128d a, Rt_m128d b);
-extern Rt_m128d Rt_mm_cmpge_pd(Rt_m128d a, Rt_m128d b);
-extern Rt_m128d Rt_mm_cmpord_pd(Rt_m128d a, Rt_m128d b);
-extern Rt_m128d Rt_mm_cmpunord_pd(Rt_m128d a, Rt_m128d b);
-extern Rt_m128d Rt_mm_cmpneq_pd(Rt_m128d a, Rt_m128d b);
-extern Rt_m128d Rt_mm_cmpnlt_pd(Rt_m128d a, Rt_m128d b);
-extern Rt_m128d Rt_mm_cmpnle_pd(Rt_m128d a, Rt_m128d b);
-extern Rt_m128d Rt_mm_cmpngt_pd(Rt_m128d a, Rt_m128d b);
-extern Rt_m128d Rt_mm_cmpnge_pd(Rt_m128d a, Rt_m128d b);
-extern Rt_m128d Rt_mm_cmpeq_sd(Rt_m128d a, Rt_m128d b);
-extern Rt_m128d Rt_mm_cmplt_sd(Rt_m128d a, Rt_m128d b);
-extern Rt_m128d Rt_mm_cmple_sd(Rt_m128d a, Rt_m128d b);
-extern Rt_m128d Rt_mm_cmpgt_sd(Rt_m128d a, Rt_m128d b);
-extern Rt_m128d Rt_mm_cmpge_sd(Rt_m128d a, Rt_m128d b);
-extern Rt_m128d Rt_mm_cmpord_sd(Rt_m128d a, Rt_m128d b);
-extern Rt_m128d Rt_mm_cmpunord_sd(Rt_m128d a, Rt_m128d b);
-extern Rt_m128d Rt_mm_cmpneq_sd(Rt_m128d a, Rt_m128d b);
-extern Rt_m128d Rt_mm_cmpnlt_sd(Rt_m128d a, Rt_m128d b);
-extern Rt_m128d Rt_mm_cmpnle_sd(Rt_m128d a, Rt_m128d b);
-extern Rt_m128d Rt_mm_cmpngt_sd(Rt_m128d a, Rt_m128d b);
-extern Rt_m128d Rt_mm_cmpnge_sd(Rt_m128d a, Rt_m128d b);
-extern int Rt_mm_comieq_sd(Rt_m128d a, Rt_m128d b);
-extern int Rt_mm_comilt_sd(Rt_m128d a, Rt_m128d b);
-extern int Rt_mm_comile_sd(Rt_m128d a, Rt_m128d b);
-extern int Rt_mm_comigt_sd(Rt_m128d a, Rt_m128d b);
-extern int Rt_mm_comige_sd(Rt_m128d a, Rt_m128d b);
-extern int Rt_mm_comineq_sd(Rt_m128d a, Rt_m128d b);
-extern int Rt_mm_ucomieq_sd(Rt_m128d a, Rt_m128d b);
-extern int Rt_mm_ucomilt_sd(Rt_m128d a, Rt_m128d b);
-extern int Rt_mm_ucomile_sd(Rt_m128d a, Rt_m128d b);
-extern int Rt_mm_ucomigt_sd(Rt_m128d a, Rt_m128d b);
-extern int Rt_mm_ucomige_sd(Rt_m128d a, Rt_m128d b);
-extern int Rt_mm_ucomineq_sd(Rt_m128d a, Rt_m128d b);
-
-/* Conversion Operations */
-
-extern Rt_m128 Rt_mm_cvtpd_ps(Rt_m128d a);
-extern Rt_m128d Rt_mm_cvtps_pd(Rt_m128 a);
-extern Rt_m128d Rt_mm_cvtepi32_pd(Rt_m128i a);
-extern Rt_m128i Rt_mm_cvtpd_epi32(Rt_m128d a);
-extern int Rt_mm_cvtsd_si32(Rt_m128d a);
-extern Rt_m128 Rt_mm_cvtsd_ss(Rt_m128 a, Rt_m128d b);
-extern Rt_m128d Rt_mm_cvtsi32_sd(Rt_m128d a, int b);
-extern Rt_m128d Rt_mm_cvtss_sd(Rt_m128d a, Rt_m128 b);
-extern Rt_m128i Rt_mm_cvttpd_epi32(Rt_m128d a);
-extern int Rt_mm_cvttsd_si32(Rt_m128d a);
-extern Rt_m128 Rt_mm_cvtepi32_ps(Rt_m128i a);
-extern Rt_m128i Rt_mm_cvtps_epi32(Rt_m128 a);
-extern Rt_m128i Rt_mm_cvttps_epi32(Rt_m128 a);
-extern Rt_m64 Rt_mm_cvtpd_pi32(Rt_m128d a);
-extern Rt_m64 Rt_mm_cvttpd_pi32(Rt_m128d a);
-extern Rt_m128d Rt_mm_cvtpi32_pd(Rt_m64 a);
-
-/* Miscellaneous Operations */
-
-extern Rt_m128d Rt_mm_unpackhi_pd(Rt_m128d a, Rt_m128d b);
-extern Rt_m128d Rt_mm_unpacklo_pd(Rt_m128d a, Rt_m128d b);
-extern int Rt_mm_movemask_pd(Rt_m128d a);
-extern Rt_m128d Rt_mm_shuffle_pd(Rt_m128d a, Rt_m128d b, int i);
-extern Rt_m128d Rt_mm_load_pd(const double *p);
-extern Rt_m128d Rt_mm_load1_pd(const double *p);
-extern Rt_m128d Rt_mm_loadr_pd(const double *p);
-extern Rt_m128d Rt_mm_loadu_pd(const double *p);
-extern Rt_m128d Rt_mm_load_sd(const double *p);
-extern Rt_m128d Rt_mm_loadh_pd(Rt_m128d a, const double *p);
-extern Rt_m128d Rt_mm_loadl_pd(Rt_m128d a, const double *p);
-extern Rt_m128d Rt_mm_set_sd(double w);
-extern Rt_m128d Rt_mm_set1_pd(double w);
-extern Rt_m128d Rt_mm_set_pd(double w, double x);
-extern Rt_m128d Rt_mm_setr_pd(double w, double x);
-extern Rt_m128d Rt_mm_setzero_pd(void);
-extern Rt_m128d Rt_mm_move_sd(Rt_m128d a, Rt_m128d b);
-extern void Rt_mm_stream_pd(double *p, Rt_m128d a);
-extern void Rt_mm_store_sd(double *p, Rt_m128d a);
-extern void Rt_mm_store1_pd(double *p, Rt_m128d a);
-extern void Rt_mm_store_pd(double *p, Rt_m128d a);
-extern void Rt_mm_storeu_pd(double *p, Rt_m128d a);
-extern void Rt_mm_storer_pd(double *p, Rt_m128d a);
-extern void Rt_mm_storeh_pd(double *p, Rt_m128d a);
-extern void Rt_mm_storel_pd(double *p, Rt_m128d a);
-extern Rt_m128i Rt_mm_add_epi8(Rt_m128i a, Rt_m128i b);
-extern Rt_m128i Rt_mm_add_epi16(Rt_m128i a, Rt_m128i b);
-extern Rt_m128i Rt_mm_add_epi32(Rt_m128i a, Rt_m128i b);
-extern Rt_m64 Rt_mm_add_si64(Rt_m64 a, Rt_m64 b);
-extern Rt_m128i Rt_mm_add_epi64(Rt_m128i a, Rt_m128i b);
-extern Rt_m128i Rt_mm_adds_epi8(Rt_m128i a, Rt_m128i b);
-extern Rt_m128i Rt_mm_adds_epi16(Rt_m128i a, Rt_m128i b);
-extern Rt_m128i Rt_mm_adds_epu8(Rt_m128i a, Rt_m128i b);
-extern Rt_m128i Rt_mm_adds_epu16(Rt_m128i a, Rt_m128i b);
-extern Rt_m128i Rt_mm_avg_epu8(Rt_m128i a, Rt_m128i b);
-extern Rt_m128i Rt_mm_avg_epu16(Rt_m128i a, Rt_m128i b);
-extern Rt_m128i Rt_mm_madd_epi16(Rt_m128i a, Rt_m128i b);
-extern Rt_m128i Rt_mm_max_epi16(Rt_m128i a, Rt_m128i b);
-extern Rt_m128i Rt_mm_max_epu8(Rt_m128i a, Rt_m128i b);
-extern Rt_m128i Rt_mm_min_epi16(Rt_m128i a, Rt_m128i b);
-extern Rt_m128i Rt_mm_min_epu8(Rt_m128i a, Rt_m128i b);
-extern Rt_m128i Rt_mm_mulhi_epi16(Rt_m128i a, Rt_m128i b);
-extern Rt_m128i Rt_mm_mulhi_epu16(Rt_m128i a, Rt_m128i b);
-extern Rt_m128i Rt_mm_mullo_epi16(Rt_m128i a, Rt_m128i b);
-extern Rt_m64 Rt_mm_mul_su32(Rt_m64 a, Rt_m64 b);
-extern Rt_m128i Rt_mm_mul_epu32(Rt_m128i a, Rt_m128i b);
-extern Rt_m128i Rt_mm_sad_epu8(Rt_m128i a, Rt_m128i b);
-extern Rt_m128i Rt_mm_sub_epi8(Rt_m128i a, Rt_m128i b);
-extern Rt_m128i Rt_mm_sub_epi16(Rt_m128i a, Rt_m128i b);
-extern Rt_m128i Rt_mm_sub_epi32(Rt_m128i a, Rt_m128i b);
-extern Rt_m64 Rt_mm_sub_si64(Rt_m64 a, Rt_m64 b);
-extern Rt_m128i Rt_mm_sub_epi64(Rt_m128i a, Rt_m128i b);
-extern Rt_m128i Rt_mm_subs_epi8(Rt_m128i a, Rt_m128i b);
-extern Rt_m128i Rt_mm_subs_epi16(Rt_m128i a, Rt_m128i b);
-extern Rt_m128i Rt_mm_subs_epu8(Rt_m128i a, Rt_m128i b);
-extern Rt_m128i Rt_mm_subs_epu16(Rt_m128i a, Rt_m128i b);
-extern Rt_m128i Rt_mm_and_si128(Rt_m128i a, Rt_m128i b);
-extern Rt_m128i Rt_mm_andnot_si128(Rt_m128i a, Rt_m128i b);
-extern Rt_m128i Rt_mm_or_si128(Rt_m128i a, Rt_m128i b);
-extern Rt_m128i Rt_mm_xor_si128(Rt_m128i a, Rt_m128i b);
-extern Rt_m128i Rt_mm_slli_si128(Rt_m128i a, int imm);
-extern Rt_m128i Rt_mm_slli_epi16(Rt_m128i a, int count);
-extern Rt_m128i Rt_mm_sll_epi16(Rt_m128i a, Rt_m128i count);
-extern Rt_m128i Rt_mm_slli_epi32(Rt_m128i a, int count);
-extern Rt_m128i Rt_mm_sll_epi32(Rt_m128i a, Rt_m128i count);
-extern Rt_m128i Rt_mm_slli_epi64(Rt_m128i a, int count);
-extern Rt_m128i Rt_mm_sll_epi64(Rt_m128i a, Rt_m128i count);
-extern Rt_m128i Rt_mm_srai_epi16(Rt_m128i a, int count);
-extern Rt_m128i Rt_mm_sra_epi16(Rt_m128i a, Rt_m128i count);
-extern Rt_m128i Rt_mm_srai_epi32(Rt_m128i a, int count);
-extern Rt_m128i Rt_mm_sra_epi32(Rt_m128i a, Rt_m128i count);
-extern Rt_m128i Rt_mm_srli_si128(Rt_m128i a, int imm);
-extern Rt_m128i Rt_mm_srli_epi16(Rt_m128i a, int count);
-extern Rt_m128i Rt_mm_srl_epi16(Rt_m128i a, Rt_m128i count);
-extern Rt_m128i Rt_mm_srli_epi32(Rt_m128i a, int count);
-extern Rt_m128i Rt_mm_srl_epi32(Rt_m128i a, Rt_m128i count);
-extern Rt_m128i Rt_mm_srli_epi64(Rt_m128i a, int count);
-extern Rt_m128i Rt_mm_srl_epi64(Rt_m128i a, Rt_m128i count);
-extern Rt_m128i Rt_mm_cmpeq_epi8(Rt_m128i a, Rt_m128i b);
-extern Rt_m128i Rt_mm_cmpeq_epi16(Rt_m128i a, Rt_m128i b);
-extern Rt_m128i Rt_mm_cmpeq_epi32(Rt_m128i a, Rt_m128i b);
-extern Rt_m128i Rt_mm_cmpgt_epi8(Rt_m128i a, Rt_m128i b);
-extern Rt_m128i Rt_mm_cmpgt_epi16(Rt_m128i a, Rt_m128i b);
-extern Rt_m128i Rt_mm_cmpgt_epi32(Rt_m128i a, Rt_m128i b);
-extern Rt_m128i Rt_mm_cmplt_epi8(Rt_m128i a, Rt_m128i b);
-extern Rt_m128i Rt_mm_cmplt_epi16(Rt_m128i a, Rt_m128i b);
-extern Rt_m128i Rt_mm_cmplt_epi32(Rt_m128i a, Rt_m128i b);
-extern Rt_m128i Rt_mm_cvtsi32_si128(int a);
-extern int Rt_mm_cvtsi128_si32(Rt_m128i a);
-
-/* Miscellaneous Operations */
-
-extern Rt_m64 Rt_mm_movepi64_pi64(Rt_m128i a);
-extern Rt_m128i Rt_mm_movpi64_epi64(Rt_m64 a);
-extern Rt_m128i Rt_mm_move_epi64(Rt_m128i a);
-extern Rt_m128i Rt_mm_packs_epi16(Rt_m128i a, Rt_m128i b);
-extern Rt_m128i Rt_mm_packs_epi32(Rt_m128i a, Rt_m128i b);
-extern Rt_m128i Rt_mm_packus_epi16(Rt_m128i a, Rt_m128i b);
-extern int Rt_mm_extract_epi16(Rt_m128i a, int imm);
-extern Rt_m128i Rt_mm_insert_epi16(Rt_m128i a, int b, int imm);
-extern int Rt_mm_movemask_epi8(Rt_m128i a);
-extern Rt_m128i Rt_mm_shuffle_epi32(Rt_m128i a, int imm);
-extern Rt_m128i Rt_mm_shufflehi_epi16(Rt_m128i a, int imm);
-extern Rt_m128i Rt_mm_shufflelo_epi16(Rt_m128i a, int imm);
-extern Rt_m128i Rt_mm_unpackhi_epi8(Rt_m128i a, Rt_m128i b);
-extern Rt_m128i Rt_mm_unpackhi_epi16(Rt_m128i a, Rt_m128i b);
-extern Rt_m128i Rt_mm_unpackhi_epi32(Rt_m128i a, Rt_m128i b);
-extern Rt_m128i Rt_mm_unpackhi_epi64(Rt_m128i a, Rt_m128i b);
-extern Rt_m128i Rt_mm_unpacklo_epi8(Rt_m128i a, Rt_m128i b);
-extern Rt_m128i Rt_mm_unpacklo_epi16(Rt_m128i a, Rt_m128i b);
-extern Rt_m128i Rt_mm_unpacklo_epi32(Rt_m128i a, Rt_m128i b);
-extern Rt_m128i Rt_mm_unpacklo_epi64(Rt_m128i a, Rt_m128i b);
-extern Rt_m128i Rt_mm_loadl_epi64(Rt_m128i const *p);
-extern Rt_m128i Rt_mm_load_si128(const Rt_m128i * p);
-extern Rt_m128i Rt_mm_loadu_si128(const Rt_m128i * p);
-extern Rt_m128i Rt_mm_set_epi64(Rt_m64 q1, Rt_m64 q0);
-extern Rt_m128i Rt_mm_set_epi32(int i3, int i2, int i1, int i0);
-extern Rt_m128i
- Rt_mm_set_epi16(short w7, short w6,
- short w5, short w4, short w3, short w2,
- short w1, short w0);
-extern Rt_m128i Rt_mm_set_epi8(char b15, char b14,
- char b13, char b12,
- char b11, char b10,
- char b9, char b8,
- char b7, char b6,
- char b5, char b4,
- char b3, char b2,
- char b1, char b0);
-extern Rt_m128i Rt_mm_set1_epi64(Rt_m64 q);
-extern Rt_m128i Rt_mm_set1_epi32(int i);
-extern Rt_m128i Rt_mm_set1_epi16(short w);
-extern Rt_m128i Rt_mm_set1_epi8(char b);
-extern Rt_m128i Rt_mm_setr_epi64(Rt_m64 q0, Rt_m64 q1);
-extern Rt_m128i Rt_mm_setr_epi32(int i0, int i1, int i2,
- int i3);
-extern Rt_m128i Rt_mm_setr_epi16(short w0, short w1,
- short w2, short w3,
- short w4, short w5,
- short w6, short w7);
-extern Rt_m128i Rt_mm_setr_epi8(char b0, char b1,
- char b2, char b3,
- char b4, char b5,
- char b6, char b7,
- char b8, char b9,
- char b10, char b11,
- char b12, char b13,
- char b14, char b15);
-extern Rt_m128i Rt_mm_setzero_si128(void);
-
-/* Store Operations */
-
-extern void Rt_mm_store_si128(Rt_m128i * p, Rt_m128i a);
-extern void Rt_mm_storeu_si128(Rt_m128i * p, Rt_m128i a);
-extern void Rt_mm_maskmoveu_si128(Rt_m128i s, Rt_m128i n,
- char *p);
-extern void Rt_mm_storel_epi64(Rt_m128i * p, Rt_m128i a);
-extern void Rt_mm_stream_si128(Rt_m128i * p, Rt_m128i a);
-extern void Rt_mm_stream_si32(int *p, int a);
-extern void Rt_mm_clflush(void const *p);
-extern void Rt_mm_lfence(void);
-extern void Rt_mm_mfence(void);
-
-/*
- * API
- */
-extern RwUInt32 RtIntelRDTSC(void);
-extern RwUInt32 RtIntelToggleEFLAGS(int mask);
-extern RwUInt32 RtIntelCPUID(RwUInt32 level,
- void *pb, void *pc, void *pd);
-extern RwUInt32 RtIntelHaveCPUID(void);
-extern RwUInt32 RtIntelHaveRDTSC(void);
-extern RwUInt32 RtIntelHaveMMX(void);
-extern RwUInt32 RtIntelHaveSSE(void);
-extern RwUInt32 RtIntelHaveWNI(void);
-extern RwUInt32 RtIntelCpuType(void);
-
-extern RwBool RtIntelStartTiming(void * data);
-extern RwBool RtIntelStopTiming(void *data);
-extern RwBool RtIntelTime(RwFixed64 * result,
- RtIntelTimeFunction func,
- void *data);
-
-extern RwBool RtIntelPluginAttach(void);
-
-extern RtIntelOverload *_rtIntelOverloadGetHandle(void);
-
-extern RxNodeDefinition *RxNodeDefinitionGetSSETransformCSL(void);
-
-
-#ifdef __cplusplus
-}
-#endif /* __cplusplus */
-
-/*
- * LEGACY-SUPPORT -- e.g.
- * rwsdk/driver/d3d/baintd3d.c
- * is locked at time of writing
- */
-
-#define RpIntelRDTSC() RtIntelRDTSC()
-#define RpIntelToggleEFLAGS(_mask) RtIntelToggleEFLAGS(_mask)
-#define RpIntelCPUID(_level, _pb, _pc, _pd) \
- RtIntelCPUID(_level, _pb, _pc, _pd)
-#define RpIntelHaveCPUID() RtIntelHaveCPUID()
-#define RpIntelHaveRDTSC() RtIntelHaveRDTSC()
-#define RpIntelHaveMMX() RtIntelHaveMMX()
-#define RpIntelHaveSSE() RtIntelHaveSSE()
-#define RpIntelHaveWNI() RtIntelHaveWNI()
-#define RpIntelCpuType() RtIntelCpuType()
-#define RpIntelStartTiming(_data) RtIntelStartTiming(_data)
-#define RpIntelStopTiming(_data) RtIntelStopTiming(_data)
-#define RpIntelTime(_result, _func, _data) \
- RtIntelTime(_result, _func, _data)
-#define RpIntelPluginAttach() RtIntelPluginAttach()
-#define RpNodeDefinitionGetSSETransformCSL() \
- RxNodeDefinitionGetSSETransformCSL()
-
-typedef RtIntelOverload RwIntelOverload;
-typedef RtIntelOverload RpIntelOverload;
-
-#define _rwIntelOverloadGetHandle() _rtIntelOverloadGetHandle()
-#define _rpIntelOverloadGetHandle() _rtIntelOverloadGetHandle()
-#define RwIntelHaveSSE() RtIntelHaveSSE()
-#define RpIntelHaveSSE() RtIntelHaveSSE()
-
-#if (defined(RWEMULATEINTELSIMD) || !defined(__ICL))
-
-/*
- * MMX
- */
-
-/* General support intrinsics */
-#define _m_empty() Rt_m_empty()
-#define _m_from_int(i) Rt_m_from_int(i)
-#define _m_to_int(m) Rt_m_to_int(m)
-#define _m_packsswb(m1, m2) Rt_m_packsswb(m1, m2)
-#define _m_packssdw(m1, m2) Rt_m_packssdw(m1, m2)
-#define _m_packuswb(m1, m2) Rt_m_packuswb(m1, m2)
-#define _m_punpckhbw(m1, m2) Rt_m_punpckhbw(m1, m2)
-#define _m_punpckhwd(m1, m2) Rt_m_punpckhwd(m1, m2)
-#define _m_punpckhdq(m1, m2) Rt_m_punpckhdq(m1, m2)
-#define _m_punpcklbw(m1, m2) Rt_m_punpcklbw(m1, m2)
-#define _m_punpcklwd(m1, m2) Rt_m_punpcklwd(m1, m2)
-#define _m_punpckldq(m1, m2) Rt_m_punpckldq(m1, m2)
-
-/* Packed arithmetic intrinsics */
-#define _m_paddb(m1, m2) Rt_m_paddb(m1, m2)
-#define _m_paddw(m1, m2) Rt_m_paddw(m1, m2)
-#define _m_paddd(m1, m2) Rt_m_paddd(m1, m2)
-#define _m_paddsb(m1, m2) Rt_m_paddsb(m1, m2)
-#define _m_paddsw(m1, m2) Rt_m_paddsw(m1, m2)
-#define _m_paddusb(m1, m2) Rt_m_paddusb(m1, m2)
-#define _m_paddusw(m1, m2) Rt_m_paddusw(m1, m2)
-#define _m_psubb(m1, m2) Rt_m_psubb(m1, m2)
-#define _m_psubw(m1, m2) Rt_m_psubw(m1, m2)
-#define _m_psubd(m1, m2) Rt_m_psubd(m1, m2)
-#define _m_psubsb(m1, m2) Rt_m_psubsb(m1, m2)
-#define _m_psubsw(m1, m2) Rt_m_psubsw(m1, m2)
-#define _m_psubusb(m1, m2) Rt_m_psubusb(m1, m2)
-#define _m_psubusw(m1, m2) Rt_m_psubusw(m1, m2)
-#define _m_pmaddwd(m1, m2) Rt_m_pmaddwd(m1, m2)
-#define _m_pmulhw(m1, m2) Rt_m_pmulhw(m1, m2)
-#define _m_pmullw(m1, m2) Rt_m_pmullw(m1, m2)
-
-/* Shift intrinsics */
-#define _m_psllw(m, count) Rt_m_psllw(m, count)
-#define _m_psllwi(m, count) Rt_m_psllwi(m, count)
-#define _m_pslld(m, count) Rt_m_pslld(m, count)
-#define _m_pslldi(m, count) Rt_m_pslldi(m, count)
-#define _m_psllq(m, count) Rt_m_psllq(m, count)
-#define _m_psllqi(m, count) Rt_m_psllqi(m, count)
-#define _m_psraw(m, count) Rt_m_psraw(m, count)
-#define _m_psrawi(m, count) Rt_m_psrawi(m, count)
-#define _m_psrad(m, count) Rt_m_psrad(m, count)
-#define _m_psradi(m, count) Rt_m_psradi(m, count)
-#define _m_psrlw(m, count) Rt_m_psrlw(m, count)
-#define _m_psrlwi(m, count) Rt_m_psrlwi(m, count)
-#define _m_psrld(m, count) Rt_m_psrld(m, count)
-#define _m_psrldi(m, count) Rt_m_psrldi(m, count)
-#define _m_psrlq(m, count) Rt_m_psrlq(m, count)
-#define _m_psrlqi(m, count) Rt_m_psrlqi(m, count)
-
-/* Logical intrinsics */
-#define _m_pand(m1, m2) Rt_m_pand(m1, m2)
-#define _m_pandn(m1, m2) Rt_m_pandn(m1, m2)
-#define _m_por(m1, m2) Rt_m_por(m1, m2)
-#define _m_pxor(m1, m2) Rt_m_pxor(m1, m2)
-
-/* Comparison intrinsics */
-#define _m_pcmpeqb(m1, m2) Rt_m_pcmpeqb(m1, m2)
-#define _m_pcmpeqw(m1, m2) Rt_m_pcmpeqw(m1, m2)
-#define _m_pcmpeqd(m1, m2) Rt_m_pcmpeqd(m1, m2)
-#define _m_pcmpgtb(m1, m2) Rt_m_pcmpgtb(m1, m2)
-#define _m_pcmpgtw(m1, m2) Rt_m_pcmpgtw(m1, m2)
-#define _m_pcmpgtd(m1, m2) Rt_m_pcmpgtd(m1, m2)
-
-/*
- * SSE
- */
-
-/*
- * Arithmetic Operations
- */
-
-#define _mm_add_ss(a, b) Rt_mm_add_ss(a, b)
-#define _mm_add_ps(a, b) Rt_mm_add_ps(a, b)
-#define _mm_sub_ss(a, b) Rt_mm_sub_ss(a, b)
-#define _mm_sub_ps(a, b) Rt_mm_sub_ps(a, b)
-#define _mm_mul_ss(a, b) Rt_mm_mul_ss(a, b)
-#define _mm_mul_ps(a, b) Rt_mm_mul_ps(a, b)
-#define _mm_div_ss(a, b) Rt_mm_div_ss(a, b)
-#define _mm_div_ps(a, b) Rt_mm_div_ps(a, b)
-#define _mm_sqrt_ss(a) Rt_mm_sqrt_ss(a)
-#define _mm_sqrt_ps(a) Rt_mm_sqrt_ps(a)
-#define _mm_rcp_ss(a) Rt_mm_rcp_ss(a)
-#define _mm_rcp_ps(a) Rt_mm_rcp_ps(a)
-#define _mm_rsqrt_ss(a) Rt_mm_rsqrt_ss(a)
-#define _mm_rsqrt_ps(a) Rt_mm_rsqrt_ps(a)
-#define _mm_min_ss(a, b) Rt_mm_min_ss(a, b)
-#define _mm_min_ps(a, b) Rt_mm_min_ps(a, b)
-#define _mm_max_ss(a, b) Rt_mm_max_ss(a, b)
-#define _mm_max_ps(a, b) Rt_mm_max_ps(a, b)
-
-/*
- * Logical Operations
- */
-
-#define _mm_and_ps(a, b) Rt_mm_and_ps(a, b)
-#define _mm_andnot_ps(a, b) Rt_mm_andnot_ps(a, b)
-#define _mm_or_ps(a, b) Rt_mm_or_ps(a, b)
-#define _mm_xor_ps(a, b) Rt_mm_xor_ps(a, b)
-
-/*
- * Comparisons
- */
-
-#define _mm_cmpeq_ss(a, b) Rt_mm_cmpeq_ss(a, b)
-#define _mm_cmpeq_ps(a, b) Rt_mm_cmpeq_ps(a, b)
-#define _mm_cmplt_ss(a, b) Rt_mm_cmplt_ss(a, b)
-#define _mm_cmplt_ps(a, b) Rt_mm_cmplt_ps(a, b)
-#define _mm_cmple_ss(a, b) Rt_mm_cmple_ss(a, b)
-#define _mm_cmple_ps(a, b) Rt_mm_cmple_ps(a, b)
-#define _mm_cmpgt_ss(a, b) Rt_mm_cmpgt_ss(a, b)
-#define _mm_cmpgt_ps(a, b) Rt_mm_cmpgt_ps(a, b)
-#define _mm_cmpge_ss(a, b) Rt_mm_cmpge_ss(a, b)
-#define _mm_cmpge_ps(a, b) Rt_mm_cmpge_ps(a, b)
-#define _mm_cmpneq_ss(a, b) Rt_mm_cmpneq_ss(a, b)
-#define _mm_cmpneq_ps(a, b) Rt_mm_cmpneq_ps(a, b)
-#define _mm_cmpnlt_ss(a, b) Rt_mm_cmpnlt_ss(a, b)
-#define _mm_cmpnlt_ps(a, b) Rt_mm_cmpnlt_ps(a, b)
-#define _mm_cmpnle_ss(a, b) Rt_mm_cmpnle_ss(a, b)
-#define _mm_cmpnle_ps(a, b) Rt_mm_cmpnle_ps(a, b)
-#define _mm_cmpngt_ss(a, b) Rt_mm_cmpngt_ss(a, b)
-#define _mm_cmpngt_ps(a, b) Rt_mm_cmpngt_ps(a, b)
-#define _mm_cmpnge_ss(a, b) Rt_mm_cmpnge_ss(a, b)
-#define _mm_cmpnge_ps(a, b) Rt_mm_cmpnge_ps(a, b)
-#define _mm_cmpord_ss(a, b) Rt_mm_cmpord_ss(a, b)
-#define _mm_cmpord_ps(a, b) Rt_mm_cmpord_ps(a, b)
-#define _mm_cmpunord_ss(a, b) Rt_mm_cmpunord_ss(a, b)
-#define _mm_cmpunord_ps(a, b) Rt_mm_cmpunord_ps(a, b)
-#define _mm_comieq_ss(a, b) Rt_mm_comieq_ss(a, b)
-#define _mm_comilt_ss(a, b) Rt_mm_comilt_ss(a, b)
-#define _mm_comile_ss(a, b) Rt_mm_comile_ss(a, b)
-#define _mm_comigt_ss(a, b) Rt_mm_comigt_ss(a, b)
-#define _mm_comige_ss(a, b) Rt_mm_comige_ss(a, b)
-#define _mm_comineq_ss(a, b) Rt_mm_comineq_ss(a, b)
-#define _mm_ucomieq_ss(a, b) Rt_mm_ucomieq_ss(a, b)
-#define _mm_ucomilt_ss(a, b) Rt_mm_ucomilt_ss(a, b)
-#define _mm_ucomile_ss(a, b) Rt_mm_ucomile_ss(a, b)
-#define _mm_ucomigt_ss(a, b) Rt_mm_ucomigt_ss(a, b)
-#define _mm_ucomige_ss(a, b) Rt_mm_ucomige_ss(a, b)
-#define _mm_ucomineq_ss(a, b) Rt_mm_ucomineq_ss(a, b)
-
-/*
- * Conversion Operations
- */
-
-#define _mm_cvt_ss2si(a) Rt_mm_cvt_ss2si(a)
-#define _mm_cvt_ps2pi(a) Rt_mm_cvt_ps2pi(a)
-#define _mm_cvtt_ss2si(a) Rt_mm_cvtt_ss2si(a)
-#define _mm_cvtt_ps2pi(a) Rt_mm_cvtt_ps2pi(a)
-#define _mm_cvt_si2ss(a, b) Rt_mm_cvt_si2ss(a, b)
-#define _mm_cvt_pi2ps(a, b) Rt_mm_cvt_pi2ps(a, b)
-
-/*
- * Miscellaneous
- */
-
-#define _mm_shuffle_ps(a, b, i) Rt_mm_shuffle_ps(a, b, i)
-#define _mm_unpackhi_ps(a, b) Rt_mm_unpackhi_ps(a, b)
-#define _mm_unpacklo_ps(a, b) Rt_mm_unpacklo_ps(a, b)
-#define _mm_loadh_pi(a, p) Rt_mm_loadh_pi(a, p)
-#define _mm_storeh_pi(p, a) Rt_mm_storeh_pi(p, a)
-#define _mm_movehl_ps(a, b) Rt_mm_movehl_ps(a, b)
-#define _mm_movelh_ps(a, b) Rt_mm_movelh_ps(a, b)
-#define _mm_loadl_pi(a, p) Rt_mm_loadl_pi(a, p)
-#define _mm_storel_pi(p, a) Rt_mm_storel_pi(p, a)
-#define _mm_movemask_ps(a) Rt_mm_movemask_ps(a)
-#define _mm_getcsr() Rt_mm_getcsr()
-#define _mm_setcsr(i) Rt_mm_setcsr(i)
-
-/*
- *Load Operations
- */
-
-#define _mm_load_ss(p) Rt_mm_load_ss(p)
-#define _mm_load_ps1(p) Rt_mm_load_ps1(p)
-#define _mm_load_ps(p) Rt_mm_load_ps(p)
-#define _mm_loadu_ps(p) Rt_mm_loadu_ps(p)
-#define _mm_loadr_ps(p) Rt_mm_loadr_ps(p)
-
-/*
- * Set Operations
- */
-
-#define _mm_set_ss(w) Rt_mm_set_ss(w)
-#define _mm_set_ps1(w) Rt_mm_set_ps1(w)
-#define _mm_set_ps(z, y, x, w) Rt_mm_set_ps(z, y, x, w)
-#define _mm_setr_ps(z, y, x, w) Rt_mm_setr_ps(z, y, x, w)
-#define _mm_setzero_ps() Rt_mm_setzero_ps()
-
-/*
- * Store Operations
- */
-
-#define _mm_store_ss(p, a) Rt_mm_store_ss(p, a)
-#define _mm_store_ps1(p, a) Rt_mm_store_ps1(p, a)
-#define _mm_store_ps(p, a) Rt_mm_store_ps(p, a)
-#define _mm_storeu_ps(p, a) Rt_mm_storeu_ps(p, a)
-#define _mm_storer_ps(p, a) Rt_mm_storer_ps(p, a)
-#define _mm_move_ss(a, b) Rt_mm_move_ss(a, b)
-
-/*
- * Integer Intrinsics
- */
-
-#define _m_pextrw(a, n) Rt_m_pextrw(a, n)
-#define _m_pinsrw(a, d, n) Rt_m_pinsrw(a, d, n)
-#define _m_pmaxsw(a, b) Rt_m_pmaxsw(a, b)
-#define _m_pmaxub(a, b) Rt_m_pmaxub(a, b)
-#define _m_pminsw(a, b) Rt_m_pminsw(a, b)
-#define _m_pminub(a, b) Rt_m_pminub(a, b)
-#define _m_pmovmskb(a) Rt_m_pmovmskb(a)
-#define _m_pmulhuw(a, b) Rt_m_pmulhuw(a, b)
-#define _m_pshufw(a, n) Rt_m_pshufw(a, n)
-#define _m_lwmaskmovq(d, n, p) Rt_m_lwmaskmovq(d, n, p)
-
-/*
- * Cacheability Support
- */
-
-#define _mm_prefetch(p, i) Rt_mm_prefetch(p, i)
-#define _mm_stream_pi(p, a) Rt_mm_stream_pi(p, a)
-#define _mm_stream_ps(p, a) Rt_mm_stream_ps(p, a)
-#define _mm_sfence() Rt_mm_sfence()
-
-#endif /* (defined(RWEMULATEINTELSIMD) || !defined(__ICL)) */
-
-#endif /* RTINTEL_H */
diff --git a/rwsdk/include/d3d8/rtintel.rpe b/rwsdk/include/d3d8/rtintel.rpe
deleted file mode 100644
index bf297ca0..00000000
--- a/rwsdk/include/d3d8/rtintel.rpe
+++ /dev/null
@@ -1,645 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-enum e_rwdb_CriterionIntel
-{
-
-
-
- e_rwdb_CriterionIntelLAST = RWFORCEENUMSIZEINT
-};
-
-typedef enum e_rwdb_CriterionIntel e_rwdb_CriterionIntel;
-
-
diff --git a/rwsdk/include/d3d8/rtintsec.h b/rwsdk/include/d3d8/rtintsec.h
deleted file mode 100644
index cb482b17..00000000
--- a/rwsdk/include/d3d8/rtintsec.h
+++ /dev/null
@@ -1,138 +0,0 @@
-/***************************************************************************
- * *
- * Module : rtintsec.h *
- * *
- * Purpose : Intersection tests on geometry primitives. *
- * *
- **************************************************************************/
-
-#ifndef RTINTSEC_H
-#define RTINTSEC_H
-
-/**
- * \defgroup rtintersect RtIntersection
- * \ingroup rttool
- *
- * Object Intersection Toolkit for RenderWare.
- */
-
-/****************************************************************************
- Includes
- */
-
-#include <rwcore.h>
-#include "rtintsec.rpe" /* automatically generated header file */
-
-/****************************************************************************
- Defines
- */
-
-#define RTINTSECEPSILON (RwReal)(1e-8)
-#define RTINTSECEDGEEPS (RwReal)(1e-5)
-
-#define RtIntersectionLineTriangleMacro(_result, \
- _lineStart, _lineDelta, \
- _v0, _v1, _v2, \
- _distance) \
-MACRO_START \
-{ \
- RwV3d edge1, edge2, tVec, pVec, qVec; \
- RwReal det; \
- \
- /* Find vectors for two edges sharing vert0 */ \
- RwV3dSubMacro(&edge1, (_v1), (_v0)); \
- RwV3dSubMacro(&edge2, (_v2), (_v0)); \
- \
- /* Begin calculating determinant \
- * - also used to calculate U parameter */ \
- RwV3dCrossProductMacro(&pVec, (_lineDelta), &edge2); \
- \
- /* If determinant is \
- * + near zero, ray lies in plane of \
- * triangle \
- * + negative, triangle is backfacing \
- */ \
- det = RwV3dDotProductMacro(&edge1, &pVec); \
- (_result) = (det > RTINTSECEPSILON); \
- \
- if ((_result)) \
- { \
- RwReal lo, hi, u; \
- \
- /* Calculate bounds for parameters with tolerance */ \
- lo = - det*RTINTSECEDGEEPS; \
- hi = det - lo; \
- \
- /* Calculate U parameter and test bounds */ \
- RwV3dSubMacro(&tVec, (_lineStart), (_v0)); \
- u = RwV3dDotProductMacro(&tVec, &pVec); \
- (_result) = (u >= lo && u <= hi); \
- \
- if ((_result)) \
- { \
- RwReal v; \
- \
- /* Calculate V parameter and test bounds */ \
- RwV3dCrossProductMacro(&qVec, &tVec, &edge1); \
- v = RwV3dDotProductMacro((_lineDelta), &qVec); \
- (_result) = (v >= lo && (u + v) <= hi); \
- \
- if ((_result)) \
- { \
- /* Calculate t, \
- * and make sure intersection is in bounds of line */ \
- *(_distance) = RwV3dDotProductMacro(&edge2, &qVec); \
- \
- /* Within bounds of line? */ \
- (_result) = (*(_distance) >= lo && *(_distance) <= hi); \
- \
- if ((_result)) \
- { \
- *(_distance) = ((*(_distance)) / (det)); \
- } \
- } \
- } \
- } \
-} \
-MACRO_STOP
-
-
-/****************************************************************************
- Global Types
- */
-
-
-/* RWPUBLIC */
-/****************************************************************************
- Function prototypes
- */
-
-#ifdef __cplusplus
-extern "C"
-{
-#endif /* __cplusplus */
-
-/* Line intersections */
-extern RwBool
-RtIntersectionLineTriangle(RwV3d *lineStart, RwV3d *lineDelta,
- RwV3d *v0, RwV3d *v1, RwV3d *v2,
- RwReal *distance);
-
-/* Sphere intersections */
-extern RwBool
-RtIntersectionSphereTriangle(RwSphere *sphere,
- RwV3d *v0, RwV3d *v1, RwV3d *v2,
- RwV3d *normal,
- RwReal *distance);
-
-/* BBox intersections */
-extern RwBool
-RtIntersectionBBoxTriangle(RwBBox *bbox, RwV3d *v0, RwV3d *v1, RwV3d *v2);
-
-#ifdef __cplusplus
-}
-#endif /* __cplusplus */
-
-/* RWPUBLICEND */
-
-#endif /* RTINTSEC_H */
diff --git a/rwsdk/include/d3d8/rtintsec.rpe b/rwsdk/include/d3d8/rtintsec.rpe
deleted file mode 100644
index 7b2ce6e1..00000000
--- a/rwsdk/include/d3d8/rtintsec.rpe
+++ /dev/null
@@ -1,628 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-enum e_rwdb_CriterionIntsec
-{
-
-
-
- e_rwdb_CriterionIntsecLAST = RWFORCEENUMSIZEINT
-};
-
-typedef enum e_rwdb_CriterionIntsec e_rwdb_CriterionIntsec;
-
-
diff --git a/rwsdk/include/d3d8/rtltmap.h b/rwsdk/include/d3d8/rtltmap.h
deleted file mode 100644
index 1a53b185..00000000
--- a/rwsdk/include/d3d8/rtltmap.h
+++ /dev/null
@@ -1,601 +0,0 @@
-
-/**
- * \defgroup rtltmap RtLtMap
- * \ingroup rttool
- *
- * Lightmap Generation Toolkit for RenderWare.
- */
-
-#ifndef RTLTMAP_H
-#define RTLTMAP_H
-
-/*===========================================================================*
- *--- Includes --------------------------------------------------------------*
- *===========================================================================*/
-
-#include "rwcore.h"
-#include "rpworld.h"
-
-#include "rpltmap.h"
-
-
-/**
- * \ingroup rtltmap
- * \typedef RtLtMapIlluminateSampleCallBack
- * \ref RtLtMapIlluminateSampleCallBack is the callback to be called, from
- * within \ref RtLtMapIlluminate, for groups of samples in the objects
- * currently being illuminated.
- *
- * For lightmapped objects, samples are grouped on a per-polygon basis and
- * for vertex-lit objects, samples are grouped on a per-object basis (see
- * \ref RtLtMapObjectFlags).
- *
- * This callback will receive an array of color values to fill in, each
- * representing one sample in the current object - this may correspond to
- * a texel in the current object's lightmap or the prelight colour of a
- * vertex, depending on whether the object is lightmapped and/or vertex-lit.
- * It will receive positions (in world-space) for each sample and the normal
- * vector (again, in world-space) of each sample (normals are interpolated
- * across polygons for non-flat-shaded materials. See \ref RtLtMapMaterialFlags).
- * For lightmap samples (not vertex-lighting samples), it will receive
- * barycentric coordinates within the current polygon. It will also receive
- * a list of RpLights affecting the current object.
- *
- * The barycentric coordinates may be used, for example, to allow a callback
- * to easily import existing lighting data (e.g from previously generated
- * lightmaps in a different format, or from an art package with lighting
- * functionality).
- *
- * NOTE: The alpha channel of the RwRGBA results array must NOT be modified.
- * These values are used internally and their modification may result in
- * unwanted visual artifacts in the resulting lighting solution.
- *
- * The default RtLtMapIlluminateSampleCallBacks supplied with RtLtMap is
- * \ref RtLtMapDefaultSampleCallBack. This callback performs point and area
- * lighting (the area lights use are those passed to \ref RtLtMapIlluminate).
- *
- * \param results A pointer to an array of \ref RwRGBA sample color values
- * \param samplePositions A pointer to an array of \ref RwV3d values specifying the
- * world-space positions of each of the samples in the results array
- * \param baryCoords A pointer to an array of \ref RwV3d values specifying the
- * barycentric coordinates (within the current polygon) of
- * each of the samples in the results array
- * \param numSamples The length of the results, samplePositions, baryCoords and normals arrays
- * \param lights An array of pointers to \ref RpLight's affecting the current object
- * \param numLights The length of the lights array
- * \param normals A pointer to an array of \ref RwV3d values specifying the
- * world-space, unit normals of each of the samples in the results array
- *
- * \return A pointer to the results array on success, NULL otherwise
- *
- * \see RtLtMapIlluminate
- * \see RtLtMapIlluminateVisCallBack
- * \see RtLtMapIlluminateProgressCallBack
- */
-typedef RwRGBA *(*RtLtMapIlluminateSampleCallBack)(RwRGBA *results,
- RwV3d *samplePositions,
- RwV3d *baryCoords,
- RwUInt32 numSamples,
- RpLight **lights,
- RwUInt32 numLights,
- RwV3d *normals);
-
-/**
- * \ingroup rtltmap
- * \typedef RtLtMapIlluminateVisCallBack
- * \ref RtLtMapIlluminateVisCallBack is the callback to be called, from
- * within \ref RtLtMapIlluminate, to determine the visibility between a
- * sample and a light.
- *
- * This callback is called for all samples in the current
- * \ref RtLtMapLightingSession and for each light source which may
- * potentially affect each of those samples (this may not be all the
- * lights in the scene, as some hierarchical culling is performed).
- * Each sample may represent a texel in the current object's lightmap
- * or the prelight color of a vertex, depending on whether the object
- * is lightmapped and/or vertex-lit (see \ref RtLtMapObjectFlags).
- *
- * The callback will receive a pointer to the world of the current
- * \ref RtLtMapLightingSession (this may be used to perform intersection
- * tests), the world-space position of the sample, the world-space
- * position of the light, a pointer to a light and a pointer to an
- * \ref RwRGBAReal result value.
- *
- * If the light pointer is NULL, this means that the current light
- * is an area light (as opposed to an \ref RpLight), of an internal
- * format. The area lights use are those passed to \ref RtLtMapIlluminate.
- *
- * The callback should return FALSE to signify that the light is wholly
- * occluded w.r.t the sample position, otherwise it should return TRUE.
- * Partial degrees of (color-frequency-dependent) occlusion may be
- * expressed by modifying the RwRGBAReal value. This defaults to bright
- * white but may be reduced to signify that the light from the light
- * source should be attenuated. This could be used to take into account
- * light-filtering objects in the scene (such as coloured glass or fog).
- *
- * The default RtLtMapIlluminateVisCallBack supplied with RtLtMap is
- * \ref RtLtMapDefaultVisCallBack. This callback performs visibility
- * tests using the line-intersection tests from \ref rtintersect. It tests
- * for occlusion by RpWorldSectors and RpAtomics and it respects the
- * relevant \ref RtLtMapObjectFlags and \ref RtLtMapMaterialFlags but it
- * does not filter light; visibility is determined to be either one or zero.
- *
- * \param world The world of the current RtLtMapLightingSession
- * \param result An RwRGBAReal value to attentuate this light's
- * contribution to the current sample
- * \param samplePos The world-space positiuon of the sample
- * \param lightPos The world-space positiuon of the light
- * \param light A pointer to the light (NULL if it is an are light)
- *
- * \return TRUE if the light is visible from the sample, FALSE if it is occluded
- *
- * \see RtLtMapIlluminate
- * \see RtLtMapIlluminateSampleCallBack
- * \see RtLtMapIlluminateProgressCallBack
- */
-typedef RwBool (*RtLtMapIlluminateVisCallBack)(RpWorld *world,
- RwRGBAReal *result,
- RwV3d *samplePos,
- RwV3d *lightPos,
- RpLight *light);
-
-/**
- * \ingroup rtltmap
- * \typedef RtLtMapIlluminateProgressCallBack
- * \ref RtLtMapIlluminateProgressCallBack is the callback to be called, from
- * within \ref RtLtMapIlluminate, to allow a user to track lighting progress.
- *
- * The progress callback will be called at several stages during lighting,
- * with a different 'message' parameter value used at each stage (see
- * \ref RtLtMapProgressMessage). It will be called at the very start of
- * lighting (for a given \ref RtLtMapLightingSession), before any samples
- * are lit. It will also be called at the very end of lighting, after all
- * samples have been lit. It will be called before and after each lighting
- * 'slice' (see \ref RtLtMapIlluminate) and also after each group of
- * samples have been lit.
- *
- * For lightmapped objects, samples are grouped on a per-polygon basis and
- * for vertex-lit objects, samples are grouped on a per-object basis (see
- * \ref RtLtMapObjectFlags).
- *
- * The progress callback will receive a RwReal value specifying the percentage
- * of samples already lit in the current \ref RtLtMapLightingSession (see
- * \ref RtLtMapLightingSessionGetNumSamples).
- *
- * By returning FALSE, the progress callback may cause early termination of
- * the current lighting 'slice' (this may be used, for example, to keep
- * the time spent lighting each slice fairly constant).
- *
- * There is no default progress callback supplied with RtLtMap.
- *
- * \param message A \ref RtLtMapProgressMessage identifying the stage
- * of the current call to the progress callback
- * \param value The percentage of samples already lit in the
- * current \ref RtLtMapLightingSession
- *
- * \return FALSE to immediately terminate lighting, otherwise TRUE
- *
- * \see RtLtMapIlluminate
- * \see RtLtMapIlluminateSampleCallBack
- * \see RtLtMapIlluminateVisCallBack
- */
-typedef RwBool (*RtLtMapIlluminateProgressCallBack)(RwInt32 message,
- RwReal value);
-
-
-/**
- * \ingroup rtltmap
- * \ref RtLtMapProgressMessage is an enumerated type identifying the different
- * stages at which the \ref RtLtMapIlluminateProgressCallBack may be called
- * from within \ref RtLtMapIlluminate.
- *
- * \see RtLtMapIlluminateProgressCallBack
- * \see RtLtMapIlluminate
- */
-enum RtLtMapProgressMessage
-{
- rtLTMAPPROGRESSNAMESSAGE = 0,
-
- rtLTMAPPROGRESSSTART = 1, /**< This is issued at the beginning of
- * an incremental lighting session */
- rtLTMAPPROGRESSSTARTSLICE = 2, /**< This is issued at the beginning of every
- * slice in an incremental lighting session */
- rtLTMAPPROGRESSUPDATE = 3, /**< This is issued after the lighting of each
- * lightmapped triangle or vertex-lit object */
- rtLTMAPPROGRESSENDSLICE = 4, /**< This is issued at the end of every slice
- * in an incremental lighting session */
- rtLTMAPPROGRESSEND = 5, /**< This is issued at the end of an
- * incremental lighting session */
-
- rtLTMAPPROGRESSFORCEENUMSIZEINT = 0x7FFFFFFF
-};
-typedef enum RtLtMapProgressMessage RtLtMapProgressMessage;
-
-typedef struct RtLtMapLightingSession RtLtMapLightingSession;
-/**
- * \ingroup rtltmap
- * \typedef RtLtMapLightingSession
- * The \ref RtLtMapLightingSession structure holds information to be passed to
- * \ref RtLtMapIlluminate. It is used to parameterize the lighting process.
- *
- * The \ref RtLtMapLightingSession structure encapsulates a set of objects and
- * keeps track of the proportion of samples, within that set, that have already
- * been lit by calls to \ref RtLtMapIlluminate. Each call performs lighting for
- * one 'slice' of the whole 'session'. If the camera member is non-NULL, it is
- * important that the camera is not moved between lighting slices.
- *
- * The \ref RtLtMapLightingSession is also passed to
- * \ref RtLtMapLightMapsCreate, \ref RtLtMapLightMapsClear,
- * \ref RtLtMapLightMapsDestroy and \ref RtLtMapAreaLightGroupCreate,
- * though not all of the session structure's member will be used in
- * each of these cases.
- *
- * \see RtLtMapIlluminate
- * \see RtLtMapLightMapsCreate
- * \see RtLtMapLightMapsClear
- * \see RtLtMapLightMapsDestroy
- * \see RtLtMapAreaLightGroupCreate
- */
-struct RtLtMapLightingSession
-{
- RpWorld *world; /**< This world is that in which collisions are performed
- * during illumination (for the purposes of lighting
- * visibility determination) */
- RwCamera *camera; /**< An optional pointer to a camera. The camera's frustum
- * may be used to cull objects and/or triangles from the
- * set of those to be processed. */
- RpWorldSector **sectorList; /**< An optional array of \ref RpWorldSector pointers,
- * specifying which sectors in the world to light. If
- * this is NULL, then all sectors in the world (or those
- * inside the optional camera's frustum) will be lit. */
- RwInt32 numSectors; /**< The length of the sectorList array. If this is set to
- * '-1' then none of the sectors in the world will be lit. */
- RpAtomic **atomicList; /**< An optional array of \ref RpAtomic pointers,
- * specifying which atomics to light. If this is NULL
- * then all atomics in the world (or those inside the
- * optional camera's frustum) will be lit. */
- RwInt32 numAtomics; /**< The length of the atomicList array. If this is set to
- * '-1' then none of the atomics in the world will be lit. */
- RwUInt32 startSample; /**< Lighting for the current 'slice' should begin with this
- * sample. It is the user's responsibility to increment this
- * value after each slice. Note that partial lighting is
- * quantized to be per-polygon (for lightmapped objects).
- * startSample will always be rounded down, not up. */
- RwUInt32 numSamples; /**< This specifies how many lightmap samples should be lit.
- * If it is left zero then all samples in the current set
- * of objects will be lit. Note that partial lighting is
- * quantized to be per-polygon (for lightmapped objects).
- * numSamples will always be rounded up, not down. */
- RwUInt32 totalSamples;/**< This specifies how many lightmap samples will be lit in
- * total for the world specified (this is filled in by
- * \ref RtLtMapIlluminate, not the calling function). */
- RtLtMapIlluminateSampleCallBack sampleCallBack; /**< A \ref RtLtMapIlluminateSampleCallBack
- * to use during lighting. If this is left
- * NULL, the default callback will be used. */
- RtLtMapIlluminateVisCallBack visCallBack; /**< A \ref RtLtMapIlluminateVisCallBack
- * to use during lighting. If this is left
- * NULL, the default callback will be used. */
- RtLtMapIlluminateProgressCallBack progressCallBack; /**< A \ref RtLtMapIlluminateProgressCallBack
- * to use during lighting. If this is left
- * NULL, no progress callback will be used. */
-};
-
-/**
- * \ingroup rtltmap
- * \ref RtLtMapMaterialFlags is an enumerated type specifying the different
- * lightmap-related flags which may be applied to materials. These values
- * will be taken into consideration within \ref RtLtMapIlluminate.
- *
- * \see RtLtMapMaterialGetFlags
- * \see RtLtMapMaterialSetFlags
- * \see RtLtMapMaterialGetAreaLightColor
- * \see RtLtMapMaterialSetAreaLightColor
- * \see RtLtMapMaterialGetLightMapDensityModifier
- * \see RtLtMapMaterialSetLightMapDensityModifier
- * \see RtLtMapMaterialGetAreaLightDensityModifier
- * \see RtLtMapMaterialSetAreaLightDensityModifier
- * \see RtLtMapMaterialSetAreaLightRadiusModifier
- * \see RtLtMapMaterialGetAreaLightRadiusModifier
- * \see RtLtMapIlluminate
- * \see RtLtMapAreaLightGroupCreate
- * \see RtLtMapIlluminateVisCallBack
- */
-enum RtLtMapMaterialFlags
-{
- rtLTMAPMATERIALNAFLAG = 0,
-
- rtLTMAPMATERIALLIGHTMAP = 1, /**< This material should be lightmapped
- * [for non-lightmapped materials within lightmapped objects,
- * texel values will be set to (0, 0, 0) (or (255, 255, 255) if
- * the rtLTMAPMATERIALAREALIGHT flag is present, so that light-
- * emitting textures appear as bright as the light which they are
- * emittering) and the mesh may be 'shrunk' in UV-space so as not
- * to waste lightmap texels] */
- rtLTMAPMATERIALAREALIGHT = 2, /**< This material is an area light emitter
- * (see \ref RtLtMapAreaLightGroupCreate) */
- rtLTMAPMATERIALNOSHADOW = 4, /**< This material does not block light */
- rtLTMAPMATERIALSKY = 8, /**< This material blocks everything but directional
- * lights, to allow sky polygons to occlude geometry
- * and yet emit directional light (sky or sun light,
- * being as if cast from an infinite distance) */
- rtLTMAPMATERIALFLATSHADE = 16, /**< This material will be lit as if flat-shaded
- * (polygon normals will be used during illumination) */
-
- rtLTMAPMATERIALFLAGFORCEENUMSIZEINT = 0x7FFFFFFF
-};
-typedef enum RtLtMapMaterialFlags RtLtMapMaterialFlags;
-
-/**
- * \ingroup rtltmap
- * \ref RtLtMapObjectFlags is an enumerated type specifying the different
- * lightmap-related flags which may be applied to world sectors and
- * atomics. These values will be taken into consideration within
- * \ref RtLtMapLightMapsCreate and \ref RtLtMapIlluminate.
- *
- * \see RtLtMapAtomicGetFlags
- * \see RtLtMapAtomicSetFlags
- * \see RtLtMapWorldSectorGetFlags
- * \see RtLtMapWorldSectorSetFlags
- * \see RtLtMapLightMapsCreate
- * \see RtLtMapIlluminate
- * \see RtLtMapIlluminateVisCallBack
- */
-enum RtLtMapObjectFlags
-{
- rtLTMAPOBJECTNAFLAG = 0,
-
- rtLTMAPOBJECTLIGHTMAP = 1, /**< This object is to be lightmapped */
- rtLTMAPOBJECTVERTEXLIGHT = 2, /**< This object's vertex prelight colours should
- * be lit within \ref RtLtMapIlluminate. */
- rtLTMAPOBJECTNOSHADOW = 4, /**< This object does not cast shadows (useful, for
- * example, for moving objects for which dynamic
- * shadows are to be rendered - such as doors) */
-
- rtLTMAPOBJECTFLAGFORCEENUMSIZEINT = 0x7FFFFFFF
-};
-typedef enum RtLtMapObjectFlags RtLtMapObjectFlags;
-
-/* Area-lighting stuff:*
- ***********************/
-
-/**
- * \ingroup rtltmap
- * \typedef RtLtMapAreaLightGroup
- * \ref RtLtMapAreaLightGroup is a structure which acts as a container
- * for area lights created by a call to \ref RtLtMapAreaLightGroupCreate.
- * The containers may be chained and passed to \ref RtLtMapIlluminate.
- * Each container has an optional pointer to a RwFrame which is used to
- * transform the contained area lights relative to the world of the current
- * \ref RtLtMapLightingSession and relative to each other (such that, for
- * example, lights from multiple worlds, which are connected by portals,
- * or which are composed of atomics and not world sectors, may be used
- * within a single call to \ref RtLtMapIlluminate).
- *
- * \see RtLtMapAreaLightGroupCreate
- * \see RtLtMapAreaLightGroupDestroy
- * \see RtLtMapIlluminate
- * \see RtLtMapIlluminateVisCallBack
- */
-typedef struct RtLtMapAreaLightGroup RtLtMapAreaLightGroup;
-struct RtLtMapAreaLightGroup
-{
- RwSList *meshes; /**< A list of hierarchically-grouped area lights */
- RwFrame *frame; /**< An (optional) pointer to a frame (owned by something else)
- * whose LTM specifies the coordinate system of this container,
- * relative to the world of the current \ref RtLtMapLightingSession. */
- RtLtMapAreaLightGroup *next; /**< A pointer for chaining are light groups together */
-};
-
-/* Area light triangles are grouped by source mesh (this may change) */
-typedef struct LtMapAreaLightMesh LtMapAreaLightMesh;
-struct LtMapAreaLightMesh
-{
- RwUInt32 flags; /* To hold hierarchical visibility culling flags,
- * relevant to the object/triangle *currently* being lit. */
- RpMaterial *material; /* The emitter material, containing colour, etc */
- RwSphere sphere; /* Each mesh has an associated center and radius */
- RwReal ROI; /* Centred on the above sphere, the R.O.I. of the
- * samples in this mesh (a conservative estimate) */
- RwSList *triangles; /* A list of the area light triangles in this mesh */
-};
-
-/* Area light samples are grouped by source triangle */
-typedef struct LtMapAreaLight LtMapAreaLight;
-struct LtMapAreaLight
-{
- RwUInt16 flags; /* To hold hierarchical visibility culling flags,
- * relevant to the object/triangle *currently* being lit. */
- RwUInt16 numSamples; /* Number of area light samples in this triangle */
- RwReal areaPerSample; /* (triangleArea / numSamples) for this triangle */
- RwPlane plane; /* This 'area light' is a triangle, this is its plane. */
- RwSphere sphere; /* This bounds the triangle's points in world-space (it's
- * not worth storing 3 points, coarse culling is fine) */
- RwV3d *lights; /* Array of area light sample positions (in world-space) */
-};
-
-
-#ifdef __cplusplus
-extern "C"
-{
-#endif /* __cplusplus */
-
-
-/* Lightmap creation functionality: */
-extern RtLtMapLightingSession *
-RtLtMapLightMapsCreate(RtLtMapLightingSession *session,
- RwReal density, RwRGBA *color);
-
-extern void
-RtLtMapLightMapsDestroy(RtLtMapLightingSession *session);
-extern RpAtomic *
-RtLtMapAtomicLightMapDestroy(RpAtomic *atomic);
-extern RpWorldSector *
-RtLtMapWorldSectorLightMapDestroy(RpWorldSector *sector);
-
-extern RwReal
-RtLtMapGetVertexWeldThreshold(void);
-extern RwBool
-RtLtMapSetVertexWeldThreshold(RwReal threshold);
-
-extern RwUInt32
-RtLtMapLightMapGetDefaultSize(void);
-extern RwBool
-RtLtMapLightMapSetDefaultSize(RwUInt32 size);
-
-extern RwUInt32
-RtLtMapAtomicGetLightMapSize(RpAtomic *atomic);
-extern RpAtomic *
-RtLtMapAtomicSetLightMapSize(RpAtomic *atomic, RwUInt32 size);
-extern RwUInt32
-RtLtMapWorldSectorGetLightMapSize(RpWorldSector *sector);
-extern RpWorldSector *
-RtLtMapWorldSectorSetLightMapSize(RpWorldSector *sector, RwUInt32 size);
-
-extern RwUInt32
-RtLtMapAtomicGetFlags(RpAtomic *atomic);
-extern RpAtomic *
-RtLtMapAtomicSetFlags(RpAtomic *atomic, RwUInt32 flags);
-extern RwUInt32
-RtLtMapWorldSectorGetFlags(RpWorldSector *sector);
-extern RpWorldSector *
-RtLtMapWorldSectorSetFlags(RpWorldSector *sector, RwUInt32 flags);
-
-
-/* Lightmap illumination functionality: */
-extern RwUInt32
-RtLtMapIlluminate(RtLtMapLightingSession *session,
- RtLtMapAreaLightGroup *lights);
-
-extern RwReal
-RtLtMapGetSliverAreaThreshold(void);
-extern RwBool
-RtLtMapSetSliverAreaThreshold(RwReal threshold);
-
-extern RwRGBA *
-RtLtMapDefaultSampleCallBack(RwRGBA *results,
- RwV3d *samplePositions,
- RwV3d * __RWUNUSED__ baryCoords,
- RwUInt32 numSamples,
- RpLight **lights,
- RwUInt32 numLights,
- RwV3d *normals);
-
-extern RwBool
-RtLtMapDefaultVisCallBack(RpWorld *world,
- RwRGBAReal __RWUNUSED__ *result,
- RwV3d *samplePos,
- RwV3d *lightPos,
- RpLight __RWUNUSED__ *light);
-
-extern RtLtMapLightingSession *
-RtLtMapLightingSessionInitialize(RtLtMapLightingSession *session,
- RpWorld *world);
-
-extern RwInt32
-RtLtMapLightingSessionGetNumSamples(RtLtMapLightingSession *session);
-extern RwInt32
-RtLtMapWorldSectorGetNumSamples(RpWorldSector *sector);
-extern RwInt32
-RtLtMapAtomicGetNumSamples(RpAtomic *atomic);
-
-extern RtLtMapLightingSession *
-RtLtMapImagesPurge(RtLtMapLightingSession *session);
-extern RpAtomic *
-RtLtMapAtomicImagePurge(RpAtomic *atomic);
-extern RpWorldSector *
-RtLtMapWorldSectorImagePurge(RpWorldSector *sector);
-
-extern RtLtMapLightingSession *
-RtLtMapLightMapsClear(RtLtMapLightingSession *session, RwRGBA *color);
-extern RpAtomic *
-RtLtMapAtomicLightMapClear(RpAtomic *atomic, RwRGBA *color);
-extern RpWorldSector *
-RtLtMapWorldSectorLightMapClear(RpWorldSector *sector, RwRGBA *color);
-
-
-/* Material/area-lighting functionality: */
-extern RtLtMapAreaLightGroup *
-RtLtMapAreaLightGroupCreate(RtLtMapLightingSession *session, RwReal density);
-extern RwBool
-RtLtMapAreaLightGroupDestroy(RtLtMapAreaLightGroup *lights);
-
-extern RwUInt32
-RtLtMapMaterialGetFlags(RpMaterial *material);
-extern RpMaterial *
-RtLtMapMaterialSetFlags(RpMaterial *material, RwUInt32 flags);
-
-extern RwReal
-RtLtMapMaterialGetLightMapDensityModifier(RpMaterial *material);
-extern RpMaterial *
-RtLtMapMaterialSetLightMapDensityModifier(RpMaterial *material, RwReal modifier);
-
-extern RwRGBA
-RtLtMapMaterialGetAreaLightColor(RpMaterial *material);
-extern RpMaterial *
-RtLtMapMaterialSetAreaLightColor(RpMaterial *material, RwRGBA color);
-
-extern RwReal
-RtLtMapMaterialGetAreaLightDensityModifier(RpMaterial *material);
-extern RpMaterial *
-RtLtMapMaterialSetAreaLightDensityModifier(RpMaterial *material, RwReal modifier);
-
-extern RwReal
-RtLtMapMaterialGetAreaLightRadiusModifier(RpMaterial *material);
-extern RpMaterial *
-RtLtMapMaterialSetAreaLightRadiusModifier(RpMaterial *material, RwReal modifier);
-
-extern RwUInt32
-RtLtMapGetMaxAreaLightSamplesPerMesh(void);
-extern RwBool
-RtLtMapSetMaxAreaLightSamplesPerMesh(RwUInt32 maxSamples);
-extern RwReal
-RtLtMapGetAreaLightDensityModifier(void);
-extern RwBool
-RtLtMapSetAreaLightDensityModifier(RwReal modifier);
-extern RwReal
-RtLtMapGetAreaLightRadiusModifier(void);
-extern RwBool
-RtLtMapSetAreaLightRadiusModifier(RwReal modifier);
-extern RwReal
-RtLtMapGetAreaLightErrorCutoff(void);
-extern RwBool
-RtLtMapSetAreaLightErrorCutoff(RwReal tolerance);
-
-
-
-/* Texture-saving functionality: */
-extern RwTexDictionary *
-RtLtMapTexDictionaryCreate(RtLtMapLightingSession *session);
-
-extern const RwChar *
-RtLtMapGetDefaultPrefixString(void);
-extern RwBool
-RtLtMapSetDefaultPrefixString(RwChar *string);
-
-extern RwUInt32
-RtLtMapGetLightMapCounter(void);
-extern RwBool
-RtLtMapSetLightMapCounter(RwUInt32 value);
-
-
-#if (defined(SKY2_DRVMODEL_H) || defined(NULLSKY_DRVMODEL_H))
-
-/* PS2-specific functionality: */
-extern RwTexture *RtLtMapSkyLightMapMakeDarkMap(RwTexture *lightMap);
-
-extern RwTexture *RtLtMapSkyBaseTextureProcess(RwTexture *texture);
-extern RpAtomic *RtLtMapSkyAtomicBaseTexturesProcess(RpAtomic *atomic);
-extern RpWorldSector *
-RtLtMapSkyWorldSectorBaseTexturesProcess(RpWorldSector *sector);
-extern RtLtMapLightingSession *
-RtLtMapSkyBaseTexturesProcess(RtLtMapLightingSession *session);
-
-#endif /* (defined(SKY2_DRVMODEL_H) || defined(NULLSKY_DRVMODEL_H)) */
-
-#ifdef __cplusplus
-}
-#endif /* __cplusplus */
-
-#endif /* RTLTMAP_H */
-
-
diff --git a/rwsdk/include/d3d8/rtltmap.rpe b/rwsdk/include/d3d8/rtltmap.rpe
deleted file mode 100644
index e510d78b..00000000
--- a/rwsdk/include/d3d8/rtltmap.rpe
+++ /dev/null
@@ -1,638 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-enum e_rwdb_CriterionLTMAPTOOL
-{
-
-
-
- e_rwdb_CriterionLTMAPTOOLLAST = RWFORCEENUMSIZEINT
-};
-
-typedef enum e_rwdb_CriterionLTMAPTOOL e_rwdb_CriterionLTMAPTOOL;
-
-
diff --git a/rwsdk/include/d3d8/rtmipk.h b/rwsdk/include/d3d8/rtmipk.h
deleted file mode 100644
index c06a3879..00000000
--- a/rwsdk/include/d3d8/rtmipk.h
+++ /dev/null
@@ -1,58 +0,0 @@
-/**
- * Mipmap K toolkit
- */
-
-/***************************************************************************
- * *
- * Module : rtmipk.h *
- * *
- * Purpose : To calculate mipmap K values for Sky *
- * *
- **************************************************************************/
-
-#ifndef RTMIPK_H
-#define RTMIPK_H
-
-/**
- * \defgroup rtmipk RtMipmapK
- * \ingroup rttool
- *
- * Ps2/Mipmap K Value Toolkit for RenderWare.
- */
-
-/****************************************************************************
- Includes
- */
-
-#include "rwcore.h"
-#include "rpworld.h"
-
-/* RWPUBLIC */
-
-/****************************************************************************
- Defines
- */
-
-/****************************************************************************
- Global Types
- */
-
-/****************************************************************************
- Function prototypes
- */
-
-#ifdef __cplusplus
-extern "C"
-{
-#endif /* __cplusplus */
-
-extern void RtMipKWorldCalculateKValues(RpWorld *world, RwCamera *camera);
-extern void RtMipKClumpCalculateKValues(RpClump *clump, RwCamera *camera);
-
-#ifdef __cplusplus
-}
-#endif /* __cplusplus */
-
-/* RWPUBLICEND */
-
-#endif /* RTMIPK_H */
diff --git a/rwsdk/include/d3d8/rtmipk.rpe b/rwsdk/include/d3d8/rtmipk.rpe
deleted file mode 100644
index 24e1fd33..00000000
--- a/rwsdk/include/d3d8/rtmipk.rpe
+++ /dev/null
@@ -1,628 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-enum e_rwdb_CriterionMipmapK
-{
-
-
-
- e_rwdb_CriterionMipmapKLAST = RWFORCEENUMSIZEINT
-};
-
-typedef enum e_rwdb_CriterionMipmapK e_rwdb_CriterionMipmapK;
-
-
diff --git a/rwsdk/include/d3d8/rtpick.h b/rwsdk/include/d3d8/rtpick.h
deleted file mode 100644
index 5ea78058..00000000
--- a/rwsdk/include/d3d8/rtpick.h
+++ /dev/null
@@ -1,59 +0,0 @@
-/***************************************************************************
- * *
- * Module : rtpick.h *
- * *
- * Purpose : Utils for picking atomics. *
- * *
- **************************************************************************/
-
-#ifndef RTPICK_H
-#define RTPICK_H
-
-/**
- * \defgroup rtpick RtPick
- * \ingroup rttool
- *
- * Picking Toolkit for RenderWare.
- */
-
-/****************************************************************************
- Includes
- */
-
-#include "rwcore.h"
-#include "rtpick.rpe" /* automatically generated header file */
-
-/****************************************************************************
- Defines
- */
-
-/****************************************************************************
- Global Types
- */
-
-/****************************************************************************
- Function prototypes
- */
-
-#ifdef __cplusplus
-extern "C"
-{
-#endif /* __cplusplus */
-
-/* Camera pixel ray */
-extern const RwCamera *RwCameraCalcPixelRay(const RwCamera *camera,
- RwLine *line,
- const RwV2d *pixel);
-
-/* Picking atomics */
-extern RpAtomic *RpWorldPickAtomicOnLine(RpWorld *world,
- const RwLine *line);
-extern RpAtomic *RwCameraPickAtomicOnPixel(const RwCamera *camera,
- const RwV2d *pixel);
-
-#ifdef __cplusplus
-}
-#endif /* __cplusplus */
-
-
-#endif /* RTPICK_H */
diff --git a/rwsdk/include/d3d8/rtpick.rpe b/rwsdk/include/d3d8/rtpick.rpe
deleted file mode 100644
index 055ea9ff..00000000
--- a/rwsdk/include/d3d8/rtpick.rpe
+++ /dev/null
@@ -1,628 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-enum e_rwdb_CriterionPick
-{
-
-
-
- e_rwdb_CriterionPickLAST = RWFORCEENUMSIZEINT
-};
-
-typedef enum e_rwdb_CriterionPick e_rwdb_CriterionPick;
-
-
diff --git a/rwsdk/include/d3d8/rtpitexd.h b/rwsdk/include/d3d8/rtpitexd.h
deleted file mode 100644
index 39287bcd..00000000
--- a/rwsdk/include/d3d8/rtpitexd.h
+++ /dev/null
@@ -1,74 +0,0 @@
-/***********************************************************************
- *
- * Module: rtpitexd.h
- *
- * Purpose: Platform Independent Texture Dictionaries
- *
- ***********************************************************************/
-
-#if !defined( RTPITEXD_H )
-#define RTPITEXD_H
-
-/**
- * \defgroup rtpitexd RtPITexD
- * \ingroup rttool
- *
- * Platform Independent Texture Dictionaries
- *
- */
-
-
-/* =====================================================================
- * Includes
- * ===================================================================== */
-#include <rwcore.h>
-#include <rtpitexd.rpe> /* automatically generated */
-
-
-/* =====================================================================
- * Defines
- * ===================================================================== */
-
-
-/* =====================================================================
- * Module specific type definitions
- * ===================================================================== */
-
-/* =====================================================================
- * Extern variables
- * ===================================================================== */
-
-
-/* =====================================================================
- * Extern function prototypes
- * ===================================================================== */
-
-#if defined( __cplusplus )
-extern "C"
-{
-#endif /* defined( __cplusplus ) */
-
-/* RWPUBLIC */
-
-extern RwUInt32
-RtPITexDictionaryStreamGetSize( const RwTexDictionary *texDict );
-
-extern RwTexDictionary *
-RtPITexDictionaryStreamRead( RwStream *stream );
-
-extern RwTexDictionary *
-RtPITexDictionaryStreamWrite( RwTexDictionary *texDict,
- RwStream *stream );
-
-/* RWPUBLICEND */
-
-extern void
-_rwImageGammaUnCorrectArrayOfRGBA( RwRGBA * rgbaOut,
- RwRGBA * rgbaIn,
- RwInt32 numEls );
-
-#if defined( __cplusplus )
-}
-#endif /* defined( __cplusplus ) */
-
-#endif /* !defined( RTPITEXD_H ) */
diff --git a/rwsdk/include/d3d8/rtpitexd.rpe b/rwsdk/include/d3d8/rtpitexd.rpe
deleted file mode 100644
index 0650ea5c..00000000
--- a/rwsdk/include/d3d8/rtpitexd.rpe
+++ /dev/null
@@ -1,682 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-enum e_rwdb_CriterionPITexDict
-{
-
-
-
- e_rwdb_CriterionPITexDictLAST = RWFORCEENUMSIZEINT
-};
-
-typedef enum e_rwdb_CriterionPITexDict e_rwdb_CriterionPITexDict;
-
-
diff --git a/rwsdk/include/d3d8/rtpng.h b/rwsdk/include/d3d8/rtpng.h
deleted file mode 100644
index 694c8400..00000000
--- a/rwsdk/include/d3d8/rtpng.h
+++ /dev/null
@@ -1,49 +0,0 @@
-
-/***************************************************************************
- * *
- * Module : rtPng.h *
- * *
- * Purpose : Load PNG format files *
- * *
- **************************************************************************/
-
-#ifndef RTPNG_H
-#define RTPNG_H
-
-/**
- * \defgroup rtpng RtPNG
- * \ingroup rttool
- *
- * PNG/Portable Network Graphics Image Format Toolkit for RenderWare.
- *
- * See also http://www.libpng.org/pub/png/
- */
-
-/****************************************************************************
- Includes
- */
-
-/*--- Include files ---*/
-#include "rwcore.h"
-
-#include "rtpng.rpe" /* automatically generated header file */
-
-/****************************************************************************
- Function prototypes
- */
-
-#ifdef __cplusplus
-extern "C"
-{
-#endif /* __cplusplus */
-
-extern RwImage *RtPNGImageWrite(RwImage * image, const RwChar * imageName);
-extern RwImage *RtPNGImageRead(const RwChar * imageName);
-
-#ifdef __cplusplus
-}
-#endif /* __cplusplus */
-
-/* RWPUBLICEND */
-
-#endif /* RTPNG_H */
diff --git a/rwsdk/include/d3d8/rtpng.rpe b/rwsdk/include/d3d8/rtpng.rpe
deleted file mode 100644
index 7a6b6cc2..00000000
--- a/rwsdk/include/d3d8/rtpng.rpe
+++ /dev/null
@@ -1,629 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-enum e_rwdb_CriterionPNG
-{
-
-
-
- e_rwdb_CriterionPNGLAST = RWFORCEENUMSIZEINT
-};
-
-typedef enum e_rwdb_CriterionPNG e_rwdb_CriterionPNG;
-
-
diff --git a/rwsdk/include/d3d8/rtquat.h b/rwsdk/include/d3d8/rtquat.h
deleted file mode 100644
index 05e971d0..00000000
--- a/rwsdk/include/d3d8/rtquat.h
+++ /dev/null
@@ -1,646 +0,0 @@
-/*
- * Data structures for Quaternions
- * See http://www-groups.dcs.st-and.ac.uk/~history/Mathematicians/Hamilton.html
- *
- * Copyright (c) Criterion Software Limited
- */
-
-#ifndef RTQUAT_H
-#define RTQUAT_H
-
-/**
- * \defgroup rtquat RtQuat
- * \ingroup rttool
- *
- * Quaternion Toolkit for RenderWare.
- *
- * See also http://www.gamasutra.com/features/19980703/quaternions_01.htm
- */
-
-/*
- * See http://www-groups.dcs.st-and.ac.uk/~history/Mathematicians/Hamilton.html
- * On 16 October 1843 (a Monday) Hamilton was walking in along the Royal
- * Canal with his wife to preside at a Council meeting of the Royal Irish
- * Academy.
- *
- * Although his wife talked to him now and again Hamilton hardly
- * heard, for the discovery of the quaternions, the first noncommutative
- * algebra to be studied, was taking shape in his mind:-
- *
- * "And here there dawned on me the notion that we must admit, in
- * some sense, a fourth dimension of space for the purpose of calculating
- * with triples ... An electric circuit seemed to close, and a spark
- * flashed forth."
- */
-
-
-/****************************************************************************
- Includes
- */
-
-#include <math.h>
-/* renderware */
-#include "rwcore.h"
-
-#include "rtquat.rpe" /* automatically generated header file */
-
-#define RW_TOL_ORTHONORMAL ((RwReal)0.01)
-
-/****************************************************************************
- Global Types
- */
-
-
-typedef struct RtQuat RtQuat;
-/**
- * \ingroup rtquat
- * \struct RtQuat
- * A structure describing a Quaternion
- *
-*/
-struct RtQuat
-{
- RwV3d imag; /**< The imaginary part(s) */
- RwReal real; /**< The real part */
-};
-
-
-/****************************************************************************
- Defines
- */
-
-#define RtQuatInitMacro( result, _x, _y, _z, _w) \
-MACRO_START \
-{ \
- (result)->real = (_w); \
- (result)->imag.x = (_x); \
- (result)->imag.y = (_y); \
- (result)->imag.z = (_z); \
-} \
-MACRO_STOP
-
-#if (!defined(RtQuatAssignMacro))
-#define RtQuatAssignMacro(_target, _source) \
- ( *(_target) = *(_source) )
-#endif /* (!defined(RtQuatAssignMacro)) */
-
-#define RtQuatAddMacro( result, q1, q2 ) \
-MACRO_START \
-{ \
- (result)->real = (q1)->real + (q2)->real; \
- RwV3dAddMacro(&(result)->imag, &(q1)->imag, &(q2)->imag); \
-} \
-MACRO_STOP
-
-#define RtQuatIncrementRealPartMacro(result, s, q) \
-MACRO_START \
-{ \
- (result)->real = (q)->real + s; \
- (result)->imag.x = (q)->imag.x; \
- (result)->imag.y = (q)->imag.y; \
- (result)->imag.z = (q)->imag.z; \
-} \
-MACRO_STOP
-
-#define RtQuatDecrementRealPartMacro(result, s, q) \
-MACRO_START \
-{ \
- (result)->real = (q)->real - s; \
- (result)->imag.x = (q)->imag.x; \
- (result)->imag.y = (q)->imag.y; \
- (result)->imag.z = (q)->imag.z; \
-} \
-MACRO_STOP
-
-#define RtQuatIncrementMacro( result, dq ) \
-MACRO_START \
-{ \
- (result)->real = (result)->real + (dq)->real; \
- RwV3dAddMacro(&(result)->imag, &(result)->imag, &(dq)->imag); \
-} \
-MACRO_STOP
-
-#define RtQuatSubMacro( result, q1, q2 ) \
-MACRO_START \
-{ \
- (result)->real = (q1)->real - (q2)->real; \
- RwV3dSubMacro(&(result)->imag, &(q1)->imag, &(q2)->imag); \
-} \
-MACRO_STOP
-
-#define RtQuatNegateMacro( result, q ) \
-MACRO_START \
-{ \
- (result)->real = -(q)->real; \
- (result)->imag.x = -(q)->imag.x; \
- (result)->imag.y = -(q)->imag.y; \
- (result)->imag.z = -(q)->imag.z; \
-} \
-MACRO_STOP
-
-#define RtQuatConjugateMacro( result, q) \
-MACRO_START \
-{ \
- (result)->real = (q)->real; \
- (result)->imag.x = -(q)->imag.x; \
- (result)->imag.y = -(q)->imag.y; \
- (result)->imag.z = -(q)->imag.z; \
-} \
-MACRO_STOP
-
-#define RtQuatScaleMacro(result, q, scale ) \
-MACRO_START \
-{ \
- (result)->real = (q)->real * scale; \
- RwV3dScaleMacro(&(result)->imag, &(q)->imag, scale); \
-} \
-MACRO_STOP
-
-#define RtQuatModulusSquaredMacro( q ) \
- ((q)->real * (q)->real + \
- RwV3dDotProductMacro(&(q)->imag, &(q)->imag))
-
-#define RtQuatModulusMacro( result, q ) \
-MACRO_START \
-{ \
- (result) = RtQuatModulusSquaredMacro(q); \
- rwSqrtMacro(&result, result); \
-} \
-MACRO_STOP
-
-#define RtQuatMultiplyMacro( result, q1, q2) \
-MACRO_START \
-{ \
- /* \
- * Assumes q1 != result != q2 \
- */ \
- (result)->real = \
- (q1)->real * (q2)->real - \
- RwV3dDotProductMacro(&(q1)->imag,&(q2)->imag); \
- RwV3dCrossProductMacro(&(result)->imag, &(q1)->imag, &(q2)->imag); \
- RwV3dIncrementScaledMacro(&(result)->imag, &(q2)->imag, (q1)->real); \
- RwV3dIncrementScaledMacro(&(result)->imag, &(q1)->imag, (q2)->real); \
-} \
-MACRO_STOP
-
-#define RtQuatReciprocalMacro( result, q) \
-MACRO_START \
-{ \
- /* \
- * Assumes result != q \
- */ \
- RwReal val = RtQuatModulusSquaredMacro(q); \
- \
- if (val > (RwReal) 0) \
- { \
- val = ((RwReal)1) / val; \
- (result)->real = (q)->real * val; \
- val = -val; \
- RwV3dScaleMacro(&(result)->imag, &(q)->imag, val); \
- } \
-} \
-MACRO_STOP
-
-#define RtQuatSquareMacro( result, q ) \
-MACRO_START \
-{ \
- /* \
- * Assumes result != q \
- */ \
- RwReal val = ((RwReal)2) * (q)->real ; \
- \
- (result)->real = \
- (q)->real * (q)->real - \
- RwV3dDotProductMacro(&(q)->imag, &(q)->imag); \
- RwV3dScaleMacro(&(result)->imag, &(q)->imag, val); \
-} \
-MACRO_STOP
-
-#define RtQuatSquareRootMacro( result, q ) \
-MACRO_START \
-{ \
- /* \
- * Assumes result != q \
- * other root is of course -result \
- */ \
- RwReal val; \
- \
- RtQuatModulusMacro(val,q); \
- val = ((q)->real + val) * ((RwReal) 0.5); \
- \
- if (val > ((RwReal)0)) \
- { \
- rwSqrtMacro(&val, val); \
- (result)->real = val; \
- val = ((RwReal)0.5) / val; \
- RwV3dScale(&(result)->imag, &(q)->imag, val); \
- } \
- else \
- { \
- result->imag.x = -(q)->real; \
- rwSqrtMacro(&(result->imag.x), result->imag.x); \
- result->imag.y = ((RwReal)0); \
- result->imag.x = ((RwReal)0); \
- result->real = ((RwReal)0); \
- } \
-} \
-MACRO_STOP
-
-#define RtQuatLogMacro(result, q) \
-MACRO_START \
-{ \
- /* \
- * Assumes result != q \
- */ \
- const RwReal mod2 = RtQuatModulusSquaredMacro(q); \
- RwReal sin_b; \
- RwReal radians; \
- RwReal factor; \
- \
- sin_b = RwV3dDotProduct(&(q)->imag, &(q)->imag); \
- rwSqrtMacro(&sin_b, sin_b); \
- radians = (RwReal) RwATan2(sin_b, (q)->real); \
- factor = (sin_b > (RwReal) 0) ? (((RwReal)radians) / sin_b) : 0 ; \
- \
- RwV3dScaleMacro(&(result)->imag, &(q)->imag, factor); \
- (result)->real = ((RwReal) RwLog(mod2)) * ((RwReal) 0.5); \
- \
-} \
-MACRO_STOP
-
-#define RtQuatExpMacro(result, q) \
-MACRO_START \
-{ \
- /* \
- * Assumes result != q \
- */ \
- const RwReal exp_a = (RwReal)RwExp((q)->real); \
- RwReal mod_b; \
- RwReal factor; \
- \
- mod_b = RwV3dDotProduct(&(q)->imag, &(q)->imag); \
- rwSqrtMacro(&mod_b, mod_b); \
- factor = ( (mod_b > (RwReal) 0) ? \
- (exp_a * ((RwReal)RwSin(mod_b)) / mod_b) : \
- 0 ) ; \
- \
- RwV3dScaleMacro(&(result)->imag, &(q)->imag, factor); \
- (result)->real = exp_a * (RwReal)RwCos(mod_b); \
-} \
-MACRO_STOP
-
-#define RtQuatPowMacro( result, q, e) \
-MACRO_START \
-{ \
- RtQuat qLog; \
- \
- RtQuatLogMacro(&qLog, q); \
- RtQuatScaleMacro(&qLog, &qLog, e); \
- RtQuatExpMacro(result, &qLog); \
-} \
-MACRO_STOP
-
-#define RtQuatUnitLogMacro(result, q) \
-MACRO_START \
-{ \
- /* \
- * Assumes result != q \
- */ \
- RwReal sin_b ; \
- RwReal radians ; \
- RwReal factor ; \
- \
- sin_b = RwV3dDotProduct(&(q)->imag, &(q)->imag); \
- rwSqrtMacro(&sin_b, sin_b); \
- radians = (RwReal)RwATan2(sin_b, (q)->real); \
- factor = (sin_b > (RwReal) 0) ? (((RwReal)radians) / sin_b) : 0 ; \
- \
- RwV3dScaleMacro(&(result)->imag, &(q)->imag, factor); \
- (result)->real = (RwReal)0; \
- \
-} \
-MACRO_STOP
-
-#define RtQuatUnitExpMacro(result, q) \
-MACRO_START \
-{ \
- /* \
- * Assumes result != q \
- */ \
- RwReal mod_b; \
- RwReal factor; \
- \
- mod_b = RwV3dDotProduct(&(q)->imag, &(q)->imag); \
- rwSqrtMacro(&mod_b, mod_b); \
- factor = (mod_b > (RwReal) 0) ? (((RwReal)RwSin(mod_b)) / mod_b) : 0 ; \
- \
- RwV3dScaleMacro(&(result)->imag, &(q)->imag, factor); \
- (result)->real = (RwReal)RwCos(mod_b); \
- \
-} \
-MACRO_STOP
-
-#define RtQuatUnitPowMacro( result, q, e) \
-MACRO_START \
-{ \
- RtQuat qLog; \
- \
- RtQuatUnitLogMacro(&qLog, q); \
- RwV3dScaleMacro(&qLog.imag, &qLog.imag, e); \
- RtQuatUnitExpMacro(result, &qLog); \
-} \
-MACRO_STOP
-
-#define RtQuatConvertToMatrixMacro(qpQuat, mpMatrix) \
-MACRO_START \
-{ \
- RwReal rS; \
- RwV3d rV; \
- RwV3d rW; \
- RwV3d square; \
- RwV3d cross; \
- \
- rS = ((RwReal) 2) / RtQuatModulusSquaredMacro((qpQuat)); \
- \
- RwV3dScale(&rV, &(qpQuat)->imag, rS); \
- RwV3dScale(&rW, &rV, (qpQuat)->real); \
- \
- square.x = (qpQuat)->imag.x * rV.x; \
- square.y = (qpQuat)->imag.y * rV.y; \
- square.z = (qpQuat)->imag.z * rV.z; \
- \
- cross.x = (qpQuat)->imag.y * rV.z; \
- cross.y = (qpQuat)->imag.z * rV.x; \
- cross.z = (qpQuat)->imag.x * rV.y; \
- \
- (mpMatrix)->right.x = ((RwReal) 1) - (square.y + square.z); \
- (mpMatrix)->right.y = cross.z + rW.z; \
- (mpMatrix)->right.z = cross.y - rW.y; \
- \
- (mpMatrix)->up.x = cross.z - rW.z; \
- (mpMatrix)->up.y = ((RwReal) 1) - (square.z + square.x); \
- (mpMatrix)->up.z = cross.x + rW.x; \
- \
- (mpMatrix)->at.x = cross.y + rW.y; \
- (mpMatrix)->at.y = cross.x - rW.x; \
- (mpMatrix)->at.z = ((RwReal) 1) - (square.x + square.y); \
- \
- /* Set position */ \
- (mpMatrix)->pos.x = ((RwReal) 0); \
- (mpMatrix)->pos.y = ((RwReal) 0); \
- (mpMatrix)->pos.z = ((RwReal) 0); \
- \
- /* Matrix is orthogonal */ \
- rwMatrixSetFlags((mpMatrix), \
- (rwMATRIXTYPEORTHOGANAL & \
- ~rwMATRIXINTERNALIDENTITY) ); \
- \
-} \
-MACRO_STOP
-
-#define RtQuatUnitConvertToMatrixMacro(qpQuat, mpMatrix) \
-MACRO_START \
-{ \
- const RwReal x = (qpQuat)->imag.x; \
- const RwReal y = (qpQuat)->imag.y; \
- const RwReal z = (qpQuat)->imag.z; \
- const RwReal w = (qpQuat)->real; \
- RwV3d square; \
- RwV3d cross; \
- RwV3d wimag; \
- \
- square.x = x * x; \
- square.y = y * y; \
- square.z = z * z; \
- \
- cross.x = y * z; \
- cross.y = z * x; \
- cross.z = x * y; \
- \
- wimag.x = w * x; \
- wimag.y = w * y; \
- wimag.z = w * z; \
- \
- (mpMatrix)->right.x = 1 - 2 * (square.y + square.z); \
- (mpMatrix)->right.y = 2 * (cross.z + wimag.z); \
- (mpMatrix)->right.z = 2 * (cross.y - wimag.y); \
- \
- (mpMatrix)->up.x = 2 * (cross.z - wimag.z); \
- (mpMatrix)->up.y = 1 - 2 * (square.x + square.z); \
- (mpMatrix)->up.z = 2 * (cross.x + wimag.x); \
- \
- (mpMatrix)->at.x = 2 * (cross.y + wimag.y); \
- (mpMatrix)->at.y = 2 * (cross.x - wimag.x); \
- (mpMatrix)->at.z = (1 - 2 * (square.x + square.y)); \
- \
- /* Set position */ \
- (mpMatrix)->pos.x = ((RwReal) 0); \
- (mpMatrix)->pos.y = ((RwReal) 0); \
- (mpMatrix)->pos.z = ((RwReal) 0); \
- \
- /* Matrix is orthonormal */ \
- rwMatrixSetFlags((mpMatrix), \
- (rwMATRIXTYPEORTHONORMAL & \
- ~rwMATRIXINTERNALIDENTITY) ); \
-} \
-MACRO_STOP
-
-#if (! ( defined(RWDEBUG) || defined(RWSUPPRESSINLINE) ))
-
-#define RtQuatInit( result, _x, _y, _z, _w) \
- RtQuatInitMacro( result, _x, _y, _z, _w)
-
-#define RtQuatAssign( to, from ) \
- RtQuatAssignMacro( to, from )
-
-#define RtQuatAdd( result, q1, q2 ) \
- RtQuatAddMacro( result, q1, q2 )
-
-#define RtQuatIncrementRealPart(result, s, q) \
- RtQuatIncrementRealPartMacro(result, s, q)
-
-#define RtQuatDecrementRealPart(result, s, q) \
- RtQuatDecrementRealPartMacro(result, s, q)
-
-#define RtQuatIncrement( result, dq ) \
- RtQuatIncrementMacro( result, dq )
-
-#define RtQuatSub( result, q1, q2 ) \
- RtQuatSubMacro( result, q1, q2 )
-
-#define RtQuatNegate( result, q ) \
- RtQuatNegateMacro( result, q )
-
-#define RtQuatConjugate( result, q) \
- RtQuatConjugateMacro( result, q)
-
-#define RtQuatScale(result, q, scale ) \
- RtQuatScaleMacro(result, q, scale )
-
-#define RtQuatModulusSquared( q ) \
- RtQuatModulusSquaredMacro( q )
-
-#define RtQuatMultiply( result, q1, q2) \
- RtQuatMultiplyMacro( result, q1, q2)
-
-#define RtQuatReciprocal( result, q) \
- RtQuatReciprocalMacro( result, q)
-
-#define RtQuatSquare( result, q ) \
- RtQuatSquareMacro( result, q )
-
-#define RtQuatSquareRoot( result, q ) \
- RtQuatSquareRootMacro( result, q )
-
-#define RtQuatLog( result, q ) \
- RtQuatLogMacro( result, q )
-
-#define RtQuatExp( result, q ) \
- RtQuatExpMacro( result, q )
-
-#define RtQuatPow( result, q, e ) \
- RtQuatPowMacro( result, q, e )
-
-#define RtQuatUnitLog( result, q ) \
- RtQuatUnitLogMacro( result, q )
-
-#define RtQuatUnitExp( result, q ) \
- RtQuatUnitExpMacro( result, q )
-
-#define RtQuatUnitPow( result, q, e ) \
- RtQuatUnitPowMacro( result, q, e )
-
-#define RtQuatConvertToMatrix(qpQuat, mpMatrix) \
- RtQuatConvertToMatrixMacro(qpQuat, mpMatrix)
-
-#define RtQuatUnitConvertToMatrix(qpQuat, mpMatrix) \
- RtQuatUnitConvertToMatrixMacro(qpQuat, mpMatrix)
-
-#endif /* (! ( defined(RWDEBUG) || defined(RWSUPPRESSINLINE) )) */
-
-/****************************************************************************
- Function prototypes
- */
-#ifdef __cplusplus
-extern "C"
-{
-#endif /* __cplusplus */
-
-extern RwBool
-RtQuatConvertFromMatrix(RtQuat * const qpQuat,
- const RwMatrix * const mpMatrix);
-
-extern RtQuat *
-RtQuatRotate(RtQuat * quat,
- const RwV3d * axis,
- RwReal angle,
- RwOpCombineType combineOp);
-
-extern const RtQuat *
-RtQuatQueryRotate(const RtQuat *quat,
- RwV3d * unitAxis,
- RwReal * angle);
-
-extern RwV3d *
-RtQuatTransformVectors(RwV3d * vectorsOut,
- const RwV3d * vectorsIn,
- const RwInt32 numPoints,
- const RtQuat *quat);
-
-extern RwReal
-RtQuatModulus(RtQuat * q);
-
-#if ( defined(RWDEBUG) || defined(RWSUPPRESSINLINE) )
-
-extern void
-RtQuatInit(RtQuat * result, RwReal x, RwReal y, RwReal z, RwReal w);
-
-extern void
-RtQuatAssign(RtQuat * to, RtQuat * from);
-
-extern void
-RtQuatAdd(RtQuat * result, RtQuat * q1, RtQuat * q2);
-
-extern void
-RtQuatIncrementRealPart(RtQuat * result, RwReal s, RtQuat * q);
-
-extern void
-RtQuatDecrementRealPart(RtQuat * result, RwReal s, RtQuat * q);
-
-extern void
-RtQuatIncrement(RtQuat * result, RtQuat * dq);
-
-extern void
-RtQuatSub(RtQuat * result, RtQuat * q1, RtQuat * q2);
-
-extern void
-RtQuatNegate(RtQuat * result, RtQuat * q);
-
-extern void
-RtQuatConjugate(RtQuat * result, RtQuat * q);
-
-extern void
-RtQuatScale(RtQuat * result, RtQuat * q, RwReal scale);
-
-extern RwReal
-RtQuatModulusSquared(RtQuat * q);
-
-extern void
-RtQuatMultiply(RtQuat * result, RtQuat * q1, RtQuat * q2);
-
-extern void
-RtQuatReciprocal(RtQuat * result, RtQuat * q);
-
-extern void
-RtQuatSquare(RtQuat * result, RtQuat * q);
-
-extern void
-RtQuatSquareRoot(RtQuat * result, RtQuat * q);
-
-extern void
-RtQuatLog(RtQuat * result, RtQuat * q);
-
-extern void
-RtQuatExp(RtQuat * result, RtQuat * q);
-
-extern void
-RtQuatPow(RtQuat * result, RtQuat * q, RwReal e);
-
-extern void
-RtQuatUnitLog(RtQuat * result, RtQuat * q);
-
-extern void
-RtQuatUnitExp(RtQuat * result, RtQuat * q);
-
-extern void
-RtQuatUnitPow(RtQuat * result, RtQuat * q, RwReal e);
-
-extern void
-RtQuatConvertToMatrix(const RtQuat * const qpQuat,
- RwMatrix * const mpMatrix);
-
-extern void
-RtQuatUnitConvertToMatrix(const RtQuat * const qpQuat,
- RwMatrix * const mpMatrix);
-
-#endif /* ( defined(RWDEBUG) || defined(RWSUPPRESSINLINE) ) */
-
-#ifdef __cplusplus
-}
-#endif /* __cplusplus */
-
-/*
- * Backwards compatibility code
- */
-
-typedef RtQuat RpQuat;
-
-#define RpAnimQuatConvertFromMatrix(qpQuat, mpMatrix) \
- RtQuatConvertFromMatrix(qpQuat, mpMatrix)
-
-#define RpAnimQuatConvertToMatrix(qpQuat,mpMatrix) \
- RtQuatUnitConvertToMatrix(qpQuat,mpMatrix)
-
-
-#endif /* RTQUAT_H */
-
diff --git a/rwsdk/include/d3d8/rtquat.rpe b/rwsdk/include/d3d8/rtquat.rpe
deleted file mode 100644
index e43bb50c..00000000
--- a/rwsdk/include/d3d8/rtquat.rpe
+++ /dev/null
@@ -1,645 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-enum e_rwdb_CriterionQuat
-{
-
-
-
- e_rwdb_CriterionQuatLAST = RWFORCEENUMSIZEINT
-};
-
-typedef enum e_rwdb_CriterionQuat e_rwdb_CriterionQuat;
-
-
diff --git a/rwsdk/include/d3d8/rtras.h b/rwsdk/include/d3d8/rtras.h
deleted file mode 100644
index 0a9064a8..00000000
--- a/rwsdk/include/d3d8/rtras.h
+++ /dev/null
@@ -1,54 +0,0 @@
-/***************************************************************************
- * *
- * Module : rtRAS.h *
- * *
- * Purpose : Load RAS format files *
- * *
- **************************************************************************/
-
-#ifndef RTRAS_H
-#define RTRAS_H
-
-/**
- * \defgroup rtras RtRAS
- * \ingroup rttool
- *
- * RAS/Sun Raster Fule Format Image Format Toolkit for RenderWare.
- *
- * See also http://www.sworks.com/hollasch/cgindex/formats/sunraster.html
- *
- */
-
-/****************************************************************************
- Includes
- */
-
-/*--- Include files ---*/
-#include "rwcore.h"
-
-#include "rtras.rpe" /* automatically generated header file */
-
-/****************************************************************************
- Function prototypes
- */
-
-#ifdef __cplusplus
-extern "C"
-{
-#endif /* __cplusplus */
-
-extern RwImage *RtRASImageWrite(RwImage * image,
- const RwChar * imageName);
-extern RwImage *RtRASImageRead(const RwChar * imageName);
-
-extern void _rwImageGammaUnCorrectArrayOfRGBA(RwRGBA * rgbaOut,
- RwRGBA * rgbaIn,
- RwInt32 numEls);
-
-#ifdef __cplusplus
-}
-#endif /* __cplusplus */
-
-/* RWPUBLICEND */
-
-#endif /* RTRAS_H */
diff --git a/rwsdk/include/d3d8/rtras.rpe b/rwsdk/include/d3d8/rtras.rpe
deleted file mode 100644
index 3398c3cc..00000000
--- a/rwsdk/include/d3d8/rtras.rpe
+++ /dev/null
@@ -1,629 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-enum e_rwdb_CriterionRAS
-{
-
-
-
- e_rwdb_CriterionRASLAST = RWFORCEENUMSIZEINT
-};
-
-typedef enum e_rwdb_CriterionRAS e_rwdb_CriterionRAS;
-
-
diff --git a/rwsdk/include/d3d8/rtray.h b/rwsdk/include/d3d8/rtray.h
deleted file mode 100644
index 4bf0a343..00000000
--- a/rwsdk/include/d3d8/rtray.h
+++ /dev/null
@@ -1,61 +0,0 @@
-/***************************************************************************
- * *
- * Module : rtray.h *
- * *
- * Purpose : Picking with rays *
- * *
- **************************************************************************/
-
-#ifndef RTRAY_H
-#define RTRAY_H
-
-/**
- * \defgroup rtray RtRay
- * \ingroup rttool
- *
- * Line Toolkit for RenderWare.
- */
-
-/****************************************************************************
- Includes
- */
-
-#include "rwcore.h"
-#include "rtray.rpe" /* automatically generated header file */
-
-/****************************************************************************
- Defines
- */
-
-
- /****************************************************************************
- Global Types
- */
-
-
-/* RWPUBLIC */
-/****************************************************************************
- Function prototypes
- */
-
-#ifdef __cplusplus
-extern "C"
-{
-#endif /* __cplusplus */
-
-/* Line intersections */
-extern RwReal RtLineTriangleIntersectionTest(RwLine *line, RwV3d *normal,
- RwV3d *v0, RwV3d *v1, RwV3d *v2);
-extern RwReal RtLineSphereIntersectionTest(RwLine *line, RwSphere *sphere);
-
-/* Line clipping */
-extern RwLine *RtLineClipPlane(RwLine *line, RwPlane *plane);
-extern RwLine *RtLineClipBBox(RwLine *line, RwBBox *box);
-
-#ifdef __cplusplus
-}
-#endif /* __cplusplus */
-
-/* RWPUBLICEND */
-
-#endif /* RTRAY_H */
diff --git a/rwsdk/include/d3d8/rtray.rpe b/rwsdk/include/d3d8/rtray.rpe
deleted file mode 100644
index 27788d94..00000000
--- a/rwsdk/include/d3d8/rtray.rpe
+++ /dev/null
@@ -1,628 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-enum e_rwdb_CriterionRay
-{
-
-
-
- e_rwdb_CriterionRayLAST = RWFORCEENUMSIZEINT
-};
-
-typedef enum e_rwdb_CriterionRay e_rwdb_CriterionRay;
-
-
diff --git a/rwsdk/include/d3d8/rtslerp.h b/rwsdk/include/d3d8/rtslerp.h
deleted file mode 100644
index ec41752c..00000000
--- a/rwsdk/include/d3d8/rtslerp.h
+++ /dev/null
@@ -1,262 +0,0 @@
-/*
- * Data Structures for Slerps/Spherical Linear Interpolations
- * See also GemsIII/quatspin.c in
- * http://www.acm.org/pubs/tog/GraphicsGems/gemsiii.zip
- * Copyright (c) Criterion Software Limited
- */
-
-/***************************************************************************
- * *
- * Module : rtslerp.h *
- * *
- * Purpose : Slerp functionality *
- * *
- **************************************************************************/
-
-#ifndef RTSLERP_H
-#define RTSLERP_H
-
-/**
- * \defgroup rtslerp RtSlerp
- * \ingroup rttool
- *
- * Slerp/Spherical Linear Interpolations Toolkit for RenderWare.
- *
- * See also http://www.cis.ohio-state.edu/~parent/book/Full.html
- */
-
-#include "rwcore.h"
-#include "rtquat.h"
-
-/****************************************************************************
- Includes
- */
-
-#include "rtslerp.rpe" /* automatically generated header file */
-
-/****************************************************************************
- Defines
- */
-
-/* Masks for specifying which matrices to store by reference */
-#define rtSLERPREFNONE 0x00
-#define rtSLERPREFSTARTMAT 0x01
-#define rtSLERPREFENDMAT 0x02
-#define rtSLERPREFALL (~rtSLERPREFNONE)
-
-/****************************************************************************
- Global Types
- */
-
-
-typedef struct RtSlerp RtSlerp;
-/**
- * \ingroup rtslerp
- * \struct RtSlerp
- * structure describing a Slerps/Spherical Linear Interpolations.
- * See also GemsIII/quatspin.c in
- * http://www.acm.org/pubs/tog/GraphicsGems/gemsiii.zip
- */
-struct RtSlerp
-{
- RwInt32 matRefMask; /**< Which matrices do we NOT own */
- RwMatrix *startMat; /**< The start matrix */
- RwMatrix *endMat; /**< The end matrix */
- RwV3d axis; /**< The axis of rotation for the slerp */
- RwReal angle; /**< The angle (in degrees) between src & dest */
-
- /* Though a slerp may be a bad idea and opting for a lerp is better */
- RwBool useLerp; /**< Do we want to use lerps? */
-};
-
-/* static frame sequence animation - contains no state */
-
-
-typedef struct RtQuatSlerpCache RtQuatSlerpCache;
-/**
- * \ingroup rtslerp
- * \struct RtQuatSlerpCache
- * structure describing a SlerpCache,
- * which should be initialized with \ref RtQuatSetupSlerpCache.
- */
-struct RtQuatSlerpCache
-{
- RtQuat raFrom; /**< Scaled initial quaternion */
- RtQuat raTo; /**< Scaled final quaternion */
- RwReal omega; /**< Angular displacement in radians */
- RwBool nearlyZeroOm; /**< Flags near-zero angular
- displacement*/
-};
-
-
-typedef struct RtQuatSlerpArgandCache RtQuatSlerpArgandCache;
-/**
- * \ingroup rtslerp
- * \struct RtQuatSlerpArgandCache
- * a structure describing
- * an Argand SlerpCache which should be
- * initialized with \ref RtQuatSetupSlerpArgandCache.
- * See http://www-groups.dcs.st-and.ac.uk/~history/Mathematicians/Argand.html
- * Jean Argand was an accountant and amateur mathematician.
- * He is famed for his geometrical interpretation of the complex numbers
- * where i is interpreted as a rotation through 90.
- */
-struct RtQuatSlerpArgandCache
-{
- RtQuat logTo; /**< field Logarithm of final quaternion */
- RtQuat logBase; /**< Logarithm of initial relative to final quaternion */
-};
-
-#define RtQuatSlerpMacro(qpResult, qpFrom, qpTo, rT, sCache) \
-MACRO_START \
-{ \
- if ((rT) <= ((RwReal) 0)) \
- { \
- /* t is before start */ \
- *(qpResult) = *(qpFrom); \
- } \
- else if (((RwReal) 1) <= (rT)) \
- { \
- \
- /* t is after end */ \
- *(qpResult) = *(qpTo); \
- } \
- else \
- { \
- /* ... so t must be in the interior then */ \
- /* Calc coefficients rSclFrom, rSclTo */ \
- RwReal rSclFrom = ((RwReal) 1) - (rT); \
- RwReal rSclTo = (rT); \
- \
- if (!((sCache)->nearlyZeroOm)) \
- { \
- /* Standard case: slerp */ \
- /* SLERPMESSAGE(("Neither nearly ZERO nor nearly PI")); */ \
- \
- rSclFrom *= (sCache)->omega; \
- RwSinMinusPiToPiMacro(rSclFrom, rSclFrom); \
- rSclTo *= (sCache)->omega; \
- RwSinMinusPiToPiMacro(rSclTo, rSclTo); \
- } \
- \
- /* Calc final values */ \
- RwV3dScaleMacro(&(qpResult)->imag, \
- &(sCache)->raFrom.imag, rSclFrom); \
- RwV3dIncrementScaledMacro(&(qpResult)->imag, \
- &(sCache)->raTo.imag, rSclTo); \
- (qpResult)->real = \
- ((sCache)->raFrom.real * rSclFrom) + \
- ((sCache)->raTo.real * rSclTo); \
- } \
-} \
-MACRO_STOP
-
-#define RtQuatSlerpArgandMacro(qpResult, qpFrom, qpTo, rT, sArgandCache) \
-MACRO_START \
-{ \
- if ((rT) <= ((RwReal) 0)) \
- { \
- /* t is before start */ \
- *(qpResult) = *(qpFrom); \
- } \
- else if (((RwReal) 1) <= (rT)) \
- { \
- /* t is after end */ \
- *(qpResult) = *(qpTo); \
- } \
- else \
- { \
- RtQuat logBlend; \
- \
- /* ... so t must be in the interior then */ \
- \
- logBlend.imag.x = \
- (sArgandCache)->logBase.imag.x + \
- (rT) * (sArgandCache)->logTo.imag.x; \
- logBlend.imag.y = \
- (sArgandCache)->logBase.imag.y + \
- (rT) * (sArgandCache)->logTo.imag.y; \
- logBlend.imag.z = \
- (sArgandCache)->logBase.imag.z + \
- (rT) * (sArgandCache)->logTo.imag.z; \
- logBlend.real = 0; \
- \
- RtQuatUnitExpMacro((qpResult), &logBlend); \
- \
- } \
-} \
-MACRO_STOP
-
-#if (! ( defined(RWDEBUG) || defined(RWSUPPRESSINLINE) ))
-
-#define RtQuatSlerp(qpResult, qpFrom, qpTo, rT, sCache) \
- RtQuatSlerpMacro(qpResult, qpFrom, qpTo, rT, sCache)
-
-#define RtQuatSlerpArgand(qpResult, qpFrom, qpTo, rT, sArgandCache) \
- RtQuatSlerpArgandMacro(qpResult, qpFrom, qpTo, rT, sArgandCache)
-
-#endif /* (! ( defined(RWDEBUG) || defined(RWSUPPRESSINLINE) )) */
-
-/****************************************************************************
- Function prototypes
- */
-
-#ifdef __cplusplus
-extern "C"
-{
-#endif /* __cplusplus */
-
-/* Creating and destroying slerps */
-
-extern RtSlerp *RtSlerpCreate(RwInt32 nMatRefMask);
-
-extern void RtSlerpDestroy(RtSlerp * spSlerp);
-
-/* setting up a slerp */
-extern RtSlerp *RtSlerpInitialize(RtSlerp * spSlerp,
- RwMatrix * mpMat1,
- RwMatrix * mpMat2);
-
-/* Get a matrix */
-extern RwMatrix *RtSlerpGetMatrix(RtSlerp * spSlerp,
- RwMatrix * mpResultMat,
- RwReal nDelta);
-
-/* Set if lerp or slerp */
-extern RtSlerp *RtSlerpSetLerp(RtSlerp * spSlerp,
- RwBool bUseLerp);
-
-extern void
-RtQuatSetupSlerpCache(RtQuat * qpFrom,
- RtQuat * qpTo,
- RtQuatSlerpCache * sCache);
-
-extern void
-RtQuatSetupSlerpArgandCache(RtQuat * qpFrom,
- RtQuat * qpTo,
- RtQuatSlerpArgandCache * sArgandCache);
-
-#if ( defined(RWDEBUG) || defined(RWSUPPRESSINLINE) )
-
-extern void
-RtQuatSlerp(RtQuat * qpResult,
- RtQuat * qpFrom,
- RtQuat * qpTo,
- RwReal rT,
- RtQuatSlerpCache * sCache);
-
-extern void
-RtQuatSlerpArgand(RtQuat * qpResult,
- RtQuat * qpFrom,
- RtQuat * qpTo,
- RwReal rT,
- RtQuatSlerpArgandCache * sArgandCache);
-
-#endif /* ( defined(RWDEBUG) || defined(RWSUPPRESSINLINE) ) */
-
-#ifdef __cplusplus
-}
-#endif /* __cplusplus */
-
-#endif /* RTSLERP_H */
-
diff --git a/rwsdk/include/d3d8/rtslerp.rpe b/rwsdk/include/d3d8/rtslerp.rpe
deleted file mode 100644
index 847ccb00..00000000
--- a/rwsdk/include/d3d8/rtslerp.rpe
+++ /dev/null
@@ -1,646 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-enum e_rwdb_CriterionSlerp
-{
-
-
-
- e_rwdb_CriterionSlerpLAST = RWFORCEENUMSIZEINT
-};
-
-typedef enum e_rwdb_CriterionSlerp e_rwdb_CriterionSlerp;
-
-
diff --git a/rwsdk/include/d3d8/rtsplpvs.h b/rwsdk/include/d3d8/rtsplpvs.h
deleted file mode 100644
index 38ae118f..00000000
--- a/rwsdk/include/d3d8/rtsplpvs.h
+++ /dev/null
@@ -1,65 +0,0 @@
-
-/***************************************************************************
- * *
- * Module : rtsplpvs.h *
- * *
- * Purpose : To generate pvs data for a world froma spline *
- * *
- **************************************************************************/
-
-#ifndef RTSPLINEPVS_H
-#define RTSPLINEPVS_H
-
-/**
- * \defgroup rtsplinepvs RtSplinePVS
- * \ingroup rttool
- *
- * Spline PVS Toolkit for RenderWare.
- */
-
-/****************************************************************************
- Includes
- */
-
-#include "rwcore.h"
-#include "rpworld.h"
-#include "rpspline.h"
-
-/* RWPUBLIC */
-
-/****************************************************************************
- Defines
- */
-
-/****************************************************************************
- Global Types
- */
-
-/****************************************************************************
- Function prototypes
- */
-
-
-#ifdef __cplusplus
-extern "C"
-{
-#endif /* __cplusplus */
-
-extern RpWorld *
-RtSplinePVSConstruct(RpWorld * world,
- RpSpline *spline, RwInt32 samples);
-
-#ifdef __cplusplus
-}
-#endif /* __cplusplus */
-
-/* RWPUBLICEND */
-
-/* for back compatibility */
-#define RtSplinePVSCreate(_world, _raster, _zraster, \
- _mindist, _maxdist, _spline, _samples) \
- RtSplinePVSConstruct(_world, \
- _spline, _samples)
-
-
-#endif /* RTSPLINEPVS_H */
diff --git a/rwsdk/include/d3d8/rtsplpvs.rpe b/rwsdk/include/d3d8/rtsplpvs.rpe
deleted file mode 100644
index d436b610..00000000
--- a/rwsdk/include/d3d8/rtsplpvs.rpe
+++ /dev/null
@@ -1,628 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-enum e_rwdb_CriterionSplinePVS
-{
-
-
-
- e_rwdb_CriterionSplinePVSLAST = RWFORCEENUMSIZEINT
-};
-
-typedef enum e_rwdb_CriterionSplinePVS e_rwdb_CriterionSplinePVS;
-
-
diff --git a/rwsdk/include/d3d8/rttiff.h b/rwsdk/include/d3d8/rttiff.h
deleted file mode 100644
index 9dbf22c8..00000000
--- a/rwsdk/include/d3d8/rttiff.h
+++ /dev/null
@@ -1,47 +0,0 @@
-/***************************************************************************
- * *
- * Module : rttiff.h *
- * *
- * Purpose : Load TIFF format files *
- * *
- **************************************************************************/
-
-#ifndef RWTIFF_H
-#define RWTIFF_H
-
-/**
- * \defgroup rttiff RtTIFF
- * \ingroup rttool
- *
- * TIFF/Tag Image File Format Image Format Toolkit for RenderWare.
- *
- * See also http://www.libtiff.org
- */
-
-/****************************************************************************
- Includes
- */
-
-/*--- Include files ---*/
-#include "rwcore.h"
-
-#include "rttiff.rpe" /* automatically generated header file */
-
-/****************************************************************************
- Function prototypes
- */
-
-#ifdef __cplusplus
-extern "C"
-{
-#endif /* __cplusplus */
-
-extern RwImage *RtTIFFImageRead(const RwChar *imageName);
-
-#ifdef __cplusplus
-}
-#endif /* __cplusplus */
-
-/* RWPUBLICEND */
-
-#endif /* RWTIFF_H */
diff --git a/rwsdk/include/d3d8/rttiff.rpe b/rwsdk/include/d3d8/rttiff.rpe
deleted file mode 100644
index f82c7d82..00000000
--- a/rwsdk/include/d3d8/rttiff.rpe
+++ /dev/null
@@ -1,629 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-enum e_rwdb_CriterionTIFF
-{
-
-
-
- e_rwdb_CriterionTIFFLAST = RWFORCEENUMSIZEINT
-};
-
-typedef enum e_rwdb_CriterionTIFF e_rwdb_CriterionTIFF;
-
-
diff --git a/rwsdk/include/d3d8/rttilerd.h b/rwsdk/include/d3d8/rttilerd.h
deleted file mode 100644
index f11b703b..00000000
--- a/rwsdk/include/d3d8/rttilerd.h
+++ /dev/null
@@ -1,70 +0,0 @@
-/***************************************************************************
- * *
- * Module : rttilerd.h *
- * *
- * Purpose : Tile renderer *
- * *
- **************************************************************************/
-
-#ifndef RTTILERD_H
-#define RTTILERD_H
-
-/**
- * \defgroup rttilerender RtTileRender
- * \ingroup rttool
- *
- * Tile renderer - e.g. grabbing screen shots - Toolkit for RenderWare.
- */
-
-/****************************************************************************
- Includes
- */
-#include "rwcore.h"
-
-#include "rpcriter.h"
-
-/****************************************************************************
- Defines
- */
-
-/****************************************************************************
- Global Types
- */
-
-typedef RwCamera * (*RtTileRenderCallBack)(RwCamera *camera,
- RwInt32 x, RwInt32 y,
- void *pData);
-
-typedef RwImage * (*RtTileArchiveCallBack)(RwImage *image,
- RwInt32 x, RwInt32 y,
- void *pData);
-
-/****************************************************************************
- Function prototypes
- */
-
-#ifdef __cplusplus
-extern "C"
-{
-#endif /* __cplusplus */
-
-/* Tile renderer */
-
-extern RwCamera *
-RtTileRender(RwCamera *camera,
- RwInt32 imageWidth, RwInt32 imageHeight,
- RwInt32 tileWidth, RwInt32 tileHeight,
- RtTileRenderCallBack renderCallBack,
- RtTileArchiveCallBack archiveCallBack,
- void *pData);
-
-extern RwImage *
-RtTileDefaultArchive(RwImage *image,
- RwInt32 x, RwInt32 y, void *pData);
-
-
-#ifdef __cplusplus
-}
-#endif /* __cplusplus */
-
-#endif /* RTTILERD_H */
diff --git a/rwsdk/include/d3d8/rttilerd.rpe b/rwsdk/include/d3d8/rttilerd.rpe
deleted file mode 100644
index 78222d06..00000000
--- a/rwsdk/include/d3d8/rttilerd.rpe
+++ /dev/null
@@ -1,629 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-enum e_rwdb_CriterionTileRend
-{
-
-
-
- e_rwdb_CriterionTileRendLAST = RWFORCEENUMSIZEINT
-};
-
-typedef enum e_rwdb_CriterionTileRend e_rwdb_CriterionTileRend;
-
-
diff --git a/rwsdk/include/d3d8/rttoc.h b/rwsdk/include/d3d8/rttoc.h
deleted file mode 100644
index 02893aa8..00000000
--- a/rwsdk/include/d3d8/rttoc.h
+++ /dev/null
@@ -1,99 +0,0 @@
-/***************************************************************************
- * *
- * Module : rttoc.h *
- * *
- * Purpose : Table Of Contents (TOC) *
- * *
- **************************************************************************/
-
-#ifndef RTTOC_H
-#define RTTOC_H
-
-/**
- * \defgroup rttoc RtTOC
- * \ingroup rttool
- *
- * Table Of Contents (TOC) - e.g. creating a TOC for a RwStream.
- */
-
-/****************************************************************************
- Includes
- */
-#include "rwcore.h"
-
-#include "rpcriter.h"
-
-/****************************************************************************
- Defines
- */
-
-/****************************************************************************
- Global Types
- */
-
-typedef struct _rtTOCGUID _rtTOCGUID;
-struct _rtTOCGUID
-{
- RwUInt32 data1;
- RwUInt16 data2;
- RwUInt16 data3;
- RwUInt8 data4[8];
-};
-
-typedef struct RtTOCEntry RtTOCEntry;
-/**
- * \ingroup rttoc
- * \struct RtTOCEntry
- *
- * BLAH
- */
-struct RtTOCEntry
-{
- RwCorePluginID id; /**< Chunk ID */
- RwUInt32 offset;/**< Offset of chunk from the start of the file
- * including TOC */
- _rtTOCGUID guid; /**< GUID */
-};
-
-typedef struct RtTOC RtTOC;
-
-/**
- * \ingroup rttoc
- * \struct RtTOC
- *
- * BLAH
- */
-struct RtTOC
-{
- RwInt32 numEntries; /**< Number of entries*/
- RtTOCEntry entry[1]; /**< Entry*/
-};
-
-/****************************************************************************
- Function prototypes
- */
-
-#ifdef __cplusplus
-extern "C"
-{
-#endif /* __cplusplus */
-
-/* Create/Destroy */
-extern RtTOC *RtTOCCreate(RwStream *stream);
-extern void RtTOCDestroy(RtTOC *toc);
-
-/* Access */
-extern RwInt32 RtTOCGetNumEntries(const RtTOC *toc);
-extern RtTOCEntry *RtTOCGetEntry(RtTOC *toc, RwInt32 entry);
-
-/* Serialization */
-extern RwUInt32 RtTOCStreamGetSize(const RtTOC *toc);
-extern const RtTOC *RtTOCStreamWrite(RtTOC *toc, RwStream *stream);
-extern RtTOC *RtTOCStreamRead(RwStream *stream);
-
-
-#ifdef __cplusplus
-}
-#endif /* __cplusplus */
-
-#endif /* RTTOC_H */
diff --git a/rwsdk/include/d3d8/rttoc.rpe b/rwsdk/include/d3d8/rttoc.rpe
deleted file mode 100644
index 796f8de5..00000000
--- a/rwsdk/include/d3d8/rttoc.rpe
+++ /dev/null
@@ -1,629 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-enum e_rwdb_CriterionTOC
-{
-
-
-
- e_rwdb_CriterionTOCLAST = RWFORCEENUMSIZEINT
-};
-
-typedef enum e_rwdb_CriterionTOC e_rwdb_CriterionTOC;
-
-
diff --git a/rwsdk/include/d3d8/rtvcat.h b/rwsdk/include/d3d8/rtvcat.h
deleted file mode 100644
index 474095e1..00000000
--- a/rwsdk/include/d3d8/rtvcat.h
+++ /dev/null
@@ -1,38 +0,0 @@
-
-/***************************************************************************
- * *
- * Module : rtvcat.h *
- * *
- * Purpose : Tristripping callback for vertex cache aware strips *
- * *
- **************************************************************************/
-
-#ifndef RTVCAT_H
-#define RTVCAT_H
-
-/****************************************************************************
- Includes
- */
-
-/*--- Include files ---*/
-#include "rwcore.h"
-
-#include "rtvcat.rpe" /* automatically generated header file */
-
-/****************************************************************************
- Function prototypes
- */
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-extern RpMeshHeader *
-RpBuildMeshGenerateCacheAwareTriStrip(RpBuildMesh *buildMesh,
- void *data);
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* RTVCAT_H */
diff --git a/rwsdk/include/d3d8/rtvcat.rpe b/rwsdk/include/d3d8/rtvcat.rpe
deleted file mode 100644
index 464ca886..00000000
--- a/rwsdk/include/d3d8/rtvcat.rpe
+++ /dev/null
@@ -1,629 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-enum e_rwdb_CriterionVextexCacheStrip
-{
-
-
-
- e_rwdb_CriterionVextexCacheStripLAST = RWFORCEENUMSIZEINT
-};
-
-typedef enum e_rwdb_CriterionVextexCacheStrip e_rwdb_CriterionVextexCacheStrip;
-
-
diff --git a/rwsdk/include/d3d8/rtworld.h b/rwsdk/include/d3d8/rtworld.h
deleted file mode 100644
index fef3e17c..00000000
--- a/rwsdk/include/d3d8/rtworld.h
+++ /dev/null
@@ -1,85 +0,0 @@
-/*
- * World toolkit.
- */
-/***************************************************************************
- * *
- * Module : rtworld.h *
- * *
- * Purpose : World tool helper functions header *
- * *
- **************************************************************************/
-
-#ifndef RTWORLD_H
-#define RTWORLD_H
-
-/**
- * \defgroup rtworld RtWorld
- * \ingroup rttool
- *
- * World Import Toolkit for RenderWare.
- */
-
-/****************************************************************************
- Includes
- */
-
-#include "rpworld.h"
-
-#include "rtworld.rpe" /* automatically generated header file */
-
-/****************************************************************************
- Defines
- */
-
-/* RWPUBLIC */
-/****************************************************************************
- Global Types
- */
-
-/* RWPUBLICEND */
-
-/****************************************************************************
- Exported globals
- */
-
-/* RWPUBLIC */
-/****************************************************************************
- Function prototypes
- */
-
-#ifdef __cplusplus
-extern "C"
-{
-#endif /* __cplusplus */
-
-/* Get the number of various things in the world */
-extern RwInt32 RtWorldGetNumWorldSectors(RpWorld *world);
-extern RwInt32 RtWorldGetNumVertices(RpWorld *world);
-extern RwInt32 RtWorldGetNumPolygons(RpWorld *world);
-
-/* Find things out about materials in the world */
-extern RwInt32 RtWorldFindMaterialNum(RpWorld *world, RpMaterial *material);
-extern RpMaterial *RtWorldFindMaterialWithTextureName(RpWorld *world, RwChar *name);
-
-/* Optimisation functions in optimise.c */
-extern RpClump *RtClumpOptimize(RpClump *clump, RwReal dist);
-extern RpAtomic *RtAtomicOptimize(RpAtomic *atomic, RwReal dist);
-
-/*
- * This function has been removed, however it still exists as a stealth
- * function, _rtGeometryOptimize.
- */
-#define RtGeometryOptimize(geometry, dist) (geometry)
-
-extern RpGeometry *_rtGeometryOptimize(RpGeometry *geometry, RwReal dist);
-
-/* Import utility functions from imputil.c */
-extern RpGeometry *RtGeometryCalculateVertexNormals(RpGeometry *geometry);
-
-#ifdef __cplusplus
-}
-#endif /* __cplusplus */
-
-/* RWPUBLICEND */
-
-#endif /* RWTLWRLD_H */
diff --git a/rwsdk/include/d3d8/rtworld.rpe b/rwsdk/include/d3d8/rtworld.rpe
deleted file mode 100644
index bc20947e..00000000
--- a/rwsdk/include/d3d8/rtworld.rpe
+++ /dev/null
@@ -1,628 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-enum e_rwdb_CriterionTlWorld
-{
-
-
-
- e_rwdb_CriterionTlWorldLAST = RWFORCEENUMSIZEINT
-};
-
-typedef enum e_rwdb_CriterionTlWorld e_rwdb_CriterionTlWorld;
-
-
diff --git a/rwsdk/include/d3d8/rwcore.h b/rwsdk/include/d3d8/rwcore.h
deleted file mode 100644
index b9214c63..00000000
--- a/rwsdk/include/d3d8/rwcore.h
+++ /dev/null
@@ -1,4791 +0,0 @@
-/******************************************/
-/* */
-/* 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) 1999. Criterion Software Ltd.
- * All Rights Reserved.
- */
-
-/*************************************************************************
- *
- * Filename: <C:/daily/rwsdk/include/d3d8/rwcore.h>
- * Automatically Generated on: Wed Jul 10 10:45:00 2002
- *
- ************************************************************************/
-
-#ifndef RWCORE_H
-#define RWCORE_H
-
-/*--- System Header Files ---*/
-#include <rwplcore.h>
-
-
-/*--- Automatically derived from: C:/daily/rwsdk/driver/common/barwasmm.h ---*/
-
-/*--- Automatically derived from: C:/daily/rwsdk/src/pipe/p2/p2resort.h ---*/
-
-/*--- Automatically derived from: C:/daily/rwsdk/src/pipe/p2/p2macros.h ---*/
-
-#define RxClusterDecCursorByStride(_cluster, _stride) \
- ((_cluster)->currentData = \
- (void *)(((RwUInt8 *)(_cluster)->currentData) - \
- (_stride)))
-
-#define RxClusterDecCursor(_cluster) \
- RxClusterDecCursorByStride(_cluster, (_cluster)->stride)
-
-#define RxClusterIncCursorByStride(_cluster, _stride) \
- ((_cluster)->currentData = \
- (void *)(((RwUInt8 *)(_cluster)->currentData) + \
- (_stride)))
-
-#define RxClusterIncCursor(_cluster) \
- RxClusterIncCursorByStride(_cluster, (_cluster)->stride)
-
-#define RxClusterResetCursor(_cluster) \
- ((_cluster)->currentData = (_cluster)->data)
-
-#define RxClusterGetCursorData(_cluster, _type) \
- ((_type *)(_cluster)->currentData)
-
-#define RxClusterGetIndexedData(_cluster, _type, _index) \
- ((_type *)(((RwUInt8 *)(_cluster)->data) + (_cluster)->stride*(_index)))
-
-#define RxClusterGetFreeIndex(_cluster) ( (_cluster)->numUsed++ )
-
-#define RxPipelineClusterAssertAttributeSet(_cluster, _attributeSet) \
- RWASSERT( (_cluster)->clusterRef->attributeSet != NULL && \
- rwstrcmp((_cluster)->clusterRef->attributeSet, \
- (_attributeSet)) == 0 )
-
-#define RxPipelineNodeParamGetData(_param) \
- ( (_param)->dataParam )
-
-#define RxPipelineNodeParamGetHeap(_param) \
- ( (_param)->heap )
-
-
-
-/*--- Automatically derived from: C:/daily/rwsdk/src/pipe/p2/p2heap.h ---*/
-
-#if (defined(RWDEBUG) && (defined(RWMEMDEBUG)))
-
-#if (!defined(DISABLERWHEAP))
-#define DISABLERWHEAP
-#endif /* (!defined(DISABLERWHEAP)) */
-
-#endif /* (defined(RWDEBUG) && (defined(RWMEMDEBUG))) */
-
-typedef struct rxHeapFreeBlock rxHeapFreeBlock;
-typedef struct rxHeapSuperBlockDescriptor rxHeapSuperBlockDescriptor;
-typedef struct RxHeap RxHeap;
-typedef struct rxHeapBlockHeader rxHeapBlockHeader;
-
-struct rxHeapFreeBlock
-{
- RwUInt32 size;
- rxHeapBlockHeader *ptr;
-};
-
-struct rxHeapSuperBlockDescriptor
-{
- void *start;
- RwUInt32 size;
- rxHeapSuperBlockDescriptor *next;
-};
-
-/**
- * \ingroup rwcoregeneric
- * \struct RxHeap
- * structure describing a pipeline execution heap
- */
-struct RxHeap
-{
- RwUInt32 superBlockSize; /**< Granularity of heap growth */
- rxHeapSuperBlockDescriptor *head; /**< Internally used superblock pointer */
- rxHeapBlockHeader *headBlock; /**< Internally used block pointer */
- rxHeapFreeBlock *freeBlocks; /**< Internally used free blocks pointer */
- RwUInt32 entriesAlloced; /**< Number of entries allocated */
- RwUInt32 entriesUsed; /**< Number of entries used */
- RwBool dirty; /**< Internally used boolean, flags whether
- * the heap needs resetting or not. */
-};
-
-struct rxHeapBlockHeader
-{
- /* present in all blocks (used & unused) */
- rxHeapBlockHeader *prev, *next;
- RwUInt32 size;
- rxHeapFreeBlock *freeEntry; /* (or null) */
- RwUInt32 pad[4]; /* alignment padding to 32 bytes */
-};
-
-/* This wrapper cheaply early-outs when a heap doesn't *need* resetting */
-#define RxHeapReset(heap) \
- ((FALSE == (heap)->dirty) ? (TRUE) : (_rxHeapReset(heap)))
-
-#ifdef __cplusplus
-extern "C"
-{
-#endif /* __cplusplus */
-
-extern RxHeap *RxHeapCreate(RwUInt32 size);
-extern void RxHeapDestroy(RxHeap * heap);
-extern RwBool _rxHeapReset(RxHeap * heap);
-extern void *RxHeapAlloc(RxHeap * heap, RwUInt32 size);
-extern void RxHeapFree(RxHeap * heap, void *block);
-extern void *RxHeapRealloc(RxHeap * heap, void *block,
- RwUInt32 newSize, RwBool allowCopy);
-
-#ifdef __cplusplus
-}
-#endif /* __cplusplus */
-
-#if (defined(DISABLERWHEAP))
-
-typedef struct rxHeapMallocTrace rxHeapMallocTrace;
-struct rxHeapMallocTrace
-{
- rxHeapMallocTrace *next;
- rxHeapBlockHeader *block;
-};
-
-#endif /* (defined(DISABLERWHEAP)) */
-
-
-/*--- Automatically derived from: C:/daily/rwsdk/src/pipe/p2/p2dep.h ---*/
-
-/*--- Automatically derived from: C:/daily/rwsdk/src/pipe/p2/p2core.h ---*/
-
-extern RwInt32 _rxPipelineMaxNodes;
-extern RwInt32 _rxHeapInitialSize;
-/* LEGACY-SUPPORT MACRO */
-#define _rwRxHeapInitialSize _rxHeapInitialSize
-
-/* Beneficial padding of PowerPipe types is still being worked out... */
-#define PADCLUSTERSx
-
-
-/*************************************************************
- * Global Defines
- */
-
-#define RWBOOLTOGGLE(bVar) ((bVar == FALSE)?(bVar = TRUE):(bVar = FALSE))
-
-/* Both these currently limited due to the use of RwUInt32 bit-fields */
-#define RXNODEMAXCLUSTERSOFINTEREST 32
-#define RXNODEMAXOUTPUTS 32
-
-/* Useful (for memory alloc) to limit this during pipeline construction */
-#define RXPIPELINEDEFAULTMAXNODES 64
-
-/*
- * Cluster flags
- */
-
-#define rxCLFLAGS_NULL ((RwUInt16) 0x0000U)
-#define rxCLFLAGS_CLUSTERVALID ((RwUInt16) 0x0001U)
-#define rxCLFLAGS_EXTERNAL ((RwUInt16) 0x0002U)
-#define rxCLFLAGS_EXTERNALMODIFIABLE ((RwUInt16) 0x0004U | 0x0002U)
-#define rxCLFLAGS_MODIFIED ((RwUInt16) 0x0008U)
-
-/*
- * Packet flags
- */
-
-#define rxPKFLAGS_NULL ((RwUInt16) 0x0000U)
-
-/*
- * used in input specification
- */
-
-/**
- * \ingroup rwcoregeneric
- * \ref RxClusterValidityReq
- * Flags specifying the state requirements for
- * a \ref RxCluster on entry to a node */
-enum RxClusterValidityReq
-{
- rxCLREQ_DONTWANT = 0, /**<The cluster is required but any data within it is
- * not wanted and will be overwritten */
- rxCLREQ_REQUIRED = 1, /**<The cluster is required and it must contain
- * valid data */
- rxCLREQ_OPTIONAL = 2, /**<The cluster will be used if it is present and
- * contains valid data, otherwise the node will
- * make do without it. */
- rxCLUSTERVALIDITYREQFORCEENUMSIZEINT = RWFORCEENUMSIZEINT
-};
-
-
-/**
- * \ingroup rwcoregeneric
- * \ref RxClusterValid
- * Flags specifying the state requirements for
- * a \ref RxCluster on exit from a node */
-enum RxClusterValid
-{
- rxCLVALID_NOCHANGE = 0, /**<The cluster and its data will not change in
- * validity on passing through this node */
- rxCLVALID_VALID = 1, /**<The cluster and its data will be valid on
- * exit from this node */
- rxCLVALID_INVALID = 2, /**<The cluster's data will be invalid on
- * exit from this node */
- rxCLUSTERVALIDFORCEENUMSIZEINT = RWFORCEENUMSIZEINT
-};
-
-/****************************************************************************
- Global Types
- */
-
-typedef struct RxClusterDefinition RxClusterDefinition;
-
-typedef struct rxReq rxReq;
-
-typedef enum RxClusterValidityReq RxClusterValidityReq;
-typedef enum RxClusterValid RxClusterValid;
-typedef struct RxOutputSpec RxOutputSpec;
-typedef struct RxClusterRef RxClusterRef;
-typedef struct RxIoSpec RxIoSpec;
-
-typedef struct RxNodeMethods RxNodeMethods;
-typedef struct RxNodeDefinition RxNodeDefinition;
-
-typedef struct RxCluster RxCluster;
-typedef struct RxPipelineCluster RxPipelineCluster;
-typedef struct RxPacket RxPacket;
-typedef struct RxPipelineNode RxPipelineNode;
-typedef struct RxPipelineNodeTopSortData RxPipelineNodeTopSortData;
-typedef struct RxPipelineNode RxPipelineNodeInstance;
-typedef struct RxPipelineNodeParam RxPipelineNodeParam;
-typedef struct RxExecutionContext RxExecutionContext;
-typedef struct RxPipelineRequiresCluster RxPipelineRequiresCluster;
-typedef struct RxPipeline RxPipeline;
-
-/***************************************************************************
- *
- * C L U S T E R D E F I N I T I O N
- *
- ***************************************************************************/
-
-/**
- * \ingroup rwcoregeneric
- * \struct RxClusterDefinition
- * Structure describing a cluster */
-struct RxClusterDefinition
-{
- RwChar *name; /**< Name */
- RwUInt32 defaultStride; /**< Default stride */
- RwUInt32 defaultAttributes; /**< Default attributes */
- const RwChar *attributeSet; /**< Attribute set */
-};
-
-
-/***************************************************************************
- *
- * N O D E D E F I N I T I O N S T R U C T S
- *
- ***************************************************************************/
-
-/**
- * \ingroup rwcoregeneric
- * \struct RxOutputSpec
- * Structure describing an output specification of a node */
-struct RxOutputSpec
-{
- RwChar *name; /**< Name */
- RxClusterValid *outputClusters; /**< States of clusters of interest on output */
- RxClusterValid allOtherClusters; /**< States of clusters not of interest on output */
-};
-
-
-
-/**
- * \ingroup rwcoregeneric
- * \ref RxClusterForcePresent
- * Flags specifying whether an \ref RxCluster
- * should be forced to be present in an \ref RxPipelineNode */
-enum RxClusterForcePresent
-{
- rxCLALLOWABSENT = FALSE, /**<The cluster is allowed to be absent if no prior
- * nodes create it and no subsequent nodes require it */
- rxCLFORCEPRESENT = TRUE, /**<The cluster must be present even if no prior
- * nodes create it and no subsequent nodes require it */
-
- rxCLUSTERFORCEPRESENTFORCEENUMSIZEINT = RWFORCEENUMSIZEINT
-};
-typedef enum RxClusterForcePresent RxClusterForcePresent;
-
-/**
- * \ingroup rwcoregeneric
- * \struct RxClusterRef
- * Structure describing a cluster reference */
-struct RxClusterRef
-{
- RxClusterDefinition *clusterDef; /**< Cluster definition */
- RxClusterForcePresent forcePresent; /**< Specifies whether the cluster should be forced present */
- RwUInt32 reserved; /**< Omit or initialize to zero */
-};
-
-#define rxCLRESERVED ((RwUInt32)0)
-
-/**
- * \ingroup rwcoregeneric
- * \struct RxIoSpec
- * Structure describing an input/output specification of a node */
-struct RxIoSpec
-{
- RwUInt32 numClustersOfInterest;/**< Number of Clusters of interest */
- RxClusterRef *clustersOfInterest; /**< Clusters of interest array */
- RxClusterValidityReq *inputRequirements; /**< Requirements of the clusters of interest on input to the node */
- RwUInt32 numOutputs; /**< Number of outputs from the node */
- RxOutputSpec *outputs; /**< Output specification array */
-};
-
-/**
- * \ingroup rwcoregeneric
- * \typedef RxNodeBodyFn
- * is the callback to be
- * called during pipeline execution -- and, typically, process
- * \ref RxPacket's -- for the owning pipeline node.
- *
- * \param self A pointer to the pipeline node being executed
- * \param params A pointer to a parameter structure
- *
- * \return TRUE on success, FALSE otherwise.
- *
- * \see RxNodeMethods
- */
-typedef RwBool (*RxNodeBodyFn) (RxPipelineNode * self,
- const RxPipelineNodeParam *params);
-
-/**
- * \ingroup rwcoregeneric
- * \typedef RxNodeInitFn
- * is the callback to be called,
- * for the owning node definition, the first time an \ref RxPipeline
- * referencing that node definition is unlocked.
- *
- * \param self A pointer to the node definition
- *
- * \return TRUE on success, FALSE otherwise.
- *
- * \see RxNodeMethods
- */
-typedef RwBool (*RxNodeInitFn) (RxNodeDefinition * self);
-
-/**
- * \ingroup rwcoregeneric
- * \typedef RxNodeTermFn
- * is the callback to be called,
- * for the owning node definition, the last time an \ref RxPipeline
- * referencing that node definition is destroyed or locked.
- *
- * \param self A pointer to the node definition
- *
- * \return None
- *
- * \see RxNodeMethods
- */
-typedef void (*RxNodeTermFn) (RxNodeDefinition * self);
-
-/**
- * \ingroup rwcoregeneric
- * \typedef RxPipelineNodeInitFn
- * is the callback to be called, for the owning pipeline node, whenever a
- * \ref RxPipeline containing that that pipeline node is unlocked.
- *
- * \param self A pointer to the pipeline node
- *
- * \return TRUE on success, FALSE otherwise.
- *
- * \see RxNodeMethods
- */
-typedef RwBool (*RxPipelineNodeInitFn) (RxPipelineNode * self);
-
-/**
- * \ingroup rwcoregeneric
- * \typedef RxPipelineNodeTermFn
- * is the callback to be called, for the owning pipeline node, whenever a
- * \ref RxPipeline containing that that pipeline node is locked or
- * destroyed.
- *
- * \param self A pointer to the pipeline node
- *
- * \return None
- *
- * \see RxNodeMethods
- */
-typedef void (*RxPipelineNodeTermFn) (RxPipelineNode * self);
-
-/**
- * \ingroup rwcoregeneric
- * \typedef RxPipelineNodeConfigFn
- * is the callback to be called, for the owning pipeline node, whenever a
- * \ref RxPipeline containing that that pipeline node is unlocked,
- * *after* all \ref RxPipelineNodeInitFn's have been called for the
- * pipeline in question. This func is to be used as described in
- * RxPipelineNodeSendConfigMsg.
- *
- * \param self A pointer to the pipeline node
- * \param pipeline A pointer to the containing pipeline
- *
- * \return TRUE on success, FALSE otherwise.
- *
- * \see RxNodeMethods
- */
-typedef RwBool (*RxPipelineNodeConfigFn) (RxPipelineNode * self,
- RxPipeline * pipeline);
-
-/* - removed from the API Reference January 2002 -
- typedef RxConfigMsgHandlerFn
- is the callback to be called, for the owning pipeline node, whenever
- a message is sent to it by the ref RxPipelineNodeConfigFn of another
- pipeline node in the same pipeline. See ref RxPipelineNodeSendConfigMsg.
-
- param self A pointer to the pipeline node
- param msg Message ID
- param intparam Meaning is message-specific
- param ptrparam Meaning is message-specific
-
- return A RwInt32 value, 0: unserviced; -ve: error; +ve: informative success
-
- see RxNodeMethods
- */
-typedef RwUInt32 (*RxConfigMsgHandlerFn) (RxPipelineNode * self,
- RwUInt32 msg,
- RwUInt32 intparam,
- void *ptrparam);
-
-/**
- * \ingroup rwcoregeneric
- * \struct RxNodeMethods
- * A structure describing a set
- * of node methods
- *
- * \see RxNodeBodyFn
- * \see RxNodeInitFn
- * \see RxNodeTermFn
- * \see RxPipelineNodeInitFn
- * \see RxPipelineNodeTermFn
- * \see RxPipelineNodeConfigFn
- * \see RxConfigMsgHandlerFn
- */
-struct RxNodeMethods
-{
- RxNodeBodyFn nodeBody; /**< Node body function */
- RxNodeInitFn nodeInit; /**< Node initialization function */
- RxNodeTermFn nodeTerm; /**< Node termination function */
- RxPipelineNodeInitFn pipelineNodeInit; /**< Pipeline node initialization function */
- RxPipelineNodeTermFn pipelineNodeTerm; /**< Pipeline node termination function */
- RxPipelineNodeConfigFn pipelineNodeConfig; /**< Pipleline node configuation function */
- RxConfigMsgHandlerFn configMsgHandler; /**< Configuaraton message handler function */
-};
-
-/**
- * \ingroup rwcoregeneric
- * \ref RxNodeDefEditable
- * Flags specifying whether an \ref RxNodeDefinition
- * is editable or not (\ref RxPipelineNodeCloneDefinition,
- * \ref RxPipelineNodeReplaceCluster and \ref RxPipelineNodeRequestCluster
- * create editable copies of node definitions as the originals may be
- * static definitions). */
-enum RxNodeDefEditable
-{
- /**<This node definition should not be freed */
- rxNODEDEFCONST = FALSE,
- /**< This node definition is a temporary,
- * modified copy of another and can be freed */
- rxNODEDEFEDITABLE = TRUE,
- rxNODEDEFEDITABLEFORCEENUMSIZEINT = RWFORCEENUMSIZEINT
-};
-typedef enum RxNodeDefEditable RxNodeDefEditable;
-
-/**
- * \ingroup rwcoregeneric
- * \struct RxNodeDefinition
- * A structure describing a node definition */
-struct RxNodeDefinition
-{
- RwChar *name; /**< Name */
- RxNodeMethods nodeMethods; /**< Node methods */
- RxIoSpec io; /**< Input/output specification */
- RwUInt32 pipelineNodePrivateDataSize; /**< Size in bytes of node's private data */
- RxNodeDefEditable editable; /**< Flags whether a node is editable */
- RwInt32 InputPipesCnt; /**< Count of the unlocked pipelines containing this node */
-};
-
-/***************************************************************************
- *
- * P I P E L I N E - E X E C U T I O N - T I M E S T R U C T S
- *
- ***************************************************************************/
-
-/**
- * \ingroup rwcoregeneric
- * \struct RxPipelineCluster
- * A structure describing a pipeline cluster;
- * that is, an \ref RxClusterDefinition in the context of a specific \ref RxPipeline
- * (in the same way as an \ref RxPipelineNode is an \ref RxNodeDefinition in the
- * context of a specific \ref RxPipeline). The \ref RxCluster is the structure
- * representing this and the \ref RxClusterDefinition within \ref RxPacket's at
- * pipeline-execution-time */
-struct RxPipelineCluster
-{
- RxClusterDefinition *clusterRef; /**< Cluster refererence */
- RwUInt32 creationAttributes; /**< Creation Attributes */
-};
-
-/**
- * \ingroup rwcoregeneric
- * \struct RxCluster
- * A structure describing a cluster; this is
- * the representative of an \ref RxClusterDefinition and \ref RxPipelineCluster
- * within \ref RxPacket's at pipeline-execution-time. */
-struct RxCluster
-{
- RwUInt16 flags; /**< Bitfield of flags e.g. modification permissions */
- RwUInt16 stride; /**< Stride in bytes of the cluster's data */
- void *data; /**< The Cluster's data */
- void *currentData; /**< A 'cursor', referencing the current element in the data */
- RwUInt32 numAlloced; /**< Allocated count */
- RwUInt32 numUsed; /**< Used count */
- RxPipelineCluster *clusterRef; /**< Valid after a cluster has been locked for writing,
- * otherwise NULL. Analog of \ref RxPipelineNode and
- * its 'nodeDef' member. */
- RwUInt32 attributes; /**< Attributes */
-#ifdef PADCLUSTERS
- RwUInt32 pad[1]; /**< Alignment padding */
-#endif
-};
-
-/**
- * \ingroup rwcoregeneric
- * \struct RxPacket
- * A structure describing a packet header */
-struct RxPacket
-{
- RwUInt16 flags; /**< Flags to guide pipeline execution */
- RwUInt16 numClusters; /**< Maximum number of clusters simultanesouly present in the current pipeline */
- RxPipeline *pipeline; /**< The pipeline in which this packet is embedded (the current pipeline) */
- RwUInt32 *inputToClusterSlot; /**< LUT to locate clusters of interest in the packet */
- RwUInt32 *slotsContinue; /**< Bitfields specifying clusters persisting to output node */
- RxPipelineCluster **slotClusterRefs; /**< Internal Use */
-#ifdef PADCLUSTERS
- RwUInt32 pad[3]; /**< Alignment padding */
-#endif
- RxCluster clusters[1]; /**< Cluster array large enough for widest part of the pipeline */
-};
-
-/**
- * \ingroup rwcoregeneric
- * \struct RxPipelineNode
- * Structure describing a pipeline Node;
- * that is an \ref RxNodeDefinition in the context
- * of a specific \ref RxPipeline.
- */
-struct RxPipelineNode
-{
- RxNodeDefinition *nodeDef; /**< Node definition reference */
- RwUInt32 numOutputs; /**< Output count */
- RwUInt32 *outputs; /**< Output array, indexing the pipeline's array of pipeline nodes */
- RxPipelineCluster **slotClusterRefs; /**< For packets passing through this node, SlotClusterRefs[n]
- * identifies the cluster to be found at index n in the packet's
- * Clusters[] array. These assignments are determined at pipeline
- * Unlock() time and are good for the life of the pipeline. */
- RwUInt32 *slotsContinue; /**< Cluster persistence table for the node's outputs */
- void *privateData; /**< Pointer to the pipeline Node's private data */
- RwUInt32 *inputToClusterSlot; /**< LUT to locate clusters of interest in packets passing through this pipeline Node */
- RxPipelineNodeTopSortData *topSortData; /**< Internal Use */
- void *initializationData; /**< Used by the pipeline node initialisation
- * function in setting up the Private data. */
- RwUInt32 initializationDataSize; /**< Present so that if the node is cloned
- * we can copy the initialisation data. */
-};
-
-/**
- * \ingroup rwcoregeneric
- * \struct RxPipelineNodeTopSortData
- * Structure describing data used during topological sorting
- * during \ref RxLockedPipeUnlock ;
- * RenderWare users do not need to understand this */
-struct RxPipelineNodeTopSortData
-{
- RwUInt32 numIns; /**< Input count */
- RwUInt32 numInsVisited; /**< Count of inputs visited during dependencies
- * propagation/cluster slot allocation */
- rxReq *req; /**< Req used in dependencies propagation/cluster
- * slot allocation */
-};
-
-/**
- * \ingroup rwcoregeneric
- * \struct RxPipelineNodeParam
- * Structure holding parameters
- * to pass to node body functions */
-struct RxPipelineNodeParam
-{
- void *dataParam; /**< The data pointer passed in to \ref RxPipelineExecute */
- RxHeap *heap; /**< The heap associated with the current pipeline exeuction */
-};
-
-enum rxEmbeddedPacketState
-{
- rxPKST_PACKETLESS = 0, /* Packet not created */
- rxPKST_UNUSED = 1, /* Packet created and then destroyed */
- rxPKST_INUSE = 2, /* Packet created but not yet destroyed and fetched but not yet dispatched */
- rxPKST_PENDING = 3, /* Packet created but not destroyed and dispatched but not yet fetched */
- rxEMBEDDEDPACKETSTATEFORCEENUMSIZEINT = RWFORCEENUMSIZEINT
-};
-typedef enum rxEmbeddedPacketState rxEmbeddedPacketState;
-
-/**
- * \ingroup rwcoregeneric
- * \struct RxExecutionContext
- * Structure describing an execution context */
-struct RxExecutionContext
-{
- RxPipeline *pipeline; /**< Currently executing pipeline */
- RxPipelineNode *currentNode; /**< Currently executing node */
- RwInt32 exitCode; /**< Used internally for nodes returning error codes on exit */
- RwUInt32 pad; /**< Alignment padding */
- RxPipelineNodeParam params; /**< The parameters passed to node bodies */
- /*RwUInt32 pad[2];*/
-};
-
-/**
- * \ingroup rwcoregeneric
- * \struct RxPipelineRequiresCluster
- * Structure describing a pipeline requirement of a cluster */
-struct RxPipelineRequiresCluster
-{
- RxClusterDefinition *clusterDef; /**< Reference to a Cluster definition */
- RxClusterValidityReq rqdOrOpt; /**< Cluster validity requirement (rxCLREQ_DONTWANT, rxCLREQ_REQUIRED or rxCLREQ_OPTIONAL) */
- RwUInt32 slotIndex; /**< Index into the packet's cluster array within this pipeline */
-};
-
-/**
- * \ingroup rwcoregeneric
- * \struct RxPipeline
- * Structure describing a pipeline */
-struct RxPipeline
-{
- RwBool locked; /**< Flags whether the pipeline is locked for editing */
- RwUInt32 numNodes; /**< Node count */
- RxPipelineNode *nodes; /**< Topologically sorted array of pipeline nodes */
- RwUInt32 packetNumClusterSlots; /**< Number of slots allocated for clusters */
- rxEmbeddedPacketState embeddedPacketState; /**< The state of this pipeline's embedded packet */
- RxPacket *embeddedPacket; /**< This pipeline's embedded packet */
-
- RwUInt32 numInputRequirements; /**< Input requirements count */
- RxPipelineRequiresCluster *inputRequirements; /**< Input requirements array */
-
- void *superBlock; /**< Internally used block of memory */
- RwUInt32 superBlockSize; /**< Internally used block of memory */
-
- RwUInt32 entryPoint; /**< The index of the node which is the entry point of this pipeline */
- RwUInt32 pluginId; /**< If required, the Id of the plugin owning this pipeline, or 0 */
- RwUInt32 pluginData; /**< Rights callback extra data */
-};
-
-/****************************************************************************
- * Global Prototypes
- */
-
-/**
- * \ingroup rwcoregeneric
- * \typedef RxPipelineNodeOutputCallBack
- * is the callback function supplied
- * to \ref RxPipelineNodeForAllConnectedOutputs.
- *
- * The callback will be passed a pointer to the \ref RxPipelineNode whose
- * outputs are being traversed and a pointer to the current output
- * \ref RxPipelineNode, as well as a pointer to an optional user-defined
- * data structure (callbackdata). If no such structure was specified, this
- * will be NULL.
- *
- * \param node A pointer to the pipeline node whose outputs
- * are being traversed
- * \param outputnode A pointer to the current output
- * pipeline node
- * \param callbackdata A pointer to optional user-supplied data
- *
- * \return Returns a pointer to the \ref RxPipelineNode whose outputs are being
- * traversed, or NULL to terminate traversal
- */
-typedef RxPipelineNode * (*RxPipelineNodeOutputCallBack) (RxPipelineNode * node,
- RxPipelineNode * outputnode,
- void *callbackdata);
-
-#ifdef RWDEBUG
-#define RXCHECKFORUSERTRAMPLING(_pipeline) \
- ( _rwPipelineCheckForTramplingOfNodePrivateSpace(_pipeline) )
-#endif /* RWDEBUG */
-
-#if (!defined(RXCHECKFORUSERTRAMPLING))
-#define RXCHECKFORUSERTRAMPLING(_pipeline) /* No op */
-#endif /* (!defined(RXCHECKFORUSERTRAMPLING)) */
-
-
-#ifdef __cplusplus
-extern "C"
-{
-#endif /* __cplusplus */
-
-extern RwBool
-_rxPipelineOpen(void);
-
-extern RwBool
-_rxPipelineClose(void);
-
-extern RwBool
-rxPipelinePluginsAttach(void);
-
-extern RxPipeline *
-RxPipelineCreate(void);
-
-
-extern void
-_rxPipelineDestroy(RxPipeline * Pipeline);
-
-#define _RxPipelineDestroy(_ppln) _rxPipelineDestroy(_ppln)
-#define RxPipelineDestroy(_ppln) (_rxPipelineDestroy(_ppln), TRUE)
-
-extern RxHeap *
-RxHeapGetGlobalHeap(void);
-
-extern RxPipeline *
-RxPipelineExecute(RxPipeline * pipeline,
- void * data,
- RwBool heapReset);
-
-extern RxPacket *
-RxPacketCreate(RxPipelineNode * node);
-
-extern RxCluster *
-RxClusterSetStride(RxCluster * cluster,
- RwInt32 stride);
-
-extern RxCluster *
-RxClusterSetExternalData(RxCluster * cluster,
- void *data,
- RwInt32 stride,
- RwInt32 numElements);
-
-extern RxCluster *
-RxClusterSetData(RxCluster * cluster,
- void *data,
- RwInt32 stride,
- RwInt32 numElements);
-
-/* underlying PacketDestroy function */
-extern void
-_rxPacketDestroy(RxPacket * Packet);
-
-/* more convenient parameterization */
-#define RxPacketDestroy(pk, self) \
- ( _rxPacketDestroy(pk) )
-
-#if (defined(RWDEBUG))
-extern RxPacket *RxPacketFetch(RxPipelineNode * Node);
-extern void RxPacketDispatch(RxPacket * packet,
- RwUInt32 output,
- RxPipelineNode * self);
-extern void RxPacketDispatchToPipeline(RxPacket * packet,
- RxPipeline * dest,
- RxPipelineNode * self);
-#else /* (defined(RWDEBUG)) */
-#define RxPacketFetch(_self) \
- rxPacketFetchMacro(_self)
-#define RxPacketDispatch( _packet, _output, _self) \
- rxPacketDispatchMacro(_packet, _output, _self)
-#define RxPacketDispatchToPipeline( _packet, _pipeline, _self) \
- rxPacketDispatchToPipelineMacro(_packet, _pipeline, _self)
-#endif /* (defined(RWDEBUG)) */
-
-#define RxClusterInitialiseData(_clstr, _nmlmnts, _strd) \
- ( RxClusterInitializeData((_clstr), (_nmlmnts), (_strd)) )
-extern RxCluster *
-RxClusterInitializeData(RxCluster *cluster, RwUInt32 numElements, RwUInt16 stride);
-
-extern RxCluster *
-RxClusterResizeData(RxCluster *CurrentCluster, RwUInt32 NumElements);
-
-extern RxCluster *
-RxClusterDestroyData(RxCluster *CurrentCluster);
-
-#if (defined(RWDEBUG))
-
-extern RxCluster *RxClusterLockRead(RxPacket * packet, RwUInt32 clusterIndex);
-
-#else /* !RWDEBUG */
-
-#define RXCLSLOT(PKT, CLIND) \
- ((PKT)->inputToClusterSlot[(CLIND)])
-
-#define RxClusterLockRead(PKT, CLIND) \
- ( (((RwInt32)RXCLSLOT(PKT, CLIND)) == -1) ? \
- ((RxCluster *)NULL) : \
- (RxClusterResetCursor(&PKT->clusters[RXCLSLOT(PKT, CLIND)]), \
- &PKT->clusters[RXCLSLOT(PKT, CLIND)]) )
-
-#endif /* !RWDEBUG */
-
-extern RxCluster *
-RxClusterLockWrite(RxPacket * packet,
- RwUInt32 clusterIndex,
- RxPipelineNode * node);
-
-extern void
-RxClusterUnlock(RxCluster * cluster);
-
-extern RwUInt32
-RxPipelineNodeSendConfigMsg(RxPipelineNode * dest,
- RwUInt32 msg,
- RwUInt32 intparam,
- void *ptrparam);
-
-extern RxPipelineNode *
-RxPipelineNodeForAllConnectedOutputs(RxPipelineNode * node,
- RxPipeline * pipeline,
- RxPipelineNodeOutputCallBack callbackfn,
- void *callbackdata);
-
-/* Cluster attributes api [pipeline construction time] */
-
-extern RxPipelineCluster *
-RxPipelineNodeGetPipelineCluster(RxPipelineNode *node,
- RwUInt32 clustersOfInterestIndex);
-
-extern RwUInt32
-RxPipelineClusterGetCreationAttributes(RxPipelineCluster *cluster);
-
-extern RxPipelineCluster *
-RxPipelineClusterSetCreationAttributes(RxPipelineCluster *cluster,
- RwUInt32 creationAttributes);
-
-/* Cluster attributes api [pipeline execution time] */
-
-extern RwUInt32
-RxClusterGetAttributes(RxCluster *cluster);
-
-extern RxCluster *
-RxClusterSetAttributes(RxCluster *cluster, RwUInt32 attributes);
-
-
-extern void
-_rxEmbeddedPacketBetweenPipelines(RxPipeline * fromPipeline,
- RxPipeline * toPipeline);
-
-extern RxPipelineNode *
-_rxEmbeddedPacketBetweenNodes(RxPipeline *pipeline,
- RxPipelineNode *nodeFrom,
- RwUInt32 whichOutput);
-
-extern RxExecutionContext _rxExecCtxGlobal;
-
-/* Summary of dispatch rules:
- * o nodes that never fetch are safe to dispatch NULL, whether
- * nodes above pass them a packet or not
- * o if you destroy the packet you can dispatch(NULL,,)
- * o if you fetch/create and dispatch(NULL), it doesn't really
- * matter - the packet'll get passed on anyway */
-
-/* TODO: there's currently no way to prematurely terminate the pipeline
- * without doing so as an error condition. You should create an
- * enum for the exit code, either RXNODEEXITCONTINUE, RXNODEEXITTERMINATE
- * or RXNODEEXTTERMINATEERROR and then test for RXNODEEXITCONTINUE in
- * the below macros rather than FALSE. */
-
-/* TODO: _packet redundant here... create a new macro and legacy wrapper */
-#define rxPacketDispatchMacro(_packet, _output, _self) \
-MACRO_START \
-{ \
- RxPipeline *curPipeline = _rxExecCtxGlobal.pipeline; \
- \
- /* _packet is now an obsolete parameter */ \
- \
- if ( FALSE != _rxExecCtxGlobal.exitCode ) \
- { \
- RxPipelineNode *nextNode = \
- _rxEmbeddedPacketBetweenNodes(curPipeline, \
- _self, \
- (_output)); \
- if ( nextNode != NULL ) \
- { \
- RwUInt32 exitCode = \
- nextNode->nodeDef->nodeMethods.nodeBody( \
- nextNode, &(_rxExecCtxGlobal.params)); \
- /* Don't overwrite 'error' with 'success' */ \
- if (FALSE == exitCode) _rxExecCtxGlobal.exitCode = exitCode; \
- } \
- } \
- if ( curPipeline->embeddedPacketState > rxPKST_UNUSED \
- /* !UNUSED and !PACKETLESS */ ) \
- { \
- curPipeline->embeddedPacketState = rxPKST_INUSE; \
- _rxPacketDestroy(curPipeline->embeddedPacket); \
- } \
-} \
-MACRO_STOP
-
-/* TODO: _self redundant here... create a new macro and legacy wrapper */
-#define rxPacketDispatchToPipelineMacro(_packet, _pipeline, _self) \
-MACRO_START \
-{ \
- RxPipeline *toPipeline = (_pipeline); \
- \
- /* _packet is now an obsolete parameter */ \
- \
- if ( FALSE != _rxExecCtxGlobal.exitCode ) \
- { \
- RwUInt32 exitCode; \
- RxPipeline *fromPipeline = _rxExecCtxGlobal.pipeline; /* save */ \
- _rxEmbeddedPacketBetweenPipelines(fromPipeline, \
- toPipeline); \
- _rxExecCtxGlobal.pipeline = toPipeline; /* modify */ \
- exitCode = \
- toPipeline->nodes[0].nodeDef->nodeMethods.nodeBody( \
- &toPipeline->nodes[0], &(_rxExecCtxGlobal.params)); \
- if ( FALSE == exitCode ) _rxExecCtxGlobal.exitCode = exitCode; \
- _rxExecCtxGlobal.pipeline = fromPipeline; /* restore */ \
- } \
- if ( toPipeline->embeddedPacketState > rxPKST_UNUSED \
- /* !UNUSED and !PACKETLESS */ ) \
- { \
- toPipeline->embeddedPacketState = rxPKST_INUSE; \
- _rxPacketDestroy(toPipeline->embeddedPacket); \
- } \
-} \
-MACRO_STOP
-
-#define rxPacketFetchMacro(_node) \
- ( ((_rxExecCtxGlobal.pipeline)->embeddedPacketState == rxPKST_PENDING) ?\
- ((_rxExecCtxGlobal.pipeline)->embeddedPacketState = rxPKST_INUSE, \
- (_rxExecCtxGlobal.pipeline)->embeddedPacket) : \
- (NULL) )
-
-#ifdef __cplusplus
-}
-#endif /* __cplusplus */
-
-
-/*--- Automatically derived from: C:/daily/rwsdk/src/pipe/p2/d3d8/nodeD3D8SubmitNoLight.h ---*/
-
-/*--- Automatically derived from: C:/daily/rwsdk/src/pipe/p2/p2define.h ---*/
-
-/**
- * \ingroup rwcoregeneric
- * \typedef RxNodeOutput
- * typedef for a reference to an output of a pipeline node */
-typedef RwUInt32 *RxNodeOutput;
-
-/**
- * \ingroup rwcoregeneric
- * \typedef RxNodeInput
- * typedef for a reference to the input of a pipeline node */
-typedef RxPipelineNode *RxNodeInput;
-
-/**
- * \ingroup rwcoregeneric
- * \typedef RxLockedPipe
- * typedef for a reference to a locked pipeline
- */
-typedef RxPipeline RxLockedPipe;
-
-
-#ifdef __cplusplus
-extern "C"
-{
-#endif /* __cplusplus */
-
-
-/* PIPELINENODE API */
-
-extern RxNodeOutput
-RxPipelineNodeFindOutputByName(RxPipelineNode *node,
- const RwChar *outputname);
-
-extern RxNodeOutput
-RxPipelineNodeFindOutputByIndex(RxPipelineNode *node,
- RwUInt32 outputindex);
-
-extern RxNodeInput
-RxPipelineNodeFindInput(RxPipelineNode *node);
-
-extern RxNodeDefinition *
-RxPipelineNodeCloneDefinition(RxPipelineNode *node,
- RxClusterDefinition *cluster2add);
-
-extern RxPipeline *
-RxPipelineNodeRequestCluster(RxPipeline *pipeline,
- RxPipelineNode *node,
- RxClusterDefinition *clusterDef);
-
-extern RxPipeline *
-RxPipelineNodeReplaceCluster(RxPipeline *pipeline,
- RxPipelineNode *node,
- RxClusterDefinition *oldClusterDef,
- RxClusterDefinition *newClusterDef);
-
-extern void *
-RxPipelineNodeGetInitData(RxPipelineNode *node);
-
-extern void *
-RxPipelineNodeCreateInitData(RxPipelineNode *node,
- RwUInt32 size);
-
-/* PIPELINE MANIPULATION API */
-
-extern RxPipeline *
-RxPipelineClone(RxPipeline *pipeline);
-
-extern RxPipelineNode *
-RxPipelineFindNodeByName(RxPipeline *pipeline,
- const RwChar *name,
- RxPipelineNode *start,
- RwInt32 *nodeIndex);
-
-extern RxPipelineNode *
-RxPipelineFindNodeByIndex(RxPipeline *pipeline,
- RwUInt32 nodeindex);
-
-extern RxLockedPipe *
-RxPipelineLock(RxPipeline *pipeline);
-
-extern RxPipeline *
-RxLockedPipeUnlock(RxLockedPipe *pipeline);
-
-
-extern RxLockedPipe *
-RxLockedPipeAddFragment(RxLockedPipe *pipeline,
- RwUInt32 *firstIndex,
- RxNodeDefinition *nodeDef0,
- ...);
-
-
-extern RxPipeline *
-RxLockedPipeReplaceNode(RxLockedPipe *pipeline,
- RxPipelineNode *node,
- RxNodeDefinition *nodeDef);
-
-extern RxPipeline *
-RxLockedPipeDeleteNode(RxLockedPipe *pipeline,
- RxPipelineNode *node);
-
-
-extern RxPipeline *
-RxLockedPipeSetEntryPoint(RxLockedPipe *pipeline,
- RxNodeInput in);
-
-
-extern RxPipelineNode *
-RxLockedPipeGetEntryPoint(RxLockedPipe *pipeline);
-
-
-extern RxPipeline *
-RxLockedPipeAddPath(RxLockedPipe *pipeline,
- RxNodeOutput out,
- RxNodeInput in);
-
-extern RxPipeline *
-RxLockedPipeDeletePath(RxLockedPipe *pipeline,
- RxNodeOutput out,
- RxNodeInput in);
-
-
-extern RxPipeline *
-RxPipelineInsertDebugNode(RxPipeline *pipeline,
- RxPipelineNode *before,
- RxPipelineNode *after,
- RxNodeDefinition *debugNode);
-
-#ifdef __cplusplus
-}
-#endif /* __cplusplus */
-
-
-/*--- Automatically derived from: C:/daily/rwsdk/src/pipe/p2/p2altmdl.h ---*/
-
-/*--- Automatically derived from: C:/daily/rwsdk/src/pipe/p2/nodeTransform.h ---*/
-
-#ifdef __cplusplus
-extern "C"
-{
-#endif /* __cplusplus */
-
-extern RxNodeDefinition *RxNodeDefinitionGetTransform(void);
-
-#ifdef __cplusplus
-}
-#endif /* __cplusplus */
-
-
-/*--- Automatically derived from: C:/daily/rwsdk/src/pipe/p2/nodeSubmitTriangle.h ---*/
-
-#ifdef __cplusplus
-extern "C"
-{
-#endif /* __cplusplus */
-
-extern RxNodeDefinition * RxNodeDefinitionGetSubmitTriangle(void);
-
-#ifdef __cplusplus
-}
-#endif /* __cplusplus */
-
-
-/*--- Automatically derived from: C:/daily/rwsdk/src/pipe/p2/nodeSubmitLine.h ---*/
-
-#ifdef __cplusplus
-extern "C"
-{
-#endif /* __cplusplus */
-
-extern RxNodeDefinition * RxNodeDefinitionGetSubmitLine(void);
-
-#ifdef __cplusplus
-}
-#endif /* __cplusplus */
-
-
-/*--- Automatically derived from: C:/daily/rwsdk/src/pipe/p2/nodeScatter.h ---*/
-
-#ifdef __cplusplus
-extern "C"
-{
-#endif /* __cplusplus */
-
-extern RxNodeDefinition * RxNodeDefinitionGetScatter(void);
-
-#ifdef __cplusplus
-}
-#endif /* __cplusplus */
-
-
-/*--- Automatically derived from: C:/daily/rwsdk/src/pipe/p2/nodeClone.h ---*/
-
-typedef struct RxPacketCacheCluster RxPacketCacheCluster;
-
-/**
- * \ingroup rwcoregeneric
- * \struct RxPacketCacheCluster
- * structure containing a cache of an \ref RxCluster's
- * within an \ref RxPacketCache
- */
-struct RxPacketCacheCluster
-{
- RwUInt32 slot; /**< A \ref RwUInt32 index into the \ref RxPacketCache's
- * array of RxPacketCacheCluster's */
- RwUInt16 flags; /**< A cache of the original cluster's flags */
- RwUInt16 stride; /**< A cache of the original cluster's stride */
- void *data; /**< A cache of the original cluster's data */
- RwUInt32 numAlloced; /**< A cache of the original cluster's numAlloced */
- RwUInt32 numUsed; /**< A cache of the original cluster's numUsed */
- RxPipelineCluster *clusterRef; /**< A cache of the original cluster's \ref RxPipelineCluster */
-};
-typedef struct RxPacketCache RxPacketCache;
-
-/**
- * \ingroup rwcoregeneric
- * \struct RxPacketCache
- * structure containing a cache of a \ref RxPacket */
-struct RxPacketCache
-{
- RwUInt16 packetFlags; /**< A cache of the original packet's flags */
- RwUInt16 pad[1]; /**< Alignment padding */
- RwUInt32 numClusters; /**< The number of present clusters in the
- * original packet when it was cloned */
- RwBool lastCloneDone;/**< Once the cache has been cloned by \ref RxPacketCacheClone
- * with (lastClone == TRUE), it should not be used again! */
- RwUInt32 pad2[1]; /**< Alignment padding */
- RxPacketCacheCluster clusters[1]; /**< An array of \ref RxPacketCacheCluster's,
- * extending beyond 1 element */
-};
-
-
-typedef struct RxNodeCloneInitData RxNodeCloneInitData;
-/**
- * \ingroup rwcoregeneric
- * \struct RxNodeCloneInitData
- * structure with which to initialize
- * clone a \ref RxNodeDefinition,
- * through \ref RxNodeDefinitionCloneCreate and
- * set up cloned \ref RxPipelineNode modes, through
- * \ref RxPipelineNodeCloneDefineModes */
-struct RxNodeCloneInitData
-{
- RwUInt32 numModes; /**< Specifies the number of modes in
- which the node should operate */
- RwUInt32 numOutputs; /**< Specifies the number of outputs of this
- Clone node, which is also the maximum
- number of outputs to which any one mode
- may dispatch packets */
- RwUInt32 *modeSizes; /**< Specifies the number of outputs to which
- each mode dispatches packets */
- RwUInt32 **modes; /**< An array of numModes pointers to arrays
- (of length numOutputs) specifying the
- outputs, in order, to which each mode
- should dispatch packets (output zero is
- the first output) */
-};
-
-/**
- * \ingroup rwcoregeneric
- * \struct RxNodeCloneData
- * structure which is the private
- * data of Clone nodes \ref RxPipelineNode */
-typedef struct RxNodeCloneData RxNodeCloneData;
-struct RxNodeCloneData
-{
- RwBool optimized; /**< \ref RwBool specifying whether \ref RxPipelineNodeCloneOptimize
- * has been run on this \ref RxPipelineNode yet */
- RwUInt32 currentMode; /**< \ref RwUInt32 The current mode of operation */
- RxNodeCloneInitData *data;/**< A pointer to \ref RxNodeCloneInitData data
- * specifying the modes of operation */
-};
-
-#ifdef __cplusplus
-extern "C"
-{
-#endif /* __cplusplus */
-
-extern RxNodeDefinition *RxNodeDefinitionCloneCreate(RxNodeCloneInitData *data);
-extern RwBool RxPipelineNodeCloneDefineModes(
- RxPipeline *pipeline,
- RxPipelineNode *node,
- RxNodeCloneInitData *data);
-extern RwBool RxNodeDefinitionCloneDestroy(RxNodeDefinition *def);
-extern RwBool RxPipelineNodeCloneOptimize(RxPipeline *pipeline,
- RxPipelineNode *node);
-
-#ifdef __cplusplus
-}
-#endif /* __cplusplus */
-
-
-/*--- Automatically derived from: C:/daily/rwsdk/src/pipe/p2/nodeImmStash.h ---*/
-
-#ifdef __cplusplus
-extern "C"
-{
-#endif /* __cplusplus */
-
-extern RxNodeDefinition *RxNodeDefinitionGetImmStash(void);
-
-#ifdef __cplusplus
-}
-#endif /* __cplusplus */
-
-
-/*--- Automatically derived from: C:/daily/rwsdk/src/pipe/p2/nodeImmRenderSetup.h ---*/
-
-#ifdef __cplusplus
-extern "C"
-{
-#endif /* __cplusplus */
-
-extern RxNodeDefinition * RxNodeDefinitionGetImmRenderSetup(void);
-
-#ifdef __cplusplus
-}
-#endif /* __cplusplus */
-
-
-/*--- Automatically derived from: C:/daily/rwsdk/src/pipe/p2/nodeImmMangleTriangleIndices.h ---*/
-
-#ifdef __cplusplus
-extern "C"
-{
-#endif /* __cplusplus */
-
-extern RxNodeDefinition *RxNodeDefinitionGetImmMangleTriangleIndices(void);
-
-#ifdef __cplusplus
-}
-#endif /* __cplusplus */
-
-
-/*--- Automatically derived from: C:/daily/rwsdk/src/pipe/p2/nodeImmMangleLineIndices.h ---*/
-
-#ifdef __cplusplus
-extern "C"
-{
-#endif /* __cplusplus */
-
-extern RxNodeDefinition * RxNodeDefinitionGetImmMangleLineIndices(void);
-
-#ifdef __cplusplus
-}
-#endif /* __cplusplus */
-
-
-/*--- Automatically derived from: C:/daily/rwsdk/src/pipe/p2/nodeImmInstance.h ---*/
-
-#ifdef __cplusplus
-extern "C"
-{
-#endif /* __cplusplus */
-
-extern RxNodeDefinition * RxNodeDefinitionGetImmInstance(void);
-
-#ifdef __cplusplus
-}
-#endif /* __cplusplus */
-
-
-/*--- Automatically derived from: C:/daily/rwsdk/src/pipe/p2/nodeCullTriangle.h ---*/
-
-#ifdef __cplusplus
-extern "C"
-{
-#endif /* __cplusplus */
-
-extern RxNodeDefinition * RxNodeDefinitionGetCullTriangle(void);
-
-#ifdef __cplusplus
-}
-#endif /* __cplusplus */
-
-
-/*--- Automatically derived from: C:/daily/rwsdk/src/pipe/p2/nodeClipTriangle.h ---*/
-
-#ifdef __cplusplus
-extern "C"
-{
-#endif /* __cplusplus */
-
-extern RxNodeDefinition *RxNodeDefinitionGetClipTriangle(void);
-
-#ifdef __cplusplus
-}
-#endif /* __cplusplus */
-
-
-/*--- Automatically derived from: C:/daily/rwsdk/src/pipe/p2/nodeClipLine.h ---*/
-
-#ifdef __cplusplus
-extern "C"
-{
-#endif /* __cplusplus */
-
-extern RxNodeDefinition *RxNodeDefinitionGetClipLine(void);
-
-#ifdef __cplusplus
-}
-#endif /* __cplusplus */
-
-
-/*--- Automatically derived from: C:/daily/rwsdk/driver/d3d8/d3d8texdic.h ---*/
-
-/*--- Automatically derived from: C:/daily/rwsdk/driver/d3d8/d3d8rendst.h ---*/
-
-/*--- Automatically derived from: C:/daily/rwsdk/driver/d3d8/d3d8raster.h ---*/
-
-/*--- Automatically derived from: C:/daily/rwsdk/driver/d3d8/d3d8device.h ---*/
-
-/*--- Automatically derived from: C:/daily/rwsdk/driver/d3d8/d3d8convrt.h ---*/
-
-/*--- Automatically derived from: C:/daily/rwsdk/driver/d3d8/d3d82drend.h ---*/
-
-/*--- Automatically derived from: C:/daily/rwsdk/driver/common/ssematml.h ---*/
-
-/*--- Automatically derived from: C:/daily/rwsdk/driver/common/cpuext.h ---*/
-
-/*--- Automatically derived from: C:/daily/rwsdk/driver/common/palquant.h ---*/
-
-/*--- Automatically derived from: C:/daily/rwsdk/driver/common/datblkcb.h ---*/
-
-/*--- Automatically derived from: C:/daily/rwsdk/src/baraster.h ---*/
-
-/****************************************************************************
- Defines
- */
-
-/**
- * \ingroup datatypes
- * \ref RwRasterLockMode represents the options available for locking
- * a raster so that it may be modified (see API function \ref RwRasterLock). An
- * application may wish to write to the raster, read from the raster or
- * simultaneously write and read a raster (rwRASTERLOCKWRITE | rwRASTERLOCKREAD).
- */
-enum RwRasterLockMode
-{
- rwRASTERLOCKWRITE = 0x01, /**<Lock for writing */
- rwRASTERLOCKREAD = 0x02, /**<Lock for reading */
- rwRASTERLOCKNOFETCH = 0x04, /**<When used in combination with
- * rwRASTERLOCKWRITE, asks the driver not to
- * fetch the pixel data. This is only useful
- * if it is known that ALL the raster data is
- * going to be overwritten before the raster
- * is unlocked, i.e. from an
- * \ref RwRasterSetFromImage call. This flag
- * is not supported by all drivers. */
- rwRASTERLOCKRAW = 0x08, /**<When used in combination with
- rwRASTERLOCKWRITE or rwRASTERLOCKREAD
- allows access to the raw platform specific
- pixel format */
- rwRASTERLOCKMODEFORCEENUMSIZEINT = RWFORCEENUMSIZEINT
-};
-
-#define rwRASTERLOCKREADWRITE (rwRASTERLOCKREAD|rwRASTERLOCKWRITE)
-
-typedef enum RwRasterLockMode RwRasterLockMode;
-
-/**
- * \ingroup datatypes
- * \ref RwRasterFlipMode represents
- * raster flip modes */
-enum RwRasterFlipMode
-{
- rwRASTERFLIPDONTWAIT = 0, /**<Don't wait for VSync */
- rwRASTERFLIPWAITVSYNC = 1, /**<Flip on VSync */
- rwRASTERFLIPMODEFORCEENUMSIZEINT = RWFORCEENUMSIZEINT
-};
-typedef enum RwRasterFlipMode RwRasterFlipMode;
-
-/**
- * \ingroup datatypes
- * RwRasterType
- * This type represents the options available for creating a new
- * raster (se API function \ref RwRasterCreate)*/
-enum RwRasterType
-{
- rwRASTERTYPENORMAL = 0x00, /**<Normal */
- rwRASTERTYPEZBUFFER = 0x01, /**<Z Buffer */
- rwRASTERTYPECAMERA = 0x02, /**<Camera */
- rwRASTERTYPETEXTURE = 0x04, /**<Texture */
- rwRASTERTYPECAMERATEXTURE = 0x05, /**<Camera texture */
- rwRASTERTYPEMASK = 0x07, /**<Mask for finding type */
-
- rwRASTERDONTALLOCATE = 0x80, /**<If set the raster is not allocated */
- rwRASTERTYPEFORCEENUMSIZEINT = RWFORCEENUMSIZEINT
-};
-typedef enum RwRasterType RwRasterType;
-
-/**
- * \ingroup datatypes
- * \ref RwRasterFormat is a set of values and flags which may be combined to
- * specify a raster format. The format chosen for a particular raster depends
- * on the hardware device and the raster type specified at creation time
- * (see API function \ref RwRasterCreate). The format may be retrieved using
- * API function \ref RwRasterGetFormat.
- *
- * The raster format is a packed set of bits which contains the following
- * four pieces of information (these may be combined with bitwise OR):-
- *
- * <ol>
- * <li> The pixel color format corresponding to one of the following values:-
- * <ul>
- * <li> rwRASTERFORMAT1555
- * <li> rwRASTERFORMAT565
- * <li> rwRASTERFORMAT4444
- * <li> rwRASTERFORMATLUM8
- * <li> rwRASTERFORMAT8888
- * <li> rwRASTERFORMAT888
- * <li> rwRASTERFORMAT16
- * <li> rwRASTERFORMAT24
- * <li> rwRASTERFORMAT32
- * <li> rwRASTERFORMAT555
- * </ul>
- * This value may be masked out of the raster format using
- * rwRASTERFORMATPIXELFORMATMASK.
- * <li> The palette depth if the raster is palettized:-
- * <ul>
- * <li> rwRASTERFORMATPAL4
- * <li> rwRASTERFORMATPAL8
- * </ul>
- * In these cases, the color format refers to that of the palette.
- * <li> Flag rwRASTERFORMATMIPMAP. Set if the raster contains mipmap levels.
- * <li> Flag rwRASTERFORMATAUTOMIPMAP. Set if the mipmap levels were generated
- * automatically by RenderWare.
- * </ol>
- */
-enum RwRasterFormat
-{
- rwRASTERFORMATDEFAULT = 0x0000, /* Whatever the hardware likes best */
-
- rwRASTERFORMAT1555 = 0x0100, /**<16 bits - 1 bit alpha, 5 bits red, green and blue */
- rwRASTERFORMAT565 = 0x0200, /**<16 bits - 5 bits red and blue, 6 bits green */
- rwRASTERFORMAT4444 = 0x0300, /**<16 bits - 4 bits per component */
- rwRASTERFORMATLUM8 = 0x0400, /**<Gray scale */
- rwRASTERFORMAT8888 = 0x0500, /**<32 bits - 8 bits per component */
- rwRASTERFORMAT888 = 0x0600, /**<24 bits - 8 bits per component */
- rwRASTERFORMAT16 = 0x0700, /**<16 bits - undefined: useful for things like Z buffers */
- rwRASTERFORMAT24 = 0x0800, /**<24 bits - undefined: useful for things like Z buffers */
- rwRASTERFORMAT32 = 0x0900, /**<32 bits - undefined: useful for things like Z buffers */
- rwRASTERFORMAT555 = 0x0a00, /**<16 bits - 5 bits red, green and blue */
-
- rwRASTERFORMATAUTOMIPMAP = 0x1000, /**<RenderWare generated the mip levels */
-
- rwRASTERFORMATPAL8 = 0x2000, /**<8 bit palettised */
- rwRASTERFORMATPAL4 = 0x4000, /**<4 bit palettised */
-
- rwRASTERFORMATMIPMAP = 0x8000, /**<Mip mapping on */
-
- rwRASTERFORMATPIXELFORMATMASK = 0x0f00, /**<The pixel color format
- * (excluding palettised bits) */
- rwRASTERFORMATMASK = 0xff00 /**<The whole format */ ,
- rwRASTERFORMATFORCEENUMSIZEINT = RWFORCEENUMSIZEINT
-};
-typedef enum RwRasterFormat RwRasterFormat;
-
-enum RwRasterPrivateFlag
-{
- rwRASTERGAMMACORRECTED = 0x01,
- rwRASTERPIXELLOCKEDREAD = 0x02, /* pixels are locked for reading */
- rwRASTERPIXELLOCKEDWRITE = 0x04, /* pixels are locked for writing */
- rwRASTERPALETTELOCKEDREAD = 0x08, /* palette is locked for reading */
- rwRASTERPALETTELOCKEDWRITE = 0x10, /* palette is locked for writing */
- rwRASTERPIXELLOCKEDRAW = 0x20, /* the pixels are in platform specific
- format, used in combination with
- rwRASTERPIXELLOCKEDREAD &
- rwRASTERPIXELLOCKEDWRITE */
- rwRASTERPRIVATEFLAGFORCEENUMSIZEINT = RWFORCEENUMSIZEINT
-};
-typedef enum RwRasterPrivateFlag RwRasterPrivateFlag;
-
-#define rwRASTERPIXELLOCKED (rwRASTERPIXELLOCKEDREAD | rwRASTERPIXELLOCKEDWRITE)
-#define rwRASTERPALETTELOCKED (rwRASTERPALETTELOCKEDREAD | rwRASTERPALETTELOCKEDWRITE)
-#define rwRASTERLOCKED (rwRASTERPIXELLOCKED|rwRASTERPALETTELOCKED)
-
-/* How big is my stack!!! */
-#define rwRASTERCONTEXTSTACKSIZE 10
-
-/****************************************************************************
- Global Types
- */
-
-/**
- * \ingroup datatypes
- * \typedef RwRaster
- * Raster containing device-dependent pixels.
- * This should be considered an opaque type.
- * Use the RwRaster API functions to access.
- */
-typedef struct RwRaster RwRaster;
-
-#if (!defined(DOXYGEN))
-struct RwRaster
-{
- RwRaster *parent; /* Top level raster if a sub raster */
- RwUInt8 *cpPixels; /* Pixel pointer when locked */
- RwUInt8 *palette; /* Raster palette */
- RwInt32 width, height, depth; /* Dimensions of raster */
- RwInt32 stride; /* Lines bytes of raster */
- RwInt16 nOffsetX, nOffsetY; /* Sub raster offset */
- RwUInt8 cType; /* Type of raster */
- RwUInt8 cFlags; /* Raster flags */
- RwUInt8 privateFlags; /* Raster private flags */
- RwUInt8 cFormat; /* Raster format */
-
- RwUInt8 *originalPixels;
- RwInt32 originalWidth;
- RwInt32 originalHeight;
- RwInt32 originalStride;
-};
-#endif /* (!defined(DOXYGEN)) */
-
-
-/****************************************************************************
- <macro/inline functionality
- */
-
-#define RwRasterGetWidthMacro(_raster) \
- ((_raster)->width)
-
-#define RwRasterGetHeightMacro(_raster) \
- ((_raster)->height)
-
-#define RwRasterGetStrideMacro(_raster) \
- ((_raster)->stride)
-
-#define RwRasterGetDepthMacro(_raster) \
- ((_raster)->depth)
-
-#define RwRasterGetFormatMacro(_raster) \
- ((((_raster)->cFormat) & (rwRASTERFORMATMASK >> 8)) << 8)
-
-#define RwRasterGetTypeMacro(_raster) \
- (((_raster)->cType) & rwRASTERTYPEMASK)
-
-#define RwRasterGetParentMacro(_raster) \
- ((_raster)->parent)
-
-
-#if !(defined(RWDEBUG) || defined(RWSUPPRESSINLINE))
-
-#define RwRasterGetWidth(_raster) \
- RwRasterGetWidthMacro(_raster)
-
-#define RwRasterGetHeight(_raster) \
- RwRasterGetHeightMacro(_raster)
-
-#define RwRasterGetStride(_raster) \
- RwRasterGetStrideMacro(_raster)
-
-#define RwRasterGetDepth(_raster) \
- RwRasterGetDepthMacro(_raster)
-
-#define RwRasterGetFormat(_raster) \
- RwRasterGetFormatMacro(_raster)
-
-#define RwRasterGetType(_raster) \
- RwRasterGetTypeMacro(_raster)
-
-#define RwRasterGetParent(_raster) \
- RwRasterGetParentMacro(_raster)
-
-#endif /* (defined(RWDEBUG) || defined(RWSUPPRESSINLINE)) */
-
-
-/****************************************************************************
- Function prototypes
- */
-
-#ifdef __cplusplus
-extern "C"
-{
-#endif /* __cplusplus */
-
-/* Creating destroying rasters */
-extern RwRaster *RwRasterCreate(RwInt32 width, RwInt32 height,
- RwInt32 depth, RwInt32 flags);
-extern RwBool RwRasterDestroy(RwRaster * raster);
-
-/* Pulling info out of raster structure */
-
-#if (defined(RWDEBUG) || defined(RWSUPPRESSINLINE))
-extern RwInt32 RwRasterGetWidth(const RwRaster *raster);
-extern RwInt32 RwRasterGetHeight(const RwRaster *raster);
-extern RwInt32 RwRasterGetStride(const RwRaster *raster);
-extern RwInt32 RwRasterGetDepth(const RwRaster *raster);
-extern RwInt32 RwRasterGetFormat(const RwRaster *raster);
-extern RwInt32 RwRasterGetType(const RwRaster *raster);
-extern RwRaster *RwRasterGetParent(const RwRaster *raster);
-#endif /* (defined(RWDEBUG) || defined(RWSUPPRESSINLINE)) */
-
-extern RwRaster *RwRasterGetOffset(RwRaster *raster,
- RwInt16 *xOffset, RwInt16 *yOffset);
-
-extern RwInt32 RwRasterGetNumLevels(RwRaster * raster);
-
-extern RwRaster *RwRasterSubRaster(RwRaster * subRaster,
- RwRaster * raster, RwRect * rect);
-
-extern RwRaster *RwRasterRenderFast(RwRaster * raster, RwInt32 x,
- RwInt32 y);
-extern RwRaster *RwRasterRender(RwRaster * raster, RwInt32 x,
- RwInt32 y);
-extern RwRaster *RwRasterRenderScaled(RwRaster * raster,
- RwRect * rect);
-
-/* Raster rendering context */
-extern RwRaster *RwRasterPushContext(RwRaster * raster);
-extern RwRaster *RwRasterPopContext(void);
-extern RwRaster *RwRasterGetCurrentContext(void);
-
-/* Clearing rasters */
-extern RwBool RwRasterClear(RwInt32 pixelValue);
-extern RwBool RwRasterClearRect(RwRect * rpRect,
- RwInt32 pixelValue);
-
-/* Displaying rasters */
-extern RwRaster *RwRasterShowRaster(RwRaster * raster, void *dev,
- RwUInt32 flags);
-
-/* Locking and releasing */
-extern RwUInt8 *RwRasterLock(RwRaster * raster, RwUInt8 level,
- RwInt32 lockMode);
-extern RwRaster *RwRasterUnlock(RwRaster * raster);
-extern RwUInt8 *RwRasterLockPalette(RwRaster * raster,
- RwInt32 lockMode);
-extern RwRaster *RwRasterUnlockPalette(RwRaster * raster);
-
-/* Attaching toolkits */
-extern RwInt32 RwRasterRegisterPlugin(RwInt32 size,
- RwUInt32 pluginID,
- RwPluginObjectConstructor
- constructCB,
- RwPluginObjectDestructor
- destructCB,
- RwPluginObjectCopy copyCB);
-extern RwInt32 RwRasterGetPluginOffset(RwUInt32 pluginID);
-extern RwBool RwRasterValidatePlugins(const RwRaster * raster);
-
-#ifdef __cplusplus
-}
-#endif /* __cplusplus */
-
-
-/*--- Automatically derived from: C:/daily/rwsdk/driver/d3d8/drvmodel.h ---*/
-#ifndef D3D8_DRVMODEL_H
-#define D3D8_DRVMODEL_H
-
-#if (defined(__ICL))
-/* Avoid voluminous
- * 'warning #344: typedef name has already been declared (with same type)'
- * warnings from MS include files
- */
-#pragma warning( disable : 344 )
-#endif /* (defined(__ICL)) */
-
-
-#include <windows.h>
-
-#if (defined(RWDEBUG))
-#if (defined(RWMEMDEBUG) && !defined(_CRTDBG_MAP_ALLOC))
-#define _CRTDBG_MAP_ALLOC
-#endif /* defined(RWMEMDEBUG) && !defined(_CRTDBG_MAP_ALLOC)) */
-#include <crtdbg.h>
-#define ERR_WRAP(A) (_rwRePrintErrorDDD3D((A), __FILE__, __LINE__))
-#endif /* (defined(RWDEBUG)) */
-
-#if (!defined(ERR_WRAP))
-#define ERR_WRAP(A) (A)
-#endif /* (!defined(ERR_WRAP)) */
-
-/****************************************************************************
- Defines
- */
-
-/* Set true depth information (for fogging, eg) */
-#define RwIm2DVertexSetCameraX(vert, camx) /* Nothing */
-#define RwIm2DVertexSetCameraY(vert, camy) /* Nothing */
-#define RwIm2DVertexSetCameraZ(vert, camz) /* Nothing */
-
-#define RwIm2DVertexSetRecipCameraZ(vert, recipz) ((vert)->rhw = recipz)
-
-#define RwIm2DVertexGetCameraX(vert) (cause an error)
-#define RwIm2DVertexGetCameraY(vert) (cause an error)
-#define RwIm2DVertexGetCameraZ(vert) (cause an error)
-#define RwIm2DVertexGetRecipCameraZ(vert) ((vert)->rhw)
-
-/* Set screen space coordinates in a device vertex */
-#define RwIm2DVertexSetScreenX(vert, scrnx) ((vert)->x = (scrnx))
-#define RwIm2DVertexSetScreenY(vert, scrny) ((vert)->y = (scrny))
-#define RwIm2DVertexSetScreenZ(vert, scrnz) ((vert)->z = (scrnz))
-#define RwIm2DVertexGetScreenX(vert) ((vert)->x)
-#define RwIm2DVertexGetScreenY(vert) ((vert)->y)
-#define RwIm2DVertexGetScreenZ(vert) ((vert)->z)
-
-/* Set texture coordinates in a device vertex */
-#define RwIm2DVertexSetU(vert, texU, recipz) ((vert)->u = (texU))
-#define RwIm2DVertexSetV(vert, texV, recipz) ((vert)->v = (texV))
-#define RwIm2DVertexGetU(vert) ((vert)->u)
-#define RwIm2DVertexGetV(vert) ((vert)->v)
-
-/* Modify the luminance stuff */
-#define RwIm2DVertexSetRealRGBA(vert, red, green, blue, alpha) \
- ((vert)->emissiveColor = \
- (((RwFastRealToUInt32(alpha)) << 24) | \
- ((RwFastRealToUInt32(red)) << 16) | \
- ((RwFastRealToUInt32(green)) << 8) | \
- ((RwFastRealToUInt32(blue)))))
-
-#define RwIm2DVertexSetIntRGBA(vert, red, green, blue, alpha) \
- ((vert)->emissiveColor = \
- ((((RwUInt32)(alpha)) << 24) | \
- (((RwUInt32)(red)) << 16) | \
- (((RwUInt32)(green)) << 8) | \
- (((RwUInt32)(blue)))))
-
-#define RwIm2DVertexGetRed(vert) \
- (((vert)->emissiveColor >> 16) & 0xFF)
-
-#define RwIm2DVertexGetGreen(vert) \
- (((vert)->emissiveColor >> 8) & 0xFF)
-
-#define RwIm2DVertexGetBlue(vert) \
- ((vert)->emissiveColor & 0xFF)
-
-#define RwIm2DVertexGetAlpha(vert) \
- (((vert)->emissiveColor >> 24) & 0xFF)
-
-#define RwIm2DVertexCopyRGBA(dst, src) \
- ((dst)->emissiveColor = (src)->emissiveColor)
-
-/* Clipper stuff */
-
-#define RwIm2DVertexClipRGBA(o, i, n, f) \
-MACRO_START \
-{ \
- const RwInt32 _factor = \
- (RwFastRealToUInt32(i * (RwReal)(255))) & 255; \
- \
- (o)->emissiveColor = \
- (((((RwIm2DVertexGetAlpha(f) - RwIm2DVertexGetAlpha(n)) * \
- _factor) >> 8) + RwIm2DVertexGetAlpha(n)) << 24) | \
- (((((RwIm2DVertexGetRed(f) - RwIm2DVertexGetRed(n)) * \
- _factor) >> 8) + RwIm2DVertexGetRed(n)) << 16) | \
- (((((RwIm2DVertexGetGreen(f) - RwIm2DVertexGetGreen(n)) * \
- _factor) >> 8) + RwIm2DVertexGetGreen(n)) << 8) | \
- (((((RwIm2DVertexGetBlue(f) - RwIm2DVertexGetBlue(n)) * \
- _factor) >> 8) + RwIm2DVertexGetBlue(n))); \
-} \
-MACRO_STOP
-
-/* LEGACY-SUPPORT macros */
-#define RWIM2DVERTEXSetCameraX(vert, camx) RwIm2DVertexSetCameraX(vert, camx)
-#define RWIM2DVERTEXSetCameraY(vert, camy) RwIm2DVertexSetCameraY(vert, camy)
-#define RWIM2DVERTEXSetCameraZ(vert, camz) RwIm2DVertexSetCameraZ(vert, camz)
-#define RWIM2DVERTEXSetRecipCameraZ(vert, recipz) \
- RwIm2DVertexSetRecipCameraZ(vert, recipz)
-#define RWIM2DVERTEXGetCameraX(vert) RwIm2DVertexGetCameraX(vert)
-#define RWIM2DVERTEXGetCameraY(vert) RwIm2DVertexGetCameraY(vert)
-#define RWIM2DVERTEXGetCameraZ(vert) RwIm2DVertexGetCameraZ(vert)
-#define RWIM2DVERTEXGetRecipCameraZ(vert) RwIm2DVertexGetRecipCameraZ(vert)
-#define RWIM2DVERTEXSetScreenX(vert, scrnx) RwIm2DVertexSetScreenX(vert, scrnx)
-#define RWIM2DVERTEXSetScreenY(vert, scrny) RwIm2DVertexSetScreenY(vert, scrny)
-#define RWIM2DVERTEXSetScreenZ(vert, scrnz) RwIm2DVertexSetScreenZ(vert, scrnz)
-#define RWIM2DVERTEXGetScreenX(vert) RwIm2DVertexGetScreenX(vert)
-#define RWIM2DVERTEXGetScreenY(vert) RwIm2DVertexGetScreenY(vert)
-#define RWIM2DVERTEXGetScreenZ(vert) RwIm2DVertexGetScreenZ(vert)
-#define RWIM2DVERTEXSetU(vert, u, recipz) RwIm2DVertexSetU(vert, u, recipz)
-#define RWIM2DVERTEXSetV(vert, v, recipz) RwIm2DVertexSetV(vert, v, recipz)
-#define RWIM2DVERTEXGetU(vert) RwIm2DVertexGetU(vert)
-#define RWIM2DVERTEXGetV(vert) RwIm2DVertexGetV(vert)
-#define RWIM2DVERTEXSetRealRGBA(vert, red, green, blue, alpha) \
- RwIm2DVertexSetRealRGBA(vert, red, green, blue, alpha)
-#define RWIM2DVERTEXSetIntRGBA(vert, red, green, blue, alpha) \
- RwIm2DVertexSetIntRGBA(vert, red, green, blue, alpha)
-#define RWIM2DVERTEXGetRed(vert) RwIm2DVertexGetRed(vert)
-#define RWIM2DVERTEXGetGreen(vert) RwIm2DVertexGetGreen(vert)
-#define RWIM2DVERTEXGetBlue(vert) RwIm2DVertexGetBlue(vert)
-#define RWIM2DVERTEXGetAlpha(vert) RwIm2DVertexGetAlpha(vert)
-#define RWIM2DVERTEXCopyRGBA(dst, src) RwIm2DVertexCopyRGBA(dst, src)
-#define RWIM2DVERTEXClipRGBA(o, i, n, f) RwIm2DVertexClipRGBA(o, i, n, f)
-
-/****************************************************************************
- Global Types
- */
-
-/* We use RwD3D8Vertex to drive the hardware in 2D mode */
-
-/**
- * \ingroup rwcoredriverd3d8
- * \typedef RwD3D8Vertex
- * D3D8 vertex structure definition for 2D geometry
- */
-typedef struct RwD3D8Vertex RwD3D8Vertex;
-/**
- * \ingroup rwcoredriverd3d8
- * \struct RwD3D8Vertex
- * D3D8 vertex structure definition for 2D geometry
- */
-struct RwD3D8Vertex
-{
- RwReal x; /**< Screen X */
- RwReal y; /**< Screen Y */
- RwReal z; /**< Screen Z */
- RwReal rhw; /**< Reciprocal of homogeneous W */
-
- RwUInt32 emissiveColor; /**< Vertex color */
-
- RwReal u; /**< Texture coordinate U */
- RwReal v; /**< Texture coordinate V */
-};
-
-/* Define types used */
-
-/**
- * \ingroup rwcoredriverd3d8
- * \typedef RwIm2DVertex
- * Typedef for a RenderWare Graphics Immediate Mode 2D Vertex
- */
-typedef RwD3D8Vertex RwIm2DVertex;
-
-/* LEGACY-SUPPORT macro */
-/**
- * \ingroup rwcoredriverd3d8
- * \def RWIM2DVERTEX
- * RWIM2DVERTEX is a legacy macro for RwIm2DVertex
- */
-#define RWIM2DVERTEX RwIm2DVertex
-
-/**
- * \ingroup rwcoredriverd3d8
- * \typedef RxVertexIndex
- *
- * Typedef for a RenderWare Graphics PowerPipe Immediate
- * Mode Vertex
- */
-typedef RwUInt16 RxVertexIndex;
-
-/**
- * \ingroup rwcoredriverd3d8
- * \typedef RwImVertexIndex
- * Typedef for a RenderWare Graphics Immediate Mode Vertex.
- */
-typedef RxVertexIndex RwImVertexIndex;
-
-/* LEGACY-SUPPORT macro */
-/**
- * \ingroup rwcoredriverd3d8
- * \def RWIMVERTEXINDEX
- * RWIMVERTEXINDEX is a legacy macro for RwImVertexIndex
- */
-#define RWIMVERTEXINDEX RwImVertexIndex
-
-/**
- * \ingroup rwcoredriverd3d8
- * \struct RwD3D8Metrics
- * Structure containing metrics counters
- */
-typedef struct
-{
- RwUInt32 numRenderStateChanges; /**< Number of Render States changed */
- RwUInt32 numTextureStageStateChanges; /**< Number of Texture Stage States changed */
- RwUInt32 numMaterialChanges; /**< Number of Material changes */
- RwUInt32 numLightsChanged; /**< Number of Lights changed */
-}
-RwD3D8Metrics;
-
-#endif /* D3D8_DRVMODEL_H */
-
-/*--- Automatically derived from: C:/daily/rwsdk/src/pipe/p2/d3d8/pip2model.h ---*/
-
-
-
-
-
-/****************************************************************************
- Global Defines
- */
-
-#define RXHEAPPLATFORMDEFAULTSIZE (1 << 12) /* 4k */
-
-/****************************************************************************
- Global Types
- */
-
-/* We use D3D8 formats for the instanced versions, to allow hardware T&L */
-
-/**
- * \ingroup corep2d3d8
- * \typedef RxObjSpace3DVertex
- * Typedef for an RxObjSpace3DVertex.
- */
-typedef struct RxObjSpace3DVertex RxObjSpace3DVertex;
-
-/**
- * \ingroup corep2d3d8
- * \struct RxObjSpace3DVertex
- * Structure representing object space vertex.
- */
-struct RxObjSpace3DVertex
-{
- RwV3d objVertex; /**< position */
- RwV3d objNormal; /**< normal */
- RwUInt32 color; /**< emissive color*/
- RwReal u; /**< u */
- RwReal v; /**< v */
-};
-
-/* This vertex is non truncatable */
-#define RxObjSpace3DVertexNoUVsNoNormalsSize (sizeof(RxObjSpace3DVertex))
-#define RxObjSpace3DVertexNoUVsSize (sizeof(RxObjSpace3DVertex))
-#define RxObjSpace3DVertexFullSize (sizeof(RxObjSpace3DVertex))
-
-/**
- * \ingroup corep2d3d8
- * \typedef RxObjSpace3DLitVertex
- * Typedef for an RxObjSpace3DLitVertex.
- */
-typedef RxObjSpace3DVertex RxObjSpace3DLitVertex;
-
-/**
- * \ingroup corep2d3d8
- * \typedef RwIm3DVertex
- * Typedef for an RwIm3DVertex.
- */
-typedef RxObjSpace3DLitVertex RwIm3DVertex;
-
-/* LEGACY-SUPPORT macro */
-#define RWIM3DVERTEX RwIm3DVertex
-typedef RwIm2DVertex RxScrSpace2DVertex;
-
-/****************************************************************************
- Object-space 3D unlit vertex macros
- */
-
-/* Vertex positions */
-#define RxObjSpace3DVertexGetPos(_vert, _pos) \
- (*(_pos) = (_vert)->objVertex)
-#define RxObjSpace3DVertexSetPos(_vert, _pos) \
- ((_vert)->objVertex = *(_pos))
-
-/* Pre-lighting colours */
-#define RxObjSpace3DVertexGetPreLitColor(_vert, _col) \
-MACRO_START \
-{ \
- (_col)->alpha = (RwUInt8)((_vert)->color >> 24) & 0xFF; \
- (_col)->red = (RwUInt8)((_vert)->color >> 16) & 0xFF; \
- (_col)->green = (RwUInt8)((_vert)->color >> 8) & 0xFF; \
- (_col)->blue = (RwUInt8)((_vert)->color ) & 0xFF; \
-} \
-MACRO_STOP
-
-#define RxObjSpace3DVertexSetPreLitColor(_vert, _col) \
- ((_vert)->color = (((RwUInt32)(_col)->alpha) << 24) | \
- (((RwUInt32)(_col)->red) << 16) | \
- (((RwUInt32)(_col)->green) << 8) | \
- (((RwUInt32)(_col)->blue) ))
-
-/* This uses the same slot as color (they are mutually exclusive) */
-#define RxObjSpace3DVertexGetColor RxObjSpace3DVertexGetPreLitColor
-
-/* Normals */
-#define RxObjSpace3DVertexGetNormal(_vert, _normal) \
- (*(_normal) = (_vert)->objNormal)
-#define RxObjSpace3DVertexSetNormal(_vert, _normal) \
- ((_vert)->objNormal = *(_normal))
-
-/* Us and Vs */
-#define RxObjSpace3DVertexGetU(_vert) \
- ((_vert)->u)
-#define RxObjSpace3DVertexGetV(_vert) \
- ((_vert)->v)
-#define RxObjSpace3DVertexSetU(_vert, _imu) \
- ((_vert)->u = (_imu))
-#define RxObjSpace3DVertexSetV(_vert, _imv) \
- ((_vert)->v = (_imv))
-
-/****************************************************************************
- Object-space 3D lit vertex macros
- */
-
-/* Vertex positions */
-#define RxObjSpace3DLitVertexGetPos(_vert, _pos) \
- (*(_pos) = (_vert)->objVertex)
-#define RxObjSpace3DLitVertexSetPos(_vert, _pos) \
- ((_vert)->objVertex = *(_pos))
-
-/* Vertex colours */
-#define RxObjSpace3DLitVertexGetColor(_vert, _col) \
-MACRO_START \
-{ \
- (_col)->red = ((_vert)->color >> 16) & 0xFF; \
- (_col)->green = ((_vert)->color >> 8) & 0xFF; \
- (_col)->blue = ((_vert)->color ) & 0xFF; \
- (_col)->alpha = ((_vert)->color >> 24) & 0xFF; \
-} \
-MACRO_STOP
-#define RxObjSpace3DLitVertexSetColor(_vert, _col) \
- ((_vert)->color = (((RwUInt32)(_col)->alpha) << 24) | \
- (((RwUInt32)(_col)->red) << 16) | \
- (((RwUInt32)(_col)->green) << 8) | \
- (((RwUInt32)(_col)->blue) ))
-
-/* Us and Vs */
-#define RxObjSpace3DLitVertexGetU(_vert) \
- ((_vert)->u)
-#define RxObjSpace3DLitVertexGetV(_vert) \
- ((_vert)->v)
-#define RxObjSpace3DLitVertexSetU(_vert, _imu) \
- ((_vert)->u = (_imu))
-#define RxObjSpace3DLitVertexSetV(_vert, _imv) \
- ((_vert)->v = (_imv))
-
-/* LEGACY-SUPPORT for old objvert names - NB does NOT guarantee the
- * app will work, because the old IM3DVERTEX macros are NOT correctly
- * abstracted - 'Get' will return pointers to RwV3ds inside the
- * ObjVert, but you can't assume there are any RwV3ds inside an
- * opaque vertex type */
-
-#define RwIm3DVertexSetU RxObjSpace3DLitVertexSetU
-#define RwIm3DVertexSetV RxObjSpace3DLitVertexSetV
-#define RwIm3DVertexGetNext(_vert) ((_vert) + 1)
-
-#define RwIm2DCameraVertexSetU(_devvert, _camvert, _u, _recipz) \
-MACRO_START \
-{ \
- RwReal _uTmp = _u; \
- _camvert->u = _uTmp; \
- RwIm2DVertexSetU(_devvert, _uTmp, _recipz); \
-} \
-MACRO_STOP
-#define RwIm2DCameraVertexSetV(_devvert, _camvert, _v, _recipz) \
-MACRO_START \
-{ \
- RwReal _vTmp = _v; \
- _camvert->v = _vTmp; \
- RwIm2DVertexSetV(_devvert, _vTmp, _recipz); \
-} \
-MACRO_STOP
-
-#define RwIm3DVertexSetPos(_vert, _imx, _imy, _imz) \
-MACRO_START \
-{ \
- (_vert)->objVertex.x = _imx; \
- (_vert)->objVertex.y = _imy; \
- (_vert)->objVertex.z = _imz; \
-} \
-MACRO_STOP
-
-#define RwIm3DVertexSetNormal(vert, imx, imy, imz) \
-MACRO_START \
-{ \
- RwV3d packed; \
- packed.x = imx; \
- packed.y = imy; \
- packed.z = imz; \
- RxObjSpace3DVertexSetNormal(vert, &packed); \
-} \
-MACRO_STOP
-
-#define RwIm3DVertexSetRGBA(_vert, _r, _g, _b, _a) \
-MACRO_START \
-{ \
- ((_vert)->color = ((_a) << 24) | \
- ((_r) << 16) | \
- ((_g) << 8) | \
- ((_b))); \
-} \
-MACRO_STOP
-
-#define RwIm3DVertexGetPos(_vert) (&((_vert)->objVertex))
-#define RwIm3DVertexGetNormal(vert) (&((vert)->objNormal))
-
-#define RwIm3DVertexCopyRGBA(_dst, _src) (((_dst)->color) = ((_src)->color))
-
-/* LEGACY-SUPPORT macros */
-#define RWIM2DCAMERAVERTEXSetU(_devvert, _camvert, _u, _recipz) \
- RwIm2DCameraVertexSetU(_devvert, _camvert, _u, _recipz)
-#define RWIM2DCAMERAVERTEXSetV(_devvert, _camvert, _v, _recipz) \
- RwIm2DCameraVertexSetV(_devvert, _camvert, _v, _recipz)
-#define RWIM3DVERTEXGetNext(vert) RwIm3DVertexGetNext(vert)
-#define RWIM3DVERTEXSetPos(vert, imx, imy, imz) RwIm3DVertexSetPos(vert, imx, imy, imz)
-#define RWIM3DVERTEXGetPos(vert) RwIm3DVertexGetPos(vert)
-#define RWIM3DVERTEXSetU(vert, imu) RwIm3DVertexSetU(vert, imu)
-#define RWIM3DVERTEXSetV(vert, imv) RwIm3DVertexSetV(vert, imv)
-#define RWIM3DVERTEXSetRGBA(vert, r, g, b, a) RwIm3DVertexSetRGBA(vert, r, g, b, a)
-#define RWIM3DVERTEXSetNormal(vert, imx, imy, imz) RwIm3DVertexSetNormal(vert, imx, imy, imz)
-#define RWIM3DVERTEXCopyRGBA(dst,src) RwIm3DVertexCopyRGBA(dst,src)
-#define RXOBJSPACE3DVERTEXGetPos(_vert, _pos) \
- RxObjSpace3DVertexGetPos(_vert, _pos)
-#define RXOBJSPACE3DVERTEXSetPos(_vert, _pos) \
- RxObjSpace3DVertexSetPos(_vert, _pos)
-#define RXOBJSPACE3DVERTEXGetPreLitColor(_vert, _col) \
- RxObjSpace3DVertexGetPreLitColor(_vert, _col)
-#define RXOBJSPACE3DVERTEXSetPreLitColor(_vert, _col) \
- RxObjSpace3DVertexSetPreLitColor(_vert, _col)
-#define RXOBJSPACE3DVERTEXGetColor RxObjSpace3DVertexGetColor
-#define RXOBJSPACE3DVERTEXGetNormal(_vert, _normal) \
- RxObjSpace3DVertexGetNormal(_vert, _normal)
-#define RXOBJSPACE3DVERTEXSetNormal(_vert, _normal) \
- RxObjSpace3DVertexSetNormal(_vert, _normal)
-#define RXOBJSPACE3DVERTEXGetU(_vert) RxObjSpace3DVertexGetU(_vert)
-#define RXOBJSPACE3DVERTEXGetV(_vert) RxObjSpace3DVertexGetV(_vert)
-#define RXOBJSPACE3DVERTEXSetU(_vert, _imu) \
- RxObjSpace3DVertexSetU(_vert, _imu)
-#define RXOBJSPACE3DVERTEXSetV(_vert, _imv) \
- RxObjSpace3DVertexSetV(_vert, _imv)
-#define RXOBJSPACE3DLITVERTEXGetPos(vert, pos) \
- RxObjSpace3DLitVertexGetPos(vert, pos)
-#define RXOBJSPACE3DLITVERTEXSetPos(vert, pos) \
- RxObjSpace3DLitVertexSetPos(vert, pos)
-#define RXOBJSPACE3DLITVERTEXGetColor(vert, col) \
- RxObjSpace3DLitVertexGetColor(vert, col)
-#define RXOBJSPACE3DLITVERTEXSetColor(vert, col) \
- RxObjSpace3DLitVertexSetColor(vert, col)
-#define RXOBJSPACE3DLITVERTEXGetU(vert) \
- RxObjSpace3DLitVertexGetU(vert)
-#define RXOBJSPACE3DLITVERTEXGetV(vert) \
- RxObjSpace3DLitVertexGetV(vert)
-#define RXOBJSPACE3DLITVERTEXSetU(vert, imu) \
- RxObjSpace3DLitVertexSetU(vert, imu)
-#define RXOBJSPACE3DLITVERTEXSetV(vert, imv) \
- RxObjSpace3DLitVertexSetV(vert, imv)
-
-
-/*--- Automatically derived from: C:/daily/rwsdk/src/pipe/p2/p2renderstate.h ---*/
-
-/**
- * \ingroup rwcoregeneric
- * RxRenderStateFlag
- * Flags used in the \ref RxRenderStateVector structure */
-enum RxRenderStateFlag
-{
- rxRENDERSTATEFLAG_TEXTUREPERSPECTIVE = 0x00000001, /**<Perspective texturing is to be enabled */
- rxRENDERSTATEFLAG_ZTESTENABLE = 0x00000002, /**<Z-Buffer testing is to be performed */
- rxRENDERSTATEFLAG_ZWRITEENABLE = 0x00000004, /**<Z-Buffer writing is to be enabled */
- rxRENDERSTATEFLAG_VERTEXALPHAENABLE = 0x00000008, /**<Vertex alpha is to be enabled */
- rxRENDERSTATEFLAG_FOGENABLE = 0x00000010, /**<Fog is to be enabled */
- rxRENDERSTATEFLAG_ALPHAPRIMITIVEBUFFER = 0x00000020, /**<Alpha primitive buffering is to be enabled */
- rxRENDERSTATEFLAGFORCEENUMSIZEINT = RWFORCEENUMSIZEINT
-};
-typedef enum RxRenderStateFlag RxRenderStateFlag;
-
-typedef struct RxRenderStateVector RxRenderStateVector;
-/**
- * \ingroup rwcoregeneric
- * \struct RxRenderStateVector
- * Structure describing a render-state vector,
- * used by the RxClRenderState cluster */
-struct RxRenderStateVector
-{
- RwUInt32 Flags; /**< A load of the boolean renderstate options */
- RwShadeMode ShadeMode; /**< Flat or Gouraud currently */
- RwBlendFunction SrcBlend; /**< Src alpha, 1-src alpha, etc */
- RwBlendFunction DestBlend; /**< Dest alpha, 1-dest alpha, etc */
- RwRaster *TextureRaster; /**< texture raster */
- RwTextureAddressMode AddressModeU; /**< U addressing mode - WRAP, MIRROR, CLAMP, BORDER */
- RwTextureAddressMode AddressModeV; /**< V addressing mode - WRAP, MIRROR, CLAMP, BORDER */
- RwTextureFilterMode FilterMode; /**< filtering mode - combos of NEAREST LINEAR MIP */
- RwRGBA BorderColor; /**< Border color for texturing address mode border */
- RwFogType FogType; /**< Select the type of fogging to use */
- RwRGBA FogColor; /**< Color used for fogging */
- RwUInt8 *FogTable; /**< A 256 entry fog table */
-};
-
-#if (!defined(RxRenderStateVectorAssign))
-#define RxRenderStateVectorAssign(_target, _source) \
- ( *(_target) = *(_source) )
-#endif /* (!defined(RxRenderStateVectorAssign)) */
-
-
-
-#ifdef __cplusplus
-extern "C"
-{
-#endif /* __cplusplus */
-
-extern RxRenderStateVector *RxRenderStateVectorSetDefaultRenderStateVector(RxRenderStateVector *rsvp);
-extern const RxRenderStateVector *RxRenderStateVectorGetDefaultRenderStateVector(void);
-extern RxRenderStateVector *RxRenderStateVectorCreate(RwBool current);
-extern void RxRenderStateVectorDestroy(RxRenderStateVector *rsvp);
-extern RxRenderStateVector *RxRenderStateVectorLoadDriverState(RxRenderStateVector *rsvp);
-
-#ifdef __cplusplus
-}
-#endif /* __cplusplus */
-
-
-/*--- Automatically derived from: C:/daily/rwsdk/src/pipe/p2/p2clpcom.h ---*/
-
-/*--- Automatically derived from: C:/daily/rwsdk/src/pipe/p2/nodeRGBAInterp.h ---*/
-
-struct NodeRGBAInterpData
-{
- RwBool rgbaInterpOn;
- RxRenderStateVector state;
-};
-typedef struct NodeRGBAInterpData NodeRGBAInterpData;
-
-
-#ifdef __cplusplus
-extern "C"
-{
-#endif /* __cplusplus */
-
-extern RxNodeDefinition *RxNodeDefinitionGetRGBAInterp(void);
-
-#ifdef __cplusplus
-}
-#endif /* __cplusplus */
-
-
-/*--- Automatically derived from: C:/daily/rwsdk/src/pipe/p2/nodeUVInterp.h ---*/
-
-typedef struct RxNodeUVInterpSettings RxNodeUVInterpSettings;
-struct RxNodeUVInterpSettings
-{
- RwBool uvInterpOn;
- RxRenderStateVector state;
-};
-
-
-#ifdef __cplusplus
-extern "C"
-{
-#endif /* __cplusplus */
-
-extern RxNodeDefinition * RxNodeDefinitionGetUVInterp(void);
-
-#ifdef __cplusplus
-}
-#endif /* __cplusplus */
-
-
-/*--- Automatically derived from: C:/daily/rwsdk/src/baimage.h ---*/
-
-/****************************************************************************
- Defines
- */
-
-/* If this bit is set then the image has been allocated by the user */
-
-enum RwImageFlag
-{
- rwNAIMAGEFLAG = 0x00,
- rwIMAGEALLOCATED = 0x1,
- rwIMAGEGAMMACORRECTED = 0x2,
- rwIMAGEFLAGFORCEENUMSIZEINT = RWFORCEENUMSIZEINT
-};
-typedef enum RwImageFlag RwImageFlag;
-
-/****************************************************************************
- Global Types
- */
-
-/**
- * \ingroup datatypes
- * \typedef RwImage
- * Image containing device-independent pixels.
- * This should be considered an opaque type.
- * Use the RwImage API functions to access.
- */
-typedef struct RwImage RwImage;
-
-#if (!defined(DOXYGEN))
-struct RwImage
-{
- RwInt32 flags;
-
- RwInt32 width; /* Device may have different ideas */
- RwInt32 height; /* internally !! */
-
- RwInt32 depth; /* Of referenced image */
- RwInt32 stride;
-
- RwUInt8 *cpPixels;
- RwRGBA *palette;
-};
-#endif /* (!defined(DOXYGEN)) */
-
-/**
- * \ingroup datatypes
- * \ref RwImageCallBackRead
- * is the function registered with \ref RwImageRegisterImageFormat that is used,
- * for example by \ref RwImageRead and \ref RwImageReadMaskedImage,
- * to read images of a specific format from a disk file.
- *
- * \param imageName Pointer to a string containing the file name of the image.
- *
- * \see RwImageRegisterImageFormat
- *
- */
-typedef RwImage *(*RwImageCallBackRead)(const RwChar * imageName);
-
-/**
- * \ingroup datatypes
- * \ref RwImageCallBackWrite
- * is the function registered with \ref RwImageRegisterImageFormat that is used,
- * for example by \ref RwImageWrite,
- * to write images of a specific format to a disk file.
- *
- * \param image Pointer to the image.
- *
- * \param imageName Pointer to a string containing the file name
- * of the image.
- *
- *
- * \return Pointer to the written image.
- *
- * \see RwImageRegisterImageFormat
- *
- */
-typedef RwImage *(*RwImageCallBackWrite)(RwImage *image, const RwChar *imageName);
-
-
-/****************************************************************************
- <macro/inline functionality
- */
-
-#define RwImageSetStrideMacro(_image, _stride) \
- (((_image)->stride = (_stride)), (_image))
-
-#define RwImageSetPixelsMacro(_image, _pixels) \
- (((_image)->cpPixels = (_pixels)), (_image))
-
-#define RwImageSetPaletteMacro(_image, _palette) \
- (((_image)->palette = (_palette)), (_image))
-
-#define RwImageGetWidthMacro(_image) \
- ((_image)->width)
-
-#define RwImageGetHeightMacro(_image) \
- ((_image)->height)
-
-#define RwImageGetDepthMacro(_image) \
- ((_image)->depth)
-
-#define RwImageGetStrideMacro(_image) \
- ((_image)->stride)
-
-#define RwImageGetPixelsMacro(_image) \
- ((_image)->cpPixels)
-
-#define RwImageGetPaletteMacro(_image) \
- ((_image)->palette)
-
-
-#if !(defined(RWDEBUG) || defined(RWSUPPRESSINLINE))
-
-#define RwImageSetStride(_image, _stride) \
- RwImageSetStrideMacro(_image, _stride)
-
-#define RwImageSetPixels(_image, _pixels) \
- RwImageSetPixelsMacro(_image, _pixels)
-
-#define RwImageSetPalette(_image, _palette) \
- RwImageSetPaletteMacro(_image, _palette)
-
-#define RwImageGetWidth(_image) \
- RwImageGetWidthMacro(_image)
-
-#define RwImageGetHeight(_image) \
- RwImageGetHeightMacro(_image)
-
-#define RwImageGetDepth(_image) \
- RwImageGetDepthMacro(_image)
-
-#define RwImageGetStride(_image) \
- RwImageGetStrideMacro(_image)
-
-#define RwImageGetPixels(_image) \
- RwImageGetPixelsMacro(_image)
-
-#define RwImageGetPalette(_image) \
- RwImageGetPaletteMacro(_image)
-
-#endif /* !(defined(RWDEBUG) || defined(RWSUPPRESSINLINE)) */
-
-/****************************************************************************
- Function prototypes
- */
-
-#ifdef __cplusplus
-extern "C"
-{
-#endif /* __cplusplus */
-
- /* Creating and destroying */
-extern RwImage *RwImageCreate(RwInt32 width, RwInt32 height,
- RwInt32 depth);
-extern RwBool RwImageDestroy(RwImage * image);
-
- /* Allocating */
-extern RwImage *RwImageAllocatePixels(RwImage * image);
-extern RwImage *RwImageFreePixels(RwImage * image);
-
- /* Converting images */
-extern RwImage *RwImageCopy(RwImage * destImage,
- const RwImage * sourceImage);
-
- /* Resizing images */
-extern RwImage *RwImageResize(RwImage * image, RwInt32 width,
- RwInt32 height);
-
- /* Producing masks ! */
-extern RwImage *RwImageApplyMask(RwImage * image,
- const RwImage * mask);
-extern RwImage *RwImageMakeMask(RwImage * image);
-
- /* Helper functions */
-extern RwImage *RwImageReadMaskedImage(const RwChar * imageName,
- const RwChar * maskname);
-extern RwImage *RwImageRead(const RwChar * imageName);
-extern RwImage *RwImageWrite(RwImage * image,
- const RwChar * imageName);
-
- /* Setting and getting the default path for images */
-extern RwChar *RwImageGetPath(void);
-extern const RwChar *RwImageSetPath(const RwChar * path);
-
- /* Setting */
-#if (defined(RWDEBUG) || defined(RWSUPPRESSINLINE))
-extern RwImage *RwImageSetStride(RwImage * image, RwInt32 stride);
-extern RwImage *RwImageSetPixels(RwImage * image, RwUInt8 * pixels);
-extern RwImage *RwImageSetPalette(RwImage * image, RwRGBA * palette);
-
- /* Getting */
-extern RwInt32 RwImageGetWidth(const RwImage * image);
-extern RwInt32 RwImageGetHeight(const RwImage * image);
-extern RwInt32 RwImageGetDepth(const RwImage * image);
-extern RwInt32 RwImageGetStride(const RwImage * image);
-extern RwUInt8 *RwImageGetPixels(const RwImage * image);
-extern RwRGBA *RwImageGetPalette(const RwImage * image);
-#endif /* (defined(RWDEBUG) || defined(RWSUPPRESSINLINE)) */
-
- /* Get device dependent pixel value */
-extern RwUInt32 RwRGBAToPixel(RwRGBA * rgbIn, RwInt32 rasterFormat);
-extern RwRGBA *RwRGBASetFromPixel(RwRGBA * rgbOut,
- RwUInt32 pixelValue,
- RwInt32 rasterFormat);
-
- /* Gamma correction */
-extern RwBool RwImageSetGamma(RwReal gammaValue);
-extern RwReal RwImageGetGamma(void);
-extern RwImage *RwImageGammaCorrect(RwImage * image);
-
- /* Adding and removing gamma correction */
-extern RwRGBA *RwRGBAGammaCorrect(RwRGBA * rgb);
-
- /* Attaching toolkits */
-extern RwInt32 RwImageRegisterPlugin(RwInt32 size, RwUInt32 pluginID,
- RwPluginObjectConstructor
- constructCB,
- RwPluginObjectDestructor
- destructCB,
- RwPluginObjectCopy copyCB);
-extern RwInt32 RwImageGetPluginOffset(RwUInt32 pluginID);
-extern RwBool RwImageValidatePlugins(const RwImage * image);
-
-extern RwBool RwImageRegisterImageFormat(const RwChar * extension,
- RwImageCallBackRead
- imageRead,
- RwImageCallBackWrite
- imageWrite);
-
- /* Finding an extension for an image to load */
-extern const RwChar *RwImageFindFileType(const RwChar * imageName);
-
- /* Reading and writing images to streams */
-extern RwInt32 RwImageStreamGetSize(const RwImage * image);
-extern RwImage *RwImageStreamRead(RwStream * stream);
-extern const RwImage *RwImageStreamWrite(const RwImage * image,
- RwStream * stream);
-
-
-#ifdef __cplusplus
-}
-#endif /* __cplusplus */
-
-/*--- Automatically derived from: C:/daily/rwsdk/src/batextur.h ---*/
-
-/****************************************************************************
- Defines
- */
-
-/* Type ID */
-#define rwTEXDICTIONARY 6
-
-/* Mipmap Name generation - maximum number of RwChar characters which can
- * be appended to the root name.
- */
-#define rwTEXTUREMIPMAPNAMECHARS 16
-
-/* We define texture names to be a maximum of 16 ISO chars */
-#define rwTEXTUREBASENAMELENGTH 32
-
-#define rwTEXTUREFILTERMODEMASK 0x000000FF
-#define rwTEXTUREADDRESSINGUMASK 0x00000F00
-#define rwTEXTUREADDRESSINGVMASK 0x0000F000
-#define rwTEXTUREADDRESSINGMASK (rwTEXTUREADDRESSINGUMASK | \
- rwTEXTUREADDRESSINGVMASK)
-
-/****************************************************************************
- Global Types
- */
-
-/**
- * \ingroup datatypes
- * \typedef RwTexDictionary
- * is a texture dictionary containing textures.
- * This should be considered an opaque type.
- * Use the RwTexDictionary API functions to access.
- */
-typedef struct RwTexDictionary RwTexDictionary;
-
-#if (!defined(DOXYGEN))
-struct RwTexDictionary
-{
- RwObject object; /* Homogeneous type */
- RwLinkList texturesInDict; /* List of textures in dictionary */
- RwLLLink lInInstance; /* Link list of all dicts in system */
-};
-/* Information is entirely device dependent */
-#endif /* (!defined(DOXYGEN)) */
-
-
-/* Parent is the dictionary */
-
-/**
- * \ingroup datatypes
- * \typedef RwTexture
- * is a texture object.
- * This should be considered an opaque type.
- * Use the RwTexture API functions to access.
- */
-typedef struct RwTexture RwTexture;
-
-#if (!defined(DOXYGEN))
-struct RwTexture
-{
- RwRaster *raster; /** pointer to RwRaster with data */
- RwTexDictionary *dict; /* Dictionary this texture is in */
- RwLLLink lInDictionary; /* List of textures in this dictionary */
-
- RwChar name[rwTEXTUREBASENAMELENGTH]; /* Name of the texture */
- RwChar mask[rwTEXTUREBASENAMELENGTH]; /* Name of the textures mask */
-
- /* 31 [xxxxxxxx xxxxxxxx vvvvuuuu ffffffff] 0 */
- RwUInt32 filterAddressing; /* Filtering & addressing mode flags */
-
- RwInt32 refCount; /* Reference count, surprisingly enough */
-};
-#endif /* (!defined(DOXYGEN)) */
-
-/**
- * \ingroup datatypes
- * \ref RwTextureCallBackRead
- * represents the function used by \ref RwTextureRead to read the specified
- * texture from a disk file. This function should return a pointer to the
- * texture to indicate success.
- *
- * \param name Pointer to a string containing the name of
- * the texture to read.
- *
- * \param maskName Pointer to a string containing the name
- * of the mask to read and apply to the texture.
- *
- * \return Pointer to the texture
- *
- * \see RwTextureSetReadCallBack
- * \see RwTextureGetReadCallBack
- */
-typedef RwTexture *(*RwTextureCallBackRead)(const RwChar *name,
- const RwChar *maskName);
-
-/**
- * \ingroup datatypes
- * \ref RwTextureCallBack
- * represents the function called from \ref RwTexDictionaryForAllTextures
- * for all textures in a given texture dictionary. This function should
- * return the current texture to indicate success. The callback may return
- * NULL to terminate further callbacks on the texture dictionary.
- *
- * \param texture Pointer to the current texture.
- *
- * \param pData User-defined data pointer.
- *
- * \return Pointer to the current texture
- *
- * \see RwTexDictionaryForAllTextures
- */
-typedef RwTexture *(*RwTextureCallBack)(RwTexture *texture, void *pData);
-
-
-/**
- * \ingroup datatypes
- * \ref RwTexDictionaryCallBack
- * represents the function called from \ref RwTexDictionaryForAllTexDictionaries
- * for all texture dictionaries that currently exist. This function should
- * return the current texture dictionary to indicate success. The callback may
- * return NULL to terminate further callbacks on the texture dictionary. It may
- * safely destroy the current texture dictionary without adversely affecting
- * the iteration process.
- *
- * \param dict Pointer to the current texture dictionary.
- *
- * \param pData User-defined data pointer.
- *
- * \return Pointer to the current texture dictionary
- *
- * \see RwTexDictionaryForAllTexdictionaries
- */
-typedef RwTexDictionary *(*RwTexDictionaryCallBack)(RwTexDictionary *dict, void *data);
-
-
-/**
- * \ingroup datatypes
- * \ref RwTextureCallBackMipmapGeneration
- * is the callback function supplied to \ref RwTextureSetMipmapGenerationCallBack
- * and returned from \ref RwTextureGetMipmapGenerationCallBack.
- *
- * The supplied function will be passed a pointer to a raster and an image.
- * The raster is the target for the generated mipmap levels and the image
- * provides the base for their generation.
- *
- * \param raster Pointer to raster, the target for generated mipmap levels
- * \param image Pointer to image, used to generate mipmap levels.
- *
- * \return
- * Returns a pointer to the raster if successful or NULL if an error occurred.
- *
- * \see RwTextureSetMipmapGenerationCallBack
- * \see RwTextureGetMipmapGenerationCallBack
- * \see RwTextureSetAutoMipmapping
- * \see RwTextureGetAutoMipmapping
- */
-typedef RwRaster *(*RwTextureCallBackMipmapGeneration)(RwRaster * raster,
- RwImage * image);
-
-/**
- * \ingroup datatypes
- * \ref RwTextureCallBackMipmapName
- * is the callback function supplied to \ref RwTextureSetMipmapNameCallBack and
- * returned from \ref RwTextureGetMipmapNameCallBack.
- *
- * The supplied function will be passed a pointer to a root name, a maskName, a mipmap
- * level and a format. The function returns TRUE if successful and the root name will have been
- * modified to equal the mipmap name.
- *
- * \param name Pointer to a string containing the root name of the texture. The
- * mipmap level name is put here.
- * \param maskName Pointer to a string containing the root mask name of the texture or
- * NULL if no mask name is required.
- * \param mipLevel A value equal to the mipmap level for which the name is required.
- * \param format A value describing the mipmapping mode. A combination of the bit
- * flags rwRASTERFORMATMIPMAP and rwRASTERFORMATAUTOMIPMAP.
- *
- * \return
- * Returns TRUE if the name is generated successfully or FALSE if an error occurred.
- *
- * \see RwTextureGenerateMipmapName
- * \see RwTextureSetMipmapNameCallBack
- * \see RwTextureGetMipmapNameCallBack
- * \see RwTextureSetAutoMipmapping
- * \see RwTextureGetAutoMipmapping
- */
-typedef RwBool (*RwTextureCallBackMipmapName)(RwChar *name,
- RwChar *maskName,
- RwUInt8 mipLevel,
- RwInt32 format);
-
-/****************************************************************************
- <macro/inline functionality
- */
-
-#define RwTextureGetRasterMacro(_tex) \
- ((_tex)->raster)
-
-#define RwTextureAddRefMacro(_tex) \
- (((_tex)->refCount++), (_tex))
-
-#define RwTextureAddRefVoidMacro(_tex) \
-MACRO_START \
-{ \
- (_tex)->refCount++; \
-} \
-MACRO_STOP
-
-#define RwTextureGetNameMacro(_tex) \
- ((_tex)->name)
-
-#define RwTextureGetMaskNameMacro(_tex) \
- ((_tex)->mask)
-
-#define RwTextureGetDictionaryMacro(_tex) \
- ((_tex)->dict)
-
-#define RwTextureSetFilterModeMacro(_tex, _filtering) \
- (((_tex)->filterAddressing = \
- ((_tex)->filterAddressing & ~rwTEXTUREFILTERMODEMASK) | \
- (((RwUInt32)(_filtering)) & rwTEXTUREFILTERMODEMASK)), \
- (_tex))
-
-#define RwTextureGetFilterModeMacro(_tex) \
- ((RwTextureFilterMode)((_tex)->filterAddressing & \
- rwTEXTUREFILTERMODEMASK))
-
-#define RwTextureSetAddressingMacro(_tex, _addressing) \
- (((_tex)->filterAddressing = \
- ((_tex)->filterAddressing & ~rwTEXTUREADDRESSINGMASK) | \
- (((((RwUInt32)(_addressing)) << 8) & rwTEXTUREADDRESSINGUMASK) | \
- ((((RwUInt32)(_addressing)) << 12) & rwTEXTUREADDRESSINGVMASK))), \
- (_tex))
-
-#define RwTextureSetAddressingUMacro(_tex, _addressing) \
- (((_tex)->filterAddressing = \
- ((_tex)->filterAddressing & ~rwTEXTUREADDRESSINGUMASK) | \
- (((RwUInt32)(_addressing) << 8) & rwTEXTUREADDRESSINGUMASK)), \
- (_tex))
-
-#define RwTextureSetAddressingVMacro(_tex, _addressing) \
- (((_tex)->filterAddressing = \
- ((_tex)->filterAddressing & ~rwTEXTUREADDRESSINGVMASK) | \
- (((RwUInt32)(_addressing) << 12) & rwTEXTUREADDRESSINGVMASK)), \
- (_tex))
-
-#define RwTextureGetAddressingMacro(_tex) \
- (((((_tex)->filterAddressing & rwTEXTUREADDRESSINGUMASK) >> 8) == \
- (((_tex)->filterAddressing & rwTEXTUREADDRESSINGVMASK) >> 12)) ? \
- ((RwTextureAddressMode)(((_tex)->filterAddressing & \
- rwTEXTUREADDRESSINGVMASK) >> 12)) : \
- rwTEXTUREADDRESSNATEXTUREADDRESS)
-
-#define RwTextureGetAddressingUMacro(_tex) \
- ((RwTextureAddressMode)(((_tex)->filterAddressing & \
- rwTEXTUREADDRESSINGUMASK) >> 8))
-
-#define RwTextureGetAddressingVMacro(_tex) \
- ((RwTextureAddressMode)(((_tex)->filterAddressing & \
- rwTEXTUREADDRESSINGVMASK) >> 12))
-
-
-#if !(defined(RWDEBUG) || defined(RWSUPPRESSINLINE))
-
-#define RwTextureGetRaster(_tex) \
- RwTextureGetRasterMacro(_tex)
-
-#define RwTextureAddRef(_tex) \
- RwTextureAddRefMacro(_tex)
-
-#define RwTextureGetName(_tex) \
- RwTextureGetNameMacro(_tex)
-
-#define RwTextureGetMaskName(_tex) \
- RwTextureGetMaskNameMacro(_tex)
-
-#define RwTextureGetDictionary(_tex) \
- RwTextureGetDictionaryMacro(_tex)
-
-#define RwTextureSetFilterMode(_tex, _filtering) \
- RwTextureSetFilterModeMacro(_tex, _filtering)
-
-#define RwTextureGetFilterMode(_tex) \
- RwTextureGetFilterModeMacro(_tex)
-
-#define RwTextureSetAddressing(_tex, _addressing) \
- RwTextureSetAddressingMacro(_tex, _addressing)
-
-#define RwTextureSetAddressingU(_tex, _addressing) \
- RwTextureSetAddressingUMacro(_tex, _addressing)
-
-#define RwTextureSetAddressingV(_tex, _addressing) \
- RwTextureSetAddressingVMacro(_tex, _addressing)
-
-#define RwTextureGetAddressing(_tex) \
- RwTextureGetAddressingMacro(_tex)
-
-#define RwTextureGetAddressingU(_tex) \
- RwTextureGetAddressingUMacro(_tex)
-
-#define RwTextureGetAddressingV(_tex) \
- RwTextureGetAddressingVMacro(_tex)
-
-#endif /* !(defined(RWDEBUG) || defined(RWSUPPRESSINLINE)) */
-
-
-
-/****************************************************************************
- Function prototypes
- */
-
-#ifdef __cplusplus
-extern "C"
-{
-#endif /* __cplusplus */
-
- /* Reading mip maps */
-
- /* Setting mip mapping states */
-extern RwBool RwTextureSetMipmapping(RwBool enable);
-extern RwBool RwTextureGetMipmapping(void);
-extern RwBool RwTextureSetAutoMipmapping(RwBool enable);
-extern RwBool RwTextureGetAutoMipmapping(void);
-
- /* Setting and getting the mipmap generation function */
-extern RwBool
-RwTextureSetMipmapGenerationCallBack(RwTextureCallBackMipmapGeneration
- callback);
-extern RwTextureCallBackMipmapGeneration
-RwTextureGetMipmapGenerationCallBack(void);
-
- /* Setting and getting the mipmap file name generation function */
-extern RwBool
-RwTextureSetMipmapNameCallBack(RwTextureCallBackMipmapName callback);
-extern RwTextureCallBackMipmapName RwTextureGetMipmapNameCallBack(void);
-
- /* Generating mipmaps for a raster */
-extern RwBool RwTextureGenerateMipmapName(RwChar * name,
- RwChar * maskName,
- RwUInt8 mipLevel,
- RwInt32 format);
-extern RwBool RwTextureRasterGenerateMipmaps(RwRaster * raster,
- RwImage * image);
-
- /* LEGACY-SUPPORT mip mapping */
-extern RwBool _rwTextureSetAutoMipMapState(RwBool enable);
-extern RwBool _rwTextureGetAutoMipMapState(void);
-
- /* Setting and getting the callback function */
-extern RwTextureCallBackRead RwTextureGetReadCallBack(void);
-extern RwBool RwTextureSetReadCallBack(RwTextureCallBackRead
- fpCallBack);
-
- /* Texture and mask names */
-extern RwTexture *RwTextureSetName(RwTexture * texture,
- const RwChar * name);
-extern RwTexture *RwTextureSetMaskName(RwTexture * texture,
- const RwChar * maskName);
-
- /* Creating/destroying dictionaries */
-extern RwTexDictionary *RwTexDictionaryCreate(void);
-extern RwBool RwTexDictionaryDestroy(RwTexDictionary * dict);
-
- /* Textures */
-extern RwTexture *RwTextureCreate(RwRaster * raster);
-extern RwBool RwTextureDestroy(RwTexture * texture);
-
- /* Setting and getting texture map rasters */
-extern RwTexture *RwTextureSetRaster(RwTexture * texture,
- RwRaster * raster);
-
- /* Dictionary access */
-extern RwTexture *RwTexDictionaryAddTexture(RwTexDictionary * dict,
- RwTexture * texture);
-extern RwTexture *RwTexDictionaryRemoveTexture(RwTexture * texture);
-extern RwTexture *RwTexDictionaryFindNamedTexture(RwTexDictionary *
- dict,
- const RwChar * name);
-
- /* Reading a texture */
-extern RwTexture *RwTextureRead(const RwChar * name,
- const RwChar * maskName);
-
- /* Setting the current dictionary */
-extern RwTexDictionary *RwTexDictionaryGetCurrent(void);
-extern RwTexDictionary *RwTexDictionarySetCurrent(RwTexDictionary * dict);
-
- /* Enumerating textures */
-extern const RwTexDictionary *RwTexDictionaryForAllTextures(const
- RwTexDictionary
- * dict,
- RwTextureCallBack
- fpCallBack,
- void *pData);
-
- /* Enumerating the texture dictionaries currently in the system */
-extern RwBool RwTexDictionaryForAllTexDictionaries(
- RwTexDictionaryCallBack fpCallBack, void *pData);
-
-
- /* Attaching toolkits */
-extern RwInt32 RwTextureRegisterPlugin(RwInt32 size,
- RwUInt32 pluginID,
- RwPluginObjectConstructor
- constructCB,
- RwPluginObjectDestructor
- destructCB,
- RwPluginObjectCopy copyCB);
-extern RwInt32 RwTexDictionaryRegisterPlugin(RwInt32 size,
- RwUInt32 pluginID,
- RwPluginObjectConstructor
- constructCB,
- RwPluginObjectDestructor
- destructCB,
- RwPluginObjectCopy
- copyCB);
-extern RwInt32 RwTextureGetPluginOffset(RwUInt32 pluginID);
-extern RwInt32 RwTexDictionaryGetPluginOffset(RwUInt32 pluginID);
-extern RwBool RwTextureValidatePlugins(const RwTexture * texture);
-extern RwBool RwTexDictionaryValidatePlugins(const RwTexDictionary *
- dict);
-
-#if (defined(RWDEBUG) || defined(RWSUPPRESSINLINE))
-/* Textures */
-extern RwRaster *RwTextureGetRaster(const RwTexture *texture);
-extern RwTexture *RwTextureAddRef(RwTexture *texture);
-
-/* Texture and mask names */
-extern RwChar *RwTextureGetName(RwTexture *texture);
-extern RwChar *RwTextureGetMaskName(RwTexture *texture);
-
-/* Get owner dictionary */
-extern RwTexDictionary *RwTextureGetDictionary(RwTexture *texture);
-
-/* Filtering */
-extern RwTexture *RwTextureSetFilterMode(RwTexture *texture,
- RwTextureFilterMode filtering);
-
-extern RwTextureFilterMode RwTextureGetFilterMode(const RwTexture *texture);
-
-/* Addressing */
-extern RwTexture *RwTextureSetAddressing(RwTexture *texture,
- RwTextureAddressMode addressing);
-extern RwTexture *RwTextureSetAddressingU(RwTexture *texture,
- RwTextureAddressMode addressing);
-extern RwTexture *RwTextureSetAddressingV(RwTexture *texture,
- RwTextureAddressMode addressing);
-
-extern RwTextureAddressMode RwTextureGetAddressing(const RwTexture *texture);
-extern RwTextureAddressMode RwTextureGetAddressingU(const RwTexture *texture);
-extern RwTextureAddressMode RwTextureGetAddressingV(const RwTexture *texture);
-
-#endif /* (defined(RWDEBUG) || defined(RWSUPPRESSINLINE)) */
-
-
-#ifdef __cplusplus
-}
-#endif /* __cplusplus */
-
-#define RwTextureSetAutoMipMapState(_enable) \
- _rwTextureSetAutoMipMapState(_enable)
-
-#define RwTextureGetAutoMipMapState() \
- _rwTextureGetAutoMipMapState()
-
-
-/*--- Automatically derived from: C:/daily/rwsdk/src/pipe/p2/p2stdcls.h ---*/
-
-/*
- * Current:
- *
- * wait on Simon for instructions to do cluster renaming thing,
- * or go thru and change all cluster type names and cluster
- * names (add CSL?)
- *
- */
-
-/* CamVerts.csl */
-
-/* clip flags */
-
-/**
- * \ingroup rwcoregeneric
- * \ref RwClipFlag
- * Flags specifying the clipping status of a vertex
- */
-enum RwClipFlag
-{
- rwXLOCLIP = 0x01, /**<The vertex is outside the low X clip-plane */
- rwXHICLIP = 0x02, /**<The vertex is outside the high X clip-plane */
- rwXCLIP = 0x03, /**<The vertex is outside an X clip-plane */
-
- rwYLOCLIP = 0x04, /**<The vertex is outside the low Y clip-plane */
- rwYHICLIP = 0x08, /**<The vertex is outside the high Z clip-plane */
- rwYCLIP = 0x0C, /**<The vertex is outside a Y clip-plane */
-
- rwZLOCLIP = 0x10, /**<The vertex is outside the low Z clip-plane */
- rwZHICLIP = 0x20, /**<The vertex is outside the high Z clip-plane */
- rwZCLIP = 0x30, /**<The vertex is outside a Z clip-plane */
-
- rwCLIPMASK = 0x3F, /**<Mask covering all used bits in the clip flags
- * in case a plugin wants free ones to use (e.g RpGloss) */
-
- rwCLIPFLAGFORCEENUMSIZEINT = RWFORCEENUMSIZEINT
-};
-typedef enum RwClipFlag RwClipFlag;
-
-/**
- * \ingroup rwcoregeneric
- * \typedef RwClipFlag
- * Typedef for RwClipFlag enumeration specifying the clipping status of a vertex
- */
-
-
-typedef struct RxCamSpace3DVertex RxCamSpace3DVertex;
-
-/**
- * \ingroup rwcoregeneric
- * \struct RxCamSpace3DVertex
- * Structure describing a camera-space 3D vertex.
- */
-struct RxCamSpace3DVertex
-{
- /* Position in sheared camera-space (pre-projection) */
- RwV3d cameraVertex; /**< \ref RwV3d camera-space position of the vertex */
- /* Clip flags on this vertex */
- RwUInt8 clipFlags; /**< Clip flags for the vertex generated during transformation into camera-space, see \ref RwClipFlag */
- RwUInt8 pad[3]; /**< Alignment padding */
- /* Lit colour */
- RwRGBAReal col; /**< Accumulated \ref RwReal light values (initialized to zero or prelight colours) */
- /* Only used by the clipper */
- RwReal u; /**< Texture U coordinate */
- RwReal v; /**< Texture V coordinate */
-};
-
-/* Supports pipeline1 apps: */
-/**
- * \ingroup datatypes
- * \typedef RwCameraVertex
- * typedef for a structure describing a camera-space 3D vertex.
- */
-typedef RxCamSpace3DVertex RwCameraVertex;
-
-/* (used during lighting) Doesn't use alpha yet, but it will */
-#define RxCamSpace3DVertexSetRGBA(camvert, r, g, b, a) \
-MACRO_START \
-{ \
- ((camvert)->col.red = (r)); \
- ((camvert)->col.green = (g)); \
- ((camvert)->col.blue = (b)); \
- ((camvert)->col.alpha = (a)); \
-} \
-MACRO_STOP
-
-#define RxCamSpace3DVertexAddRGBA(camvert, r, g, b, a) \
-MACRO_START \
-{ \
- ((camvert)->col.red += (r)); \
- ((camvert)->col.green += (g)); \
- ((camvert)->col.blue += (b)); \
- ((camvert)->col.alpha += (a)); \
-} \
-MACRO_STOP
-
-/* LEGACY-SUPPORT macros */
-#define RXCAMSPACE3DVERTEXSetRGBA(camvert, r, g, b, a) \
- RxCamSpace3DVertexSetRGBA(camvert, r, g, b, a)
-#define RXCAMSPACE3DVERTEXAddRGBA(camvert, r, g, b, a) \
- RxCamSpace3DVertexAddRGBA(camvert, r, g, b, a)
-
-/* MeshState.csl */
-
-
-/**
- * \ingroup rwcoregeneric
- * \ref RxGeometryFlag
- * Flags describing geometry properties
- */
-enum RxGeometryFlag
-{
- rxGEOMETRY_TRISTRIP = 0x01, /**<This geometry's meshes can be rendered as tri-strips */
- rxGEOMETRY_POSITIONS = 0x02, /**<This geometry has positions */
- rxGEOMETRY_TEXTURED = 0x04, /**<This geometry has textures applied */
- rxGEOMETRY_PRELIT = 0x08, /**<This geometry has luminance values */
- rxGEOMETRY_NORMALS = 0x10, /**<This geometry has normals */
- rxGEOMETRY_LIGHT = 0x20, /**<This geometry will be lit */
- rxGEOMETRY_MODULATE = 0x40, /**<This geometry will modulate the material color with the vertex colors (prelit + lit) */
- rxGEOMETRY_TEXTURED2 = 0x80, /**<This geometry has 2 set of texture coordinates */
-
- rxGEOMETRY_COLORED = 0x100, /**<This mesh specifies per-vertex colors. NB: ONLY USED IN IM3D */
-
- rxGEOMETRYFLAGFORCEENUMSIZEINT = RWFORCEENUMSIZEINT
-};
-/**
- * \ingroup rwcoregeneric
- * \typedef RxGeometryFlag
- * Typedef for RxGeometryFlag enumeration describing geometry properties
- */
-typedef enum RxGeometryFlag RxGeometryFlag;
-
-typedef struct RxMeshStateVector RxMeshStateVector;
-
-/**
- * \ingroup rwcoregeneric
- * \struct RxMeshStateVector
- * Structure describing a mesh-state vector,
- * used by the RxClMeshState cluster
- */
-struct RxMeshStateVector
-{
- RwInt32 Flags; /**< \ref RxGeometryFlag Flags from the source geometry */
- void *SourceObject; /**< A void pointer. In immediate mode it points to an
- * internal structure and in atomic/world-sector object
- * or material pipelines it points to an \ref RpMaterial. */
- RwMatrix Obj2World; /**< \ref RwMatrix to transform from object-space to world-space */
- RwMatrix Obj2Cam; /**< \ref RwMatrix to transform from object-space to camera-space */
- RwSurfaceProperties SurfaceProperties; /**< \ref RwSurfaceProperties */
- /* We can't necessarily reference an RpMaterial in here (i.e with Im3D),
- * because RpMaterials are defined in RpWorld not RwCore */
- RwTexture *Texture; /**< A pointer to a \ref RwTexture */
- RwRGBA MatCol; /**< \ref RwRGBA material colour */
- RxPipeline *Pipeline; /**< A pointer to the material pipeline where appropriate */
- /* rwPRIMTYPETRILIST/TRIFAN/TRISTRIP/LINELIST/POLYLINE */
- RwPrimitiveType PrimType; /**< \ref RwPrimitiveType primitive type */
- /* Interpretation based on PrimType */
- RwUInt32 NumElements; /**< \ref RwUInt32 number of elements (triangles, lines...) */
- RwUInt32 NumVertices; /**< \ref RwUInt32 number of vertices */
- RwInt32 ClipFlagsOr; /**< Boolean OR of the \ref RwClipFlag clip flags of all vertices in the mesh */
- RwInt32 ClipFlagsAnd; /**< Boolean AND of the \ref RwClipFlag clip flags of all vertices in the mesh */
- void *SourceMesh; /**< A void pointer to the source \ref RpMesh */
- void *DataObject; /**< Mirrors the void data pointer of \ref RxPipelineExecute */
-};
-
-/* RxScatter.csl */
-typedef struct RxScatter RxScatter;
-/**
- * \ingroup rwcoregeneric
- * \struct RxScatter
- * Structure used by the RxClScatter cluster
- */
-struct RxScatter
-{
- RxPipeline *pipeline; /**< \ref RxPipeline pointer, causes Scatter.csl
- * to spit the packet out to the specified pipeline */
- RxPipelineNode *node; /**< \ref RxPipelineNode pointer, causes Scatter.csl
- * to send the packet to the specified PipelineNode
- * (as long as it is actually one of its outputs!) */
-};
-
-/* RxInterpolants.csl */
-typedef struct RxInterp RxInterp;
-/**
- * \ingroup rwcoregeneric
- * \struct RxInterp
- * Structure used by the RxClInterp cluster
- */
-struct RxInterp
-{
- RxVertexIndex originalVert; /**< \ref RxVertexIndex index to the new vertex generated on the clipped edge */
- RxVertexIndex parentVert1; /**< \ref RxVertexIndex index to the first vertex of the clipped edge */
- RxVertexIndex parentVert2; /**< \ref RxVertexIndex index to the second vertex of the clipped edge */
- RwReal interp; /**< \ref RwReal interpolant along the clipped edge */
-};
-
-/* RxUVs.csl */
-typedef struct RxUV RxUV;
-/**
- * \ingroup rwcoregeneric
- * \struct RxUV
- * Structure used by the RxClUV cluster
- */
-struct RxUV
-{
- RwReal u; /**< \ref RwReal U texture coordinate */
- RwReal v; /**< \ref RwReal V texture coordinate */
-};
-
-/* RxTriPlanes.csl */
-typedef struct RxTriPlane RxTriPlane;
-
-/**
- * \ingroup rwcoregeneric
- * \struct RxTriPlane
- * for the packed plane structure used in RpWorlds and by the RxClTriPlane cluster
- * NOTE: this is currently not used in any nodes that ship with the SDK
- */
-struct RxTriPlane
-{
- /* Packed plane format used in RpWorlds */
- RwUInt32 N; /**< \ref RwUInt32 Packed normal */
- RwReal w; /**< \ref RwReal distance from origin */
-};
-
-/* RxVSteps.csl */
-
-#if (defined(_MSC_VER))
-# if (_MSC_VER>=1000)
-# pragma pack(push, 1)
-# endif /* (_MSC_VER>=1000) */
-#endif /* (defined(_MSC_VER)) */
-
-typedef struct RxVStep RxVStep;
-/**
- * \ingroup rwcoregeneric
- * \struct RxVStep
- * Structure used by the RxClVStep cluster.
- * To use the step values in the RxClVStep cluster, start at the beginning
- * of the RxVStep and vertex arrays and proceed as follows: (a) Process one
- * vertex, (b) Skip 'step' vertices, (c) Increment the cursor of the RxClVStep
- * cluster. Repeat (a)-(c) until the entire vertex array has been processed.
- * If the RxVStep array contains valid data, you should not have to bounds-check
- * its cursor.
- */
-struct RxVStep
-{
- RwUInt8 step; /**< \ref RwUInt8 The number of vertices after the current one
- * which can be skipped in lighting and other calculations because,
- * for example, they belong only to back-facing triangles */
-};
-
-#if (defined(_MSC_VER))
-# if (_MSC_VER>=1000)
-# pragma pack(pop)
-# endif /* (_MSC_VER>=1000) */
-#endif /* (defined(_MSC_VER)) */
-
-/* CamNorms.csl */
-/**
- * \ingroup rwcoregeneric
- * \typedef RxCamNorm
- * typedef for \ref RwV3d used by the RxClVStep cluster */
-typedef RwV3d RxCamNorm;
-
-
-#ifdef __cplusplus
-extern "C"
-{
-#endif /* __cplusplus */
-
-/* Uses the RxObjSpace3DVertex type (see pipmodel.h) */
-extern RxClusterDefinition RxClObjSpace3DVertices;
-/* Uses the RxCamSpace3DVertex type */
-extern RxClusterDefinition RxClCamSpace3DVertices;
-/* Uses the RxScrSpace2DVertex type (see pipmodel.h) */
-extern RxClusterDefinition RxClScrSpace2DVertices;
-/* Uses the RxInterp type */
-extern RxClusterDefinition RxClInterpolants;
-/* Uses the RxMeshStateVector type */
-extern RxClusterDefinition RxClMeshState;
-/* Uses the RxRenderStateVector type (p2renderstate.c/h) */
-extern RxClusterDefinition RxClRenderState;
-/* Uses the RxVertexIndex type */
-extern RxClusterDefinition RxClIndices;
-/* Uses the RxScatter type */
-extern RxClusterDefinition RxClScatter;
-/* Uses the RxUV type */
-extern RxClusterDefinition RxClUVs;
-/* Uses the RxVStep type */
-extern RxClusterDefinition RxClVSteps;
-/* Uses the RwRGBAReal type */
-extern RxClusterDefinition RxClRGBAs;
-/* Uses the RxCamNorm type */
-extern RxClusterDefinition RxClCamNorms;
-
-/* Uses the RxTriPlane type.
- * NOTE: this is currently not used in any nodes that ship with the SDK */
-extern RxClusterDefinition RxClTriPlanes;
-
-#ifdef __cplusplus
-}
-#endif /* __cplusplus */
-
-
-/*--- Automatically derived from: C:/daily/rwsdk/src/pipe/p2/baim3d.h ---*/
-
-/**
- * \ingroup datatypes
- * RwIm3DTransformFlags
- * The bit-field type RwIm3DTransformFlags
- * specifies options available for controlling execution of the 3D immediate
- * mode pipeline (see API function \ref RwIm3DTransform):*/
-enum RwIm3DTransformFlags
-{
- rwIM3D_VERTEXUV = 1, /**<Texture coordinates in source vertices should be used */
- rwIM3D_ALLOPAQUE = 2, /**<All source vertices are opaque (alpha is 255) */
- rwIM3D_NOCLIP = 4, /**<No clipping should be performed on the geometry (the
- * app may know it is all onscreen or within the guard band clipping
- * region for the current hardware, so clipping can be skipped) */
- rwIM3D_VERTEXXYZ = 8, /**<Vertex positions */
- rwIM3D_VERTEXRGBA = 16, /**<Vertex color */
-
- rwIM3DTRANSFORMFLAGSFORCEENUMSIZEINT = RWFORCEENUMSIZEINT
-};
-typedef enum RwIm3DTransformFlags RwIm3DTransformFlags;
-
-
-
-typedef struct rwIm3DPool rwIm3DPool;
-typedef struct rwImmediGlobals rwImmediGlobals;
-typedef struct rwIm3DRenderPipelines rwIm3DRenderPipelines;
-typedef struct _rwIm3DPoolStash _rwIm3DPoolStash;
-
-#if (0 && defined(SKY2))
-typedef struct rwIm3DVertexCache RwIm3DVertexCache;
-#endif /* (0&& defined(SKY2)) */
-
-/* complete information to reconstruct post-transform Im3D "mesh" packet */
-struct _rwIm3DPoolStash
-{
- RwUInt32 flags; /* rwIM3D_VERTEXUV, rwIM3D_ALLOPAQUE, rwIM3D_NOCLIP etc */
- RwMatrix *ltm; /* world-space frame of the vertices, if they have one */
- RwUInt32 numVerts;
- RxObjSpace3DVertex *objVerts;
- RxCamSpace3DVertex *camVerts;
- RxScrSpace2DVertex *devVerts;
- RxMeshStateVector *meshState;
- RxRenderStateVector *renderState;
- RxPipeline *pipeline;
- RwPrimitiveType primType;
- RxVertexIndex *indices;
- RwUInt32 numIndices;
-};
-
-/* Used as a cache of transformed vertices */
-struct rwIm3DPool
-{
- RwUInt16 numElements; /* could become RwUInt32 nowadays */
- RwUInt16 pad; /* alignment padding */
- void *elements; /* the original array of verts (or whatever...) - referenced not copied */
- RwInt32 stride; /* the stride of the element */
- _rwIm3DPoolStash stash;
-};
-
-struct rwIm3DRenderPipelines
-{
- /* One Im3D render pipeline pointer per rwPRIMTYPE
- * (several pointers may point to the same pipeline though) */
- RxPipeline *triList;
- RxPipeline *triFan;
- RxPipeline *triStrip;
- RxPipeline *lineList;
- RxPipeline *polyLine;
- RxPipeline *pointList;
-};
-
-struct rwImmediGlobals
-{
- RxPipeline *genericIm3DTransformPipeline;
- rwIm3DRenderPipelines genericIm3DRenderPipelines;
-
- RxPipeline *im3DTransformPipeline;
- rwIm3DRenderPipelines im3DRenderPipelines;
-
- /* Platforms that have their own non-generic pipelines
- * (OPENGL, D3D7, SKY2, KAMUI2, DOLPHIN) put them here: */
- RxPipeline *platformIm3DTransformPipeline;
- rwIm3DRenderPipelines platformIm3DRenderPipelines;
-
-#if (defined(SKY2_DRVMODEL_H))
- /* The triangle PS2All render pipe automatically
- * calls this PS2AllMat pipeline: */
- RxPipeline *ps2AllMatIm3DTrianglePipeline;
- /* The line PS2All render pipe automatically
- * calls this PS2AllMat pipeline: */
- RxPipeline *ps2AllMatIm3DLinePipeline;
- /* PS2Manager pipelines */
- RxPipeline *ps2ManagerIm3DRenderPipeline;
-#endif /* (defined(SKY2_DRVMODEL_H)) */
-
- rwIm3DPool curPool; /* The current cache of transformed vertices */
-};
-
-
-#ifdef __cplusplus
-extern "C"
-{
-#endif /* __cplusplus */
-
-extern rwIm3DPool *_rwIm3DGetPool( void );
-
-extern void *RwIm3DTransform(RwIm3DVertex *pVerts, RwUInt32 numVerts,
- RwMatrix *ltm, RwUInt32 flags);
-extern RwBool RwIm3DEnd(void);
-
-extern RwBool RwIm3DRenderLine(RwInt32 vert1, RwInt32 vert2);
-extern RwBool RwIm3DRenderTriangle(RwInt32 vert1, RwInt32 vert2,
- RwInt32 vert3);
-extern RwBool RwIm3DRenderIndexedPrimitive(RwPrimitiveType primType,
- RwImVertexIndex *indices,
- RwInt32 numIndices);
-extern RwBool RwIm3DRenderPrimitive(RwPrimitiveType primType);
-
-extern RxPipeline *RwIm3DGetGenericTransformPipeline(void);
-extern RxPipeline *RwIm3DGetGenericRenderPipeline(RwPrimitiveType primType);
-
-extern RxPipeline *RwIm3DGetTransformPipeline(void);
-extern RxPipeline *RwIm3DGetRenderPipeline( RwPrimitiveType primType);
-extern RxPipeline *RwIm3DSetTransformPipeline(RxPipeline *pipeline);
-extern RxPipeline *RwIm3DSetRenderPipeline( RxPipeline *pipeline,
- RwPrimitiveType primType);
-
-#ifdef __cplusplus
-}
-#endif /* __cplusplus */
-
-
-/*--- Automatically derived from: C:/daily/rwsdk/src/pipe/p2/d3d8/im3dpipe.h ---*/
-
-/*--- Automatically derived from: C:/daily/rwsdk/driver/d3d8/d3d8dxttex.h ---*/
-#ifdef __cplusplus
-extern "C"
-{
-#endif /* __cplusplus */
-
-extern RwTexture *RwD3D8DDSTextureRead(const RwChar *name, const RwChar *maskname);
-
-extern RwBool RwD3D8RasterIsCompressed(const RwRaster *raster);
-
-#ifdef __cplusplus
-}
-#endif /* __cplusplus */
-
-/*--- Automatically derived from: C:/daily/rwsdk/driver/d3d8/drvfns.h ---*/
-
-#ifdef __cplusplus
-extern "C"
-{
-#endif /* __cplusplus */
-
-/****************************************************************************
- Function prototypes
- */
-
-/*******/
-/* API */
-/*******/
-
-/* Reports on whether D3D8 can render S3TC textures */
-extern RwBool
-RwD3D8DeviceSupportsDXTTexture(void);
-
-/* Get handle to D3D8 device - useful for setting D3D8 renderstate*/
-extern void *
-RwD3D8GetCurrentD3DDevice(void);
-
-/* Get maximun number of multisampling levels */
-extern RwUInt32
-RwD3D8EngineGetMaxMultiSamplingLevels(void);
-
-/* Set number of multisampling levels */
-extern void
-RwD3D8EngineSetMultiSamplingLevels(RwUInt32 numLevels);
-
-/* Set maximun full screen refresh rate */
-extern void
-RwD3D8EngineSetRefreshRate(RwUInt32 refreshRate);
-
-/* Get handle to D3D8 rendering surface - useful for advanced blit ops */
-extern void *
-RwD3D8GetCurrentD3DRenderTarget(void);
-
-/* Atach a window to a camera */
-extern RwBool
-RwD3D8CameraAttachWindow(void *camera, void *hwnd);
-
-/* Immediate mode rendering */
-extern RwBool RwD3D8SetVertexShader(RwUInt32 handle);
-extern RwBool RwD3D8SetPixelShader(RwUInt32 handle);
-extern RwBool RwD3D8SetStreamSource(RwUInt32 streamNumber, void *streamData, RwUInt32 stride);
-extern RwBool RwD3D8SetIndices(void *indexData, RwUInt32 baseVertexIndex);
-
-extern RwBool RwD3D8DrawIndexedPrimitiveUP(RwUInt32 primitiveType,
- RwUInt32 minIndex,
- RwUInt32 numVertices,
- RwUInt32 numIndices,
- const void* indexData,
- const void* vertexStreamZeroData,
- RwUInt32 VertexStreamZeroStride);
-
-extern RwBool RwD3D8DrawPrimitiveUP(RwUInt32 primitiveType,
- RwUInt32 numVertices,
- const void* vertexStreamZeroData,
- RwUInt32 VertexStreamZeroStride);
-
-extern RwBool RwD3D8DrawIndexedPrimitive(RwUInt32 primitiveType,
- RwUInt32 minIndex,
- RwUInt32 numVertices,
- RwUInt32 startIndex,
- RwUInt32 numIndices);
-
-extern RwBool RwD3D8DrawPrimitive(RwUInt32 primitiveType,
- RwUInt32 startVertex,
- RwUInt32 numVertices);
-
-extern RwBool RwD3D8SetTexture(RwTexture *texture, RwUInt32 stage);
-
-extern RwBool RwD3D8SetRenderState(RwUInt32 state, RwUInt32 value);
-extern RwBool RwD3D8SetTextureStageState(RwUInt32 stage, RwUInt32 type, RwUInt32 value);
-extern RwBool RwD3D8SetTransform(RwUInt32 state, const void *matrix);
-extern RwBool RwD3D8SetMaterial(const void *material);
-extern void RwD3D8SetStencilClear(RwUInt32 stencilClear);
-
-
-extern void RwD3D8GetRenderState(RwUInt32 state, void *value);
-extern void RwD3D8GetTextureStageState(RwUInt32 stage, RwUInt32 type, void *value);
-extern void RwD3D8GetTransform(RwUInt32 state, void *matrix);
-extern RwUInt32 RwD3D8GetStencilClear(void);
-
-/*
- * To convert between RwMatrix to D3DMATRIX when setting the
- * world matrix
- */
-extern RwBool RwD3D8SetTransformWorld(const RwMatrix *matrix);
-
-/*
- * To convert between RpMaterial to D3DMATERIAL8
- */
-extern RwBool RwD3D8SetSurfaceProperties(const RwRGBA *color,
- const RwSurfaceProperties *surfaceProps,
- RwBool modulate);
-
-/*
- * To set on that index the light from the descriptor
- */
-extern RwBool RwD3D8SetLight(RwInt32 index, const void *light);
-extern void RwD3D8GetLight(RwInt32 index, void *light);
-
-extern RwBool RwD3D8EnableLight(RwInt32 index, RwBool enable);
-
-/*
- * To get a pointer to a Dynamic vertex buffer
- * Use both functions, Create and Destroy, not only Create
- */
-extern RwBool RwD3D8DynamicVertexBufferCreate(RwUInt32 fvf, RwUInt32 size,
- void **vertexBuffer);
-
-extern void RwD3D8DynamicVertexBufferDestroy(void *vertexBuffer);
-
-/*
- * To get a temporary pointer to a Dynamic vertex buffer memory
- * Don't use with the previous functions because
- * it mantains an internal list of dinamic vertex buffers
- */
-extern RwBool RwD3D8DynamicVertexBufferLock(RwUInt32 vertexSize,
- RwUInt32 numVertex,
- void **vertexBufferOut,
- void **vertexDataOut,
- RwUInt32 *baseIndexOut);
-
-extern RwBool RwD3D8DynamicVertexBufferUnlock(void *vertexBuffer);
-
-/*
- * To get a pointer to an Index vertex buffer
- * It's created as WRITEONLY, MANAGED and D3DFMT_INDEX16
- */
-extern RwBool RwD3D8IndexBufferCreate(RwUInt32 numIndices,
- void **indexBuffer);
-
-/*
- * To create a vertex shader from the declaration, also the function
- * for deleting it.
- */
-extern RwBool RwD3D8CreateVertexShader(const RwUInt32 *declaration,
- const RwUInt32 *function,
- RwUInt32 *handle,
- RwUInt32 usage);
-
-extern void RwD3D8DeleteVertexShader(RwUInt32 handle);
-
-extern RwBool RwD3D8SetVertexShaderConstant(RwUInt32 registerAddress,
- const void *constantData,
- RwUInt32 constantCount);
-
-/*
- * To create a pixel shader from the function, also the function
- * for deleting it.
- */
-extern RwBool RwD3D8CreatePixelShader(const RwUInt32 *function, RwUInt32 *handle);
-
-extern void RwD3D8DeletePixelShader(RwUInt32 handle);
-
-extern RwBool RwD3D8SetPixelShaderConstant(RwUInt32 registerAddress,
- const void *constantData,
- RwUInt32 constantCount);
-
-/*
- * Get a const pointer to the D3DCAPS8 struct, (you need to do the cast)
- */
-extern const void *RwD3D8GetCaps(void);
-
-/*
- * Check if the sphere is fully inside of the frustum
- */
-extern RwBool RwD3D8CameraIsSphereFullyInsideFrustum(const void *camera, const void *sphere);
-
-/*
- * Check if the Bounding Box is fully inside of the frustum
- */
-extern RwBool RwD3D8CameraIsBBoxFullyInsideFrustum(const void *camera, const void *boundingBox);
-
-/*
- * Cheking the CPU capabilities
- */
-
-extern RwBool _rwIntelSSEsupported(void);
-extern RwBool _rwIntelMMXsupported(void);
-
-/*
- * Enabling texture format conversions when loading textures from a texture
- * dictionary. FALSE by default.
- */
-extern void
-_rwD3D8TexDictionaryEnableRasterFormatConversion(RwBool enable);
-
-
-#ifdef __cplusplus
-}
-#endif /* __cplusplus */
-
-
-/* LEGACY-MACRO */
-/**
- * \ingroup rwcoredriverd3d8
- * \ref RwD3DLoadNativeTexture is a legacy macro for compatability with
- * RWD3D7 applications that can be used to read a compressed texture from
- * the specified DDS file on disk.
- *
- * It is recommended that applications for RWD3D8 should use the RWD3D8
- * function \ref RwD3D8DDSTextureRead instead.
- *
- * \param name Pointer to a string containing the name of the texture to be read.
- * \param maskname Pointer to a string containing the name of the mask or
- * NULL if not required.
- *
- * \return Returns pointer to the new texture if successful or NULL if there
- * is an error.
- *
- * \see RwD3D8DDSTextureRead
- * \see RwD3D8DeviceSupportsDXTTexture
- * \see RwImageSetPath
- * \see RwTextureSetReadCallBack
- * \see RwTextureSetMipmapping
- * \see RwTextureSetAutoMipmapping
- * \see RwTextureDestroy
- *
- */
-#define RwD3DLoadNativeTexture RwD3D8DDSTextureRead
-
-
-/*--- Automatically derived from: C:/daily/rwsdk/src/baresamp.h ---*/
-
-/****************************************************************************
- Function prototypes
- */
-
-#ifdef __cplusplus
-extern "C"
-{
-#endif /* __cplusplus */
-
-extern RwImage *RwImageResample(RwImage *dstImage, const RwImage *srcImage);
-extern RwImage *RwImageCreateResample(const RwImage *srcImage, RwInt32 width,
- RwInt32 height);
-
-#ifdef __cplusplus
-}
-#endif /* __cplusplus */
-
-
-/*--- Automatically derived from: C:/daily/rwsdk/src/baimras.h ---*/
-/****************************************************************************
- Function prototypes
- */
-
-#ifdef __cplusplus
-extern "C"
-{
-#endif /* __cplusplus */
-
-/* Images from rasters */
-extern RwImage *RwImageSetFromRaster(RwImage *image, RwRaster *raster);
-
-/* Rasters from images */
-extern RwRaster *RwRasterSetFromImage(RwRaster *raster, RwImage *image);
-
-/* Finding raster formats */
-extern RwRGBA *RwRGBAGetRasterPixel(RwRGBA *rgbOut, RwRaster *raster,
- RwInt32 x, RwInt32 y);
-
-/* Read a raster */
-extern RwRaster *RwRasterRead(const RwChar *filename);
-extern RwRaster *RwRasterReadMaskedRaster(const RwChar *filename, const RwChar *maskname);
-
-/* Finding appropriate raster formats */
-extern RwImage *RwImageFindRasterFormat(RwImage *ipImage,RwInt32 nRasterType,
- RwInt32 *npWidth,RwInt32 *npHeight,
- RwInt32 *npDepth,RwInt32 *npFormat);
-
-#ifdef __cplusplus
-}
-#endif /* __cplusplus */
-
-
-/*--- Automatically derived from: C:/daily/rwsdk/src/baframe.h ---*/
-
-/****************************************************************************
- Defines
- */
-
-#if (!defined(RWFRAMESTATICPLUGINSSIZE))
-#define RWFRAMESTATICPLUGINSSIZE 0
-#endif
-
-#define RWFRAMEALIGNMENT(_frame) \
- (! (((rwFRAMEALIGNMENT)-1) & ((RwUInt32)(_frame))))
-
-/* Type ID */
-#define rwFRAME 0
-
-/* dirty flag bits */
-#define rwFRAMEPRIVATEHIERARCHYSYNCLTM 0x01
-#define rwFRAMEPRIVATEHIERARCHYSYNCOBJ 0x02
-#define rwFRAMEPRIVATESUBTREESYNCLTM 0x04
-#define rwFRAMEPRIVATESUBTREESYNCOBJ 0x08
-#define rwFRAMEPRIVATESTATIC 0x10
-
-/****************************************************************************
- Global Types
- */
-
-#if (!defined(DOXYGEN))
-struct RwFrame
-{
- RwObject object;
-
- RwLLLink inDirtyListLink;
-
- /* Put embedded matrices here to ensure they remain 16-byte aligned */
- RwMatrix modelling;
- RwMatrix ltm;
-
- RwLinkList objectList; /* List of objects connected to a frame */
-
- struct RwFrame *child;
- struct RwFrame *next;
- struct RwFrame *root; /* Root of the tree */
-
-#if (RWFRAMESTATICPLUGINSSIZE)
- RWALIGN(RwUInt8 pluginData[RWFRAMESTATICPLUGINSSIZE], rwFRAMEALIGNMENT);
-#endif /* defined(RWFRAMESTATICPLUGINSIZE)) */
-};
-#endif /* (!defined(DOXYGEN)) */
-
-/**
- * \ingroup datatypes
- * \typedef RwFrame
- Frame for defining object position and orientation.
- * This should be considered an opaque type.
- * Use the RwFrame API functions to access.
- */
-typedef struct RwFrame RWALIGN(RwFrame, rwFRAMEALIGNMENT);
-
-/**
- * \ingroup datatypes
- * \typedef RwFrameCallBack
- * \ref RwFrameCallBack type represents the function
- * called from \ref RwFrameForAllChildren for all child frames linked to a given frame.
- * This function should return a pointer to the current frame to indicate success.
- * The callback may return NULL to terminate further callbacks on the child frames.
- *
- * \param frame Pointer to the current frame, supplied by
- * iterator.
- * \param data Pointer to developer-defined data structure.
- *
- * \see RwFrameForAllChildren
- *
- */
-typedef RwFrame *(*RwFrameCallBack)(RwFrame *frame, void *data);
-
-
-#define RwFrameGetParentMacro(_f) ((RwFrame *)rwObjectGetParent(_f))
-#if (! ( defined(RWDEBUG) || defined(RWSUPPRESSINLINE) ))
-#define RwFrameGetParent(_f) RwFrameGetParentMacro(_f)
-#endif
-
-#define RwFrameGetMatrixMacro(_f) (&(_f)->modelling)
-#if (! ( defined(RWDEBUG) || defined(RWSUPPRESSINLINE) ))
-#define RwFrameGetMatrix(_f) RwFrameGetMatrixMacro(_f)
-#endif
-
-
-
-/****************************************************************************
- Function prototypes
- */
-
-#ifdef __cplusplus
-extern "C"
-{
-#endif /* __cplusplus */
-
-/* Finding what is attached to a frame */
-extern RwFrame *
-RwFrameForAllObjects(RwFrame * frame,
- RwObjectCallBack callBack,
- void *data);
-
-/* Matrix operations */
-extern RwFrame *
-RwFrameTranslate(RwFrame * frame,
- const RwV3d * v,
- RwOpCombineType combine);
-
-extern RwFrame *
-RwFrameRotate(RwFrame * frame,
- const RwV3d * axis,
- RwReal angle,
- RwOpCombineType combine);
-
-extern RwFrame *
-RwFrameScale(RwFrame * frame,
- const RwV3d * v,
- RwOpCombineType combine);
-
-extern RwFrame *
-RwFrameTransform(RwFrame * frame,
- const RwMatrix * m,
- RwOpCombineType combine);
-
-extern RwFrame *
-RwFrameOrthoNormalize(RwFrame * frame);
-
-extern RwFrame *
-RwFrameSetIdentity(RwFrame * frame);
-
-/* Cloning */
-extern RwFrame *
-RwFrameCloneHierarchy(RwFrame * root);
-
-/* Destruction */
-extern RwBool
-RwFrameDestroyHierarchy(RwFrame * frame);
-
-/* Building a frame */
-extern RwFrame *
-RwFrameForAllChildren(RwFrame * frame,
- RwFrameCallBack callBack,
- void *data);
-
-extern RwFrame *
-RwFrameRemoveChild(RwFrame * child);
-
-extern RwFrame *
-RwFrameAddChild(RwFrame * parent,
- RwFrame * child);
-
-#if ( defined(RWDEBUG) || defined(RWSUPPRESSINLINE) )
-extern RwFrame *
-RwFrameGetParent(const RwFrame * frame);
-#endif
-
-/* Getting the root */
-extern RwFrame *
-RwFrameGetRoot(const RwFrame * frame);
-
-/* Getting Matrices */
-extern RwMatrix *
-RwFrameGetLTM(RwFrame * frame);
-
-#if ( defined(RWDEBUG) || defined(RWSUPPRESSINLINE) )
-extern RwMatrix *
-RwFrameGetMatrix(RwFrame * frame);
-#endif
-
-/* Elements */
-extern RwFrame *
-RwFrameUpdateObjects(RwFrame * frame);
-
-/* Creating destroying frames */
-extern RwFrame *
-RwFrameCreate(void);
-
-extern RwBool
-RwFrameInit(RwFrame *frame);
-
-extern RwBool
-RwFrameDeInit(RwFrame *frame);
-
-extern RwBool
-RwFrameDestroy(RwFrame * frame);
-
-/* internal function used by Create and Init */
-extern void
-_rwFrameInit(RwFrame *frame);
-
-/* internal function used by Destroy and DeInit */
-extern void
-_rwFrameDeInit(RwFrame *frame);
-
-/* Finding a frames state */
-extern RwBool
-RwFrameDirty(const RwFrame * frame);
-
-/* Find the amount of frames in a hierarchy */
-extern RwInt32
-RwFrameCount(RwFrame * frame);
-
-/* Plugins */
-extern RwBool
-RwFrameSetStaticPluginsSize(RwInt32 size);
-
-extern RwInt32
-RwFrameRegisterPlugin(RwInt32 size,
- RwUInt32 pluginID,
- RwPluginObjectConstructor constructCB,
- RwPluginObjectDestructor destructCB,
- RwPluginObjectCopy copyCB);
-
-extern RwInt32
-RwFrameGetPluginOffset(RwUInt32 pluginID);
-
-extern RwBool
-RwFrameValidatePlugins(const RwFrame * frame);
-
-/* Cloning */
-extern RwFrame *
-_rwFrameCloneAndLinkClones(RwFrame * root);
-
-extern
-RwFrame *
-_rwFramePurgeClone(RwFrame *root);
-
-#ifdef __cplusplus
-}
-#endif /* __cplusplus */
-
-/* Compatibility macros */
-
-#define rwFrameGetParent(frame) \
- _rwFrameGetParent(frame)
-
-#define rwFrameInit(frame) \
- _rwFrameInit(frame)
-
-#define rwFrameDeInit(frame) \
- _rwFrameDeInit(frame)
-
-#define rwFrameCloneAndLinkClones(root) \
- _rwFrameCloneAndLinkClones(root)
-
-#define rwFramePurgeClone(root) \
- _rwFramePurgeClone(root)
-
-#define rwFrameClose(instance, offset, size) \
- _rwFrameClose(instance, offset, size)
-
-#define rwFrameOpen(instance, offset, size) \
- _rwFrameOpen(instance, offset, size)
-
-
-/*--- Automatically derived from: C:/daily/rwsdk/src/batypehf.h ---*/
-
-typedef struct RwObjectHasFrame RwObjectHasFrame;
-typedef RwObjectHasFrame * (*RwObjectHasFrameSyncFunction)(RwObjectHasFrame *object);
-struct RwObjectHasFrame
-{
- RwObject object;
- RwLLLink lFrame;
- RwObjectHasFrameSyncFunction sync;
-};
-
-/****************************************************************************
- Function prototypes
- */
-
-#ifdef __cplusplus
-extern "C"
-{
-#endif /* __cplusplus */
-
-/* Frames */
-extern void _rwObjectHasFrameSetFrame(void *object, RwFrame *frame);
-extern void _rwObjectHasFrameReleaseFrame(void *object);
-
-/* ObjectHASFRAME METHODS */
-#define rwObjectHasFrameInitialize(o, type, subtype, syncFunc) \
-MACRO_START \
-{ \
- rwObjectInitialize(o, type, subtype); \
- ((RwObjectHasFrame *)o)->sync = syncFunc; \
-} \
-MACRO_STOP
-
-#define rwObjectHasFrameSync(o) \
- ((RwObjectHasFrame *)(o))->sync(o)
-
-#ifdef __cplusplus
-}
-#endif /* __cplusplus */
-
-/* Compatibility macros */
-
-#define rwObjectHasFrameSetFrame(object, frame) \
- _rwObjectHasFrameSetFrame(object, frame)
-#define rwObjectHasFrameReleaseFrame(object) \
- _rwObjectHasFrameReleaseFrame(object)
-
-
-
-/*--- Automatically derived from: C:/daily/rwsdk/src/basync.h ---*/
-
-/*--- Automatically derived from: C:/daily/rwsdk/src/babintex.h ---*/
-/****************************************************************************
- Global types
- */
-typedef struct rpTextureChunkInfo RwTextureChunkInfo;
-struct rpTextureChunkInfo
-{
- RwTextureFilterMode filtering;
- RwTextureAddressMode addressingU;
- RwTextureAddressMode addressingV;
-};
-
-/* Bit flags defining properties of textures when stream */
-enum RwTextureStreamFlags
-{
- rwNATEXTURESTREAMFLAG = 0x00,
- rwTEXTURESTREAMFLAGSUSERMIPMAPS = 0x01,
- rwTEXTURESTREAMFLAGSFORCEENUMSIZEINT = RWFORCEENUMSIZEINT
-};
-typedef enum RwTextureStreamFlags RwTextureStreamFlags;
-/****************************************************************************
- Function prototypes
- */
-
-#ifdef __cplusplus
-extern "C"
-{
-#endif /* __cplusplus */
-
-/* Texture binary format */
-extern RwInt32
-RwTextureRegisterPluginStream(RwUInt32 pluginID,
- RwPluginDataChunkReadCallBack readCB,
- RwPluginDataChunkWriteCallBack writeCB,
- RwPluginDataChunkGetSizeCallBack getSizeCB);
-
-extern RwInt32
-RwTextureSetStreamAlwaysCallBack(RwUInt32 pluginID,
- RwPluginDataChunkAlwaysCallBack alwaysCB);
-
-extern RwUInt32
-RwTextureStreamGetSize(const RwTexture *texture);
-
-extern RwTexture *
-RwTextureStreamRead(RwStream *stream);
-
-extern const RwTexture *
-RwTextureStreamWrite(const RwTexture *texture,
- RwStream *stream);
-
-/* Texture dictionary binary format */
-extern RwInt32
-RwTexDictionaryRegisterPluginStream(RwUInt32 pluginID,
- RwPluginDataChunkReadCallBack readCB,
- RwPluginDataChunkWriteCallBack writeCB,
- RwPluginDataChunkGetSizeCallBack getSizeCB);
-
-extern RwInt32
-RwTexDictionarySetStreamAlwaysCallBack(RwUInt32 pluginID,
- RwPluginDataChunkAlwaysCallBack alwaysCB);
-
-extern RwUInt32
-RwTexDictionaryStreamGetSize(const RwTexDictionary *texDict);
-
-extern RwTexDictionary
-*RwTexDictionaryStreamRead(RwStream *stream);
-
-extern const RwTexDictionary *
-RwTexDictionaryStreamWrite(const RwTexDictionary *texDict,
- RwStream *stream);
-
-extern RwTextureChunkInfo *
-_rwTextureChunkInfoRead(RwStream *stream,
- RwTextureChunkInfo *textureChunkInfo,
- RwInt32 *bytesRead);
-
-/* Compatibility macro */
-
-#define RwTextureChunkInfoRead(_stream, _textureChunkInfo, _bytesRead) \
- _rwTextureChunkInfoRead(_stream, _textureChunkInfo, _bytesRead)
-
-#ifdef __cplusplus
-}
-#endif /* __cplusplus */
-
-
-/*--- Automatically derived from: C:/daily/rwsdk/src/babinfrm.h ---*/
-/****************************************************************************
- Global types
- */
-
-typedef struct rwFrameList rwFrameList;
-struct rwFrameList
-{
- RwFrame **frames;
- RwInt32 numFrames;
-};
-
-/****************************************************************************
- Global Variables
- */
-
-/****************************************************************************
- Function prototypes
- */
-
-#ifdef __cplusplus
-extern "C"
-{
-#endif /* __cplusplus */
-
-/* Frame binary format */
-
-extern RwInt32
-RwFrameRegisterPluginStream(RwUInt32 pluginID,
- RwPluginDataChunkReadCallBack readCB,
- RwPluginDataChunkWriteCallBack writeCB,
- RwPluginDataChunkGetSizeCallBack getSizeCB);
-
-extern RwInt32
-RwFrameSetStreamAlwaysCallBack(RwUInt32 pluginID,
- RwPluginDataChunkAlwaysCallBack alwaysCB);
-
-
-extern rwFrameList *
-_rwFrameListInitialize(rwFrameList *frameList,
- RwFrame *frame);
-
-extern RwBool
-_rwFrameListFindFrame(const rwFrameList *frameList,
- const RwFrame *frame,
- RwInt32 *npIndex);
-
-extern rwFrameList *
-_rwFrameListDeinitialize(rwFrameList *frameList);
-
-extern RwUInt32
-_rwFrameListStreamGetSize(const rwFrameList *frameList);
-
-extern rwFrameList *
-_rwFrameListStreamRead(RwStream *stream,
- rwFrameList *fl);
-
-extern const rwFrameList *
-_rwFrameListStreamWrite(const rwFrameList *frameList,
- RwStream *stream);
-
-
-#ifdef __cplusplus
-}
-#endif /* __cplusplus */
-
-/* Comparibility macros */
-
-#define rwFrameListInitialize(frameList,frame) \
- _rwFrameListInitialize(frameList,frame)
-
-#define rwFrameListFindFrame(frameList, frame, index) \
- _rwFrameListFindFrame(frameList, frame, index)
-
-#define rwFrameListDeinitialize(frameList) \
- _rwFrameListDeinitialize(frameList)
-
-#define rwFrameListStreamGetSize(frameList) \
- _rwFrameListStreamGetSize(frameList)
-
-#define rwFrameListStreamRead(stream, fl) \
- _rwFrameListStreamRead(stream, fl)
-
-#define rwFrameListStreamWrite(frameList, stream) \
- _rwFrameListStreamWrite(frameList, stream)
-
-
-/*--- Automatically derived from: C:/daily/rwsdk/src/babbox.h ---*/
-/****************************************************************************
- Global types
- */
-
-typedef struct RwBBox RwBBox;
-/**
- * \ingroup datatypes
- * \struct RwBBox
- * This type represents a 3D axis-aligned bounding-box
- * specified by the positions of two corners which lie on a diagonal.
- * Typically used to specify a world bounding-box when the world is created
- *
- * \param sup Supremum vertex (contains largest values)
- * \param inf Infimum vertex (contains smallest values)
- *
- * \see RpWorldCreate
- */
-struct RwBBox
-{
- /* Must be in this order */
- RwV3d sup; /**< Supremum vertex. */
- RwV3d inf; /**< Infimum vertex. */
-};
-
-#if (!defined(RwBBoxAssign))
-#define RwBBoxAssign(_target, _source) \
- ( *(_target) = *(_source) )
-#endif /* (!defined(RwBBoxAssign)) */
-
-/****************************************************************************
- Function prototypes
- */
-
-#ifdef __cplusplus
-extern "C"
-{
-#endif /* __cplusplus */
-
-
-extern RwBBox *RwBBoxCalculate(RwBBox *boundBox,
- const RwV3d *verts,
- RwInt32 numVerts);
-extern RwBBox *RwBBoxInitialize(RwBBox *boundBox,
- const RwV3d *vertex);
-extern RwBBox *RwBBoxAddPoint(RwBBox *boundBox,
- const RwV3d *vertex);
-extern RwBool RwBBoxContainsPoint(const RwBBox *boundBox,
- const RwV3d *vertex);
-
-#ifdef __cplusplus
-}
-#endif /* __cplusplus */
-
-
-/*--- Automatically derived from: C:/daily/rwsdk/src/bacamera.h ---*/
-
-/****************************************************************************
- Defines
- */
-
-/* Type ID */
-#define rwCAMERA 4
-
-
-
-/****************************************************************************
- <macro/inline functionality
- */
-
-#define RwCameraGetViewOffsetMacro(_camera) \
- (&((_camera)->viewOffset))
-
-#define RwCameraSetRasterMacro(_camera, _raster) \
- (((_camera)->frameBuffer = (_raster)), (_camera))
-
-#define RwCameraSetRasterVoidMacro(_camera, _raster) \
-MACRO_START \
-{ \
- (_camera)->frameBuffer = (_raster); \
-} \
-MACRO_STOP
-
-#define RwCameraGetRasterMacro(_camera) \
- ((_camera)->frameBuffer)
-
-#define RwCameraSetZRasterMacro(_camera, _raster) \
- (((_camera)->zBuffer = (_raster)), (_camera))
-
-#define RwCameraSetZRasterVoidMacro(_camera, _raster) \
-MACRO_START \
-{ \
- (_camera)->zBuffer = (_raster); \
-} \
-MACRO_STOP
-
-#define RwCameraGetZRasterMacro(_camera) \
- ((_camera)->zBuffer)
-
-#define RwCameraGetNearClipPlaneMacro(_camera) \
- ((_camera)->nearPlane)
-
-#define RwCameraGetFarClipPlaneMacro(_camera) \
- ((_camera)->farPlane)
-
-#define RwCameraSetFogDistanceMacro(_camera, _distance) \
- (((_camera)->fogPlane = (_distance)), (_camera))
-
-#define RwCameraGetFogDistanceMacro(_camera) \
- ((_camera)->fogPlane)
-
-#define RwCameraGetCurrentCameraMacro() \
- ((RwCamera *)RWSRCGLOBAL(curCamera))
-
-#define RwCameraGetProjectionMacro(_camera) \
- ((_camera)->projectionType)
-
-#define RwCameraGetViewWindowMacro(_camera) \
- (&((_camera)->viewWindow))
-
-#define RwCameraGetViewMatrixMacro(_camera) \
- (&((_camera)->viewMatrix))
-
-#define RwCameraSetFrameMacro(_camera, _frame) \
- (_rwObjectHasFrameSetFrame((_camera), (_frame)), (_camera))
-
-#define RwCameraSetFrameVoidMacro(_camera, _frame) \
-MACRO_START \
-{ \
- _rwObjectHasFrameSetFrame((_camera), (_frame)); \
-} \
-MACRO_STOP
-
-
-#define RwCameraGetFrameMacro(_camera) \
- ((RwFrame *)rwObjectGetParent((_camera)))
-
-#if !(defined(RWDEBUG) || defined(RWSUPPRESSINLINE))
-
-#define RwCameraGetViewOffset(_camera) \
- RwCameraGetViewOffsetMacro(_camera)
-
-#define RwCameraSetRaster(_camera, _raster) \
- RwCameraSetRasterMacro(_camera, _raster)
-
-#define RwCameraGetRaster(_camera) \
- RwCameraGetRasterMacro(_camera)
-
-#define RwCameraSetZRaster(_camera, _raster) \
- RwCameraSetZRasterMacro(_camera, _raster)
-
-#define RwCameraGetZRaster(_camera) \
- RwCameraGetZRasterMacro(_camera)
-
-#define RwCameraGetNearClipPlane(_camera) \
- RwCameraGetNearClipPlaneMacro(_camera)
-
-#define RwCameraGetFarClipPlane(_camera) \
- RwCameraGetFarClipPlaneMacro(_camera)
-
-#define RwCameraSetFogDistance(_camera, _distance) \
- RwCameraSetFogDistanceMacro(_camera, _distance)
-
-#define RwCameraGetFogDistance(_camera) \
- RwCameraGetFogDistanceMacro(_camera)
-
-#define RwCameraGetCurrentCamera() \
- RwCameraGetCurrentCameraMacro()
-
-#define RwCameraGetProjection(_camera) \
- RwCameraGetProjectionMacro(_camera)
-
-#define RwCameraGetViewWindow(_camera) \
- RwCameraGetViewWindowMacro(_camera)
-
-#define RwCameraGetViewMatrix(_camera) \
- RwCameraGetViewMatrixMacro(_camera)
-
-#define RwCameraSetFrame(_camera, _frame) \
- RwCameraSetFrameMacro(_camera, _frame)
-
-#define RwCameraGetFrame(_camera) \
- RwCameraGetFrameMacro(_camera)
-
-#endif /* !(defined(RWDEBUG) || defined(RWSUPPRESSINLINE)) */
-
-
-/****************************************************************************
- Global Types
- */
-
-/**
- * \ingroup datatypes
- * RwCameraClearMode
- * Camera clear flags */
-enum RwCameraClearMode
-{
- rwCAMERACLEARIMAGE = 0x1, /**<Clear the frame buffer */
- rwCAMERACLEARZ = 0x2, /**<Clear the Z buffer */
- rwCAMERACLEARSTENCIL = 0x4, /**<\if xbox Clear the stencil buffer \endif
- * \if d3d8 Clear the stencil buffer \endif
- * \if opengl Clear the stencil buffer \endif
- */
- rwCAMERACLEARMODEFORCEENUMSIZEINT = RWFORCEENUMSIZEINT
-};
-typedef enum RwCameraClearMode RwCameraClearMode;
-
-/**
- * \ingroup datatypes
- * RwCameraProjection
- * This type represents the options available for
- * setting the camera projection model, either perspective projection or
-* parallel projection (see API function \ref RwCameraSetProjection)*/
-enum RwCameraProjection
-{
- rwNACAMERAPROJECTION = 0, /**<Invalid projection */
- rwPERSPECTIVE = 1, /**<Perspective projection */
- rwPARALLEL = 2, /**<Parallel projection */
- rwCAMERAPROJECTIONFORCEENUMSIZEINT = RWFORCEENUMSIZEINT
-};
-typedef enum RwCameraProjection RwCameraProjection;
-
-/**
- * \ingroup datatypes
- * RwFrustumTestResult
- * This type represents the results from a
- * camera frustum test on a given sphere (see API function
- * \ref RwCameraFrustumTestSphere)*/
-enum RwFrustumTestResult
-{
- rwSPHEREOUTSIDE = 0, /**<Outside the frustum */
- rwSPHEREBOUNDARY = 1, /**<On the boundary of the frustum */
- rwSPHEREINSIDE = 2, /**<Inside the frustum */
- rwFRUSTUMTESTRESULTFORCEENUMSIZEINT = RWFORCEENUMSIZEINT
-};
-typedef enum RwFrustumTestResult RwFrustumTestResult;
-
-
-/**
- * \ingroup datatypes
- * \typedef RwCamera
- * Camera object for rendering a view.
- * This should be considered an opaque type.
- * Use the RwCamera API functions to access.
- */
-typedef struct RwCamera RWALIGN(RwCamera, rwMATRIXALIGNMENT);
-
-/* This allows a world to overload functionality */
-typedef RwCamera *(*RwCameraBeginUpdateFunc) (RwCamera * camera);
-typedef RwCamera *(*RwCameraEndUpdateFunc) (RwCamera * camera);
-
-typedef struct RwFrustumPlane RwFrustumPlane;
-/*
- * Structure describing a frustrum plane.
- */
-struct RwFrustumPlane
-{
- RwPlane plane;
- RwUInt8 closestX;
- RwUInt8 closestY;
- RwUInt8 closestZ;
- RwUInt8 pad;
-};
-
-#if (!defined(DOXYGEN))
-struct RwCamera
-{
- RwObjectHasFrame object;
-
- /* Parallel or perspective projection */
- RwCameraProjection projectionType;
-
- /* Start/end update functions */
- RwCameraBeginUpdateFunc beginUpdate;
- RwCameraEndUpdateFunc endUpdate;
-
- /* The view matrix */
- RwMatrix viewMatrix;
-
- /* The cameras image buffer */
- RwRaster *frameBuffer;
-
- /* The Z buffer */
- RwRaster *zBuffer;
-
- /* Cameras mathmatical characteristics */
- RwV2d viewWindow;
- RwV2d recipViewWindow;
- RwV2d viewOffset;
- RwReal nearPlane;
- RwReal farPlane;
- RwReal fogPlane;
-
- /* Transformation to turn camera z or 1/z into a Z buffer z */
- RwReal zScale, zShift;
-
- /* Render frame counter -> used for the frustum callback stuff */
- RwUInt16 renderFrame;
- RwUInt16 pad;
-
- /* The clip-planes making up the viewing frustum */
- RwFrustumPlane frustumPlanes[6];
- RwBBox frustumBoundBox;
-
- /* Points on the tips of the view frustum */
- RwV3d frustumCorners[8];
-};
-#endif /* (!defined(DOXYGEN)) */
-
-/**
- * \ingroup datatypes
- * \typedef RwCameraCallBack
- * \ref RwCameraCallBack type represents a function called from any camera
- * iterator that may be implemented in plugins. This function should return a
- * pointer to the current camera to indicate success. The callback may return
- * NULL to terminate further callbacks on other cameras.
- *
- * \param camera Pointer to the current camera, supplied by iterator.
- * \param data Pointer to developer-defined data structure.
- */
-typedef RwCamera *(*RwCameraCallBack)(RwCamera *camera, void *data);
-
-
-/****************************************************************************
- Function prototypes
- */
-
-#ifdef __cplusplus
-extern "C"
-{
-#endif /* __cplusplus */
-
- /* Rendering */
-extern RwCamera *RwCameraBeginUpdate(RwCamera * camera);
-extern RwCamera *RwCameraEndUpdate(RwCamera * camera);
-
-extern RwCamera *RwCameraClear(RwCamera * camera, RwRGBA * colour,
- RwInt32 clearMode);
-
-/* Displaying results */
-extern RwCamera *RwCameraShowRaster(RwCamera * camera, void *pDev,
- RwUInt32 flags);
-
-/* Creation and destruction */
-extern RwBool RwCameraDestroy(RwCamera * camera);
-extern RwCamera *RwCameraCreate(void);
-extern RwCamera *RwCameraClone(RwCamera * camera);
-
-/* Offset */
-extern RwCamera *RwCameraSetViewOffset(RwCamera *camera,
- const RwV2d *offset);
-
-/* View window */
-extern RwCamera *RwCameraSetViewWindow(RwCamera *camera,
- const RwV2d *viewWindow);
-
-/* Projection */
-extern RwCamera *RwCameraSetProjection(RwCamera *camera,
- RwCameraProjection projection);
-
-/* Clip planes */
-extern RwCamera *RwCameraSetNearClipPlane(RwCamera *camera, RwReal nearClip);
-extern RwCamera *RwCameraSetFarClipPlane(RwCamera *camera, RwReal farClip);
-
-/* Attaching toolkits */
-extern RwInt32 RwCameraRegisterPlugin(RwInt32 size,
- RwUInt32 pluginID,
- RwPluginObjectConstructor
- constructCB,
- RwPluginObjectDestructor
- destructCB,
- RwPluginObjectCopy copyCB);
-extern RwInt32 RwCameraGetPluginOffset(RwUInt32 pluginID);
-extern RwBool RwCameraValidatePlugins(const RwCamera * camera);
-
-/* Frustum testing */
-extern RwFrustumTestResult RwCameraFrustumTestSphere(const RwCamera *
- camera,
- const RwSphere *
- sphere);
-
-#if (defined(RWDEBUG) || defined(RWSUPPRESSINLINE))
-
-/* Offset */
-extern const RwV2d *RwCameraGetViewOffset(const RwCamera *camera);
-
-/* Rasters */
-extern RwCamera *RwCameraSetRaster(RwCamera *camera, RwRaster *raster);
-extern RwRaster *RwCameraGetRaster(const RwCamera *camera);
-extern RwCamera *RwCameraSetZRaster(RwCamera *camera, RwRaster *zRaster);
-extern RwRaster *RwCameraGetZRaster(const RwCamera *camera);
-
-/* Clip planes */
-extern RwReal RwCameraGetNearClipPlane(const RwCamera *camera);
-extern RwReal RwCameraGetFarClipPlane(const RwCamera *camera);
-extern RwCamera *RwCameraSetFogDistance(RwCamera *camera, RwReal fogDistance);
-extern RwReal RwCameraGetFogDistance(const RwCamera *camera);
-
-extern RwCamera *RwCameraGetCurrentCamera(void);
-
-/* Projection */
-extern RwCameraProjection RwCameraGetProjection(const RwCamera *camera);
-
-/* View window */
-extern const RwV2d *RwCameraGetViewWindow(const RwCamera *camera);
-
-extern RwMatrix *RwCameraGetViewMatrix(RwCamera *camera);
-
-/* Frames */
-extern RwCamera *RwCameraSetFrame(RwCamera *camera, RwFrame *frame);
-extern RwFrame *RwCameraGetFrame(const RwCamera *camera);
-#endif /* (defined(RWDEBUG) || defined(RWSUPPRESSINLINE)) */
-
-#ifdef __cplusplus
-}
-#endif /* __cplusplus */
-
-/*--- Automatically derived from: C:/daily/rwsdk/driver/common/barwtyp.h ---*/
-
-/*--- Automatically derived from: C:/daily/rwsdk/src/bacamval.h ---*/
-
-/*--- Automatically derived from: C:/daily/rwsdk/src/pipe/p2/bapipe.h ---*/
-
-struct rwPipeGlobals
-{
- RwFreeList *pipesFreeList; /* Save mallocs, use a freelist */
- RxRenderStateVector defaultRenderState;
- RwLinkList allPipelines; /* Unused as of yet, meant to be used to keep track of all
- * created pipelines (for CBs and maybe cleanup) */
- RwUInt32 maxNodesPerPipe; /* Initialised from _rxPipelineMaxNodes at startup. Used to
- * allow conservative, single allocations during pipelock */
-
- /* NOTE: Rw and RpWorld PowerPipe globals kept together for simplicity */
-
- /* The current default pipelines (used if pipe == NULL for an object) */
- RxPipeline *currentAtomicPipeline;
- RxPipeline *currentWorldSectorPipeline;
- RxPipeline *currentMaterialPipeline;
- /* Generic C-based pipes that run on all platforms
- * - these are set as the current pipes at startup unless
- * platform-specific pipes (below) are created */
- RxPipeline *genericAtomicPipeline;
- RxPipeline *genericWorldSectorPipeline;
- RxPipeline *genericMaterialPipeline;
- /* Platforms that have their own non-generic pipelines
- * (OPENGL, D3D7, SKY2, KAMUI2, DOLPHIN) put them here: */
- RxPipeline *platformAtomicPipeline;
- RxPipeline *platformWorldSectorPipeline;
- RxPipeline *platformMaterialPipeline;
-#if (defined(SKY2_DRVMODEL_H))
- /* We have extra flavours of pipe under SKY2.
- * PS2All and PS2AllMat are the defaults.
- * - see RpWorldSectorSkyGetPS2AllPipeline, etc */
- RxPipeline *ps2ManagerAtomicPipeline;
- RxPipeline *allInOneAtomicPipeline;
- RxPipeline *vanillaAtomicPipeline;
- RxPipeline *ps2ManagerWorldSectorPipeline;
- RxPipeline *allInOneWorldSectorPipeline;
- RxPipeline *vanillaWorldSectorPipeline;
- RxPipeline *vanillaMaterialPipeline;
-#endif /* (SKY2_DRVMODEL_H) */
-
-};
-
-typedef struct rwPipeGlobals rwPipeGlobals;
-
-#define RXPIPELINEGLOBAL(var) (RWPLUGINOFFSET(rwPipeGlobals, RwEngineInstance, _rxPipelineGlobalsOffset)->var)
-
-#ifdef __cplusplus
-extern "C"
-{
-#endif /* __cplusplus */
-
-extern RwInt32 _rxPipelineGlobalsOffset;
-
-#ifdef __cplusplus
-}
-#endif /* __cplusplus */
-
-
-/*--- Automatically derived from: C:/daily/rwsdk/driver/common/imrascnv.h ---*/
-
-/*--- Automatically derived from: C:/daily/rwsdk/src/babincam.h ---*/
-/****************************************************************************
- Global types
- */
-
-/* Camera stream format */
-
-/**
- * \ingroup datatypes
- * \typedef RwCameraChunkInfo
- *
- * \ref RwCameraChunkInfo is typedef'd to a structure that holds camera
- * data. This should be considered an opaque type. Use the RwCamera
- * API functions to access it.
- */
-
-typedef struct rwStreamCamera RwCameraChunkInfo;
-typedef struct rwStreamCamera rwStreamCamera;
-struct rwStreamCamera
-{
- RwV2d viewWindow;
- RwV2d viewOffset;
- RwReal nearPlane, farPlane;
- RwReal fogPlane;
- RwUInt32 projection;
-};
-
-/****************************************************************************
- Function prototypes
- */
-
-#ifdef __cplusplus
-extern "C"
-{
-#endif /* __cplusplus */
-
-/* Camera binary format */
-extern RwInt32 RwCameraRegisterPluginStream(RwUInt32 pluginID,
- RwPluginDataChunkReadCallBack readCB,
- RwPluginDataChunkWriteCallBack writeCB,
- RwPluginDataChunkGetSizeCallBack getSizeCB);
-extern RwInt32 RwCameraSetStreamAlwaysCallBack(
- RwUInt32 pluginID,
- RwPluginDataChunkAlwaysCallBack alwaysCB);
-extern RwUInt32 RwCameraStreamGetSize(const RwCamera *camera);
-extern RwCamera *RwCameraStreamRead(RwStream *stream);
-extern const RwCamera *RwCameraStreamWrite(const RwCamera *camera,
- RwStream *stream);
-extern RwCameraChunkInfo * RwCameraChunkInfoRead(RwStream *stream,
- RwCameraChunkInfo *cameraChunkInfo,
- RwInt32 *bytesRead);
-
-#ifdef __cplusplus
-}
-#endif /* __cplusplus */
-
-#endif /* RWCORE_H */
diff --git a/rwsdk/include/d3d8/rwplcore.h b/rwsdk/include/d3d8/rwplcore.h
deleted file mode 100644
index b0ff7dfa..00000000
--- a/rwsdk/include/d3d8/rwplcore.h
+++ /dev/null
@@ -1,6080 +0,0 @@
-/******************************************/
-/* */
-/* 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) 1999. Criterion Software Ltd.
- * All Rights Reserved.
- */
-
-/*************************************************************************
- *
- * Filename: <C:/daily/rwsdk/include/d3d8/rwplcore.h>
- * Automatically Generated on: Wed Jul 10 10:45:00 2002
- *
- ************************************************************************/
-
-#ifndef RWPLCORE_H
-#define RWPLCORE_H
-
-/*--- System Header Files ---*/
-#include <stdarg.h>
-#include <stddef.h>
-#include <stdio.h>
-#include <stdlib.h>
-
-
-/*--- Automatically derived from: C:/daily/rwsdk/os/win/ostypes.h ---*/
-#ifndef WIN_OSTYPES_H
-#define WIN_OSTYPES_H
-
-#define rwLITTLEENDIAN /* This is a little endian machine */
-
-typedef long RwFixed;
-typedef int RwInt32;
-typedef unsigned int RwUInt32;
-typedef short RwInt16;
-typedef unsigned short RwUInt16;
-typedef unsigned char RwUInt8;
-typedef signed char RwInt8;
-
-#ifdef RWUNICODE
-typedef wchar_t RwChar;
-#else /* RWUNICODE */
-typedef char RwChar;
-#endif /* RWUNICODE */
-typedef float RwReal;
-typedef RwInt32 RwBool;
-
-#ifdef _MSC_VER
-typedef __int64 RwInt64;
-typedef unsigned __int64 RwUInt64;
-#define RWZERO64 ((RwUInt64)0)
-#else /* _MSC_VER */
-
-typedef struct _RwUInt64 RwUInt64;
-typedef struct _RwInt64 RwInt64;
-
-/* We'll do it with structures (can't do maths on these, but OK for allocation): */
-#ifdef rwBIGENDIAN
-struct _RwUInt64
-{
- RwUInt32 top;
- RwUInt32 bottom;
-};
-
-struct _RwInt64
-{
- RwInt32 top;
- RwUInt32 bottom;
-};
-
-#else /* rwBIGENDIAN */
-#ifdef rwLITTLEENDIAN
-struct _RwUInt64
-{
- RwUInt32 bottom;
- RwUInt32 top;
-};
-
-struct _RwInt64
-{
- RwUInt32 bottom;
- RwInt32 top;
-};
-
-#else /* rwLITTLEENDIAN */
-#error "ENDIAN-ness undefined!"
-#endif /* rwLITTLEENDIAN */
-#endif /* rwBIGENDIAN */
-
-#define RWZERO64 { (RwUInt32)0, (RwUInt32)0 }
-#endif /* _MSC_VER */
-
-typedef struct _RwUInt128 RwUInt128;
-typedef struct _RwInt128 RwInt128;
-
-/* We'll do it with structures
- * (can't do maths on these, but OK for allocation): */
-#ifdef rwBIGENDIAN
-struct _RwUInt128
-{
- RwUInt64 top;
- RwUInt64 bottom;
-};
-
-struct _RwInt128
-{
- RwInt64 top;
- RwUInt64 bottom;
-};
-
-#else /* rwBIGENDIAN */
-#ifdef rwLITTLEENDIAN
-struct _RwUInt128
-{
- RwUInt64 bottom;
- RwUInt64 top;
-};
-
-struct _RwInt128
-{
- RwUInt64 bottom;
- RwInt64 top;
-};
-
-#else /* rwLITTLEENDIAN */
-#error "ENDIAN-ness undefined!"
-#endif /* rwLITTLEENDIAN */
-#endif /* rwBIGENDIAN */
-
-#define RWZERO128 { RWZERO64, RWZERO64 }
-
-/* Limits of types */
-#define RwInt32MAXVAL 0x7FFFFFFF
-#define RwInt32MINVAL 0x80000000
-#define RwUInt32MAXVAL 0xFFFFFFFF
-#define RwUInt32MINVAL 0x00000000
-#define RwRealMAXVAL (RwReal)(3.40282347e+38)
-#define RwRealMINVAL (RwReal)(1.17549435e-38)
-#define RwInt16MAXVAL 0x7FFF
-#define RwInt16MINVAL 0x8000
-#define RwUInt16MAXVAL 0xFFFF
-#define RwUInt16MINVAL 0x0000
-
-/* Structure alignment */
-#define RWALIGN(type, x) type /* nothing */
-#define rwMATRIXALIGNMENT sizeof(RwUInt32)
-#define rwFRAMEALIGNMENT sizeof(RwUInt32)
-#define rwV4DALIGNMENT sizeof(RwUInt32)
-
-#if (defined(_MSC_VER))
-
-#if (defined(RWVERBOSE))
-#include <tchar.h>
-#pragma comment (lib , "advapi32.LIB") /* Registry functions */
-
-/*
- * registry code
- */
-
-#if (defined(RpWinRegGetDWordValue))
-#undef RpWinRegGetDWordValue
-#endif /* (defined(RpWinRegGetDWordValue)) */
-
-#define RpWinRegGetDWordValue(_result, _hKey, _name, _val) \
-MACRO_START \
-{ \
- DWORD _size; \
- DWORD _type; \
- LONG _status; \
- \
- _status = \
- RegQueryValueEx((_hKey), (_name), 0, &_type, NULL, &_size); \
- (_result) = ((ERROR_SUCCESS == _status) && (REG_DWORD == _type)); \
- \
- if ((_result)) \
- { \
- _status = \
- RegQueryValueEx((_hKey), (_name), 0, &_type, \
- (BYTE *) (_val), &_size); \
- (_result) = (ERROR_SUCCESS == _status); \
- } \
-} \
-MACRO_STOP
-
-#if (defined(RpWinRegGetBinaryValue))
-#undef RpWinRegGetBinaryValue
-#endif /* (defined(RpWinRegGetBinaryValue)) */
-
-#define RpWinRegGetBinaryValue(_result, _hKey, _name, _val) \
-MACRO_START \
-{ \
- DWORD _size; \
- DWORD _type; \
- LONG _status; \
- \
- _status = \
- RegQueryValueEx((_hKey), (_name), 0, &_type, NULL, &_size); \
- (_result) = \
- ((ERROR_SUCCESS == _status) && \
- (REG_BINARY == _type) && (0 < _size)); \
- \
- if ((_result)) \
- { \
- *(_val) = RwMalloc(sizeof(BYTE) * _size); \
- (_result) = (NULL != *(_val)); \
- \
- if ((_result)) \
- { \
- \
- _status = \
- RegQueryValueEx((_hKey), \
- (_name), 0, &_type, \
- (BYTE *) * (_val), &_size); \
- (_result =) (ERROR_SUCCESS == _status); \
- \
- if (!(_result)) \
- { \
- RwFree(*(_val)); \
- *(_val) = NULL; \
- } \
- \
- } \
- \
- } \
-} \
-MACRO_STOP
-
-#if (defined(RpWinRegGetStringValue))
-#undef RpWinRegGetStringValue
-#endif /* (defined(RpWinRegGetStringValue)) */
-
-#define RpWinRegGetStringValue(_result, _hKey, _name, _val) \
-MACRO_START \
-{ \
- DWORD _size; \
- DWORD _type; \
- LONG _status; \
- \
- _status = \
- RegQueryValueEx((_hKey), (_name), 0, &_type, NULL, &_size); \
- (_result) = \
- ((ERROR_SUCCESS == _status) && \
- (REG_SZ == _type) && (0 < _size)); \
- \
- if ((_result)) \
- { \
- \
- *(_val) = RwMalloc(sizeof(TCHAR) * _size); \
- (_result) = (NULL != *(_val)); \
- \
- if ((_result)) \
- { \
- _status = \
- RegQueryValueEx((_hKey), (_name), 0, &_type, \
- (BYTE *) * (_val), &_size); \
- (_result) = (ERROR_SUCCESS == _status); \
- \
- if (!(_result)) \
- { \
- RwFree(*(_val)); \
- *(_val) = NULL; \
- } \
- } \
- } \
-} \
-MACRO_STOP
-
-/* ------------------------------------------------------------------- */
-
-#define RpWinRegCloseKey(hKey) \
-MACRO_START \
-{ \
- RegCloseKey(hKey); \
-} \
-MACRO_STOP
-
-/* ------------------------------------------------------------------- */
-
-#define RpWinRegOpenMachineKey(result) \
-MACRO_START \
-{ \
- static const TCHAR RenderWareKey[] = \
- "Software\\Criterion\\RenderWare"; \
- DWORD disposition; \
- LONG status = \
- RegCreateKeyEx(HKEY_LOCAL_MACHINE, RenderWareKey, 0, \
- REG_NONE, REG_OPTION_NON_VOLATILE, \
- KEY_READ | KEY_WRITE, \
- NULL, &result, &disposition); \
- \
- if (status != ERROR_SUCCESS) \
- { \
- result = NULL; \
- } \
-} \
-MACRO_STOP
-
-/* ------------------------------------------------------------------- */
-
-#if (defined(RWGETWINREGDWORD))
-#undef RWGETWINREGDWORD
-#endif /* (defined(RWGETWINREGDWORD)) */
-
-#define RWGETWINREGDWORD(result, match) \
-MACRO_START \
-{ \
- HKEY hKey; \
- \
- RpWinRegOpenMachineKey(hKey); \
- if (hKey) \
- { \
- RwBool success; \
- \
- RpWinRegGetDWordValue(success, hKey, match, \
- &result); \
- \
- RpWinRegCloseKey(hKey); \
- } \
-} \
-MACRO_STOP
-
-#if (defined(RWGETWINREGBINARY))
-#undef RWGETWINREGBINARY
-#endif /* (defined(RWGETWINREGBINARY)) */
-
-#define RWGETWINREGBINARY(result, match) \
-MACRO_START \
-{ \
- HKEY hKey; \
- \
- result = NULL; \
- RpWinRegOpenMachineKey(hKey); \
- if (hKey) \
- { \
- RwBool success; \
- \
- RpWinRegGetBinaryValue(success, hKey, match, \
- &result, NULL); \
- \
- if (!success) \
- result = NULL; \
- \
- RpWinRegCloseKey(hKey); \
- } \
-} \
-MACRO_STOP
-
-#if (defined(RWGETWINREGSTRING))
-#undef RWGETWINREGSTRING
-#endif /* (defined(RWGETWINREGSTRING)) */
-
-#define RWGETWINREGSTRING(result, match) \
-MACRO_START \
-{ \
- HKEY hKey; \
- \
- result = NULL; \
- RpWinRegOpenMachineKey(hKey); \
- if (hKey) \
- { \
- RwBool success; \
- \
- RpWinRegGetStringValue(success, hKey, match, \
- &result); \
- \
- if (!success) \
- result = NULL; \
- \
- RpWinRegCloseKey(hKey); \
- } \
-} \
-MACRO_STOP
-
-#if (defined(_DEBUG))
-
-#if (defined(RWREGSETBREAKALLOC))
-#undef RWREGSETBREAKALLOC
-#endif /* (defined(RWREGSETBREAKALLOC)) */
-
-#define RWREGSETBREAKALLOC(_name) \
-MACRO_START \
-{ \
- char _message[256]; \
- long _lBreakAlloc = -1; \
- \
- RWGETWINREGDWORD(_lBreakAlloc, _name); \
- \
- RWCRTSETBREAKALLOC(_lBreakAlloc); \
- \
- _snprintf(_message, sizeof(_message), \
- "%s(%d): RWCRTSETBREAKALLOC(%ld)\n", \
- __FILE__, __LINE__, \
- _lBreakAlloc); \
- OutputDebugString(_message); \
- \
-} \
-MACRO_STOP
-
-#if (defined(RWREGSETDEBUGTRACE))
-#undef RWREGSETDEBUGTRACE
-#endif /* (defined(RWREGSETDEBUGTRACE)) */
-
-#define RWREGSETDEBUGTRACE(_name) \
-MACRO_START \
-{ \
- char _message[256]; \
- long _lDebugtrace = 0; \
- \
- RWGETWINREGDWORD(_lDebugtrace, _name); \
- \
- RwDebugSetTraceState(_lDebugtrace); \
- \
- _snprintf(_message, sizeof(_message), \
- "%s(%d): RwDebugSetTraceState(%ld)\n", \
- __FILE__, __LINE__, \
- _lDebugtrace); \
- OutputDebugString(_message); \
- \
-} \
-MACRO_STOP
-
-#if (defined(_CRTDBG_FLAGS))
-#undef _CRTDBG_FLAGS
-#endif /* (defined(_CRTDBG_FLAGS)) */
-
-#define _CRTDBG_FLAGS \
-( _CRTDBG_ALLOC_MEM_DF || /* Turn on the debug heap allocations \
- * and use the memory block identifiers. \
- * This is the only flag that's on by default. */ \
- _CRTDBG_CHECK_ALWAYS_DF || /* Check and validate all memory \
- * on each allocation and deallocation request. \
- * Setting this flag on is what catches the \
- * under and overwrites \
- * so it is very important to \
- * get it turned on. */ \
- _CRTDBG_CHECK_CRT_DF || /* Include _CRT_BLOCK memory allocations \
- * in all leak detection and state differences. */ \
- _CRTDBG_DELAY_FREE_MEM_DF || /* Instead of truly freeing memory, \
- * keep the block allocated and \
- * in the internal heap list. \
- * The blocks are filled with the value0xDD \
- * so you know the memory is freed when \
- * looking at it in the debugger. \
- * By also not freeing the memory, \
- * this can help provide stress \
- * conditions for the program. */ \
- _CRTDBG_LEAK_CHECK_DF) /* Do memory leak checking at \
- * the end of the program. */
-
-#endif /* (defined(_DEBUG)) */
-#endif /* (defined(RWVERBOSE)) */
-
-#include <math.h>
-/*
- * Keep true calls to these functions since
- * some x86 runtime libraries do not support _CIpow() etc
- */
-#pragma function( acos, asin, cosh, fmod, pow, sinh , tanh )
-
-#if (!defined(RWINT32FROMFLOAT))
-
-static __inline RwInt32
-int32fromreal(RwReal x)
-{
- RwInt16 savemode;
- RwInt16 workmode;
- RwInt32 res;
-
- _asm
- {
- fnstcw savemode ; get fpu mode
- fld dword ptr[x] ; load rwreal x
-
- mov ax,savemode ; put fpu mode in register
- or ah,0ch ; or-in truncate mode
-
- mov workmode,ax ; make ready to set fpu mode
- fldcw workmode ; set fpu to truncate mode
- fistp dword ptr[res]; store the rwint32eger result
- fldcw savemode ; restore fpu mode
- }
-
- return res;
-}
-#define RwInt32FromRealMacro(x) int32fromreal(x)
-
-#endif /* (!defined(RWINT32FROMFLOAT)) */
-
-#if (!defined(NOASM))
-static __inline RwUInt32
-RwFastRealToUInt32(RwReal x)
-{
- RwUInt32 res;
-
- __asm FLD DWord Ptr[x];
- __asm FISTP DWord Ptr[res];
-
- return(res);
-}
-#endif /* (defined(NOASM)) */
-
-#endif /* (defined(_MSC_VER)) */
-
-#endif /* WIN_OSTYPES_H */
-
-
-/*--- Automatically derived from: C:/daily/rwsdk/src/plcore/bamath.h ---*/
-
-/****************************************************************************
- Defines
- */
-
-#if (!defined(RwInt32FromRealMacro))
-#define RwInt32FromRealMacro(x) \
- ((RwInt32)(x))
-#endif /* (!defined(RwInt32FromRealMacro)) */
-
-#if (!defined(RwFastRealToUInt32))
-#define RwFastRealToUInt32(_x) \
- ((RwUInt32)RwInt32FromRealMacro(((RwReal)(_x))))
-#endif /* (!defined(RwFastRealToUInt32)) */
-
-/*
- * Ensure inclusion of prototypes for single precison maths functions
- * e.g. from
- * /usr/local/sce/ee/gcc/ee/include/math.h
- * /Program Files/Intel/Compiler4.0/include/mathf.h
- */
-
-#if (defined(__ICL))
-
-#if (defined(RWVERBOSE))
-
-/*
- * See
- * http://www.eskimo.com/~scs/C-faq/q11.17.html
- */
-
-#define _STRINGIFY(X) #X
-#define _STRINGIFY_EXP(X) _STRINGIFY(X)
-
-#pragma message ("Intel Compiler Version " _STRINGIFY_EXP(__ICL) ":" __FILE__ "(" _STRINGIFY_EXP(__LINE__) ")\n")
-#pragma comment ( user, "comment:" "Intel Compiler Version " _STRINGIFY_EXP(__ICL) ":" __FILE__ "(" _STRINGIFY_EXP(__LINE__) ")\n")
-
-#endif /* (defined(RWVERBOSE)) */
-
-#if (400 <= __ICL)
-#if (defined(__cplusplus))
-#define _INC_MATH
-#endif /* (defined(__cplusplus)) */
-#include <mathf.h>
-#else /* (400 < __ICL) */
-#undef RW_USE_SPF
-#endif /* (400 < __ICL) */
-
-#endif /* (defined(__ICL)) */
-
-#include <math.h>
-
-#define _RW_C1 ( (float) 4.1666667908e-02 )
-#define _RW_C2 ( (float)-1.3888889225e-03 )
-#define _RW_C3 ( (float) 2.4801587642e-05 )
-#define _RW_C4 ( (float)-2.7557314297e-07 )
-#define _RW_C5 ( (float) 2.0875723372e-09 )
-#define _RW_C6 ( (float)-1.1359647598e-11 )
-#define _RW_S1 ( (float)-1.6666667163e-01 )
-#define _RW_S2 ( (float) 8.3333337680e-03 )
-#define _RW_S3 ( (float)-1.9841270114e-04 )
-#define _RW_S4 ( (float) 2.7557314297e-06 )
-#define _RW_S5 ( (float)-2.5050759689e-08 )
-#define _RW_S6 ( (float) 1.5896910177e-10 )
-#define _RW_one ( (float) 1.0000000000e+00 )
-#define _RW_pS0 ( (float) 1.6666667163e-01 )
-#define _RW_pS1 ( (float)-3.2556581497e-01 )
-#define _RW_pS2 ( (float) 2.0121252537e-01 )
-#define _RW_pS3 ( (float)-4.0055535734e-02 )
-#define _RW_pS4 ( (float) 7.9153501429e-04 )
-#define _RW_pS5 ( (float) 3.4793309169e-05 )
-#define _RW_pi ( (float) 3.1415925026e+00 )
-#define _RW_pi_tol ( (float) 0.0312500000e+00 )
-#define _RW_pio2_hi ( (float) 1.5707962513e+00 )
-#define _RW_pio2_lo ( (float) 7.5497894159e-08 )
-#define _RW_qS1 ( (float)-2.4033949375e+00 )
-#define _RW_qS2 ( (float) 2.0209457874e+00 )
-#define _RW_qS3 ( (float)-6.8828397989e-01 )
-#define _RW_qS4 ( (float) 7.7038154006e-02 )
-
-#define RwCosMinusPiToPiMacro(result, x) \
-MACRO_START \
-{ \
- const float z = x * x; \
- const float r = ( z * (_RW_C1 + \
- z * (_RW_C2 + \
- z * (_RW_C3 + \
- z * (_RW_C4 + \
- z * (_RW_C5 + \
- z * _RW_C6)))))); \
- result = (_RW_one - ((float) 0.5 * z - (z * r ))); \
-} \
-MACRO_STOP
-
-#define RwSinMinusPiToPiMacro(result, x) \
-do \
-{ \
- const float z = x * x; \
- const float v = z * x; \
- const float r = ( _RW_S2 + \
- z * (_RW_S3 + \
- z * (_RW_S4 + \
- z * (_RW_S5 + \
- z * _RW_S6))) ); \
- result = x + v * (_RW_S1 + z * r); \
-} \
-while(0)
-
-typedef union _rwIEEEFloatShapeType _rwIEEEFloatShapeType;
-union _rwIEEEFloatShapeType
-{
- float value;
- unsigned int word;
-};
-
-#define _RW_GET_FLOAT_WORD(i,d) \
-do { \
- _rwIEEEFloatShapeType gf_u; \
- gf_u.value = (d); \
- (i) = gf_u.word; \
-} while (0)
-
-/* Set a float from a 32 bit int. */
-
-#define _RW_SET_FLOAT_WORD(d,i) \
-do { \
- _rwIEEEFloatShapeType sf_u; \
- sf_u.word = (i); \
- (d) = sf_u.value; \
-} while (0)
-
-#define RwIEEEACosfMacro(result, x) \
-do \
-{ \
- float z, p, q, r, w, s, c, df; \
- int hx, ix; \
- \
- _RW_GET_FLOAT_WORD(hx, x); \
- ix = hx & 0x7fffffff; \
- if (ix >= 0x3f800000) \
- { /* |x|>=1 */ \
- if (hx > 0) \
- { \
- /* acos(1) = 0 */ \
- result = (0.0); \
- } \
- else \
- { \
- /* acos(-1)= _RW_pi */ \
- result = (_RW_pi + (float) 2.0 * _RW_pio2_lo); \
- } \
- \
- } \
- else if (ix < 0x3f000000) \
- { /* |x| < 0.5 */ \
- if (ix <= 0x23000000) \
- { \
- /*if |x|<2**-57 */ \
- result = (_RW_pio2_hi + _RW_pio2_lo); \
- } \
- else \
- { \
- z = x * x; \
- p = z * (_RW_pS0 + \
- z * (_RW_pS1 + \
- z * (_RW_pS2 + \
- z * (_RW_pS3 + \
- z * (_RW_pS4 + z * _RW_pS5))))); \
- q = _RW_one + z * (_RW_qS1 + \
- z * (_RW_qS2 + \
- z * (_RW_qS3 + z * _RW_qS4))); \
- r = p / q; \
- result = (_RW_pio2_hi - (x - (_RW_pio2_lo - x * r))); \
- } \
- \
- } \
- else if (hx < 0) \
- { /* x < -0.5 */ \
- z = (_RW_one + x) * (float) 0.5; \
- p = z * (_RW_pS0 + \
- z * (_RW_pS1 + \
- z * (_RW_pS2 + \
- z * (_RW_pS3 + \
- z * (_RW_pS4 + z * _RW_pS5))))); \
- q = _RW_one + z * (_RW_qS1 + \
- z * (_RW_qS2 + z * (_RW_qS3 + z * _RW_qS4))); \
- rwSqrtMacro(&s, z); \
- r = p / q; \
- w = r * s - _RW_pio2_lo; \
- result = (_RW_pi - (float) 2.0 * (s + w)); \
- } \
- else \
- { /* x > 0.5 */ \
- int idf; \
- \
- z = (_RW_one - x) * (float) 0.5; \
- rwSqrtMacro(&s, z); \
- df = s; \
- _RW_GET_FLOAT_WORD(idf, df); \
- _RW_SET_FLOAT_WORD(df, idf & 0xfffff000); \
- c = (z - df * df) / (s + df); \
- p = z * (_RW_pS0 + \
- z * (_RW_pS1 + \
- z * (_RW_pS2 + \
- z * (_RW_pS3 + \
- z * (_RW_pS4 + z * _RW_pS5))))); \
- q = _RW_one + z * (_RW_qS1 + \
- z * (_RW_qS2 + z * (_RW_qS3 + z * _RW_qS4))); \
- r = p / q; \
- w = r * s + c; \
- result = ((float) 2.0 * (df + w)); \
- } \
-} \
-while(0)
-
-#if (defined(RW_USE_SPF))
-
-#define RwACos(_x) acosf(_x)
-#define RwACosh(_x) acoshf(_x)
-#define RwASin(_x) asinf(_x)
-#define RwASinh(_x) asinhf(_x)
-
-#if (!defined(__ICL))
-/*
- * No SPF version in
- * Program Files/Intel/compilerXXX/include/mathf.h
- * of atan2()
- */
-#define RwATan2(_x, _y) atan2f(_x, _y)
-#endif /* (!defined(__ICL)) */
-
-#define RwATan(_x) atanf(_x)
-#define RwATanh(_x) atanhf(_x)
-#define RwCabs() cabsf()
-#define RwCbrt(_x) cbrtf(_x)
-#define RwCeil(_x) ceilf(_x)
-#define RwCopysign(_x, _y) copysignf(_x, _y)
-#define RwCos(_x) cosf(_x)
-#define RwCosh(_x) coshf(_x)
-#define RwDrem(_x, _y) dremf(_x, _y)
-#define RwErfc(_x) erfcf(_x)
-#define RwErf(_x) erff(_x)
-#define RwExp(_x) expf(_x)
-#define RwExpm1(_x) expm1f(_x)
-#define RwFinite(_x) finitef(_x)
-#define RwIlogb(_x) ilogbf(_x)
-#define RwIsinf(_x) isinff(_x)
-#define RwIsnan(_x) isnanf(_x)
-#define RwFabs(_x) fabsf(_x)
-#define RwFloor(_x) floorf(_x)
-#define RwFmod(_x, _y) fmodf(_x, _y)
-#define RwFrexp(_x, _iptr) frexpf(_x, _iptr)
-#define RwGamma(_x) gammaf(_x)
-#define RwGammaf_(_x, _iptr) gammaf_r(_x, _iptr)
-#define RwHypot(_x, _y) hypotf(_x, _y)
-#define RwInfinity() infinityf()
-#define RwJ0(_x) j0f(_x)
-#define RwJ1(_x) j1f(_x)
-#define RwJn(_i, _x) jnf(_i, _x)
-#define RwLdexp(_x, _i) ldexpf(_x, _i)
-#define RwLgamma(_x) lgammaf(_x)
-#define RwLgammaf_(_x, _iptr) lgammaf_r(_x, _iptr)
-#define RwLog10(_x) log10f(_x)
-#define RwLog1p(_x) log1pf(_x)
-#define RwLog(_x) logf(_x)
-#define RwModf(_x, _y) modff(_x, _y)
-#define RwNan() nanf()
-#define RwNextafter(_x, _y) nextafterf(_x, _y)
-#define RwPow(_x, _y) powf(_x, _y)
-#define RwRemainder(_x, _y) remainderf(_x, _y)
-#define RwRint(_x) rintf(_x)
-#define RwScalbn(_x, _i) scalbnf(_x, _i)
-#define RwSin(_x) sinf(_x)
-#define RwSinh(_x) sinhf(_x)
-/* rwSqrtMacro/rwInvSqrtMacro are overloaded in drvmodel.h
- * (if they are at all) and wrapped as func/macro below */
-#define RwTan(_x) tanf(_x)
-#define RwTanh(_x) tanhf(_x)
-#define RwY0(_x) y0f(_x)
-#define RwY1(_x) y1f(_x)
-#define RwYn(_i, _x) ynf(_i, _x)
-
-#endif /* (defined(RW_USE_SPF)) */
-
-#if (!defined(RwACos))
-#define RwACos(_x) acos(_x)
-#endif /* (!defined(RwACos)) */
-#if (!defined(RwACosh))
-#define RwACosh(_x) acosh(_x)
-#endif /* (!defined(RwACosh)) */
-#if (!defined(RwASin))
-#define RwASin(_x) asin(_x)
-#endif /* (!defined(RwASin)) */
-#if (!defined(RwASinh))
-#define RwASinh(_x) asinh(_x)
-#endif /* (!defined(RwASinh)) */
-#if (!defined(RwATan2))
-#define RwATan2(_x, _y) atan2(_x, _y)
-#endif /* (!defined(RwATan2)) */
-#if (!defined(RwATan))
-#define RwATan(_x) atan(_x)
-#endif /* (!defined(RwATan)) */
-#if (!defined(RwATanh))
-#define RwATanh(_x) atanh(_x)
-#endif /* (!defined(RwATanh)) */
-#if (!defined(RwCabs))
-#define RwCabs() cabs()
-#endif /* (!defined(RwCabs)) */
-#if (!defined(RwCbrt))
-#define RwCbrt(_x) cbrt(_x)
-#endif /* (!defined(RwCbrt)) */
-#if (!defined(RwCeil))
-#define RwCeil(_x) ceil(_x)
-#endif /* (!defined(RwCeil)) */
-#if (!defined(RwCopysign))
-#define RwCopysign(_x, _y) copysign(_x, _y)
-#endif /* (!defined(RwCopysign)) */
-#if (!defined(RwCos))
-#define RwCos(_x) cos(_x)
-#endif /* (!defined(RwCos)) */
-#if (!defined(RwCosh))
-#define RwCosh(_x) cosh(_x)
-#endif /* (!defined(RwCosh)) */
-#if (!defined(RwDrem))
-#define RwDrem(_x, _y) drem(_x, _y)
-#endif /* (!defined(RwDrem)) */
-#if (!defined(RwErfc))
-#define RwErfc(_x) erfc(_x)
-#endif /* (!defined(RwErfc)) */
-#if (!defined(RwEr))
-#define RwEr(_x) erf(_x)
-#endif /* (!defined(RwEr)) */
-#if (!defined(RwExp))
-#define RwExp(_x) exp(_x)
-#endif /* (!defined(RwExp)) */
-#if (!defined(RwExpm1))
-#define RwExpm1(_x) expm1(_x)
-#endif /* (!defined(RwExpm1)) */
-#if (!defined(RwFinite))
-#define RwFinite(_x) finite(_x)
-#endif /* (!defined(RwFinite)) */
-#if (!defined(RwIlogb))
-#define RwIlogb(_x) ilogb(_x)
-#endif /* (!defined(RwIlogb)) */
-#if (!defined(RwIsin))
-#define RwIsin(_x) isinf(_x)
-#endif /* (!defined(RwIsin)) */
-#if (!defined(RwIsnan))
-#define RwIsnan(_x) isnan(_x)
-#endif /* (!defined(RwIsnan)) */
-#if (!defined(RwFabs))
-#define RwFabs(_x) fabs(_x)
-#endif /* (!defined(RwFabs)) */
-#if (!defined(RwFloor))
-#define RwFloor(_x) floor(_x)
-#endif /* (!defined(RwFloor)) */
-#if (!defined(RwFmod))
-#define RwFmod(_x, _y) fmod(_x, _y)
-#endif /* (!defined(RwFmod)) */
-#if (!defined(RwFrexp))
-#define RwFrexp(_x, _iptr) frexp(_x, _iptr)
-#endif /* (!defined(RwFrexp)) */
-#if (!defined(RwGamma))
-#define RwGamma(_x) gamma(_x)
-#endif /* (!defined(RwGamma)) */
-#if (!defined(RwGammaf_))
-#define RwGammaf_(_x, _iptr) gammaf_r(_x, _iptr)
-#endif /* (!defined(RwGammaf_)) */
-#if (!defined(RwHypot))
-#define RwHypot(_x, _y) hypot(_x, _y)
-#endif /* (!defined(RwHypot)) */
-#if (!defined(RwInfinity))
-#define RwInfinity() infinity()
-#endif /* (!defined(RwInfinity)) */
-#if (!defined(RwJ0))
-#define RwJ0(_x) j0(_x)
-#endif /* (!defined(RwJ0)) */
-#if (!defined(RwJ1))
-#define RwJ1(_x) j1(_x)
-#endif /* (!defined(RwJ1)) */
-#if (!defined(RwJn))
-#define RwJn(_i, _x) jn(_i, _x)
-#endif /* (!defined(RwJn)) */
-#if (!defined(RwLdexp))
-#define RwLdexp(_x, _i) ldexp(_x, _i)
-#endif /* (!defined(RwLdexp)) */
-#if (!defined(RwLgamma))
-#define RwLgamma(_x) lgamma(_x)
-#endif /* (!defined(RwLgamma)) */
-#if (!defined(RwLgammaf_))
-#define RwLgammaf_(_x, _iptr) lgammaf_r(_x, _iptr)
-#endif /* (!defined(RwLgammaf_)) */
-#if (!defined(RwLog10))
-#define RwLog10(_x) log10(_x)
-#endif /* (!defined(RwLog10)) */
-#if (!defined(RwLog1p))
-#define RwLog1p(_x) log1p(_x)
-#endif /* (!defined(RwLog1p)) */
-#if (!defined(RwLog))
-#define RwLog(_x) log(_x)
-#endif /* (!defined(RwLog)) */
-#if (!defined(RwMod))
-#define RwMod(_x, _y) mod(_x, _y )
-#endif /* (!defined(RwMod)) */
-#if (!defined(RwNan))
-#define RwNan() nan()
-#endif /* (!defined(RwNan)) */
-#if (!defined(RwNextafter))
-#define RwNextafter(_x, _y) nextafter(_x, _y)
-#endif /* (!defined(RwNextafter)) */
-#if (!defined(RwPow))
-#define RwPow(_x, _y) pow(_x, _y)
-#endif /* (!defined(RwPow)) */
-#if (!defined(RwRemainder))
-#define RwRemainder(_x, _y) remainder(_x, _y)
-#endif /* (!defined(RwRemainder)) */
-#if (!defined(RwRint))
-#define RwRint(_x) rint(_x)
-#endif /* (!defined(RwRint)) */
-#if (!defined(RwScalbn))
-#define RwScalbn(_x, _i) scalbn(_x, _i)
-#endif /* (!defined(RwScalbn)) */
-#if (!defined(RwSin))
-#define RwSin(_x) sin(_x)
-#endif /* (!defined(RwSin)) */
-#if (!defined(RwSinh))
-#define RwSinh(_x) sinh(_x)
-#endif /* (!defined(RwSinh)) */
-#if (!defined(rwSqrt))
-/* NOTE: this is overloaded in drvmodel.h for some targets (SKY2 and XBOX atm)
- * [we do in fact do overload w/ sqrtf there, if RW_USE_SPF,
- * for D3D7, D3D8, OpenGL and SoftRas] */
-#define rwSqrt(_result, _x) rwSqrtMacro(_result, _x)
-#endif /* (!defined(rwSqrt)) */
-#if (!defined(rwInvSqrt))
-/* NOTE: this is overloaded in drvmodel.h for some targets (SKY2 and XBOX atm)
- * [we do in fact do overload w/ (1 / sqrtf) there, if RW_USE_SPF,
- * for D3D7, D3D8, OpenGL and SoftRas] */
-#define rwInvSqrt(_recip, _x) rwInvSqrtMacro(_recip, _x)
-#endif /* (!defined(rwInvSqrt)) */
-#if (!defined(RwTan))
-#define RwTan(_x) tan(_x)
-#endif /* (!defined(RwTan)) */
-#if (!defined(RwTanh))
-#define RwTanh(_x) tanh(_x)
-#endif /* (!defined(RwTanh)) */
-#if (!defined(RwY0))
-#define RwY0(_x) y0(_x)
-#endif /* (!defined(RwY0)) */
-#if (!defined(RwY1))
-#define RwY1(_x) y1(_x)
-#endif /* (!defined(RwY1)) */
-#if (!defined(RwYn))
-#define RwYn(_i, _x) yn(_i, _x)
-#endif /* (!defined(RwYn)) */
-
-
-/*--- Automatically derived from: C:/daily/rwsdk/src/plcore/batypes.h ---*/
-#define rwLIBRARYBASEVERSION 0x31000
-#define rwLIBRARYCURRENTVERSION 0x33002
-
-/*
- * RWBUILDNUMBER
- * This 16-bit int will be externally defined in an official build, and
- * is used to construct chunk header library ID when streaming out. All
- * unofficial builds will be stamped with the following:-
- */
-#if !defined(RWBUILDNUMBER)
-#define RWBUILDNUMBER 0xffff
-#endif
-
-/* IMPORTANT:
- * The following Doxygen comment MUST be copied into RwCore.h,
- * so don't move it from here. */
-
-/**
- * \ingroup rwcore
- * \page rwcoreoverview Core Library Overview
- *
- * LIBRARY: rwcore.lib
- * HEADER: rwcore.h
- *
- * This library provides the fundamental RenderWare features.
- *
- * When creating a RenderWare application, this library must always be
- * linked.
- *
- * Functionality includes:
- * \li Immediate Modes (2D \ref rwim2d and 3D \ref rwim3d )
- * \li Plugin Management
- * \li Base Datatypes
- * \li Cameras \ref rwcamera
- * \li Frames \ref rwframe
- * \li the RenderWare Engine \ref rwengine
- *
- * RenderWare uses an object-oriented design philosophy, so this
- * documentation is split across a number of objects.
- *
- * These objects are implemented in C, so C terminology is generally
- * used, rather than C++ -- hence 'functions' instead of 'methods' and
- * 'elements' instead of 'members'.
- *
- * If you are new to RenderWare programming, please read through the
- * supplied User Guide. The RenderWare Engine \ref rwengine API is
- * usually the starting point for new developers.
- */
-
-
-#if (!defined(RWFORCEENUMSIZEINT))
-#define RWFORCEENUMSIZEINT ((RwInt32)((~((RwUInt32)0))>>1))
-#endif /* (!defined(RWFORCEENUMSIZEINT)) */
-
-/*
- * See
- * http://www.eskimo.com/~scs/C-faq/q11.17.html
- */
-
-#define RW_STRINGIFY(X) #X
-#define RW_STRINGIFY_EXPANDED(X) RW_STRINGIFY(X)
-
-/****************************************************************************
- Attributes
- */
-
-#if (defined(__GNUC__))
-
-/* See http://www.gnu.org/software/gcc/onlinedocs/gcc_4.html#SEC91 */
-
-#if (!(defined(__cplusplus) || defined(__MWERKS__) || defined(__RWUNUSED__)))
-#define __RWUNUSED__ __attribute__ ((unused))
-#endif /* (!(defined(__cplusplus) || defined(__MWERKS__) || defined(__RWUNUSED__))) */
-
-#if (!(defined(__RWUNUSEDRELEASE__) || defined(RWVALIDATEPARAM)))
-#if (!( defined(__cplusplus) || defined(__MWERKS__) || defined(RWDEBUG)))
-#define __RWUNUSEDRELEASE__ __attribute__ ((unused))
-#endif /* (!(defined(__cplusplus) || defined(__MWERKS__) || defined(RWDEBUG))) */
-#endif /* (!(defined(__RWUNUSEDRELEASE__) || defined(RWVALIDATEPARAM))) */
-
-#if (!defined(__RWFORMAT__))
-#define __RWFORMAT__(_archetype, _string_index, _first_to_check) \
- __attribute__ ((format (_archetype, _string_index, _first_to_check)))
-#endif /* (!defined(__RWFORMAT__)) */
-
-#endif /* (defined(__GNUC__)) */
-
-#if (!defined(__RWUNUSED__))
-#define __RWUNUSED__ /* No op */
-#endif /* (!defined(__RWUNUSED__)) */
-
-#if (!defined(__RWUNUSEDRELEASE__))
-#define __RWUNUSEDRELEASE__ /* No op */
-#endif /* (!defined(__RWUNUSEDRELEASE__)) */
-
-#if (!defined(__RWFORMAT__))
-#define __RWFORMAT__(_archetype, _string_index, _first_to_check) /* No op */
-#endif /* (!defined(__RWFORMAT__)) */
-
-/****************************************************************************
- Calling conventions
- */
-
-#if (defined(WIN32))
-#define RWASMCALL __cdecl
-#define RWASMAPI(TYPE) TYPE RWASMCALL
-#endif /* (defined(WIN32)) */
-
-#if (!defined(RWASMCALL))
-#define RWASMCALL /* No op */
-#endif /* (!defined(RWASMCALL)) */
-
-#if (!defined(RWASMAPI))
-#define RWASMAPI(TYPE) TYPE
-#endif /* (!defined(RWASMAPI)) */
-
-
-/* Maximum number of nested contexts */
-#define rwMAXPIPECONTEXT 10
-
-
-/****************************************************************************
- Macro wrappers. These are needed everywhere.
- */
-
-#ifndef MACRO_START
-#define MACRO_START do
-#endif /* MACRO_START */
-
-#ifndef MACRO_STOP
-#define MACRO_STOP while(0)
-#endif /* MACRO_STOP */
-
-/****************************************************************************
- Types needed everywhere
- */
-
-#ifdef FALSE
-#undef FALSE
-#endif
-#define FALSE 0
-
-#ifdef TRUE
-#undef TRUE
-#endif
-#define TRUE !FALSE
-
-/****************************************************************************
- MS VC/C++ Specific
- */
-
-#if (defined(_MSC_VER))
-#if (_MSC_VER>=1000)
-
-
-/*
- * Check for correct compiler version
- */
-#define RW_MSC_VER 1200
-
-#if (0 && !defined(RW_NO_COMPILER_CHECK))
-#if (_MSC_VER != RW_MSC_VER )
-# pragma message (__FILE__ "(" RW_STRINGIFY_EXPANDED(__LINE__) "):" "\n This compiler is a different version (" RW_STRINGIFY_EXPANDED(_MSC_VER) ")\n to the compiler used to build the RenderWare product libraries (" RW_STRINGIFY_EXPANDED(RW_MSC_VER) ") \n To turn off this warning please define RW_NO_COMPILER_CHECK " )
-# pragma comment ( user, "comment:" __FILE__ "(" RW_STRINGIFY_EXPANDED(__LINE__) "):" "\n This compiler is a different version (" RW_STRINGIFY_EXPANDED(_MSC_VER) ")\n to the compiler used to build the RenderWare product libraries (" RW_STRINGIFY_EXPANDED(RW_MSC_VER) ") \n To turn off this warning please define RW_NO_COMPILER_CHECK " )
-#endif /* (_MSC_VER != RW_MSC_VER ) */
-#endif /* (0 && !defined(RW_NO_COMPILER_CHECK)) */
-
-/*
- * Output some compiler messages and object file comments
- */
-
-#pragma comment ( compiler )
-
-#pragma comment ( user, "comment:" __DATE__" " __TIME__ " - " __FILE__ "(" RW_STRINGIFY_EXPANDED(__LINE__) ")")
-#pragma comment ( user, "comment:" " _MSC_VER==" RW_STRINGIFY_EXPANDED(_MSC_VER) "; _M_IX86==" RW_STRINGIFY_EXPANDED(_M_IX86))
-#if (defined(rwLIBRARYCURRENTVERSION))
-#pragma comment ( user, "comment:" "rwLIBRARYCURRENTVERSION:" RW_STRINGIFY_EXPANDED(rwLIBRARYCURRENTVERSION) )
-#endif /* (defined(rwLIBRARYCURRENTVERSION)) */
-
-#if (defined(RWDEBUG) && defined(RWVERBOSE))
-
-/* #include <windows.h> */
-#if (defined(RWMEMDEBUG) && !defined(_CRTDBG_MAP_ALLOC))
-#define _CRTDBG_MAP_ALLOC
-#endif /* defined(RWMEMDEBUG) && !defined(_CRTDBG_MAP_ALLOC)) */
-#include <crtdbg.h>
-
-#pragma message (__DATE__" " __TIME__ " - " __FILE__ "(" RW_STRINGIFY_EXPANDED(__LINE__) ")" )
-#pragma message ("_MSC_VER==" RW_STRINGIFY_EXPANDED(_MSC_VER) "; _M_IX86==" RW_STRINGIFY_EXPANDED(_M_IX86))
-
-#if (defined(rwLIBRARYCURRENTVERSION))
-#pragma message ( "rwLIBRARYCURRENTVERSION:" RW_STRINGIFY_EXPANDED(rwLIBRARYCURRENTVERSION) )
-#endif /* (defined(rwLIBRARYCURRENTVERSION)) */
-
-#endif /* (defined(RWDEBUG) && defined(RWVERBOSE) ) */
-
-#endif /* (_MSC_VER>=1000) */
-#endif /* (defined(_MSC_VER)) */
-
-/*******************/
-/* Primitive types */
-/*******************/
-
-/* String construction stuff (gets us UNICODE support) */
-#ifdef RWUNICODE
-#define _RWSTRING(x) L ## x
-#else /* RWUNICODE */
-#define _RWSTRING(x) x
-#endif /* RWUNICODE */
-#define RWSTRING(x) _RWSTRING(x)
-
-/* NB volatile keyword required for VC5.0 to ensure a reload - AMB */
-typedef union RwSplitBits RwSplitBits;
-union RwSplitBits
-{
- RwReal nReal;
- volatile RwInt32 nInt;
- volatile RwUInt32 nUInt;
-};
-
-typedef struct RwSplitFixed RwSplitFixed;
-
-#ifdef rwBIGENDIAN
-struct RwSplitFixed
-{
- RwInt16 integral;
- RwUInt16 fractional;
-};
-
-#else /* rwBIGENDIAN */
-#ifdef rwLITTLEENDIAN
-struct RwSplitFixed
-{
- RwUInt16 fractional;
- RwInt16 integral;
-};
-
-#else /* rwLITTLEENDIAN */
-#error "ENDIAN-ness undefined!"
-#endif /* rwLITTLEENDIAN */
-#endif /* rwBIGENDIAN */
-
-typedef union RwUnionReal RwUnionReal;
-union RwUnionReal /* MSB is sign bit in any circumstance */
-{
- RwReal real; /* 4 bytes interpreted as RwReal */
- float floating; /* 4 bytes interpreted as float */
- RwFixed fixed; /* 4 bytes interpreted as 16:16 fixed */
- RwSplitFixed splitfixed; /* 4 bytes interpreted as 16:16 fixed */
-};
-
-/*****************/
-
-/* Complex types */
-
-/*****************/
-
-/**
- * \ingroup datatypes
- * \typedef RwV2d
- * typedef for struct RwV2d
- */
-typedef struct RwV2d RwV2d;
-/**
- * \ingroup datatypes
- * \struct RwV2d
- * This type represents points in a 2D space, such as device
- * space, specified by the (x, y) coordinates of the point.
- */
-struct RwV2d
-{
- RwReal x; /**< X value*/
- RwReal y; /**< Y vlaue */
-};
-
-/**
- * \ingroup datatypes
- * \typedef RwV3d
- * typedef for struct RwV3d
- */
-typedef struct RwV3d RwV3d;
-/**
- * \ingroup datatypes
- * \struct RwV3d
- * This type represents 3D points and vectors specified by
- * the (x, y, z) coordinates of a 3D point or the (x, y, z) components of a
- * 3D vector.
- */
-struct RwV3d
-{
- RwReal x; /**< X value */
- RwReal y; /**< Y value */
- RwReal z; /**< Z value */
-};
-
-#define RWV4DALIGNMENT(_v4d) \
- (! (((rwV4DALIGNMENT)-1) & ((RwUInt32)(_v4d))))
-
-/**
- * \ingroup datatypes
- * \struct RwV4d
- * This type represents 4D points and vectors specified by
- * the (x, y, z, w) coordinates of a 4D point or the (x, y, z, w) components of a
- * 4D vector.
- */
-struct RwV4d
-{
- RwReal x; /**< X value */
- RwReal y; /**< Y value */
- RwReal z; /**< Z value */
- RwReal w; /**< W value */
-};
-
-/**
- * \ingroup datatypes
- * \typedef RwV4d
- * typedef for struct RwV4d
- */
-typedef struct RwV4d RWALIGN(RwV4d, rwV4DALIGNMENT);
-
-
-/**
- * \ingroup datatypes
- * \typedef RwRect
- * typedef for struct RwRect
- */
-typedef struct RwRect RwRect;
-/**
- * \ingroup datatypes
- * \struct RwRect
- * This type represents a 2D device space rectangle specified
- * by the position of the top-left corner (the offset x, y) and its width (w)
- * and height (h).
- */
-struct RwRect
-{
- RwInt32 x; /**< X value of the top-left corner */
- RwInt32 y; /**< Y value of the top-left corner */
- RwInt32 w; /**< Width of the rectangle */
- RwInt32 h; /**< Height of the rectangle */
-};
-
-/**
- * \ingroup datatypes
- * \typedef RwSphere
- * typedef for struct RwSphere
- */
-typedef struct RwSphere RwSphere;
-/**
- * \ingroup datatypes
- * \struct RwSphere
- * This type represents a sphere specified by the position
- * of its center and its radius
- */
-struct RwSphere
-{
- RwV3d center; /**< Sphere center */
- RwReal radius; /**< Sphere radius */
-};
-
-#if (!defined(RwSphereAssign))
-#define RwSphereAssign(_target, _source) \
- ( *(_target) = *(_source) )
-#endif /* (!defined(RwSphereAssign)) */
-
-/**
- * \ingroup datatypes
- * \typedef RwLine
- * typedef for struct RwLine
- */
-typedef struct RwLine RwLine;
-/**
- * \ingroup datatypes
- * \struct RwLine
- * This type represents a 3D line specified by the position
- * of its start and end points.
- */
-struct RwLine
-{
- RwV3d start; /**< Line start */
- RwV3d end; /**< Line end */
-};
-
-#if (!defined(RwLineAssign))
-#define RwLineAssign(_target, _source) \
- ( *(_target) = *(_source) )
-#endif /* (!defined(RwLineAssign)) */
-
-/* The maximum number of texture coordinates */
-#define rwMAXTEXTURECOORDS 8
-
-/**
- * \ingroup datatypes
- * RwTextureCoordinateIndex
- * This type represents the index for texture coordinates.
- */
-enum RwTextureCoordinateIndex
-{
- rwNARWTEXTURECOORDINATEINDEX = 0,
- rwTEXTURECOORDINATEINDEX0,
- rwTEXTURECOORDINATEINDEX1,
- rwTEXTURECOORDINATEINDEX2,
- rwTEXTURECOORDINATEINDEX3,
- rwTEXTURECOORDINATEINDEX4,
- rwTEXTURECOORDINATEINDEX5,
- rwTEXTURECOORDINATEINDEX6,
- rwTEXTURECOORDINATEINDEX7,
- rwTEXTURECOORDINATEINDEXFORCEENUMSIZEINT = RWFORCEENUMSIZEINT
-};
-typedef enum RwTextureCoordinateIndex RwTextureCoordinateIndex;
-
-/**
- * \ingroup datatypes
- * \typedef RwTexCoords
- * typedef for struct RwTexCoords
- */
-typedef struct RwTexCoords RwTexCoords;
-/**
- * \ingroup datatypes
- * \struct RwTexCoords
- * This type represents the the u and v texture
- * coordinates of a particular vertex.
- */
-struct RwTexCoords
-{
- RwReal u; /**< U value */
- RwReal v; /**< V value */
-};
-
-
-/* Singley linked list macros. End marked as NULL */
-
-typedef struct RwSLLink RwSLLink; /*** RwSLLink ***/
-struct RwSLLink
-{
- RwSLLink *next;
-};
-
-#define rwSLLinkGetData(link,type,entry) \
- ((type *)(((RwUInt8 *)(link))-offsetof(type,entry)))
-
-#define rwSLLinkGetConstData(link,type,entry) \
- ((const type *)(((const RwUInt8 *)(link))-offsetof(type,entry)))
-
-#define rwSLLinkInitialize(linkvar) \
- (linkvar)->next = NULL;
-
-#define rwSLLinkGetNext(linkvar) \
- ((linkvar)->next)
-
-typedef struct RwSingleList RwSingleList;
-struct RwSingleList
-{
- RwSLLink link;
-};
-
-#define rwSingleListInitialize(list) \
- (list)->link.next= NULL;
-#define rwSingleListEmpty(list) \
- (((list)->link.next)==NULL)
-#define rwSingleListAddSLLink(list,linkvar) \
- ( (linkvar)->next = (list)->link.next, \
- (list)->link.next = (linkvar) )
-#define rwSingleListGetFirstSLLink(list) \
- ((list)->link.next)
-#define rwSingleListGetTerminator(list) (NULL)
-
-/* Doubly linked list. End marked as start (its a ring) */
-
-typedef struct RwLLLink RwLLLink; /*** RwLLLink ***/
-struct RwLLLink
-{
- RwLLLink *next;
- RwLLLink *prev;
-};
-
-#define rwLLLinkGetData(linkvar,type,entry) \
- ((type *)(((RwUInt8 *)(linkvar))-offsetof(type,entry)))
-
-#define rwLLLinkGetConstData(linkvar,type,entry) \
- ((const type *)(((const RwUInt8 *)(linkvar))-offsetof(type,entry)))
-
-#define rwLLLinkGetNext(linkvar) \
- ((linkvar)->next)
-
-#define rwLLLinkGetPrevious(linkvar) \
- ((linkvar)->prev)
-
-#define rwLLLinkInitialize(linkvar) \
- ( (linkvar)->prev = (RwLLLink *)NULL, \
- (linkvar)->next = (RwLLLink *)NULL )
-
-#define rwLLLinkAttached(linkvar) \
- ((linkvar)->next)
-
-typedef struct RwLinkList RwLinkList;
-struct RwLinkList
-{
- RwLLLink link;
-};
-
-#define rwLinkListInitialize(list) \
- ( (list)->link.next = ((RwLLLink *)(list)), \
- (list)->link.prev = ((RwLLLink *)(list)) )
-#define rwLinkListEmpty(list) \
- (((list)->link.next) == (&(list)->link))
-#define rwLinkListAddLLLink(list, linkvar) \
- ( (linkvar)->next = (list)->link.next, \
- (linkvar)->prev = (&(list)->link), \
- ((list)->link.next)->prev = (linkvar), \
- (list)->link.next = (linkvar) )
-#define rwLinkListRemoveLLLink(linkvar) \
- ( ((linkvar)->prev)->next = (linkvar)->next, \
- ((linkvar)->next)->prev = (linkvar)->prev )
-#define rwLinkListGetFirstLLLink(list) \
- ((list)->link.next)
-#define rwLinkListGetLastLLLink(list) \
- ((list)->link.prev)
-#define rwLinkListGetTerminator(list) \
- (&((list)->link))
-
-/**
- * \ingroup datatypes
- * \typedef RwSurfaceProperties
- * typedef for struct RwSurfaceProperties
- */
-typedef struct RwSurfaceProperties RwSurfaceProperties;
-/**
- * \ingroup datatypes
- * \struct RwSurfaceProperties
- * This type represents the ambient, diffuse and
- * specular reflection coefficients of a particular geometry. Each coefficient
- * is specified in the range 0.0 (no reflection) to 1.0 (maximum reflection).
- */
-struct RwSurfaceProperties
-{
- RwReal ambient; /**< ambient reflection coefficient */
- RwReal specular; /**< specular reflection coefficient */
- RwReal diffuse; /**< reflection coefficient */
-};
-
-#if (!defined(RwSurfacePropertiesAssign))
-#define RwSurfacePropertiesAssign(_target, _source) \
- ( *(_target) = *(_source) )
-#endif /* (!defined(RwSurfacePropertiesAssign)) */
-
-/**********
- * Macros *
- **********/
-
-/* ANSI C defines the offsetof(type,member) macro; should be in <stddef.h> */
-
-/* If not, fall back to this: */
-#ifndef offsetof
-#define offsetof(type, member) \
- ((size_t)((RwUInt8 *)&((type *) 0)->member - (RwUInt8 *)((type *) 0)))
-#endif /* offsetof */
-
-/*
- *
- * Numeric Macros to handle Fixed/Floating point versions of RenderWare
- *
- */
-#define RWFIX_MIN (1)
-#define RWFIX_MAX (0x7fffffff)
-#define RwFixedCast(A) (RwInt32FromRealMacro((A) * 65536.0f))
-#define RwFixedToInt(A) ((A) >> 16)
-#define RwFixedToFloat(A) ((float)(((float)(A)) * (1.0f / 65536.0f)))
-#define RwFixedToReal(a) ((RwReal)(((RwReal)(a)) * (1.0f / 65536.0f)))
-#define RwRealToFixed(a) (RwInt32FromRealMacro((a) * 65536.0f))
-#define RwRealAbs(a) ((RwReal)((a) >= (RwReal)(0.0) ? (a) : (-(a))))
-#define RwRealMin2(a,b) ((RwReal)( ((a) <= (b)) ? (a) : (b)))
-#define RwRealMax2(a,b) ((RwReal)( ((a) >= (b)) ? (a) : (b)))
-#define RwRealMin3(a,b,c) RwRealMin2(a,RwRealMin2(b,c))
-#define RwRealMax3(a,b,c) RwRealMax2(a,RwRealMax2(b,c))
-
-#ifndef NORWREALSHORTCUT
-#define RToFixed RwRealToFixed
-#define RAbs RwRealAbs
-#define FxCast RwFixedCast
-#define FxToInt RwFixedToInt
-#define FxToFloat RwFixedToFloat
-#define FxToReal RwFixedToFloat
-
-#endif
-
-#ifndef rwPI
-#define rwPI ((RwReal)(3.1415926535f))
-#define rwPIOVER2 (rwPI / (RwReal)(2.0f))
-#endif
-#define RWRGBALONG(r,g,b,a) \
- ((RwUInt32) (((a) << 24) | ((r) << 16) | ((g) << 8) | (b)))
-
-/* !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
-
- RwPlane
-
- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! */
-
-
-/*
- * typedef for struct RwPlane
- */
-typedef struct RwPlane RwPlane;
-/*
- * This type represents a plane
- */
-struct RwPlane
-{
- RwV3d normal; /**< Normal to the plane */
- RwReal distance; /**< Distance to plane from origin in normal direction*/
-};
-
-
-/****************************************************************************
- Defines
- */
-
-enum RwPlaneType
-{
- rwXPLANE = 0, /* These are deliberately multiples of sizeof(RwReal) */
- rwYPLANE = 4,
- rwZPLANE = 8,
- rwPLANETYPEFORCEENUMSIZEINT = RWFORCEENUMSIZEINT
-};
-typedef enum RwPlaneType RwPlaneType;
-
-#define rwSECTORATOMIC -1
-#define rwSECTORBUILD -2 /* Only used when building a world */
-
-/* vect is a RwV3d, y is the component */
-#define GETCOORD(vect,y) \
- (*(RwReal *)(((RwUInt8 *)(&((vect).x)))+(RwInt32)(y)))
-#define GETCONSTCOORD(vect,y) \
- (*(const RwReal *)(((const RwUInt8 *)(&((vect).x)))+(RwInt32)(y)))
-#define SETCOORD(vect,y,value) \
- (((*(RwReal *)(((RwUInt8 *)(&((vect).x)))+(RwInt32)(y))))=(value))
-#define SETCONTCOORD(vect,y,value) \
- (((*(const RwReal *) \
- (((const RwUInt8 *) \
- (&((vect).x)))+(RwInt32)(y))))=(value))
-#define GETCOORDINT(vect,y) \
- (*(RwInt32 *)(((RwUInt8 *)(&((vect).x)))+(y)))
-#define GETCONSTCOORDINT(vect,y) \
- (*(const RwInt32 *)(((const RwUInt8 *)(&((vect).x)))+(y)))
-
-
-/**
- * \ingroup rwcore
- * \page inttypes Integer Types
- *
- * RenderWare supports a number of integer types:
- *
- * RwInt8 8-bit signed integer.
- * \li RwUInt8 8-bit unsigned integer.
- * \li RwChar Character type.
- * \li RwInt16 16-bit signed integer.
- * \li RwUInt16 16-bit unsigned integer.
- * \li RwInt32 32-bit signed integer.
- * \li RwUInt32 32-bit unsigned integer.
- * \li RwInt64 64-bit signed integer.
- * \li RwUInt64 64-bit unsigned integer.
- * \li RwInt128 128-bit signed integer.
- * \li RwUInt128 128-bit unsigned integer.
- * \li RwBool Boolean type (in 32 bits).
- *
- * These types should be used in applications in preference to the underlying
- * native types.
- *
- * The following constants indicate the maximum and minimum values possible
- * for the various RenderWare integer types:
- *
- * \li RwInt32MAXVAL Maximum RwInt32 value.
- * \li RwInt32MINVAL Minimum RwInt32 value.
- * \li RwUInt32MAXVAL Maximum RwUInt32 value.
- * \li RwUInt32MINVAL Minimum RwUInt32 value.
- * \li RwInt16MAXVAL Maximum RwInt16 value.
- * \li RwInt16MINVAL Minimum RwInt16 value.
- * \li RwUInt16MAXVAL Maximum RwUInt16 value.
- * \li RwUInt16MINVAL Minimum RwUInt16 value.
- *
- * \see RwReal
- */
-
-/**
- * \ingroup datatypes
- * \typedef RwReal
- *
- * RenderWare supports a single RwReal floating-point type to aid portability
- * across platforms. This type should be used in applications in preference to
- * the underlying native type.
- *
- * The constants RwRealMAXVAL and RwRealMINVAL are provided for determining
- * the maximum and minimum values possible using the RwReal type.
- *
- * In addition, the following macros are available for operations on RwReal
- * types:
- * \li RwRealMin2(a, b) Find the minimum of two RwReal values.
- * \li RwRealMax2(a, b) Find the maximum of two RwReal values.
- * \li RwRealMin3(a, b, c) Find the minimum of three RwReal values.
- * \li RwRealMax3(a, b, c) Find the maximum of three RwReal values.
- * \li RwRealAbs(x) Find the absolute value of a RwReal value.
- *
- * \see \ref inttypes
- */
-
-/**
- * \ingroup datatypes
- * \typedef RwFixed
- *
- * RenderWare supports a single RwFixed fixed-point type.
- *
- * Although popular in the days when integer mathematics was much faster than
- * floating point mathematics, fixed-point math is now rarely used. It is
- * provided because it is still useful for some processes.
- *
- * The maximum and minimum size of an RwFixed value are defined by the constants
- * RWFIX_MAX and RWFIX_MIN respectively.
- *
- * The following macros are provided to help you work with RwFixed datatypes:
- * \li RwFixedCast(x) Cast the integer portion of an RwFixed to another type.
- * \li RwFixedToInt(x) Convert an RwFixed to an integer. (The fractional portion is lost.)
- * \li RwFixedToFloat(x) Convert an RwFixed to a float.
- * \li RwFixedToReal(x) Convert an RwFixed to an RwReal.
- * \li RwRealToFixed(x) Convert an RwReal to an RwFixed. (Some precision may be lost.)
- */
-
-/**
- * \ingroup datatypes
- * \typedef RwInt8
- *
- * Signed 8 bit integer type.
- * \see \ref inttypes
- */
-
-/**
- * \ingroup datatypes
- * \typedef RwUInt8
- *
- * Unsigned 8bit integer type.
- * \see \ref inttypes
- */
-
-/**
- * \ingroup datatypes
- * \typedef RwChar
- *
- * Character type.
- * \see \ref inttypes
- */
-
-/**
- * \ingroup datatypes
- * \typedef RwInt16
- *
- * Signed 16 bit integer type.
- * \see \ref inttypes
- */
-
-/**
- * \ingroup datatypes
- * \typedef RwUInt16
- *
- * Unsigned 16 bit integer type.
- * \see \ref inttypes
- */
-
-/**
- * \ingroup datatypes
- * \typedef RwInt32
- *
- * Signed 32 bit integer type.
- * \see \ref inttypes
- */
-
-/**
- * \ingroup datatypes
- * \typedef RwUInt32
- *
- * Unsigned 32 bit integer type.
- * \see \ref inttypes
- */
-
-/**
- * \ingroup datatypes
- * \typedef RwInt64
- *
- * Signed 64 bit integer type.
- * \see \ref inttypes
- */
-
-/**
- * \ingroup datatypes
- * \typedef RwUInt64
- *
- * Unsigned 64 bit integer type.
- * \see \ref inttypes
- */
-
-/**
- * \ingroup datatypes
- * \typedef RwInt128
- *
- * Signed 128 bit integer type.
- * \see \ref inttypes
- */
-
-/**
- * \ingroup datatypes
- * \typedef RwUInt128
- *
- * Unsigned 128 bit integer type.
- * \see \ref inttypes
- */
-
-/**
- * \ingroup datatypes
- * \typedef RwBool
- *
- * Boolean type.
- * \see \ref inttypes
- */
-
-
-/*--- Automatically derived from: C:/daily/rwsdk/src/plcore/batype.h ---*/
-/****************************************************************************
- Defines
-*/
-
-/*
- * Object Types - these are used in the binary object
- * representations and in the debug library. They must
- * be unique. They are the old system.
- */
-
-#define rwID_DATABASE 0x64617462 /* datb */
-
-#define MAKECHUNKID(vendorID, chunkID) (((vendorID & 0xFFFFFF) << 8) | (chunkID & 0xFF))
-#define GETOBJECTID(chunkID) (chunkID & 0xFF)
-#define GETVENDORID(chunkID) ((chunkID >> 8) & 0xFFFFFF)
-
-/***
- *** These are the vendor IDs. A customer must reserve a vendor ID in order
- *** to be able to write toolkits (this prevents clashes between toolkits).
- *** We reserve some for our own use as shown below. These are all 24 bit.
- ***
- *** IMPORTANT NOTE: DO NOT UNDER ANY CIRCUMSTANCES CHANGE THESE VALUES. IF
- *** YOU ARE ADDING A NEW ONE, APPEND IT!
- ***
- *** They must all be unique.
- ***/
-
-enum RwPluginVendor
-{
- rwVENDORID_CORE = 0x000000L,
- rwVENDORID_CRITERIONTK = 0x000001L,
- rwVENDORID_REDLINERACER = 0x000002L,
- rwVENDORID_CSLRD = 0x000003L,
- rwVENDORID_CRITERIONINT = 0x000004L,
- rwVENDORID_CRITERIONWORLD = 0x000005L,
- rwVENDORID_BETA = 0x000006L,
- rwVENDORID_CRITERIONRM = 0x000007L,
- rwVENDORID_CRITERIONRWA = 0x000008L, /* RenderWare Audio */
- rwPLUGINVENDORFORCEENUMSIZEINT = RWFORCEENUMSIZEINT
-};
-typedef enum RwPluginVendor RwPluginVendor;
-
-/***
- *** These are the core objects (8 bit IDs). They must all be unique.
- *** We can get away without using the MAKECHUNKID macro because the
- *** vendor ID in all cases will be zero (rwVENDORID_CORE).
- ***
- *** IMPORTANT NOTE: DO NOT UNDER ANY CIRCUMSTANCES CHANGE THESE VALUES. IF
- *** YOU ARE ADDING A NEW ONE, APPEND IT!
- ***/
-
-/* These are the internal ones. Because the core ID is 0, we can get away without
- * using the MAKECHUNKID macro for the CORE chunks.
- */
-
-enum RwCorePluginID
-{
- rwID_NAOBJECT = 0x00,
- rwID_STRUCT = 0x01,
- rwID_STRING = 0x02,
- rwID_EXTENSION = 0x03,
- rwID_CAMERA = 0x05,
- rwID_TEXTURE = 0x06,
- rwID_MATERIAL = 0x07,
- rwID_MATLIST = 0x08,
- rwID_ATOMICSECT = 0x09,
- rwID_PLANESECT = 0x0A,
- rwID_WORLD = 0x0B,
- rwID_SPLINE = 0x0C,
- rwID_MATRIX = 0x0D,
- rwID_FRAMELIST = 0x0E,
- rwID_GEOMETRY = 0x0F,
- rwID_CLUMP = 0x10,
- rwID_LIGHT = 0x12,
- rwID_UNICODESTRING = 0x13,
- rwID_ATOMIC = 0x14,
- rwID_TEXTURENATIVE = 0x15,
- rwID_TEXDICTIONARY = 0x16,
- rwID_ANIMDATABASE = 0x17,
- rwID_IMAGE = 0x18,
- rwID_SKINANIMATION = 0x19,
- rwID_GEOMETRYLIST = 0x1A,
- rwID_HANIMANIMATION = 0x1B,
- rwID_TEAM = 0x1C,
- rwID_CROWD = 0x1D,
- rwID_DMORPHANIMATION = 0x1E,
- rwID_RIGHTTORENDER = 0x1f,
- rwID_MTEFFECTNATIVE = 0x20,
- rwID_MTEFFECTDICT = 0x21,
- rwID_TEAMDICTIONARY = 0x22,
- rwID_PITEXDICTIONARY = 0x23,
- rwID_TOC = 0x24,
- rwID_PRTSTDGLOBALDATA = 0x25,
- /* Insert before MAX and increment MAX */
- rwID_COREPLUGINIDMAX = 0x26,
- rwCOREPLUGINIDFORCEENUMSIZEINT = RWFORCEENUMSIZEINT
-};
-typedef enum RwCorePluginID RwCorePluginID ;
-
-/***
- *** These are the Criterion internal plugin extensions. Use with rwVENDORID_CRITERIONINT.
- ***
- *** IMPORTANT NOTE: DO NOT UNDER ANY CIRCUMSTANCES CHANGE THESE VALUES. IF
- *** YOU ARE ADDING A NEW ONE, APPEND IT!
- ***/
-
-enum RwCriterionPluginID
-{
- rwID_COREPLUGIN = 0x01,
- rwID_WORLDPLUGIN = 0x02,
- rwID_TOOLPLUGIN = 0x03,
- rwID_TOOL2PLUGIN = 0x04,
- rwCRITERIONPLUGINIDFORCEENUMSIZEINT = RWFORCEENUMSIZEINT
-};
-typedef enum RwCriterionPluginID RwCriterionPluginID;
-
-
-/***
- *** These are the Criterion internal platform identifies.
- ***
- *** IMPORTANT NOTE: DO NOT UNDER ANY CIRCUMSTANCES CHANGE THESE VALUES. IF
- *** YOU ARE ADDING A NEW ONE, APPEND IT!
- ***/
-enum RwPlatformID
-{
- rwID_PCD3D7 = 1,
- rwID_PCOGL,
- rwID_MAC,
- rwID_PS2,
- rwID_XBOX,
- rwID_GAMECUBE,
- rwID_SOFTRAS,
- rwID_PCD3D8,
- rwPLATFROMIDFORCEENUMSIZEINT = RWFORCEENUMSIZEINT
-};
-typedef enum RwPlatformID RwPlatformID;
-
-
-/****************************************************************************
- Global Types
- */
-
-typedef struct RwObject RwObject;
-/**
- * \ingroup datatypes
- * \struct RwObject
- * This should be considered an opaque type. Use
- * the RwObject API functions to access.
- */
-struct RwObject
-{
- RwUInt8 type; /**< Internal Use */
- RwUInt8 subType; /**< Internal Use */
- RwUInt8 flags; /**< Internal Use */
- RwUInt8 privateFlags; /**< Internal Use */
- void *parent; /**< Internal Use */
- /* Often a Frame */
-};
-
-/**
- * \ingroup datatypes
- * \typedef RwObjectCallBack
- * callback function supplied for object callback functions.
- *
- * \return Pointer to the current object
- *
- * \param object Pointer to the current object, supplied by
- * iterator.
- * \param data Pointer to developer-defined data structure.
- *
- * \see RwFrameForAllObjects
- *
- */
-typedef RwObject *(*RwObjectCallBack)(RwObject *object, void *data);
-
-/****************************************************************************
- Function prototypes
- */
-
-#ifdef __cplusplus
-extern "C"
-{
-#endif /* __cplusplus */
-
-/* TYPE METHODS */
-
-/* Creation/cloning */
-
-#define rwObjectCopy(d,s) \
-MACRO_START \
-{ \
- ((RwObject *)(d))->type = \
- ((const RwObject *)(s))->type; \
- ((RwObject *)(d))->subType = \
- ((const RwObject *)(s))->subType; \
- ((RwObject *)(d))->flags = \
- ((const RwObject *)(s))->flags; \
- ((RwObject *)(d))->privateFlags = \
- ((const RwObject *)(s))->privateFlags; \
- ((RwObject *)(d))->parent = \
- NULL; \
-} \
-MACRO_STOP
-
-#define rwObjectInitialize(o, t, s) \
-MACRO_START \
-{ \
- ((RwObject *)(o))->type = (RwUInt8)(t); \
- ((RwObject *)(o))->subType = (RwUInt8)(s); \
- ((RwObject *)(o))->flags = 0; \
- ((RwObject *)(o))->privateFlags = 0; \
- ((RwObject *)(o))->parent = NULL; \
-} \
-MACRO_STOP
-
-/* Debug */
-#define RwObjectGetType(o) (((const RwObject *)(o))->type)
-
-#define rwObjectSetType(o, t) (((RwObject *)(o))->type) = (RwUInt8)(t)
-
-/* Sub type */
-#define rwObjectGetSubType(o) (((const RwObject *)(o))->subType)
-#define rwObjectSetSubType(o, t) (((RwObject *)(o))->subType) = (RwUInt8)(t)
-
-/* Flags */
-#define rwObjectGetFlags(o) (((const RwObject *)(o))->flags)
-#define rwObjectSetFlags(o, f) (((RwObject *)(o))->flags) = (RwUInt8)(f)
-#define rwObjectTestFlags(o, f) ((((const RwObject *)(o))->flags) & (RwUInt8)(f))
-
-/* Private flags */
-#define rwObjectGetPrivateFlags(c) (((const RwObject *)(c))->privateFlags)
-#define rwObjectSetPrivateFlags(c,f) (((RwObject *)(c))->privateFlags) = (RwUInt8)(f)
-#define rwObjectTestPrivateFlags(c,flag) ((((const RwObject *)(c))->privateFlags) & (RwUInt8)(flag))
-
-/* Hierarchy */
-#define rwObjectGetParent(object) (((const RwObject *)(object))->parent)
-#define rwObjectSetParent(c,p) (((RwObject *)(c))->parent) = (void *)(p)
-
-#ifdef __cplusplus
-}
-#endif /* __cplusplus */
-
-
-/*--- Automatically derived from: C:/daily/rwsdk/os/win/osintf.h ---*/
-
-/*--- Automatically derived from: C:/daily/rwsdk/src/plcore/rwstring.h ---*/
-
-/****************************************************************************
- Defines
- */
-
-#define rwsprintf RWSRCGLOBAL(stringFuncs).vecSprintf
-#define rwvsprintf RWSRCGLOBAL(stringFuncs).vecVsprintf
-#define rwstrcpy RWSRCGLOBAL(stringFuncs).vecStrcpy
-#define rwstrncpy RWSRCGLOBAL(stringFuncs).vecStrncpy
-#define rwstrcat RWSRCGLOBAL(stringFuncs).vecStrcat
-#define rwstrncat RWSRCGLOBAL(stringFuncs).vecStrncat
-#define rwstrrchr RWSRCGLOBAL(stringFuncs).vecStrrchr
-#define rwstrchr RWSRCGLOBAL(stringFuncs).vecStrchr
-#define rwstrstr RWSRCGLOBAL(stringFuncs).vecStrstr
-#define rwstrcmp RWSRCGLOBAL(stringFuncs).vecStrcmp
-#define rwstricmp RWSRCGLOBAL(stringFuncs).vecStricmp
-#define rwstrlen RWSRCGLOBAL(stringFuncs).vecStrlen
-#define rwstrupr RWSRCGLOBAL(stringFuncs).vecStrupr
-#define rwstrlwr RWSRCGLOBAL(stringFuncs).vecStrlwr
-#define rwstrtok RWSRCGLOBAL(stringFuncs).vecStrtok
-#define rwsscanf RWSRCGLOBAL(stringFuncs).vecSscanf
-
-#define rwstrdup(_result, _string) \
-do \
-{ \
- _result = ((RwChar*)NULL); \
- \
- if (((RwChar*)NULL) != (_string)) \
- { \
- _result = (RwChar *) \
- RwMalloc( (rwstrlen(_string) + 1) * \
- sizeof (RwChar) ); \
- \
- if (((RwChar*)NULL) != (_result)) \
- { \
- rwstrcpy(_result, _string); \
- } \
- } \
-} \
-while (0)
-
-
-/****************************************************************************
- Global Types
- */
-
-typedef int (*vecSprintfFunc)(RwChar *buffer,
- const RwChar *format,
- ...) /* __RWFORMAT__(printf, 2, 3) */;
-typedef int (*vecVsprintfFunc)(RwChar *buffer,
- const RwChar *format,
- va_list argptr);
-typedef RwChar *(*vecStrcpyFunc)(RwChar *dest,
- const RwChar *srce);
-typedef RwChar *(*vecStrncpyFunc)(RwChar *dest,
- const RwChar *srce,
- size_t size);
-typedef RwChar *(*vecStrcatFunc)(RwChar *dest,
- const RwChar *srce);
-typedef RwChar *(*vecStrncatFunc)(RwChar *dest,
- const RwChar *srce,
- size_t size);
-typedef RwChar *(*vecStrrchrFunc)(const RwChar *string,
- int findThis);
-typedef RwChar *(*vecStrchrFunc)(const RwChar *string,
- int findThis);
-typedef RwChar *(*vecStrstrFunc)(const RwChar *string,
- const RwChar *findThis);
-typedef int (*vecStrcmpFunc)(const RwChar *string1,
- const RwChar *string2);
-typedef int (*vecStricmpFunc)(const RwChar *string1,
- const RwChar *string2);
-typedef size_t (*vecStrlenFunc)(const RwChar *string);
-typedef RwChar *(*vecStruprFunc)(RwChar *string);
-typedef RwChar *(*vecStrlwrFunc)(RwChar *string);
-typedef RwChar *(*vecStrtokFunc)(RwChar *string, const RwChar *delimit);
-typedef int (*vecSscanfFunc)(const RwChar *buffer,
- const RwChar *format,
- ...) /* __RWFORMAT__(scanf, 2, 3) */;
-
-typedef struct RwStringFunctions RwStringFunctions;
-struct RwStringFunctions
-{
- vecSprintfFunc vecSprintf ;
- vecVsprintfFunc vecVsprintf;
- vecStrcpyFunc vecStrcpy;
- vecStrncpyFunc vecStrncpy;
- vecStrcatFunc vecStrcat;
- vecStrncatFunc vecStrncat;
- vecStrrchrFunc vecStrrchr;
- vecStrchrFunc vecStrchr;
- vecStrstrFunc vecStrstr;
- vecStrcmpFunc vecStrcmp;
- vecStricmpFunc vecStricmp;
- vecStrlenFunc vecStrlen;
- vecStruprFunc vecStrupr;
- vecStrlwrFunc vecStrlwr;
- vecStrtokFunc vecStrtok;
- vecSscanfFunc vecSscanf;
-};
-
-
-/*--- Automatically derived from: C:/daily/rwsdk/src/plcore/rwdbgerr.h ---*/
-#define RWECODE(a,b) a,
-
-/* Construct an enum type with all the plugin error codes (for the app to use) */
-enum RwErrorCodePlugin_errcore
-{
-#include "errcore.def"
- rwLASTERROR_errcore = RWFORCEENUMSIZEINT
-};
-typedef enum RwErrorCodePlugin_errcore RwErrorCodePlugin_errcore;
-
-
-#undef RWECODE
-
-
-/*--- Automatically derived from: C:/daily/rwsdk/src/plcore/resmem.h ---*/
-
-/*--- Automatically derived from: C:/daily/rwsdk/src/plcore/bamemory.h ---*/
-#if (defined(RWMEMDEBUG))
-#ifdef _XBOX
-/* Need OutputDebugString macros */
-#include <xtl.h>
-#endif
-#endif
-
-/****************************************************************************
- Defines
- */
-
-/*
- * Debug fill bytes for compatibility with MSVC/C++ debug heap
- * See
- * \Program Files\Microsoft Visual Studio\VC98\CRT\SRC\DBGHEAP.C:
- * static unsigned char _bNoMansLandFill = 0xFD;
- * // fill no-man's land with this
- * static unsigned char _bDeadLandFill = 0xDD;
- * // fill free objects with this
- * static unsigned char _bCleanLandFill = 0xCD;
- * // fill new objects with this
- */
-
-#if (!defined(rwFREELISTNOMANSLANDFILL))
-#define rwFREELISTNOMANSLANDFILL 0xFD
-#endif /* (!defined(rwFREELISTNOMANSLANDFILL)) */
-
-#if (!defined(rwFREELISTDEADLANDFILL))
-#define rwFREELISTDEADLANDFILL 0xDD
-#endif /* (!defined(rwFREELISTDEADLANDFILL)) */
-
-#if (!defined(rwFREELISTCLEANLANDFILL))
-#define rwFREELISTCLEANLANDFILL 0xCD
-#endif /* (!defined(rwFREELISTCLEANLANDFILL)) */
-
-#define RWFREELISTALIGNED(_pData, _freelist) \
- (! (((RwUInt32)(_pData)) & ((_freelist)->alignmentMinusOne)) )
-
-/*****************************
- * REGULAR MEMORY ALLOCATION *
- *****************************/
-
-/**
- * \ingroup rwmem
- * \def RwMalloc
- * RwMalloc(_s) is a macro for malloc(_s).
- */
-
-/**
- * \ingroup rwmem
- * \def RwFree
- * RwFree(_p) is a macro for free(_p).
- */
-
-/**
- * \ingroup rwmem
- * \def RwCalloc
- * RwCalloc(_n, _s) is a macro for calloc(_n, _s).
- */
-
-/**
- * \ingroup rwmem
- * \def RwRealloc
- * RwRealloc(_p, _s) is a macro for realloc(_p, _s).
- */
-
-#if ( (defined(RWMEMDEBUG)) && defined(RWDEBUG) )
-
-#if (!defined(RWNOFREELISTS))
-#define RWNOFREELISTS
-#endif /* (!defined(RWNOFREELISTS)) */
-
-#if (defined(rwPLUGIN_ID))
-#define _CLIENT_TAG \
- ( 0xFFFF & (rwPLUGIN_ID) )
-#endif /* (defined(rwPLUGIN_ID)) */
-
-#if (!defined(_CLIENT_TAG))
-#define _CLIENT_TAG \
- ( 0xFFFF & (MAKECHUNKID(rwVENDORID_CRITERIONTK, 0x00) ) )
-#endif /* (!defined(_CLIENT_TAG)) */
-
-# if (defined(_MSC_VER))
-# if ((_MSC_VER>=1000) && defined(_DEBUG))
-
-/* Pick up _ASSERTE() macro */
-/* #include <windows.h> */
-#if (defined(RWMEMDEBUG) && !defined(_CRTDBG_MAP_ALLOC))
-#define _CRTDBG_MAP_ALLOC
-#endif /* defined(RWMEMDEBUG) && !defined(_CRTDBG_MAP_ALLOC)) */
-#include <crtdbg.h>
-
-#define RwMalloc(_s) \
- _malloc_dbg((_s), \
- _CLIENT_BLOCK | ((_CLIENT_TAG)<<16), \
- __FILE__, \
- __LINE__)
-
-#define RwFree(_p) \
- _free_dbg((_p), \
- _CLIENT_BLOCK | ((_CLIENT_TAG)<<16))
-
-#define RwCalloc(_n, _s) \
- _calloc_dbg((_n), (_s), \
- _CLIENT_BLOCK | ((_CLIENT_TAG)<<16), \
- __FILE__, \
- __LINE__)
-
-#define RwRealloc(_p, _s) \
- _realloc_dbg((_p), \
- (_s), \
- _CLIENT_BLOCK | ((_CLIENT_TAG)<<16), \
- __FILE__, \
- __LINE__)
-
-#define RWCRTORDBGFLAG(_flag) \
- do \
- { \
- int _DbgFlag; \
- \
- _DbgFlag = _CrtSetDbgFlag(_CRTDBG_REPORT_FLAG); \
- _DbgFlag |= (_flag); \
- _CrtSetDbgFlag(_DbgFlag); \
- } while(0)
-
-#define VALID_HEAP_STR \
- __FILE__##"("##RW_STRINGIFY_EXPANDED(__LINE__)##"): valid heap\n"
-
-#define RWCRTCHECKMEMORY() \
- do \
- { \
- int valid_heap; \
- \
- valid_heap = _CrtCheckMemory(); \
- _ASSERTE(valid_heap); \
- } while(0)
-
-/*
- * if (valid_heap) \
- * OutputDebugString(VALID_HEAP_STR); \
- */
-
-#define NO_LEAKS_FOUND_STR \
- __FILE__##"("##RW_STRINGIFY_EXPANDED(__LINE__)##"): no heap leaks found\n"
-
-#define RWCRTDUMPMEMORYLEAKS() \
- do \
- { \
- int leaks_found; \
- \
- leaks_found = _CrtDumpMemoryLeaks(); \
- _ASSERTE(!leaks_found); \
- if (!leaks_found) \
- OutputDebugString(NO_LEAKS_FOUND_STR); \
- } while(0)
-
-#define HEAP_DIFFERENCES_FOUND_STR \
- __FILE__##"("##RW_STRINGIFY_EXPANDED(__LINE__)##"): heap differences found\n"
-
-#define NO_DIFFERENCES_FOUND_STR \
- __FILE__##"("##RW_STRINGIFY_EXPANDED(__LINE__)##"): no heap differences found\n"
-
-#define RWCRTHEAPDIFFERENCESINCE(_Then) \
- do \
- { \
- /* only dump differences when \
- * there are in fact differences */ \
- _CrtMemState _Now; \
- _CrtMemState _Delta; \
- const int _DbgFlag = _CrtSetDbgFlag(_CRTDBG_REPORT_FLAG); \
- int Differences; \
- \
- _CrtMemCheckpoint(&_Now); \
- _CrtMemDifference(&_Delta, _Then, &_Now); \
- \
- (Differences) = ( ( 0 != _Delta.lCounts[_CLIENT_BLOCK] ) || \
- ( 0 != _Delta.lCounts[_NORMAL_BLOCK] ) || \
- ( (_DbgFlag & _CRTDBG_CHECK_CRT_DF) && \
- ( 0 != _Delta.lCounts[_CRT_BLOCK]) ) ); \
- \
- if ( (Differences) ) \
- { \
- /* difference detected: dump objects since _Then. */ \
- OutputDebugString(HEAP_DIFFERENCES_FOUND_STR); \
- _CrtMemDumpAllObjectsSince(_Then); \
- _CrtMemDumpStatistics(&_Delta); \
- } \
- else \
- { \
- OutputDebugString(NO_DIFFERENCES_FOUND_STR); \
- } \
- } while (0)
-
-#define RWCRTDBGBREAK() \
- _CrtDbgBreak()
-
-#define RWCRTDOFORALLCLIENTOBJECTS(_f, _c) \
- _CrtDoForAllClientObjects(_f, _c)
-
-#define RWCRTISMEMORYBLOCK(_p, _t, _r, _f, _l) \
- _CrtIsMemoryBlock(_p, _t, _r, _f, _l)
-
-#define RWCRTISVALIDHEAPPOINTER(_p) \
- _CrtIsValidHeapPointer(_p)
-
-#define RWCRTISVALIDPOINTER(_p, _n, _r) \
- _CrtIsValidPointer(_p, _n, _r)
-
-#define RWCRTMEMCHECKPOINT(_s) \
- _CrtMemCheckpoint(_s)
-
-#define RWCRTMEMDIFFERENCE(_s1, _s2, _s3) \
- _CrtMemDifference(_s1, _s2, _s3)
-
-#define RWCRTMEMDUMPALLOBJECTSSINCE(_s) \
- _CrtMemDumpAllObjectsSince(_s)
-
-#define RWCRTMEMDUMPSTATISTICS(_s) \
- _CrtMemDumpStatistics(_s)
-
-#define RWCRTSETALLOCHOOK(_f) \
- _CrtSetAllocHook(_f)
-
-#define RWCRTSETBREAKALLOC(_a) \
- _CrtSetBreakAlloc(_a)
-
-#define RWCRTSETDBGFLAG(_f) \
- _CrtSetDbgFlag(_f)
-
-#define RWCRTSETDUMPCLIENT(_f) \
- _CrtSetDumpClient(_f)
-
-#define RWCRTSETREPORTFILE(_t, _f) \
- _CrtSetReportFile(_t, _f)
-
-#define RWCRTSETREPORTHOOK(_f) \
- _CrtSetReportHook(_f)
-
-#define RWCRTSETREPORTMODE(_t, _f) \
- _CrtSetReportMode(_t, _f)
-
-#if (!defined(_CRTDBG_FLAGS))
-#define _CRTDBG_FLAGS \
- ( (_CRTDBG_ALLOC_MEM_DF | _CRTDBG_DELAY_FREE_MEM_DF | \
- _CRTDBG_CHECK_CRT_DF | _CRTDBG_LEAK_CHECK_DF) & \
- ~(_CRTDBG_CHECK_ALWAYS_DF |_CRTDBG_RESERVED_DF) )
-#endif /* (!defined(_CRTDBG_FLAGS)) */
-
-# endif /* ((_MSC_VER>=1000) && defined(_DEBUG)) */
-# endif /* (defined(_MSC_VER)) */
-
-
-
-#if (!defined(rwDEADPTRFILL))
-#define rwDEADPTRFILL ((void *)0xDDDDDDDD)
-#endif /* (!defined(rwDEADPTRFILL)) */
-
-#endif /* (defined(RWDEBUG) && (defined(RWMEMDEBUG))) */
-
-#if (!defined(rwDEADPTRFILL))
-#define rwDEADPTRFILL (NULL)
-#endif /* (!defined(rwDEADPTRFILL)) */
-
-#if (!defined(RwMalloc))
-#define RwMalloc(_s) ((RWSRCGLOBAL(memoryFuncs).rwmalloc)((_s)))
-#endif /* (!defined(RwMalloc)) */
-
-#if (!defined(RwFree))
-#define RwFree(_p) ((RWSRCGLOBAL(memoryFuncs).rwfree)((_p)))
-#endif /* (!defined(RwFree)) */
-
-#if (!defined(RwCalloc))
-#define RwCalloc(_n, _s) ((RWSRCGLOBAL(memoryFuncs).rwcalloc)((_n), (_s)))
-#endif /* (!defined(RwCalloc)) */
-
-#if (!defined(RwRealloc))
-#define RwRealloc(_p, _s) ((RWSRCGLOBAL(memoryFuncs).rwrealloc)((_p),(_s)))
-#endif /* (!defined(RwRealloc)) */
-
-#if (!defined(RWCRTORDBGFLAG))
-#define RWCRTORDBGFLAG(_flag) /* No op */
-#endif /* (!defined(RWCRTORDBGFLAG)) */
-
-#if (!defined(RWCRTCHECKMEMORY))
-#define RWCRTCHECKMEMORY() /* No Op */
-#endif /* (!defined(RWCRTCHECKMEMORY)) */
-
-#if (!defined(RWCRTDBGBREAK))
-#define RWCRTDBGBREAK() /* No Op */
-#endif /* (!defined(RWCRTDBGBREAK)) */
-
-#if (!defined(RWCRTDOFORALLCLIENTOBJECTS))
-#define RWCRTDOFORALLCLIENTOBJECTS(_f, _c) /* No Op */
-#endif /* (!defined(RWCRTDOFORALLCLIENTOBJECTS)) */
-
-#if (!defined(RWCRTDUMPMEMORYLEAKS))
-#define RWCRTDUMPMEMORYLEAKS() /* No Op */
-#endif /* (!defined(RWCRTDUMPMEMORYLEAKS)) */
-
-#if (!defined(RWCRTHEAPDIFFERENCESINCE))
-#define RWCRTHEAPDIFFERENCESINCE(_Then) /* No Op */
-#endif /* (!defined(RWCRTHEAPDIFFERENCESINCE)) */
-
-#if (!defined(RWCRTISMEMORYBLOCK))
-#define RWCRTISMEMORYBLOCK(_p, _t, _r, _f, _l) (NULL != (_p))
-#endif /* (!defined(RWCRTISMEMORYBLOCK)) */
-
-#if (!defined(RWCRTISVALIDHEAPPOINTER))
-#define RWCRTISVALIDHEAPPOINTER(_p) (NULL != (_p))
-#endif /* (!defined(RWCRTISVALIDHEAPPOINTER)) */
-
-#if (!defined(RWCRTISVALIDPOINTER))
-#define RWCRTISVALIDPOINTER(_p, _n, _r) (NULL != (_p))
-#endif /* (!defined(RWCRTISVALIDPOINTER)) */
-
-#if (!defined(RWCRTMEMCHECKPOINT))
-#define RWCRTMEMCHECKPOINT(_s) /* No Op */
-#endif /* (!defined(RWCRTMEMCHECKPOINT)) */
-
-#if (!defined(RWCRTMEMDIFFERENCE))
-#define RWCRTMEMDIFFERENCE(_s1, _s2, _s3) /* No Op */
-#endif /* (!defined(RWCRTMEMDIFFERENCE)) */
-
-#if (!defined(RWCRTMEMDUMPALLOBJECTSSINCE))
-#define RWCRTMEMDUMPALLOBJECTSSINCE(_s) /* No Op */
-#endif /* (!defined(RWCRTMEMDUMPALLOBJECTSSINCE)) */
-
-#if (!defined(RWCRTMEMDUMPSTATISTICS))
-#define RWCRTMEMDUMPSTATISTICS(_s) (NULL)
-#endif /* (!defined(RWCRTMEMDUMPSTATISTICS)) */
-
-#if (!defined(RWCRTSETALLOCHOOK))
-#define RWCRTSETALLOCHOOK(_f) (NULL)
-#endif /* (!defined(RWCRTSETALLOCHOOK)) */
-
-#if (!defined(RWCRTSETBREAKALLOC))
-#define RWCRTSETBREAKALLOC(_a) (0)
-#endif /* (!defined(RWCRTSETBREAKALLOC)) */
-
-#if (!defined(RWCRTSETDBGFLAG))
-#define RWCRTSETDBGFLAG(_f) (0)
-#endif /* (!defined(RWCRTSETDBGFLAG)) */
-
-#if (!defined(RWCRTSETDUMPCLIENT))
-#define RWCRTSETDUMPCLIENT(_f) (NULL)
-#endif /* (!defined(RWCRTSETDUMPCLIENT)) */
-
-#if (!defined(RWCRTSETREPORTFILE))
-#define RWCRTSETREPORTFILE(_t, _f) (NULL)
-#endif /* (!defined(RWCRTSETREPORTFILE)) */
-
-#if (!defined(RWCRTSETREPORTHOOK))
-#define RWCRTSETREPORTHOOK(_f) (NULL)
-#endif /* (!defined(RWCRTSETREPORTHOOK)) */
-
-#if (!defined(RWCRTSETREPORTMODE))
-#define RWCRTSETREPORTMODE(_t, _f) (0)
-#endif /* (!defined(RWCRTSETREPORTMODE)) */
-
-#if (!defined(RWREGSETBREAKALLOC))
-#define RWREGSETBREAKALLOC(_name) /* No op */
-#endif /* (!defined(RWREGSETBREAKALLOC)) */
-
-#if (!defined(RWREGSETASSERTPRINT))
-#define RWREGSETASSERTPRINT(_name) /* No op */
-#endif /* (!defined(RWREGSETASSERTPRINT)) */
-
-#if (!defined(RWGETWINREGDWORD))
-#define RWGETWINREGDWORD(_env_var, _match) /* No op */
-#endif /* (!defined(RWGETWINREGDWORD)) */
-
-#if (!defined(RWGETWINREGBINARY))
-#define RWGETWINREGBINARY(_env_var, _match) /* No op */
-#endif /* (!defined(RWGETWINREGBINARY)) */
-
-#if (!defined(RWGETWINREGSTRING))
-#define RWGETWINREGSTRING(_env_var, _match) /* No op */
-#endif /* (!defined(RWGETWINREGSTRING)) */
-
-#if (!defined(_CRTDBG_FLAGS))
-#define _CRTDBG_FLAGS 0x33
-#endif /* (!defined(_CRTDBG_FLAGS)) */
-
-/****************************************************************************
- Global Types
- */
-
-typedef struct RwMemoryFunctions RwMemoryFunctions;
-/**
- * \ingroup datatypes
- * \struct RwMemoryFunctions
- * This type represents the memory functions used
- * by RenderWare. By default, the standard ANSI functions are used. The
- * application may install an alternative interface providing that it is ANSI
- * compliant (see API function \ref RwEngineInit):
- */
-struct RwMemoryFunctions
-{
- /* c.f.
- * Program Files/Microsoft Visual Studio/VC98/Include/MALLOC.H
- */
- void *(*rwmalloc)(size_t size); /**< rwmalloc malloc */
- void (*rwfree)(void *mem); /**< rwfree free */
- void *(*rwrealloc)(void *mem, size_t newSize); /**< rwrealloc realloc */
- void *(*rwcalloc)(size_t numObj, size_t sizeObj); /**< calloc calloc */
-};
-
-typedef struct RwFreeBlock RwFreeBlock;
-/*
- * Freelists -- from Page 131
- * Advanced Animation and Rendering Techniques
- * Alan Watt and Mark Watt
- * Addison-Wesley 1993,
- * ISBN 0-201-54412-1:
- *
- * "Lastly, on a more general note concerning speedups for renderers, the
- * implementor should be aware that a lot of suggestions for improving
- * efficiency fall into the category of ingenious, but complex,
- * algorithms for very specific contexts that may save a few microseconds
- * but which make your code unreadable. A more general computer science
- * perspective that takes a `global view' of the renderer can be more
- * fruitful. For example, the renderer devotes a lot of time to
- * allocating and deallocating chunks of memory for storing data. A lot
- * of these chunks are always the same size - such as those that are
- * continually required to store the data structure for fragment lists.
- * Using memory management techniques that recognize this fact can yield
- * considerable dividends. One such scheme would be to hold a series of
- * empty lists in memory for all the commonly used data structures. An
- * empty list for fragments, say, would contain a list of previously
- * allocated, but no longer needed, fragment structures. When the
- * renderer needs memory for a new fragment, it looks first at this empty
- * list. If there is nothing there it allocates space directly,
- * otherwise it takes a fragments off the end of the list and uses that.
- * Conversely, when the renderer no longer needs a fragment, instead of
- * freeing it, it goes onto the end of the empty list. In the authors'
- * experience, replacing the naive allocate/deallocate scheme with this
- * way of managing memory can result in 100% speedup. "
- */
-struct RwFreeBlock
-{
- RwFreeBlock *nextBlock;
-};
-
-typedef struct RwFreeList RwFreeList;
-struct RwFreeList
-{
- void **freeListStack; /* Stack of unused entries */
- void **freeListStackTop; /* Pointer to the top of the stack */
-
- RwFreeBlock *firstBlock; /* Data start */
-
- RwInt32 blockSize; /* Size of block in bytes */
- RwInt32 entrySize; /* Entry size */
- RwInt32 alignmentMinusOne; /* Entry alignment minus 1 */
- RwInt32 entriesPerBlock; /* Amount of space in a block */
-
- RwInt32 entriesAllocated; /* Total slots allocated
- * (but not necessarily being used */
-
- /* All freelists */
- RwLLLink lFreeList;
-
-#if (defined(RWDEBUG) && !defined(DOXYGEN))
- const RwChar *fileCreate;
- RwUInt32 lineCreate;
-#endif /* (defined(RWDEBUG) && !defined(DOXYGEN)) */
-};
-
-/**
- * \ingroup datatypes
- * \ref RwFreeListCallBack represents
- * the function called from \ref RwFreeListForAllUsed for all used entries in a
- * given free list.
- *
- * \param pMem Pointer to the start of the current entries.
- *
- * \param pData User-defined data pointer.
- *
- * \see RwFreeListForAllUsed
- *
- */
-typedef void (*RwFreeListCallBack) (void *pMem, void *pData);
-typedef void *(*RwMemoryAllocFn) (RwFreeList * fl);
-typedef RwFreeList *(*RwMemoryFreeFn) (RwFreeList * fl, void *pData);
-
-/****************************************************************************
- Function prototypes
- */
-
-#ifdef __cplusplus
-extern "C"
-{
-#endif /* __cplusplus */
-
-extern RwMemoryFunctions *RwOsGetMemoryInterface(void);
-
-/*************
- * FREELISTS *
- *************/
-
-/* Allocation and freeing */
-#if (defined(RWDEBUG) && !defined(DOXYGEN))
-
-extern RwFreeList *_rwFreeListCreate(RwInt32 entrySize,
- RwInt32 entriesPerBlock,
- RwInt32 alignment,
- const RwChar *fileCreate,
- RwUInt32 lineCreate );
-
-#define RwFreeListCreate(entrySize, entriesPerBlock, alignment) \
- _rwFreeListCreate(entrySize, \
- entriesPerBlock, \
- alignment, \
- __FILE__, \
- __LINE__)
-#else /* (defined(RWDEBUG) && !defined(DOXYGEN)) */
-
-extern RwFreeList *RwFreeListCreate(RwInt32 entrySize,
- RwInt32 entriesPerBlock,
- RwInt32 alignment);
-#endif /* (defined(RWDEBUG) && !defined(DOXYGEN)) */
-
-extern RwBool RwFreeListDestroy(RwFreeList * freelist);
-/* Garbage collection/enumeration */
-extern RwInt32 RwFreeListPurge(RwFreeList * freelist);
-extern RwFreeList *RwFreeListForAllUsed(RwFreeList * freelist,
- RwFreeListCallBack
- fpCallBack, void *pData);
-extern RwInt32 RwFreeListPurgeAllFreeLists(void);
-
-#ifdef __cplusplus
-}
-#endif /* __cplusplus */
-
-#if (defined(RWDEBUG) && defined(RWNOFREELISTS) && !defined(RWKEEPFREELISTS))
-
-#if ((defined(__MWERKS__) || defined(__GNUC__)) && defined(__R5900__))
-
-/*
- * for more on memalign, see
- * http://www.gnu.org/manual/glibc-2.0.6/html_chapter/libc_3.html#SEC28
- */
-#include <rtdbmalloc.h>
-
-#define RwFreeListAlloc(_f) \
- memalign((1 + (_f)->alignmentMinusOne), (_f)->entrySize)
-
-#else /* ((defined(__MWERKS__) || defined(__GNUC__)) && defined(__R5900__)) */
-
-#define RwFreeListAlloc(_f) \
- RwMalloc((_f)->entrySize)
-
-#endif /* ((defined(__MWERKS__) || defined(__GNUC__)) && defined(__R5900__)) */
-
-#define RwFreeListFree(_f, _p) \
- RwFree((_p))
-
-#endif /* (defined(RWDEBUG) && defined(RWNOFREELISTS) && !defined(RWKEEPFREELISTS)) */
-
-#if (!defined(RwFreeListAlloc))
-#define RwFreeListAlloc(_f) \
- RWSRCGLOBAL(memoryAlloc)(_f)
-#endif /* (!defined(RwFreeListAlloc)) */
-
-#if (!defined(RwFreeListFree))
-#define RwFreeListFree(_f, _p) \
- RWSRCGLOBAL(memoryFree)(_f, _p)
-#endif /* (!defined(RwFreeListFree)) */
-
-
-/*--- Automatically derived from: C:/daily/rwsdk/src/plcore/bastream.h ---*/
-
-/****************************************************************************
- Defines
- */
-
-#define rwSTREAMSTACKSIZE 512
-
-/****************************************************************************
- Global Types
- */
-
-/**
- * \ingroup datatypes
- * \ref RwStreamType
- * This type represents the different types of stream that
- * can be used.
- * See API section \ref rwstream
- */
-enum RwStreamType
-{
- rwNASTREAM = 0, /**<Invalid stream type */
- rwSTREAMFILE, /**<File */
- rwSTREAMFILENAME, /**<File name */
- rwSTREAMMEMORY, /**<Memory*/
- rwSTREAMCUSTOM, /**<Custom */
- rwSTREAMTYPEFORCEENUMSIZEINT = RWFORCEENUMSIZEINT
-};
-typedef enum RwStreamType RwStreamType;
-
-/**
- * \ingroup datatypes
- * \ref RwStreamAccessType
- * This type represents the options available for
- * accessing a stream when it is opened.
- * See API section \ref rwstream */
-enum RwStreamAccessType
-{
- rwNASTREAMACCESS = 0, /**<Invalid stream access */
- rwSTREAMREAD, /**<Read */
- rwSTREAMWRITE, /**<Write */
- rwSTREAMAPPEND, /**<Append */
- rwSTREAMACCESSTYPEFORCEENUMSIZEINT = RWFORCEENUMSIZEINT
-};
-typedef enum RwStreamAccessType RwStreamAccessType;
-
-/* Memory stream */
-/**
- * \ingroup datatypes
- * \typedef RwStreamMemory
- * This should be considered an opaque type.
- * Use the RwStream API functions to access.
- */
-typedef struct RwStreamMemory RwStreamMemory;
-#if (!defined(DOXYGEN))
-struct RwStreamMemory
-{
- RwUInt32 position; /* Current 'memory' position 0 is first byte */
- RwUInt32 nSize; /* Space allocated currently */
- RwUInt8 *memBlock; /* Current memory block pointer */
-};
-#endif /* (!defined(DOXYGEN)) */
-
-
-typedef union RwStreamFile RwStreamFile;
-/**
- * \ingroup datatypes
- * \union RwStreamFile
- * This type is used to represent a file pointer for
- * accessing data on disk through the stream mechanism.
- * See API section \ref rwstream. */
-union RwStreamFile
-{
- void *fpFile; /**< file pointer */
- const void *constfpFile; /**< const file pointer */
-};
-
-
-/* Custom stream function pointer types */
-typedef RwBool(*rwCustomStreamFnClose) (void *data);
-typedef RwUInt32(*rwCustomStreamFnRead) (void *data, void *buffer,
- RwUInt32 length);
-typedef RwBool(*rwCustomStreamFnWrite) (void *data,
- const void *buffer,
-
- RwUInt32 length);
-typedef RwBool(*rwCustomStreamFnSkip) (void *data,
-
- RwUInt32 offset);
-
-/* Custom stream */
-/**
- * \ingroup datatypes
- * \typedef RwStreamCustom
- * This should be considered an opaque type.
- * Use the RwStream API functions to access.
- */
-typedef struct RwStreamCustom RwStreamCustom;
-#if (!defined(DOXYGEN))
-struct RwStreamCustom
-{
- rwCustomStreamFnClose sfnclose;
- rwCustomStreamFnRead sfnread;
- rwCustomStreamFnWrite sfnwrite;
- rwCustomStreamFnSkip sfnskip;
- void *data;
-};
-#endif /* (!defined(DOXYGEN)) */
-
-/* Stream */
-
-typedef union RwStreamUnion RwStreamUnion;
-/**
- * \ingroup datatypes
- * \union RwStreamUnion
- * The union of all supported stream types
- */
-union RwStreamUnion
-{
- RwStreamMemory memory; /**< memory */
- RwStreamFile file; /**< file */
- RwStreamCustom custom; /**< custom */
-};
-
-/**
- * \ingroup datatypes
- * \typedef RwStream
- * Binary stream for reading or writing object data.
- * This should be considered an opaque type.
- * Use the RwStream API functions to access.
- */
-typedef struct RwStream RwStream;
-#if (!defined(DOXYGEN))
-struct RwStream
-{
- RwStreamType type;
- RwStreamAccessType accessType;
- RwInt32 position;
- RwStreamUnion Type;
- RwBool rwOwned;
-};
-#endif /* (!defined(DOXYGEN)) */
-
-
-typedef struct RwMemory RwMemory;
-/**
- * \ingroup datatypes
- * \struct RwMemory
- * This type represents a block of allocated memory.
- * It is used to specify an area of memory connected to a stream of type
- * rwSTREAMMEMORY.
- * See \ref rwstream */
-struct RwMemory
-{
- RwUInt8 *start; /**< starting address */
- RwUInt32 length; /**< length in bytes*/
-};
-
-
-/****************************************************************************
- Function prototypes
- */
-
-#ifdef __cplusplus
-extern "C"
-{
-#endif /* __cplusplus */
-
-/* Open/Close streams */
-
-extern RwStream *
-_rwStreamInitialize(RwStream *stream,
- RwBool rwOwned,
- RwStreamType type,
- RwStreamAccessType accessType,
- const void *pData);
-
-extern RwStream *
-RwStreamOpen(RwStreamType type,
- RwStreamAccessType accessType,
- const void *pData);
-
-extern RwBool
-RwStreamClose(RwStream * stream,
- void *pData);
-
-
-/* Stream read/write */
-extern RwUInt32
-RwStreamRead(RwStream * stream,
- void *buffer,
- RwUInt32 length);
-
-extern RwStream *
-RwStreamWrite(RwStream * stream,
- const void *buffer,
- RwUInt32 length);
-
-
-/* Stream skipping */
-extern RwStream *
-RwStreamSkip(RwStream * stream,
- RwUInt32 offset);
-
-
-#ifdef __cplusplus
-}
-#endif /* __cplusplus */
-
-
-/*--- Automatically derived from: C:/daily/rwsdk/src/plcore/batkreg.h ---*/
-
-/****************************************************************************
- Global Types
- */
-
-/**
- * \ingroup datatypes
- * \ref RwPluginDataChunkWriteCallBack represents the function
- * registered by \ref RwCameraRegisterPluginStream, etc. as the function that
- * writes extension data to a binary stream.
- *
- * \param stream Pointer to the binary stream
- *
- * \param binaryLength A RwInt32 value equal to the binary
- * size (in bytes) of the extension data that will be written to the binary
- * stream.
- *
- * \param object Pointer to the object containing the extension
- * data.
- *
- * \param offsetInObject A RwInt32 value equal to the byte
- * offset of the extension data in the object.
- *
- * \param sizeInObject A RwInt32 value equal to the size
- * (in bytes) of the extension data.
- *
- * \return Pointer to the stream
- */
-typedef RwStream *(*RwPluginDataChunkWriteCallBack)(RwStream *stream, RwInt32 binaryLength, const void *object, RwInt32 offsetInObject, RwInt32 sizeInObject);
-
-/**
- * \ingroup datatypes
- * \ref RwPluginDataChunkReadCallBack represents the function
- * registered by \ref RwCameraRegisterPluginStream, etc. as the function that
- * reads extension data from a binary stream.
- *
- * \param stream Pointer to the binary stream
- *
- * \param binaryLength A RwInt32 value equal to the binary
- * size (in bytes) of the extension data that will be read from a binary
- * stream.
- *
- * \param object Pointer to the object containing the extension
- * data.
- *
- * \param offsetInObject A RwInt32 value equal to the byte
- * offset of the extension data in the object.
- *
- * \param sizeInObject A RwInt32 value equal to the size
- * (in bytes) of the extension data.
- *
- * \return Pointer to the stream
- */
-typedef RwStream *(*RwPluginDataChunkReadCallBack)(RwStream *stream, RwInt32 binaryLength, void *object, RwInt32 offsetInObject, RwInt32 sizeInObject);
-
-/**
- * \ingroup datatypes
- * \ref RwPluginDataChunkGetSizeCallBack represents the callback
- * registered by \ref RwCameraRegisterPluginStream, etc. as the function that
- * determines the binary size of the extension data.
- *
- * \param object Pointer to the object containing the extension data.
- *
- * \param offsetInObject A RwInt32 value equal to the byte
- * offset of the extension data in the object.
- *
- * \param sizeInObject A RwInt32 value equal to the size
- * (in bytes) of the extension data.
- *
- * \return A RwInt32 value equal to the size in bytes of the plugin extension data.
- */
-typedef RwInt32(*RwPluginDataChunkGetSizeCallBack)(const void *object, RwInt32 offsetInObject, RwInt32 sizeInObject);
-
-/**
- * \ingroup datatypes
- * \ref RwPluginDataChunkAlwaysCallBack represents the callback
- * registered by \ref RwCameraSetStreamAlwaysCallBack, etc. as the
- * function that is called after the reading of plugin stream data is
- * finished (useful to set up plugin data for plugins that found no
- * data in the stream, but that cannot set up the data during the
- * \ref RwPluginObjectConstructor callback).
- *
- * \param object Pointer to the object containing the extension data.
- *
- * \param offsetInObject A RwInt32 value equal to the byte
- * offset of the extension data in the object.
- *
- * \param sizeInObject A RwInt32 value equal to the size
- * (in bytes) of the extension data.
- */
-typedef RwBool(*RwPluginDataChunkAlwaysCallBack)(void *object, RwInt32 offsetInObject, RwInt32 sizeInObject);
-
-/**
- * \ingroup datatypes
- * \ref RwPluginDataChunkRightsCallBack represents the callback
- * registered by RwCameraSetStreamRightsCallBack, etc. as the
- * function that is called after the reading of plugin stream data is
- * finished, and the object finalised, if and only if the object's rights
- * id was equal to that of the plugin registering the call.
- * For convience the extension data is passed to the callback.
- *
- * \param object Pointer to the object containing the extension data.
- *
- * \param offsetInObject A RwInt32 value equal to the byte
- * offset of the extension data in the object.
- *
- * \param sizeInObject A RwInt32 value equal to the size
- * (in bytes) of the extension data.
- *
- * \param extraData An RwUInt32 writen with the plugin id.
- */
-typedef RwBool(*RwPluginDataChunkRightsCallBack)(void *object, RwInt32 offsetInObject, RwInt32 sizeInObject, RwUInt32 extraData);
-
-/**
- * \ingroup datatypes
- * \ref RwPluginObjectConstructor represents the callback
- * registered by \ref RwEngineRegisterPlugin, \ref RwCameraRegisterPlugin, etc.
- * as the function that initializes either the global extension data (in the
- * case of \ref RwEngineRegisterPlugin) or the object extension data (in all
- * other cases). Registered by \ref RwCameraSetStreamAlwaysCallBack, etc.
- *
- * \param object Pointer to the object (global or otherwise)
- * that contains the extension data.
- *
- * \param offsetInObject A RwInt32 value equal to the
- * byte offset of the extension data in the object.
- *
- * \param sizeInObject A RwInt32 value equal to the size
- * (in bytes) of the extension data.
- *
- * \return Pointer to the object
- */
-typedef void *(*RwPluginObjectConstructor)(void *object, RwInt32 offsetInObject, RwInt32 sizeInObject);
-
-/**
- * \ingroup datatypes
- * \ref RwPluginObjectCopy represents the callback registered by
- * \ref RwCameraRegisterPlugin, etc. as the function that copies the object
- * extension data when an object is duplicated.
- *
- * \param dstObject Pointer to the destination object that will
- * receive the extension data.
- *
- * \param srcObject Pointer to the source object containing
- * extension data.
- *
- * \param offsetInObject A RwInt32 value equal to the byte offset
- * of the extension data in the object.
- *
- * \param sizeInObject A RwInt32 value equal to the size
- * (in bytes) of the extension data.
- *
- * \return Pointer to the object
- */
-typedef void *(*RwPluginObjectCopy)(void *dstObject, const void *srcObject, RwInt32 offsetInObject, RwInt32 sizeInObject);
-
-/**
- * \ingroup datatypes
- * \ref RwPluginObjectDestructor represents the callback registered
- * by \ref RwEngineRegisterPlugin, \ref RwCameraRegisterPlugin, etc. as the
- * function that destroys either the global extension data (in the case of
- * \ref RwEngineRegisterPlugin) or the object extension data (in all other
- * cases).
- *
- * \param object Pointer to the object (global or otherwise)
- * containing the extension data.
- *
- * \param offsetInObject A RwInt32 value equal to the byte
- * offset of the extension data in the object.
- *
- * \param sizeInObject A RwInt32 value equal to the size
- * (in bytes) of the extension data.
- *
- * \return Pointer to the object.
- */
-typedef void *(*RwPluginObjectDestructor)(void *object, RwInt32 offsetInObject, RwInt32 sizeInObject);
-
-typedef void *(*RwPluginErrorStrCallBack)(void *);
-
-typedef struct RwPluginRegistry RwPluginRegistry;
-typedef struct RwPluginRegEntry RwPluginRegEntry;
-
-struct RwPluginRegistry
-{
- RwInt32 sizeOfStruct;
- RwInt32 origSizeOfStruct;
- RwInt32 maxSizeOfStruct;
- RwInt32 staticAlloc;
- RwPluginRegEntry *firstRegEntry;
- RwPluginRegEntry *lastRegEntry;
-};
-
-struct RwPluginRegEntry
-{
- RwInt32 offset;
- RwInt32 size;
- RwUInt32 pluginID;
- RwPluginDataChunkReadCallBack readCB;
- RwPluginDataChunkWriteCallBack writeCB;
- RwPluginDataChunkGetSizeCallBack getSizeCB;
- RwPluginDataChunkAlwaysCallBack alwaysCB;
- RwPluginDataChunkRightsCallBack rightsCB;
- RwPluginObjectConstructor constructCB;
- RwPluginObjectDestructor destructCB;
- RwPluginObjectCopy copyCB;
- RwPluginErrorStrCallBack errStrCB;
- RwPluginRegEntry *nextRegEntry;
- RwPluginRegEntry *prevRegEntry;
- RwPluginRegistry *parentRegistry;
-};
-
-
-
-/****************************************************************************
- Function prototypes
- */
-
-#ifdef __cplusplus
-extern "C"
-{
-#endif /* __cplusplus */
-
-
-/* Registering toolkits and allocating memory */
-extern RwBool
-_rwPluginRegistrySetStaticPluginsSize(RwPluginRegistry * reg,
- RwInt32 size);
-extern RwInt32
-_rwPluginRegistryAddPlugin(RwPluginRegistry * reg,
- RwInt32 size,
- RwUInt32 pluginID,
- RwPluginObjectConstructor constructCB,
- RwPluginObjectDestructor destructCB,
- RwPluginObjectCopy copyCB);
-extern RwInt32
-_rwPluginRegistryGetPluginOffset(const RwPluginRegistry *reg,
- RwUInt32 pluginID);
-
-/* Initializing/De-initializing instances */
-extern const
-RwPluginRegistry *_rwPluginRegistryInitObject(const RwPluginRegistry * reg,
- void *object);
-extern const
-RwPluginRegistry *_rwPluginRegistryDeInitObject(const RwPluginRegistry * reg,
- void *object);
-extern const
-RwPluginRegistry *_rwPluginRegistryCopyObject(const RwPluginRegistry * reg,
- void *dstObject,
- const void *srcObject);
-
-#ifdef RWDEBUG
-extern RwBool
-_rwPluginRegistryValidateObject(const RwPluginRegistry * reg,
- const void *object);
-#endif /* RWDEBUG */
-
-
-#ifdef __cplusplus
-}
-#endif /* __cplusplus */
-
-/* Compatibility macros */
-
-#define rwPluginRegistryOpen() \
- _rwPluginRegistryOpen()
-#define rwPluginRegistryClose() \
- _rwPluginRegistryClose()
-#define rwPluginRegistrySetStaticPluginsSize(reg, size) \
- _rwPluginRegistrySetStaticPluginsSize(reg, size)
-#define rwPluginRegistryAddPlugin(reg, size, pluginID, constructCB, destructCB, copyCB) \
- _rwPluginRegistryAddPlugin(reg, size, pluginID, constructCB, destructCB, copyCB)
-#define rwPluginRegistryGetPluginOffset(reg, pluginID) \
- _rwPluginRegistryGetPluginOffset(reg, pluginID)
-#define rwPluginRegistryInitObject(reg, object) \
- _rwPluginRegistryInitObject(reg, object)
-#define rwPluginRegistryDeInitObject(reg, object) \
- _rwPluginRegistryDeInitObject(reg, object)
-#define rwPluginRegistryCopyObject(reg, dstObject, srcObject) \
- _rwPluginRegistryCopyObject(reg, dstObject, srcObject)
-#define rwPluginRegistryValidateObject(reg, object) \
- _rwPluginRegistryValidateObject(reg, object)
-
-
-/*--- Automatically derived from: C:/daily/rwsdk/src/plcore/batkbin.h ---*/
-
-/****************************************************************************
- Function prototypes
- */
-
-#ifdef __cplusplus
-extern "C"
-{
-#endif /* __cplusplus */
-
-/* Plugin binary stream stuff */
-extern RwInt32 _rwPluginRegistryAddPluginStream(
- RwPluginRegistry *reg,
- RwUInt32 pluginID,
- RwPluginDataChunkReadCallBack readCB,
- RwPluginDataChunkWriteCallBack writeCB,
- RwPluginDataChunkGetSizeCallBack getSizeCB);
-extern RwInt32 _rwPluginRegistryAddPlgnStrmlwysCB(
- RwPluginRegistry *reg,
- RwUInt32 pluginID,
- RwPluginDataChunkAlwaysCallBack alwaysCB);
-extern RwInt32 _rwPluginRegistryAddPlgnStrmRightsCB(
- RwPluginRegistry *reg,
- RwUInt32 pluginID,
- RwPluginDataChunkRightsCallBack rightsCB);
-extern const RwPluginRegistry *_rwPluginRegistryReadDataChunks(const RwPluginRegistry *reg,
- RwStream *stream,
- void *object);
-extern const RwPluginRegistry *_rwPluginRegistryWriteDataChunks(const RwPluginRegistry *reg,
- RwStream *stream,
- const void *object);
-extern const RwPluginRegistry *_rwPluginRegistrySkipDataChunks(const RwPluginRegistry * reg,
- RwStream * stream);
-extern RwInt32 _rwPluginRegistryGetSize(const RwPluginRegistry *reg, const void *object);
-extern const RwPluginRegistry *_rwPluginRegistryInvokeRights(const RwPluginRegistry *reg,
- RwUInt32 id,
- void *obj,
- RwUInt32 extraData);
-
-#ifdef __cplusplus
-}
-#endif /* __cplusplus */
-
-/* Compatibility macros */
-
-#define rwPluginRegistryAddPluginStream(reg, pluginID, readCB, writeCB, getSizeCB) \
- _rwPluginRegistryAddPluginStream(reg, pluginID, readCB, writeCB, getSizeCB)
-#define rwPluginRegistryAddPluginStreamAlwaysCB(reg, pluginID, alwaysCB) \
- _rwPluginRegistryAddPlgnStrmlwysCB(reg, pluginID, alwaysCB)
-#define rwPluginRegistryReadDataChunks(reg, stream, object) \
- _rwPluginRegistryReadDataChunks(reg, stream, object)
-#define rwPluginRegistryWriteDataChunks(reg, stream, object) \
- _rwPluginRegistryWriteDataChunks(reg, stream, object)
-#define rwPluginRegistrySkipDataChunks(reg, stream) \
- _rwPluginRegistrySkipDataChunks(reg, stream)
-#define rwPluginRegistryGetSize(reg, object) \
- _rwPluginRegistryGetSize(reg, object)
-
-
-
-/*--- Automatically derived from: C:/daily/rwsdk/src/plcore/bamatrix.h ---*/
-
-/****************************************************************************
- Defines
- */
-
-#define RWMATRIXALIGNMENT(_mat) \
- (! (((rwMATRIXALIGNMENT)-1) & ((RwUInt32)(_mat))))
-
-#if (defined(RWMATRIXMONITOR))
-# if (defined(_MSC_VER))
-# if ((_MSC_VER>=1000) && defined(_DEBUG))
-
-typedef char MatrixString[1024];
-
-#define RWMATRIXPRINT(_matrix) \
-MACRO_START \
-{ \
- MatrixString message; \
- MatrixString output; \
- \
- if (NULL != (_matrix)) \
- { \
- const RwV3d * const _x = &(_matrix)->right; \
- const RwV3d * const _y = &(_matrix)->up; \
- const RwV3d * const _z = &(_matrix)->at; \
- const RwV3d * const _w = &(_matrix)->pos; \
- \
- _snprintf(message, sizeof(MatrixString), \
- "[ [ %8.4f, %8.4f, %8.4f, %8.4f ]\n" \
- " [ %8.4f, %8.4f, %8.4f, %8.4f ]\n" \
- " [ %8.4f, %8.4f, %8.4f, %8.4f ]\n" \
- " [ %8.4f, %8.4f, %8.4f, %8.4f ] ]\n" \
- " %08x == flags\n", \
- _x->x, _x->y, _x->z, (RwReal) 0, \
- _y->x, _y->y, _y->z, (RwReal) 0, \
- _z->x, _z->y, _z->z, (RwReal) 0, \
- _w->x, _w->y, _w->z, (RwReal) 1, \
- (_matrix)->flags); \
- } \
- else \
- { \
- _snprintf(message, sizeof(MatrixString), \
- "NULL"); \
- } \
- \
- _snprintf(output, sizeof(MatrixString), \
- "%s(%d): %s [%p] ==\n%s\n", \
- __FILE__, __LINE__, \
- #_matrix, _matrix, message); \
- \
- OutputDebugString(RWSTRING(output)); \
-} \
-MACRO_STOP
-
-# endif /* ((_MSC_VER>=1000) && defined(_DEBUG)) */
-# endif /* (defined(_MSC_VER)) */
-#endif /* (defined(RWMATRIXMONITOR)) */
-
-#if (!(defined(RWMATRIXPRINT)))
-#define RWMATRIXPRINT(_matrix) /* No op */
-#endif /* (!(defined(RWMATRIXPRINT))) */
-
-/**
- * \ingroup datatypes
- * enum RwOpCombineType
- * This type represents a combination operator which
- * can be applied to frames and matrices.
- * The operator determines the order
- * in which one object is combined with another
- */
-enum RwOpCombineType
-{
- rwCOMBINEREPLACE = 0, /**<Replace -
- all previous transformations are lost */
- rwCOMBINEPRECONCAT, /**<Pre-concatenation -
- the given transformation is applied
- before all others */
- rwCOMBINEPOSTCONCAT, /**<Post-concatenation -
- the given transformation is applied
- after all others */
- rwOPCOMBINETYPEFORCEENUMSIZEINT = RWFORCEENUMSIZEINT
-};
-
-/**
- * \ingroup datatypes
- * \typedef RwOpCombineType typedef for enum RwOpCombineType
- */
-typedef enum RwOpCombineType RwOpCombineType;
-
-/* External flags (bits 0-15) */
-
-/* Internal flags (bits 16-31) */
-enum RwMatrixType
-{
- rwMATRIXTYPENORMAL = 0x00000001,
- rwMATRIXTYPEORTHOGANAL = 0x00000002,
- rwMATRIXTYPEORTHONORMAL = 0x00000003,
- rwMATRIXTYPEMASK = 0x00000003,
- rwMATRIXTYPEFORCEENUMSIZEINT = RWFORCEENUMSIZEINT
-};
-typedef enum RwMatrixType RwMatrixType;
-
-enum RwMatrixFlag
-{
- rwMATRIXINTERNALIDENTITY = 0x00020000,
- rwMATRIXFLAGFORCEENUMSIZEINT = RWFORCEENUMSIZEINT
-};
-typedef enum RwMatrixFlag RwMatrixFlag;
-
-/* Flags describing what will optimize for */
-enum RwMatrixOptimizations
-{
- rwMATRIXOPTIMIZE_IDENTITY = 0x00020000,
- rwMATRIXOPTIMIZATIONSFORCEENUMSIZEINT = RWFORCEENUMSIZEINT
-};
-typedef enum RwMatrixOptimizations RwMatrixOptimizations;
-
-/****************************************************************************
- Global Types
- */
-
-#if (!defined(DOXYGEN))
-struct RwMatrixTag
-{
- /* These are padded to be 16 byte quantities per line */
- RwV3d right;
- RwUInt32 flags;
- RwV3d up;
- RwUInt32 pad1;
- RwV3d at;
- RwUInt32 pad2;
- RwV3d pos;
- RwUInt32 pad3;
-};
-
-/*
- * RwMatrix & RwMatrixTag must be different otherwise the alignment
- * directive is ignored when compiling under C++ on Visual C
- */
-typedef struct RwMatrixTag RWALIGN(RwMatrix, rwMATRIXALIGNMENT);
-
-#else
-
-/*
- * RwMatrix must appear as the struct name & the typedef,
- * otherwise Doxygen puts RwMatrixTag in the API ref instead of RwMatrix!
- */
-
-/**
- * \ingroup datatypes
- * \typedef RwMatrix
- * Matrix to define transformations.
- * This should be considered an opaque type.
- * Use the RwMatrix API functions to access.
- */
-typedef struct RwMatrix RWALIGN(RwMatrix, rwMATRIXALIGNMENT);
-#endif /* (!defined(DOXYGEN)) */
-
-#if (!defined(RwMatrixCopyMacro))
-#define RwMatrixCopyMacro(_target, _source) \
- ( *(_target) = *(_source) )
-#endif /* (!defined(RwMatrixCopyMacro)) */
-
-#if (!defined(RwMatrixSetIdentityMacro))
-#define RwMatrixSetIdentityMacro(m) \
-MACRO_START \
-{ \
- (m)->right.x = (m)->up.y = (m)->at.z = (RwReal)((1.0)); \
- (m)->right.y = (m)->right.z = (m)->up.x = (RwReal)((0.0)); \
- (m)->up.z = (m)->at.x = (m)->at.y = (RwReal)((0.0)); \
- (m)->pos.x = (m)->pos.y = (m)->pos.z = (RwReal)((0.0)); \
- rwMatrixSetFlags((m), \
- rwMatrixGetFlags(m) | \
- (rwMATRIXINTERNALIDENTITY | \
- rwMATRIXTYPEORTHONORMAL)); \
-} \
-MACRO_STOP
-#endif /* (!defined(RwMatrixSetIdentityMacro)) */
-
-typedef void (RWASMCALL * rwMatrixMultFn) (RwMatrix * dstMat,
- const RwMatrix * matA,
- const RwMatrix * matB);
-
-/*
- * \ingroup datatypes
- * \typedef RwMatrixTolerance
- * Typedef for RwMatrixTolerance structure
- */
-typedef struct RwMatrixTolerance RwMatrixTolerance;
-
-/*
- * \ingroup datatypes
- * \struct RwMatrixTolerance
- * Holds tolerances for matrix optimizations with \ref RwMatrixOptimize
- */
-struct RwMatrixTolerance
-{
- RwReal Normal;
- /**< Tolerance within which matrix is deemed to be normal */
- RwReal Orthogonal;
- /**< Tolerance within which matrix is deemed to be orthogonal */
- RwReal Identity;
- /**< Tolerance within which matrix is deemed to be identity */
-};
-
-
-/****************************************************************************
- Function prototypes
- */
-
-/* Matrix operations */
-
-#ifdef __cplusplus
-extern "C"
-{
-#endif /* __cplusplus */
-
-extern RwBool
-RwEngineGetMatrixTolerances(RwMatrixTolerance * const tolerance);
-
-extern RwBool
-RwEngineSetMatrixTolerances(const RwMatrixTolerance * const tolerance);
-
-/* Update */
-#define rwMatrixSetFlags(m, flagsbit) ((m)->flags = (flagsbit))
-#define rwMatrixGetFlags(m) ((m)->flags)
-#define rwMatrixTestFlags(m, flagsbit) ((m)->flags & (RwInt32)(flagsbit))
-
-/* Creation/destruction */
-extern RwBool
-RwMatrixDestroy(RwMatrix * mpMat);
-
-extern RwMatrix *
-RwMatrixCreate(void);
-
-#ifdef RWDEBUG
-
-/* Functions for debug */
-extern void
-RwMatrixCopy(RwMatrix * dstMatrix, const RwMatrix * srcMatrix);
-
-extern void
-RwMatrixSetIdentity(RwMatrix * matrix);
-
-#else /* RWDEBUG */
-
-#define RwMatrixCopy(dst, src) RwMatrixCopyMacro(dst, src)
-#define RwMatrixSetIdentity(m) RwMatrixSetIdentityMacro(m)
-
-#endif /* RWDEBUG */
-
-/* Matrix multiply */
-extern RwMatrix *
-RwMatrixMultiply(RwMatrix * matrixOut,
- const RwMatrix * MatrixIn1,
- const RwMatrix * matrixIn2);
-
-extern RwMatrix *
-RwMatrixTransform(RwMatrix * matrix,
- const RwMatrix * transform,
- RwOpCombineType combineOp);
-
-/* Normalise */
-extern RwMatrix *
-RwMatrixOrthoNormalize(RwMatrix * matrixOut,
- const RwMatrix * matrixIn);
-
-/* Inversion */
-extern RwMatrix *
-RwMatrixInvert(RwMatrix * matrixOut,
- const RwMatrix * matrixIn);
-
-/* Unary matrix operations */
-extern RwMatrix *
-RwMatrixScale(RwMatrix * matrix,
- const RwV3d * scale,
- RwOpCombineType combineOp);
-
-extern RwMatrix *
-RwMatrixTranslate(RwMatrix * matrix,
- const RwV3d * translation,
- RwOpCombineType combineOp);
-
-extern RwMatrix *
-RwMatrixRotate(RwMatrix * matrix,
- const RwV3d * axis,
- RwReal angle,
- RwOpCombineType combineOp);
-
-extern RwMatrix *
-RwMatrixRotateOneMinusCosineSine(RwMatrix * matrix,
- const RwV3d * unitAxis,
- RwReal oneMinusCosine,
- RwReal sine,
- RwOpCombineType combineOp);
-
-/* Query what the matrix is */
-extern const RwMatrix *RwMatrixQueryRotate(const RwMatrix * matrix,
- RwV3d * unitAxis,
- RwReal * angle,
- RwV3d * center);
-
-/* Get components */
-#ifndef RWDEBUG
-
-#define RwMatrixGetRight(m) (&(m)->right)
-#define RwMatrixGetUp(m) (&(m)->up)
-#define RwMatrixGetAt(m) (&(m)->at)
-#define RwMatrixGetPos(m) (&(m)->pos)
-
-#else /* RWDEBUG */
-
-extern RwV3d *
-RwMatrixGetRight(RwMatrix * matrix);
-
-extern RwV3d *
-RwMatrixGetUp(RwMatrix * matrix);
-
-extern RwV3d *
-RwMatrixGetAt(RwMatrix * matrix);
-
-extern RwV3d *
-RwMatrixGetPos(RwMatrix * matrix);
-
-#endif /* RWDEBUG */
-
-/* Update the internal matrix state wrt its elements */
-extern RwMatrix *
-RwMatrixUpdate(RwMatrix * matrix);
-
-/* Update the internal matrix flags wrt its elements */
-extern RwMatrix *
-RwMatrixOptimize(RwMatrix * matrix,
- const RwMatrixTolerance *
- tolerance);
-
-extern RwReal
-_rwMatrixDeterminant(const RwMatrix * matrix);
-
-extern RwReal
-_rwMatrixNormalError(const RwMatrix * matrix);
-
-extern RwReal
-_rwMatrixOrthogonalError(const RwMatrix * matrix);
-
-extern RwReal
-_rwMatrixIdentityError(const RwMatrix * matrix);
-
-#ifdef __cplusplus
-}
-#endif /* __cplusplus */
-
-/* Compatibility macros */
-
-#define rwMatrixSetOptimizations(optimizeFlags) \
- _rwMatrixSetOptimizations(optimizeFlags)
-
-#define rwMatrixSetMultFn(multMat) \
- _rwMatrixSetMultFn(multMat)
-
-#define rwMatrixOpen(instance, offset, size) \
- _rwMatrixOpen(instance, offset, size)
-
-#define rwMatrixClose(instance, offset, size) \
- _rwMatrixClose(instance, offset, size)
-
-/* Initialisation/deinitialisation */
-#define rwMatrixInitialize(m, t) \
-MACRO_START \
-{ \
- rwMatrixSetFlags((m), (t)); \
-} \
-MACRO_STOP
-
-#define rwMatrixIsNormal(_matrix, _epsilon) \
- ( (_epsilon) >= _rwMatrixNormalError(_matrix) )
-
-#define rwMatrixIsOrthogonal(_matrix, _epsilon) \
- ( (_epsilon) >= _rwMatrixOrthogonalError(_matrix) )
-
-#define rwMatrixIsOrthonormal(_matrix, _epsilon) \
- ( rwMatrixIsNormal(_matrix, _epsilon) && \
- rwMatrixIsOrthogonal(_matrix, _epsilon) )
-
-#define rwMatrixIsOrthonormalPositive(_matrix, _epsilon) \
- ( rwMatrixIsOrthonormal(_matrix, _epsilon) && \
-( (((RwReal)1) - (_epsilon)) <= _rwMatrixDeterminant(_matrix) ) )
-
-#define rwMatrixIsIdentity(_matrix, _epsilon) \
- ( (_epsilon) >= _rwMatrixIdentityError(_matrix) )
-
-#define rwMatrixValidFlags(_matrix, _epsilon) \
- ( (_matrix) && /* valid pointer */ \
- ( ( !( rwMatrixGetFlags(_matrix) & /* not flagged as identity */ \
- rwMATRIXINTERNALIDENTITY) ) || /* .. or actually is */ \
- rwMatrixIsIdentity(_matrix, _epsilon)) && \
- ( ( !( rwMatrixGetFlags(_matrix) & /* not flagged as normal */ \
- rwMATRIXTYPENORMAL) ) || /* ... or actually is */ \
- rwMatrixIsNormal(_matrix, _epsilon)) && \
- ( ( !( rwMatrixGetFlags(_matrix) & /* not flagged as orthogonal */ \
- rwMATRIXTYPEORTHOGANAL) ) || /* ... or actually is */ \
- rwMatrixIsOrthogonal(_matrix, _epsilon)) )
-
-#define rwMat01Det(_mAA) \
- ( (_mAA) )
-
-#define rwMat02Det(_mAA, _mAB, \
- _mBA, _mBB) \
- ( (_mAA) * rwMat01Det(_mBB) \
- - (_mAB) * rwMat01Det(_mBA) \
- )
-
-#define rwMat03Det(_mAA, _mAB, _mAC, \
- _mBA, _mBB, _mBC, \
- _mCA, _mCB, _mCC) \
- ( (_mAA) * rwMat02Det(_mBB, _mBC, \
- _mCB, _mCC) \
- - (_mAB) * rwMat02Det(_mBA, _mBC, \
- _mCA, _mCC) \
- + (_mAC) * rwMat02Det(_mBA, _mBB, \
- _mCA, _mCB) \
- )
-
-#define rwMat04Det(_mAA, _mAB, _mAC, _mAD, \
- _mBA, _mBB, _mBC, _mBD, \
- _mCA, _mCB, _mCC, _mCD, \
- _mDA, _mDB, _mDC, _mDD) \
- ( (_mAA) * rwMat03Det(_mBB, _mBC, _mBD, \
- _mCB, _mCC, _mCD, \
- _mDB, _mDC, _mDD) \
- - (_mAB) * rwMat03Det(_mBA, _mBC, _mBD, \
- _mCA, _mCC, _mCD, \
- _mDA, _mDC, _mDD) \
- + (_mAC) * rwMat03Det(_mBA, _mBB, _mBD, \
- _mCA, _mCB, _mCD, \
- _mDA, _mDB, _mDD) \
- - (_mAD) * rwMat03Det(_mBA, _mBB, _mBC, \
- _mCA, _mCB, _mCC, \
- _mDA, _mDB, _mDC) \
- )
-
-
-#define rwMat02Inv(_rAA, _rAB, \
- _rBA, _rBB) \
- _mAA, _mAB, \
- _mBA, _mBB) \
-MACRO_START \
-{ \
- RwSplitBits determinant; \
- \
- (_rAA) = rwMat01Det(_mBB); \
- (_rAB) = -rwMat01Det(_mAB); \
- \
- determinant.nReal = ( (_rAA) * (_mAA) + \
- (_rAB) * (_mBA) ); \
- \
- \
- { \
- const RwReal normalize = ( (determinant.nInt != 0)? \
- (((RwReal)1)/determinant.nReal): \
- ((RwReal)1) ); \
- \
- (_rAA) *= normalize; \
- (_rAB) *= normalize; \
- \
- (_rBA) = -rwMat01Det(_mBA) * normalize; \
- (_rBB) = rwMat01Det(_mAA) * normalize; \
- } \
-} \
-MACRO_STOP
-
-#define rwMat03Inv(_rAA, _rAB, _rAC, \
- _rBA, _rBB, _rBC, \
- _rCA, _rCB, _rCC, \
- _mAA, _mAB, _mAC, \
- _mBA, _mBB, _mBC, \
- _mCA, _mCB, _mCC) \
-MACRO_START \
-{ \
- RwSplitBits determinant; \
- \
- (_rAA)= rwMat02Det(_mBB, _mBC, \
- _mCB, _mCC); \
- (_rAB)= -rwMat02Det(_mAB, _mAC, \
- _mCB, _mCC); \
- (_rAC)= rwMat02Det(_mAB, _mAC, \
- _mBB, _mBC); \
- \
- determinant.nReal = ( (_rAA) * (_mAA) + \
- (_rAB) * (_mBA) + \
- (_rAC) * (_mCA) ); \
- \
- { \
- const RwReal normalize = ( (determinant.nInt != 0)? \
- (((RwReal)1)/determinant.nReal): \
- ((RwReal)1) ); \
- (_rAA) *= normalize; \
- (_rAB) *= normalize; \
- (_rAC) *= normalize; \
- \
- (_rBA)= -rwMat02Det(_mBA, _mBC, \
- _mCA, _mCC) * normalize ; \
- (_rBB)= rwMat02Det(_mAA, _mAC, \
- _mCA, _mCC) * normalize ; \
- (_rBC)= -rwMat02Det(_mAA, _mAC, \
- _mBA, _mBC) * normalize ; \
- \
- (_rCA)= rwMat02Det(_mBA, _mBB, \
- _mCA, _mCB) * normalize ; \
- (_rCB)= -rwMat02Det(_mAA, _mAB, \
- _mCA, _mCB) * normalize ; \
- (_rCC)= rwMat02Det(_mAA, _mAB, \
- _mBA, _mBB) * normalize ; \
- } \
- \
-} \
-MACRO_STOP
-
-#define rwMat04Inv(_rAA, _rAB, _rAC, _rAD, \
- _rBA, _rBB, _rBC, _rBD, \
- _rCA, _rCB, _rCC, _rCD, \
- _rDA, _rDB, _rDC, _rDD, \
- _mAA, _mAB, _mAC, _mAD, \
- _mBA, _mBB, _mBC, _mBD, \
- _mCA, _mCB, _mCC, _mCD, \
- _mDA, _mDB, _mDC, _mDD) \
-MACRO_START \
-{ \
- RwSplitBits determinant; \
- \
- (_rAA)= rwMat03Det(_mBB, _mBC, _mBD, \
- _mCB, _mCC, _mCD, \
- _mDB, _mDC, _mDD); \
- (_rAB)= -rwMat03Det(_mAB, _mAC, _mAD, \
- _mCB, _mCC, _mCD, \
- _mDB, _mDC, _mDD); \
- (_rAC)= rwMat03Det(_mAB, _mAC, _mAD, \
- _mBB, _mBC, _mBD, \
- _mDB, _mDC, _mDD); \
- (_rAD)= -rwMat03Det(_mAB, _mAC, _mAD, \
- _mBB, _mBC, _mBD, \
- _mCB, _mCC, _mCD); \
- \
- determinant.nReal = ( (_rAA) * (_mAA) + \
- (_rAB) * (_mBA) + \
- (_rAC) * (_mCA) + \
- (_rAD) * (_mDA) ); \
- \
- { \
- const RwReal normalize = ( (determinant.nInt != 0)? \
- (((RwReal)1)/determinant.nReal): \
- ((RwReal)1) ); \
- \
- (_rAA) *= normalize; \
- (_rAB) *= normalize; \
- (_rAC) *= normalize; \
- (_rAD) *= normalize; \
- \
- (_rBA)= -rwMat03Det(_mBA, _mBC, _mBD, \
- _mCA, _mCC, _mCD, \
- _mDA, _mDC, _mDD) * normalize ; \
- (_rBB)= rwMat03Det(_mAA, _mAC, _mAD, \
- _mCA, _mCC, _mCD, \
- _mDA, _mDC, _mDD) * normalize ; \
- (_rBC)= -rwMat03Det(_mAA, _mAC, _mAD, \
- _mBA, _mBC, _mBD, \
- _mDA, _mDC, _mDD) * normalize ; \
- (_rBD)= rwMat03Det(_mAA, _mAC, _mAD, \
- _mBA, _mBC, _mBD, \
- _mCA, _mCC, _mCD) * normalize ; \
- \
- (_rCA)= rwMat03Det(_mBA, _mBB, _mBD, \
- _mCA, _mCB, _mCD, \
- _mDA, _mDB, _mDD) * normalize ; \
- (_rCB)= -rwMat03Det(_mAA, _mAB, _mAD, \
- _mCA, _mCB, _mCD, \
- _mDA, _mDB, _mDD) * normalize ; \
- (_rCC)= rwMat03Det(_mAA, _mAB, _mAD, \
- _mBA, _mBB, _mBD, \
- _mDA, _mDB, _mDD) * normalize ; \
- (_rCD)= -rwMat03Det(_mAA, _mAB, _mAD, \
- _mBA, _mBB, _mBD, \
- _mCA, _mCB, _mCD) * normalize ; \
- \
- (_rDA)= -rwMat03Det(_mBA, _mBB, _mBC, \
- _mCA, _mCB, _mCC, \
- _mDA, _mDB, _mDC) * normalize ; \
- (_rDB)= rwMat03Det(_mAA, _mAB, _mAC, \
- _mCA, _mCB, _mCC, \
- _mDA, _mDB, _mDC) * normalize ; \
- (_rDC)= -rwMat03Det(_mAA, _mAB, _mAC, \
- _mBA, _mBB, _mBC, \
- _mDA, _mDB, _mDC) * normalize ; \
- (_rDD)= rwMat03Det(_mAA, _mAB, _mAC, \
- _mBA, _mBB, _mBC, \
- _mCA, _mCB, _mCC) * normalize ; \
- } \
-} \
-MACRO_STOP
-
-
-/*--- Automatically derived from: C:/daily/rwsdk/driver/d3d8/drvmodel.h ---*/
-#ifndef D3D8_DRVMODEL_H
-#define D3D8_DRVMODEL_H
-
-#if (defined(__ICL))
-/* Avoid voluminous
- * 'warning #344: typedef name has already been declared (with same type)'
- * warnings from MS include files
- */
-#pragma warning( disable : 344 )
-#endif /* (defined(__ICL)) */
-
-//nobody needed that - AAP
-//#include <windows.h>
-
-#if (defined(RWDEBUG))
-#if (defined(RWMEMDEBUG) && !defined(_CRTDBG_MAP_ALLOC))
-#define _CRTDBG_MAP_ALLOC
-#endif /* defined(RWMEMDEBUG) && !defined(_CRTDBG_MAP_ALLOC)) */
-#include <crtdbg.h>
-#define ERR_WRAP(A) (_rwRePrintErrorDDD3D((A), __FILE__, __LINE__))
-#endif /* (defined(RWDEBUG)) */
-
-#if (!defined(ERR_WRAP))
-#define ERR_WRAP(A) (A)
-#endif /* (!defined(ERR_WRAP)) */
-
-/****************************************************************************
- Defines
- */
-
-/* Set true depth information (for fogging, eg) */
-#define RwIm2DVertexSetCameraX(vert, camx) /* Nothing */
-#define RwIm2DVertexSetCameraY(vert, camy) /* Nothing */
-#define RwIm2DVertexSetCameraZ(vert, camz) /* Nothing */
-
-#define RwIm2DVertexSetRecipCameraZ(vert, recipz) ((vert)->rhw = recipz)
-
-#define RwIm2DVertexGetCameraX(vert) (cause an error)
-#define RwIm2DVertexGetCameraY(vert) (cause an error)
-#define RwIm2DVertexGetCameraZ(vert) (cause an error)
-#define RwIm2DVertexGetRecipCameraZ(vert) ((vert)->rhw)
-
-/* Set screen space coordinates in a device vertex */
-#define RwIm2DVertexSetScreenX(vert, scrnx) ((vert)->x = (scrnx))
-#define RwIm2DVertexSetScreenY(vert, scrny) ((vert)->y = (scrny))
-#define RwIm2DVertexSetScreenZ(vert, scrnz) ((vert)->z = (scrnz))
-#define RwIm2DVertexGetScreenX(vert) ((vert)->x)
-#define RwIm2DVertexGetScreenY(vert) ((vert)->y)
-#define RwIm2DVertexGetScreenZ(vert) ((vert)->z)
-
-/* Set texture coordinates in a device vertex */
-#define RwIm2DVertexSetU(vert, texU, recipz) ((vert)->u = (texU))
-#define RwIm2DVertexSetV(vert, texV, recipz) ((vert)->v = (texV))
-#define RwIm2DVertexGetU(vert) ((vert)->u)
-#define RwIm2DVertexGetV(vert) ((vert)->v)
-
-/* Modify the luminance stuff */
-#define RwIm2DVertexSetRealRGBA(vert, red, green, blue, alpha) \
- ((vert)->emissiveColor = \
- (((RwFastRealToUInt32(alpha)) << 24) | \
- ((RwFastRealToUInt32(red)) << 16) | \
- ((RwFastRealToUInt32(green)) << 8) | \
- ((RwFastRealToUInt32(blue)))))
-
-#define RwIm2DVertexSetIntRGBA(vert, red, green, blue, alpha) \
- ((vert)->emissiveColor = \
- ((((RwUInt32)(alpha)) << 24) | \
- (((RwUInt32)(red)) << 16) | \
- (((RwUInt32)(green)) << 8) | \
- (((RwUInt32)(blue)))))
-
-#define RwIm2DVertexGetRed(vert) \
- (((vert)->emissiveColor >> 16) & 0xFF)
-
-#define RwIm2DVertexGetGreen(vert) \
- (((vert)->emissiveColor >> 8) & 0xFF)
-
-#define RwIm2DVertexGetBlue(vert) \
- ((vert)->emissiveColor & 0xFF)
-
-#define RwIm2DVertexGetAlpha(vert) \
- (((vert)->emissiveColor >> 24) & 0xFF)
-
-#define RwIm2DVertexCopyRGBA(dst, src) \
- ((dst)->emissiveColor = (src)->emissiveColor)
-
-/* Clipper stuff */
-
-#define RwIm2DVertexClipRGBA(o, i, n, f) \
-MACRO_START \
-{ \
- const RwInt32 _factor = \
- (RwFastRealToUInt32(i * (RwReal)(255))) & 255; \
- \
- (o)->emissiveColor = \
- (((((RwIm2DVertexGetAlpha(f) - RwIm2DVertexGetAlpha(n)) * \
- _factor) >> 8) + RwIm2DVertexGetAlpha(n)) << 24) | \
- (((((RwIm2DVertexGetRed(f) - RwIm2DVertexGetRed(n)) * \
- _factor) >> 8) + RwIm2DVertexGetRed(n)) << 16) | \
- (((((RwIm2DVertexGetGreen(f) - RwIm2DVertexGetGreen(n)) * \
- _factor) >> 8) + RwIm2DVertexGetGreen(n)) << 8) | \
- (((((RwIm2DVertexGetBlue(f) - RwIm2DVertexGetBlue(n)) * \
- _factor) >> 8) + RwIm2DVertexGetBlue(n))); \
-} \
-MACRO_STOP
-
-/* LEGACY-SUPPORT macros */
-#define RWIM2DVERTEXSetCameraX(vert, camx) RwIm2DVertexSetCameraX(vert, camx)
-#define RWIM2DVERTEXSetCameraY(vert, camy) RwIm2DVertexSetCameraY(vert, camy)
-#define RWIM2DVERTEXSetCameraZ(vert, camz) RwIm2DVertexSetCameraZ(vert, camz)
-#define RWIM2DVERTEXSetRecipCameraZ(vert, recipz) \
- RwIm2DVertexSetRecipCameraZ(vert, recipz)
-#define RWIM2DVERTEXGetCameraX(vert) RwIm2DVertexGetCameraX(vert)
-#define RWIM2DVERTEXGetCameraY(vert) RwIm2DVertexGetCameraY(vert)
-#define RWIM2DVERTEXGetCameraZ(vert) RwIm2DVertexGetCameraZ(vert)
-#define RWIM2DVERTEXGetRecipCameraZ(vert) RwIm2DVertexGetRecipCameraZ(vert)
-#define RWIM2DVERTEXSetScreenX(vert, scrnx) RwIm2DVertexSetScreenX(vert, scrnx)
-#define RWIM2DVERTEXSetScreenY(vert, scrny) RwIm2DVertexSetScreenY(vert, scrny)
-#define RWIM2DVERTEXSetScreenZ(vert, scrnz) RwIm2DVertexSetScreenZ(vert, scrnz)
-#define RWIM2DVERTEXGetScreenX(vert) RwIm2DVertexGetScreenX(vert)
-#define RWIM2DVERTEXGetScreenY(vert) RwIm2DVertexGetScreenY(vert)
-#define RWIM2DVERTEXGetScreenZ(vert) RwIm2DVertexGetScreenZ(vert)
-#define RWIM2DVERTEXSetU(vert, u, recipz) RwIm2DVertexSetU(vert, u, recipz)
-#define RWIM2DVERTEXSetV(vert, v, recipz) RwIm2DVertexSetV(vert, v, recipz)
-#define RWIM2DVERTEXGetU(vert) RwIm2DVertexGetU(vert)
-#define RWIM2DVERTEXGetV(vert) RwIm2DVertexGetV(vert)
-#define RWIM2DVERTEXSetRealRGBA(vert, red, green, blue, alpha) \
- RwIm2DVertexSetRealRGBA(vert, red, green, blue, alpha)
-#define RWIM2DVERTEXSetIntRGBA(vert, red, green, blue, alpha) \
- RwIm2DVertexSetIntRGBA(vert, red, green, blue, alpha)
-#define RWIM2DVERTEXGetRed(vert) RwIm2DVertexGetRed(vert)
-#define RWIM2DVERTEXGetGreen(vert) RwIm2DVertexGetGreen(vert)
-#define RWIM2DVERTEXGetBlue(vert) RwIm2DVertexGetBlue(vert)
-#define RWIM2DVERTEXGetAlpha(vert) RwIm2DVertexGetAlpha(vert)
-#define RWIM2DVERTEXCopyRGBA(dst, src) RwIm2DVertexCopyRGBA(dst, src)
-#define RWIM2DVERTEXClipRGBA(o, i, n, f) RwIm2DVertexClipRGBA(o, i, n, f)
-
-/****************************************************************************
- Global Types
- */
-
-/* We use RwD3D8Vertex to drive the hardware in 2D mode */
-
-/**
- * \ingroup rwcoredriverd3d8
- * \typedef RwD3D8Vertex
- * D3D8 vertex structure definition for 2D geometry
- */
-typedef struct RwD3D8Vertex RwD3D8Vertex;
-/**
- * \ingroup rwcoredriverd3d8
- * \struct RwD3D8Vertex
- * D3D8 vertex structure definition for 2D geometry
- */
-struct RwD3D8Vertex
-{
- RwReal x; /**< Screen X */
- RwReal y; /**< Screen Y */
- RwReal z; /**< Screen Z */
- RwReal rhw; /**< Reciprocal of homogeneous W */
-
- RwUInt32 emissiveColor; /**< Vertex color */
-
- RwReal u; /**< Texture coordinate U */
- RwReal v; /**< Texture coordinate V */
-};
-
-/* Define types used */
-
-/**
- * \ingroup rwcoredriverd3d8
- * \typedef RwIm2DVertex
- * Typedef for a RenderWare Graphics Immediate Mode 2D Vertex
- */
-typedef RwD3D8Vertex RwIm2DVertex;
-
-/* LEGACY-SUPPORT macro */
-/**
- * \ingroup rwcoredriverd3d8
- * \def RWIM2DVERTEX
- * RWIM2DVERTEX is a legacy macro for RwIm2DVertex
- */
-#define RWIM2DVERTEX RwIm2DVertex
-
-/**
- * \ingroup rwcoredriverd3d8
- * \typedef RxVertexIndex
- *
- * Typedef for a RenderWare Graphics PowerPipe Immediate
- * Mode Vertex
- */
-typedef RwUInt16 RxVertexIndex;
-
-/**
- * \ingroup rwcoredriverd3d8
- * \typedef RwImVertexIndex
- * Typedef for a RenderWare Graphics Immediate Mode Vertex.
- */
-typedef RxVertexIndex RwImVertexIndex;
-
-/* LEGACY-SUPPORT macro */
-/**
- * \ingroup rwcoredriverd3d8
- * \def RWIMVERTEXINDEX
- * RWIMVERTEXINDEX is a legacy macro for RwImVertexIndex
- */
-#define RWIMVERTEXINDEX RwImVertexIndex
-
-/**
- * \ingroup rwcoredriverd3d8
- * \struct RwD3D8Metrics
- * Structure containing metrics counters
- */
-typedef struct
-{
- RwUInt32 numRenderStateChanges; /**< Number of Render States changed */
- RwUInt32 numTextureStageStateChanges; /**< Number of Texture Stage States changed */
- RwUInt32 numMaterialChanges; /**< Number of Material changes */
- RwUInt32 numLightsChanged; /**< Number of Lights changed */
-}
-RwD3D8Metrics;
-
-#endif /* D3D8_DRVMODEL_H */
-
-/*--- Automatically derived from: C:/daily/rwsdk/src/plcore/bavector.h ---*/
-
-/*
- * Typedef for pointer to Vector multiplication by Matrix function
- */
-
-typedef RwV3d *(*rwVectorMultFn) (RwV3d * pointsOut,
- const RwV3d * pointsIn,
- RwInt32 numPoints,
- const RwMatrix * matrix);
-
-
-/* If sqrt is overloaded for this platform, we will remove
- * all the sqrt table stuff from the build entirely
- * currently applies to SKY2 and XBOX - IDBS [2/11/2001]
- * [and, if using the intel compiler version 400 or above,
- * we will use the single-precision float "sqrtf" under
- * D3D7, D3D8, OpenGL or SoftRas] */
-#if (defined(rwSqrtMacro))
-#define RWNOSQRTTABLE
-#endif /* (defined(rwSqrtMacro)) */
-#if (defined(rwInvSqrtMacro))
-#define RWNOINVSQRTTABLE
-#endif /* (defined(rwSqrtMacro)) */
-
-#if (!defined(rwSqrtMacro))
-#define rwSqrtMacro(_root, _input) \
- ( *(_root) = _rwSqrt(_input) )
-#endif /* (!defined(rwSqrtMacro)) */
-
-#if (!defined(rwInvSqrtMacro))
-#define rwInvSqrtMacro(_recip, _input) \
- ( *(_recip) = _rwInvSqrt(_input) )
-#endif /* (!defined(rwInvSqrtMacro)) */
-
-#if (!defined(rwSqrtInvSqrtMacro))
-#define rwSqrtInvSqrtMacro(_root, _recip, _input) \
-MACRO_START \
-{ \
- RwReal _tmp = _input; \
- rwSqrt((_root), _tmp); \
- rwInvSqrt((_recip), _tmp); \
-} \
-MACRO_STOP
-#endif /* (!defined(rwSqrtInvSqrtMacro)) */
-
-/* Vector operations Macros */
-
-#if (!defined(RwV2dAssignMacro))
-#define RwV2dAssignMacro(_target, _source) \
- ( *(_target) = *(_source) )
-#endif /* (!defined(RwV2dAssignMacro)) */
-
-#define RwV2dAddMacro(o, a, b) \
-MACRO_START \
-{ \
- (o)->x = (((a)->x) + ( (b)->x)); \
- (o)->y = (((a)->y) + ( (b)->y)); \
-} \
-MACRO_STOP
-
-#define RwV2dSubMacro(o, a, b) \
-MACRO_START \
-{ \
- (o)->x = (((a)->x) - ( (b)->x)); \
- (o)->y = (((a)->y) - ( (b)->y)); \
-} \
-MACRO_STOP
-
-#define RwV2dScaleMacro(o, i, s) \
-MACRO_START \
-{ \
- (o)->x = (((i)->x) * ( (s))); \
- (o)->y = (((i)->y) * ( (s))); \
-} \
-MACRO_STOP
-
-#define RwV2dDotProductMacro(a,b) \
- (( ((((a)->x) * ( (b)->x))) + \
- ( (((a)->y) * ( (b)->y))))) \
-
-#define _rwV2dNormalizeMacro(_result, _out, _in) \
-MACRO_START \
-{ \
- RwReal length2 = RwV2dDotProductMacro((_in), (_in)); \
- rwInvSqrtMacro(&(_result), length2); \
- RwV2dScaleMacro((_out), (_in), (_result)); \
-} \
-MACRO_STOP
-
-#define RwV2dNormalizeMacro(_result, _out, _in) \
-MACRO_START \
-{ \
- RwReal length2 = RwV2dDotProductMacro((_in), (_in)); \
- RwReal recip; \
- \
- rwSqrtInvSqrtMacro(&(_result), &recip, length2); \
- RwV2dScaleMacro((_out), (_in), recip); \
-} \
-MACRO_STOP
-
-#define RwV2dLengthMacro(_result, _in) \
-MACRO_START \
-{ \
- (_result) = RwV2dDotProductMacro(_in, _in); \
- rwSqrtMacro(&(_result), (_result)); \
-} \
-MACRO_STOP
-
-#define RwV2dLineNormalMacro(_o, _a, _b) \
-MACRO_START \
-{ \
- RwReal recip; \
- \
- (_o)->y = (((_b)->x) - ( (_a)->x)); \
- (_o)->x = (((_a)->y) - ( (_b)->y)); \
- _rwV2dNormalizeMacro(recip, _o,_o); \
-} \
-MACRO_STOP
-
-#define RwV2dPerpMacro(o, a) \
-MACRO_START \
-{ \
- (o)->x = -(a)->y; \
- (o)->y = (a)->x; \
-} \
-MACRO_STOP
-
-/* RwV3d */
-
-#if (!defined(RwV3dAssignMacro))
-#define RwV3dAssignMacro(_target, _source) \
- ( *(_target) = *(_source) )
-#endif /* (!defined(RwV3dAssignMacro)) */
-
-
-#define RwV3dAddMacro(o, a, b) \
-MACRO_START \
-{ \
- (o)->x = (((a)->x) + ( (b)->x)); \
- (o)->y = (((a)->y) + ( (b)->y)); \
- (o)->z = (((a)->z) + ( (b)->z)); \
-} \
-MACRO_STOP
-
-#define RwV3dSubMacro(o, a, b) \
-MACRO_START \
-{ \
- (o)->x = (((a)->x) - ( (b)->x)); \
- (o)->y = (((a)->y) - ( (b)->y)); \
- (o)->z = (((a)->z) - ( (b)->z)); \
-} \
-MACRO_STOP
-
-#define RwV3dScaleMacro(o, a, s) \
-MACRO_START \
-{ \
- (o)->x = (((a)->x) * ( (s))); \
- (o)->y = (((a)->y) * ( (s))); \
- (o)->z = (((a)->z) * ( (s))); \
-} \
-MACRO_STOP
-
-#define RwV3dIncrementScaledMacro(o, a, s) \
-MACRO_START \
-{ \
- (o)->x += (((a)->x) * ( (s))); \
- (o)->y += (((a)->y) * ( (s))); \
- (o)->z += (((a)->z) * ( (s))); \
-} \
-MACRO_STOP
-
-#define RwV3dNegateMacro(o, a) \
-MACRO_START \
-{ \
- (o)->x = -(a)->x; \
- (o)->y = -(a)->y; \
- (o)->z = -(a)->z; \
-} \
-MACRO_STOP
-
-#define RwV3dDotProductMacro(a, b) \
- ((((( (((a)->x) * ((b)->x))) + \
- ( (((a)->y) * ((b)->y))))) + \
- ( (((a)->z) * ((b)->z))))) \
-
-#define RwV3dCrossProductMacro(o, a, b) \
-MACRO_START \
-{ \
- (o)->x = \
- (( (((a)->y) * ( (b)->z))) - \
- ( (((a)->z) * ( (b)->y)))); \
- (o)->y = \
- (( (((a)->z) * ( (b)->x))) - \
- ( (((a)->x) * ( (b)->z)))); \
- (o)->z = \
- (( (((a)->x) * ( (b)->y))) - \
- ( (((a)->y) * ( (b)->x)))); \
-} \
-MACRO_STOP
-
-#define _rwV3dNormalizeMacro(_result, _out, _in) \
-MACRO_START \
-{ \
- RwReal length2 = RwV3dDotProductMacro(_in, _in); \
- rwInvSqrtMacro(&(_result), length2); \
- RwV3dScaleMacro(_out, _in, _result); \
-} \
-MACRO_STOP
-
-#define RwV3dNormalizeMacro(_result, _out, _in) \
-MACRO_START \
-{ \
- RwReal length2 = RwV3dDotProductMacro((_in), (_in)); \
- RwReal recip; \
- \
- rwSqrtInvSqrtMacro(&(_result), &recip, length2); \
- RwV3dScaleMacro((_out), (_in), recip); \
-} \
-MACRO_STOP
-
-#define RwV3dLengthMacro(_result, _in) \
-MACRO_START \
-{ \
- (_result) = RwV3dDotProductMacro(_in, _in); \
- rwSqrtMacro(&(_result), _result); \
-} \
-MACRO_STOP
-
-#if (! ( defined(RWDEBUG) || defined(RWSUPPRESSINLINE) ))
-
-#define RwV2dAssign(o, a) RwV2dAssignMacro(o, a)
-#define RwV2dAdd(o, a, b) RwV2dAddMacro(o, a, b)
-#define RwV2dSub(o, a, b) RwV2dSubMacro(o, a, b)
-#define RwV2dLineNormal(_o, _a, _b) RwV2dLineNormalMacro(_o, _a, _b)
-#define RwV2dScale(o, i, s) RwV2dScaleMacro(o, i, s)
-#define RwV2dDotProduct(a,b) RwV2dDotProductMacro(a,b)
-#define RwV2dPerp(o, a) RwV2dPerpMacro(o, a)
-#define RwV3dAssign(o, a) RwV3dAssignMacro(o, a)
-#define RwV3dAdd(o, a, b) RwV3dAddMacro(o, a, b)
-#define RwV3dSub(o, a, b) RwV3dSubMacro(o, a, b)
-#define RwV3dScale(o, a, s) RwV3dScaleMacro(o, a, s)
-#define RwV3dIncrementScaled(o, a, s) RwV3dIncrementScaledMacro(o, a, s)
-#define RwV3dNegate(o, a) RwV3dNegateMacro(o, a)
-#define RwV3dDotProduct(a, b) RwV3dDotProductMacro(a, b)
-#define RwV3dCrossProduct(o, a, b) RwV3dCrossProductMacro(o, a, b)
-
-#endif /* (! ( defined(RWDEBUG) || defined(RWSUPPRESSINLINE) )) */
-
-#define RWRAD2DEG(_x) ((_x) * (((RwReal)180)/(rwPI)))
-
-#if (!defined(rw4OVERPISQ))
-#define rw4OVERPISQ ( ((RwReal)4) / ( rwPI * rwPI ))
-#endif /* (!defined(rw4OVERPISQ)) */
-
-#if (!defined(rwPI3))
-#define rwPI3 (rwPI * (RwReal)3)
-#endif /* (!defined(rwPI3)) */
-
-#if (!defined(rwPI3OVER2))
-#define rwPI3OVER2 ( rwPI3 / (RwReal)2 )
-#endif /* (!defined(rwPI3OVER2)) */
-
-#if (!defined(rwPI3OVER8))
-#define rwPI3OVER8 (rwPI3 / (RwReal)8 )
-#endif /* (!defined(rwPI3OVER8)) */
-
-#define RwQuadSin(_x) \
- ( rw4OVERPISQ * \
- ( ( (_x) < 0 ) ? \
- ( ( rwPI + (_x) ) * (_x) ) : \
- ( ( rwPI - (_x) ) * (_x) ) ) )
-
-#define RwQuadASin(_result, _s) \
- ( rwPIOVER2 * ( ((_s)<0) ? \
- ( rwSqrtMacro((_result), 1.0f + (_s)) - 1 ) : \
- ( 1 - rwSqrtMacro((_result), 1.0f - (_s)) ) ) )
-
-#define RwQuadCos(_x) \
- ( rw4OVERPISQ * \
- ( ( (_x) < -rwPIOVER2 ) ? \
- ( ( -rwPI3OVER2 - (_x) ) * ( -rwPIOVER2 - (_x) ) ) : \
- ( ( (_x) < rwPIOVER2) ? \
- ( ( rwPIOVER2 + (_x) ) * ( rwPIOVER2 - (_x) ) ) : \
- ( ( rwPIOVER2 - (_x) ) * ( rwPI3OVER2 - (_x) ) ) ) ) )
-
-#define RwQuadACos(_result, _c) \
- ( rwPIOVER2 * ( ((_c)<0) ? \
- (2.0f - rwSqrtMacro((_result), 1.0f + (_c))): \
- rwSqrtMacro((_result), 1.0f - (_c))) )
-
-#define RwQuadTan(_x) \
- ( rwPI3 * (_x) / ( rwPI * rwPI - (_x) * (_x) * 4.0f ) )
-
-#define RwQuadATan(_result, _t) \
- ( ( rwSqrtMacro((_result), (rwPI3OVER8 * rwPI3OVER8) + \
- (_t) * (_t) * (rwPIOVER2 * rwPIOVER2) ) - rwPI3OVER8 ) \
- / ( _t) )
-
-#define RwQuadATan2(_result, _s, _c) \
- ( ( rwSqrtMacro((_result), (_c) * (_c) * (rwPI3OVER8 * rwPI3OVER8) + \
- (_s) * (_s) * (rwPIOVER2 * rwPIOVER2) ) \
- - (_c) * rwPI3OVER8 ) / ( _s) )
-
-/****************************************************************************
- Function prototypes
- */
-
-#ifdef __cplusplus
-extern "C"
-{
-#endif /* __cplusplus */
-
-/* Other useful stuff */
-
-extern RwReal RwV3dNormalize(RwV3d * out, const RwV3d * in);
-extern RwReal RwV3dLength(const RwV3d * in);
-
-extern RwReal RwV2dLength(const RwV2d * in);
-extern RwReal RwV2dNormalize(RwV2d * out, const RwV2d * in);
-
-#if ( defined(RWDEBUG) || defined(RWSUPPRESSINLINE) )
-
-extern void RwV2dAssign(RwV2d * out,
- const RwV2d * ina);
-extern void RwV2dAdd(RwV2d * out,
- const RwV2d * ina, const RwV2d * inb);
-extern void RwV2dLineNormal(RwV2d * out,
- const RwV2d * ina, const RwV2d * inb);
-extern void RwV2dSub(RwV2d * out,
- const RwV2d * ina, const RwV2d * inb);
-extern void RwV2dPerp(RwV2d * out, const RwV2d * in);
-extern void RwV2dScale(RwV2d * out,
- const RwV2d * in, RwReal scalar);
-extern RwReal RwV2dDotProduct(const RwV2d * ina, const RwV2d * inb);
-
-extern void RwV3dAssign(RwV3d * out,
- const RwV3d * ina);
-extern void RwV3dAdd(RwV3d * out,
- const RwV3d * ina, const RwV3d * inb);
-extern void RwV3dSub(RwV3d * out,
- const RwV3d * ina, const RwV3d * inb);
-extern void RwV3dScale(RwV3d * out,
- const RwV3d * in, RwReal scalar);
-extern void RwV3dIncrementScaled(RwV3d * out,
- const RwV3d * in, RwReal scalar);
-extern void RwV3dNegate(RwV3d * out, const RwV3d * in);
-extern RwReal RwV3dDotProduct(const RwV3d * ina, const RwV3d * inb);
-extern void RwV3dCrossProduct(RwV3d * out,
- const RwV3d * ina, const RwV3d * inb);
-
-#endif /* ( defined(RWDEBUG) || defined(RWSUPPRESSINLINE) ) */
-
-/* Transform points/vectors */
-extern RwV3d *RwV3dTransformPoints(RwV3d * pointsOut,
- const RwV3d * pointsIn,
- RwInt32 numPoints,
- const RwMatrix * matrix);
-extern RwV3d *RwV3dTransformVectors(RwV3d * vectorsOut,
- const RwV3d * vectorsIn,
- RwInt32 numPoints,
- const RwMatrix * matrix);
-
-/* SPI */
-
-#if (!defined(RWNOSQRTTABLE))
-extern RwReal _rwSqrt(const RwReal num);
-#endif /* (!defined(RWNOSQRTTABLE)) */
-#if (!defined(RWNOINVSQRTTABLE))
-extern RwReal _rwInvSqrt(const RwReal num);
-#endif /* (!defined(RWNOINVSQRTTABLE)) */
-
-extern RwReal _rwV3dNormalize(RwV3d * out, const RwV3d * in);
-
-#ifdef __cplusplus
-}
-#endif /* __cplusplus */
-
-#define rwVectorOpen(instance, offset, size) \
- _rwVectorOpen(instance, offset, size)
-
-#define rwVectorClose(instance, offset, size) \
- _rwVectorClose(instance, offset, size)
-
-#define rwVectorSetMultFn(multPoint,multVector) \
- _rwVectorSetMultFn(multPoint,multVector)
-
-
-/*--- Automatically derived from: C:/daily/rwsdk/src/plcore/balist.h ---*/
-/****************************************************************************
- Global Types
- */
-
-typedef struct RwSList RwSList;
-struct RwSList
-{
- RwUInt8 *listElements;
- RwInt32 numElementsFilled;
- RwInt32 numElementsAlloced;
- RwInt32 entrySize;
-};
-
-
-
-/****************************************************************************
- Function prototypes
- */
-
-#ifdef __cplusplus
-extern "C"
-{
-#endif /* __cplusplus */
-
-/* SList functions */
-extern RwSList *_rwSListCreate(RwInt32 size);
-extern RwBool _rwSListDestroy(RwSList *sList);
-extern RwBool _rwSListDestroyArray(RwUInt8 *array);
-extern void _rwSListDestroyEndEntries(RwSList *sList, RwInt32 amount);
-extern RwBool _rwSListDestroyEntry(RwSList *sList, RwInt32 entry);
-extern void _rwSListEmpty(RwSList *sList);
-extern void *_rwSListGetArray(RwSList *sList);
-extern void *_rwSListGetEntry(RwSList *sList, RwInt32 entry);
-extern void *_rwSListGetNewEntry(RwSList *sList);
-extern void *_rwSListGetNewEntries(RwSList *sList, RwInt32 entry);
-extern RwInt32 _rwSListGetNumEntries(const RwSList *sList);
-extern RwBool _rwSListReleaseArray(RwSList *sList);
-extern void *_rwSListToArray(RwSList *sList);
-
-
-#ifdef __cplusplus
-}
-#endif /* __cplusplus */
-
-/* Comparibility macros */
-
-#define rwSListCreate(size) \
- _rwSListCreate(size)
-#define rwSListDestroy(sList) \
- _rwSListDestroy(sList)
-#define rwSListDestroyArray(array) \
- _rwSListDestroyArray(array)
-#define rwSListDestroyEndEntries(sList, amount) \
- _rwSListDestroyEndEntries(sList, amount)
-#define rwSListDestroyEntry(sList, entry) \
- _rwSListDestroyEntry(sList, entry)
-#define rwSListEmpty(sList) \
- _rwSListEmpty(sList)
-#define rwSListGetArray(sList) \
- _rwSListGetArray(sList)
-#define rwSListGetEntry(sList, entry) \
- _rwSListGetEntry(sList, entry)
-#define rwSListGetNewEntry(sList) \
- _rwSListGetNewEntry(sList)
-#define rwSListGetNewEntries(sList, entry) \
- _rwSListGetNewEntries(sList, entry)
-#define rwSListGetNumEntries(sList) \
- _rwSListGetNumEntries(sList)
-#define rwSListReleaseArray(sList) \
- _rwSListReleaseArray(sList)
-#define rwSListToArray(sList) \
- _rwSListToArray(sList)
-
-
-/*--- Automatically derived from: C:/daily/rwsdk/src/plcore/baimmedi.h ---*/
-
-/****************************************************************************
- Defines
- */
-
-
-/* !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
-
- Immediate mode interface V2.0
-
- !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! */
-
-/**
- * \ingroup datatypes
- * RwRenderState
- * This type represents the various render states that
- * can be set using the API function \ref RwRenderStateSet. This function also
- * takes a render state value or pointer to an object depending on the type.
- * For render states that are toggles, the value should be TRUE to switch the
- * state on and FALSE to turn it off.
- *
- * Note that many of these render states may not be supported on certain
- * platforms. The \ref RwRenderStateSet functions will return FALSE in such cases.
- */
-enum RwRenderState
-{
- rwRENDERSTATENARENDERSTATE = 0,
- rwRENDERSTATETEXTURERASTER, /**<Raster to texture with. \ref RwRenderStateSet
- * takes a pointer to an \ref RwRaster */
- rwRENDERSTATETEXTUREADDRESS, /**<\ref RwTextureAddressMode: wrap, clamp, mirror or border */
- rwRENDERSTATETEXTUREADDRESSU, /**<\ref RwTextureAddressMode in u only */
- rwRENDERSTATETEXTUREADDRESSV, /**<\ref RwTextureAddressMode in v only */
- rwRENDERSTATETEXTUREPERSPECTIVE, /**<Perspective correction on/off */
- rwRENDERSTATEZTESTENABLE, /**<Z-buffer test on/off */
- rwRENDERSTATESHADEMODE, /**<\ref RwShadeMode: flat or gouraud shading */
- rwRENDERSTATEZWRITEENABLE, /**<Z-buffer write on/off */
- rwRENDERSTATETEXTUREFILTER, /**<\ref RwTextureFilterMode: point sample, bilinear, trilinear, etc */
- rwRENDERSTATESRCBLEND, /**<Source alpha \ref RwBlendFunction: src alpha, 1-src alpha, etc */
- rwRENDERSTATEDESTBLEND, /**<Destination alpha \ref RwBlendFunction */
- rwRENDERSTATEVERTEXALPHAENABLE, /**<Vertex alpha transparency on/off */
- rwRENDERSTATEBORDERCOLOR, /**<Border color for \ref RwTextureAddressMode rwTEXTUREADDRESSBORDER.
- * The value should be a packed RwUInt32 in ARGB form. The macro
- * RWRGBALONG(r, g, b, a) may be used to construct this using 8-bit
- * color components. */
- rwRENDERSTATEFOGENABLE, /**<Fogging on/off (all polygons will be fogged) */
- rwRENDERSTATEFOGCOLOR, /**<Color used for fogging. The value should be a packed RwUInt32
- * in ARGB form. The macro RWRGBALONG(r, g, b, a) may be used to
- * construct this using 8-bit color components */
- rwRENDERSTATEFOGTYPE, /**<Sets \ref RwFogType, the type of fogging to use */
- rwRENDERSTATEFOGDENSITY, /**<Select the fog density for \ref RwFogType of rwFOGTYPEEXPONENTIAL
- * or rwFOGTYPEEXPONENTIAL2. The value should be a pointer to
- * an RwReal in the range 0 to 1. */
- rwRENDERSTATEFOGTABLE, /**<Install a 256 entry fog table placed between fog distance and far
- * clip-plane */
- rwRENDERSTATEALPHAPRIMITIVEBUFFER, /**<Render transparent alpha polygons last - on/off. \e Not \e supported
- * \e on \e any \e platform.*/
- rwRENDERSTATECULLMODE, /**<Sets \ref RwCullMode, for selecting face culling. */
- rwRENDERSTATESTENCILENABLE, /**< TRUE to enable stenciling, or FALSE to disable stenciling.
- * \e Supported \e on \e Xbox, \e D3D8, \e and \e OpenGL \e only. */
- rwRENDERSTATESTENCILFAIL, /**< Stencil test operator for the fail case.
- * \e Supported \e on \e Xbox, \e D3D8, \e and \e OpenGL \e only */
- rwRENDERSTATESTENCILZFAIL, /**< Stencil operation to perform if the stencil test passes
- * and the depth test (z-test) fails.
- * \e Supported \e on \e Xbox, \e D3D8, \e and \e OpenGL \e only */
- rwRENDERSTATESTENCILPASS, /**< Stencil operation to perform if both the stencil and the
- * depth (z) tests pass.
- * \e Supported \e on \e Xbox, \e D3D8, \e and \e OpenGL \e only */
- rwRENDERSTATESTENCILFUNCTION, /**< Comparison function for the stencil test.
- * \e Supported \e on \e Xbox, \e D3D8, \e and \e OpenGL \e only */
- rwRENDERSTATESTENCILFUNCTIONREF, /**< Integer reference value for the stencil test.
- * \e Supported \e on \e Xbox, \e D3D8, \e and \e OpenGL \e only */
- rwRENDERSTATESTENCILFUNCTIONMASK, /**< Mask applied to the reference value and each stencil buffer
- * entry to determine the significant bits for the stencil test.
- * \e Supported \e on \e Xbox, \e D3D8, \e and \e OpenGL \e only */
- rwRENDERSTATESTENCILFUNCTIONWRITEMASK, /**< Write mask applied to values written into the stencil buffer.
- * \e Supported \e on \e Xbox, \e D3D8, \e and \e OpenGL \e only */
-
- rwRENDERSTATEFORCEENUMSIZEINT = RWFORCEENUMSIZEINT
-};
-typedef enum RwRenderState RwRenderState;
-
-
-/**
- * \ingroup datatypes
- * RwShadeMode
- * This type represents the options available for setting the
- * rwRENDERSTATESHADEMODE render state */
-enum RwShadeMode
-{
- rwSHADEMODENASHADEMODE = 0, /**<Invalid shading mode */
- rwSHADEMODEFLAT, /**<Flat shading */
- rwSHADEMODEGOURAUD, /**<Gouraud shading */
- rwSHADEMODEFORCEENUMSIZEINT = RWFORCEENUMSIZEINT
-};
-typedef enum RwShadeMode RwShadeMode;
-
-
-/**
- * \ingroup datatypes
- * RwTextureFilterMode
- * This type represents the options available for texture
- * filtering (see API functions \ref RwTextureSetFilterMode and \ref RwRenderStateSet)*/
-enum RwTextureFilterMode
-{
- rwFILTERNAFILTERMODE = 0, /**<Invalid filter mode */
- rwFILTERNEAREST, /**<Point sampled */
- rwFILTERLINEAR, /**<Bilinear */
- rwFILTERMIPNEAREST, /**<Point sampled per pixel mip map */
- rwFILTERMIPLINEAR, /**<Bilinear per pixel mipmap */
- rwFILTERLINEARMIPNEAREST, /**<MipMap interp point sampled */
- rwFILTERLINEARMIPLINEAR, /**<Trilinear */
- rwTEXTUREFILTERMODEFORCEENUMSIZEINT = RWFORCEENUMSIZEINT
-};
-typedef enum RwTextureFilterMode RwTextureFilterMode;
-
-
-/**
- * \ingroup datatypes
- * RwFogType
- * This type represents the options available to the
- * rwRENDERSTATEFOGTYPE render state (see \ref RwRenderState);*/
-enum RwFogType
-{
- rwFOGTYPENAFOGTYPE = 0, /**<Invalid fog type */
- rwFOGTYPELINEAR, /**<Linear fog */
- rwFOGTYPEEXPONENTIAL, /**<Exponential fog */
- rwFOGTYPEEXPONENTIAL2, /**<Exponential^2 fog */
- rwFOGTYPEFORCEENUMSIZEINT = RWFORCEENUMSIZEINT
-};
-typedef enum RwFogType RwFogType;
-
-
-/**
- * \ingroup datatypes
- * RwBlendFunction
- * This type represents the options available
- * to the rwRENDERSTATESRCBLEND and rwRENDERSTATEDESTBLEND render states
- * (see \ref RwRenderState). In the following description,
- * a subscript s refers to a source value while subscript d refers to a
- * destination value.*/
-enum RwBlendFunction
-{
- rwBLENDNABLEND = 0, /**<Invalid blend mode */
- rwBLENDZERO, /**<(0, 0, 0, 0 ) */
- rwBLENDONE, /**<(1, 1, 1, 1 ) */
- rwBLENDSRCCOLOR, /**<(Rs, Gs, Bs, As ) */
- rwBLENDINVSRCCOLOR, /**<(1-Rs, 1-Gs, 1-Bs, 1-As) */
- rwBLENDSRCALPHA, /**<(As, As, As, As ) */
- rwBLENDINVSRCALPHA, /**<(1-As, 1-As, 1-As, 1-As) */
- rwBLENDDESTALPHA, /**<(Ad, Ad, Ad, Ad ) */
- rwBLENDINVDESTALPHA, /**<(1-Ad, 1-Ad, 1-Ad, 1-Ad) */
- rwBLENDDESTCOLOR, /**<(Rd, Gd, Bd, Ad ) */
- rwBLENDINVDESTCOLOR, /**<(1-Rd, 1-Gd, 1-Bd, 1-Ad) */
- rwBLENDSRCALPHASAT, /**<(f, f, f, 1 ) f = min (As, 1-Ad) */
- rwBLENDFUNCTIONFORCEENUMSIZEINT = RWFORCEENUMSIZEINT
-};
-typedef enum RwBlendFunction RwBlendFunction;
-
-
-/**
- * \ingroup datatypes
- * RwTextureAddressMode
- * This type represents the options available for
- * applying textures to polygons (see API functions \ref RwTextureSetAddressing
- * and \ref RwRenderStateSet, and the \ref RwRenderState type) */
-enum RwTextureAddressMode
-{
- rwTEXTUREADDRESSNATEXTUREADDRESS = 0, /**<Invalid addressing mode */
- rwTEXTUREADDRESSWRAP, /**<UV wraps (tiles) */
- rwTEXTUREADDRESSMIRROR, /**<Alternate UV is flipped */
- rwTEXTUREADDRESSCLAMP, /**<UV is clamped to 0-1 */
- rwTEXTUREADDRESSBORDER, /**<Border colour takes effect outside of 0-1 */
- rwTEXTUREADDRESSMODEFORCEENUMSIZEINT = RWFORCEENUMSIZEINT
-};
-typedef enum RwTextureAddressMode RwTextureAddressMode;
-
-/**
- * \ingroup datatypes
- * RwStencilOperation
- * This type represents the stencil operations to perform
- * based on the results of the
- * \ref rwRENDERSTATESTENCILFAIL, \ref rwRENDERSTATESTENCILZFAIL
- * and \ref rwRENDERSTATESTENCILPASS tests.
- */
-enum RwStencilOperation
-{
- rwSTENCILOPERATIONNASTENCILOPERATION = 0,
- rwSTENCILOPERATIONKEEP, /* Do not update the entry in the stencil buffer */
- rwSTENCILOPERATIONZERO, /* Set the stencil-buffer entry to 0 */
- rwSTENCILOPERATIONREPLACE, /* Replace the stencil-buffer entry with reference value */
- rwSTENCILOPERATIONINCRSAT, /* Increment the stencil-buffer entry, clamping to the maximum value */
- rwSTENCILOPERATIONDECRSAT, /* Decrement the stencil-buffer entry, clamping to zero */
- rwSTENCILOPERATIONINVERT, /* Invert the bits in the stencil-buffer entry */
- rwSTENCILOPERATIONINCR, /* Increment the stencil-buffer entry, wrapping to zero if the new value exceeds the maximum value */
- rwSTENCILOPERATIONDECR, /* Decrement the stencil-buffer entry, wrapping to the maximum value if the new value is less than zero */
- rwSTENCILOPERATIONFORCEENUMSIZEINT = RWFORCEENUMSIZEINT
-};
-typedef enum RwStencilOperation RwStencilOperation;
-
-/**
- * \ingroup datatypes
- * RwStencilFunction
- * This type represents the options available for
- * the comparison function for the stencil test \ref rwRENDERSTATESTENCILFUNCTION.
- */
-enum RwStencilFunction
-{
- rwSTENCILFUNCTIONNASTENCILFUNCTION = 0,
- rwSTENCILFUNCTIONNEVER, /* Always fail the test */
- rwSTENCILFUNCTIONLESS, /* Accept the new pixel if its value is less than the value of the current pixel */
- rwSTENCILFUNCTIONEQUAL, /* Accept the new pixel if its value equals the value of the current pixel */
- rwSTENCILFUNCTIONLESSEQUAL, /* Accept the new pixel if its value is less than or equal to the value of the current pixel */
- rwSTENCILFUNCTIONGREATER, /* Accept the new pixel if its value is greater than the value of the current pixel */
- rwSTENCILFUNCTIONNOTEQUAL, /* Accept the new pixel if its value does not equal the value of the current pixel */
- rwSTENCILFUNCTIONGREATEREQUAL, /* Accept the new pixel if its value is greater than or equal to the value of the current pixel */
- rwSTENCILFUNCTIONALWAYS, /* Always pass the test */
- rwSTENCILFUNCTIONFORCEENUMSIZEINT = RWFORCEENUMSIZEINT
-};
-typedef enum RwStencilFunction RwStencilFunction;
-
-/**
- * \ingroup datatypes
- * RwCullMode
- * This type represents the options available for culling polygons during rendering.
- * and \ref RwRenderStateSet, and the \ref RwRenderState type) */
-enum RwCullMode
-{
- rwCULLMODENACULLMODE = 0,
- rwCULLMODECULLNONE, /**< Both front and back-facing triangles are drawn. */
- rwCULLMODECULLBACK, /**< Just front-facing triangles are drawn */
- rwCULLMODECULLFRONT, /**< Just rear-facing triangles are drawn */
-
- rwCULLMODEFORCEENUMSIZEINT = RWFORCEENUMSIZEINT
-};
-typedef enum RwCullMode RwCullMode;
-
-/**
- * \ingroup datatypes
- * RwPrimitiveType
- * This type represents the different types of indexed
- * line and indexed triangle primitives that are available when rendering 2D
- * and 3D immediate mode objects (see API functions \ref RwIm2DRenderIndexedPrimitive,
- * \ref RwIm2DRenderPrimitive, \ref RwIm3DRenderIndexedPrimitive and \ref RwIm3DRenderPrimitive).
- * Indices are into a vertex list and must be defined in a counter-clockwise order
- * (as seen from the camera) to be visible.*/
-enum RwPrimitiveType
-{
- rwPRIMTYPENAPRIMTYPE = 0, /**<Invalid primative type */
- rwPRIMTYPELINELIST = 1, /**<Unconnected line segments, each line is specified by
- * both its start and end index, independently of other lines
- * (for example, 3 segments specified as 0-1, 2-3, 4-5) */
- rwPRIMTYPEPOLYLINE = 2, /**<Connected line segments, each line's start index
- * (except the first) is specified by the index of the end of
- * the previous segment (for example, 3 segments specified as
- * 0-1, 1-2, 2-3) */
- rwPRIMTYPETRILIST = 3, /**<Unconnected triangles: each triangle is specified by
- * three indices, independently of other triangles (for example,
- * 3 triangles specified as 0-1-2, 3-4-5, 6-7-8) */
- rwPRIMTYPETRISTRIP = 4, /**<Connected triangles sharing an edge with, at most, one
- * other forming a series (for example, 3 triangles specified
- * as 0-2-1, 1-2-3-, 2-4-3) */
- rwPRIMTYPETRIFAN = 5 , /**<Connected triangles sharing an edge with, at most,
- * two others forming a fan (for example, 3 triangles specified
- * as 0-2-1, 0-3-2, 0-4-3) */
- rwPRIMTYPEPOINTLIST = 6, /**<Points 1, 2, 3, etc. This is not
- * supported by the default RenderWare
- * immediate or retained-mode pipelines
- * (except on PlayStation 2), it is intended
- * for use by user-created pipelines */
- rwPRIMITIVETYPEFORCEENUMSIZEINT = RWFORCEENUMSIZEINT
-};
-typedef enum RwPrimitiveType RwPrimitiveType;
-
-
-
-
-/****************************************************************************
- Function prototypes
- */
-
-#ifdef __cplusplus
-extern "C"
-{
-#endif /* __cplusplus */
-
-/* Expose Z buffer range */
-extern RwReal RwIm2DGetNearScreenZ(void);
-extern RwReal RwIm2DGetFarScreenZ(void);
-
-extern RwBool RwRenderStateGet(RwRenderState state, void *value);
-extern RwBool RwRenderStateSet(RwRenderState state, void *value);
-
-extern RwBool RwIm2DRenderLine(RwIm2DVertex *vertices, RwInt32 numVertices, RwInt32 vert1, RwInt32 vert2);
-extern RwBool RwIm2DRenderTriangle(RwIm2DVertex *vertices, RwInt32 numVertices,
- RwInt32 vert1, RwInt32 vert2, RwInt32 vert3 );
-extern RwBool RwIm2DRenderPrimitive(RwPrimitiveType primType, RwIm2DVertex *vertices, RwInt32 numVertices);
-extern RwBool RwIm2DRenderIndexedPrimitive(RwPrimitiveType primType, RwIm2DVertex *vertices, RwInt32 numVertices,
- RwImVertexIndex *indices, RwInt32 numIndices);
-
-#ifdef __cplusplus
-}
-#endif /* __cplusplus */
-
-
-/*--- Automatically derived from: C:/daily/rwsdk/src/plcore/badevice.h ---*/
-/***************************************************************************/
-/************************* System Requests *********************************/
-/***************************************************************************/
-
-/* Device controls:
- *
- * rwDEVICESYSTEMOPEN(NULL, RwEngineOpenParams *openParams, 0)
- * rwDEVICESYSTEMCLOSE(NULL, NULL, 0)
- * rwDEVICESYSTEMSTART(NULL, NULL, 0)
- * rwDEVICESYSTEMSTOP(NULL, NULL, 0)
- * rwDEVICESYSTEMREGISTER(RwDevice *coreDeviceBlock, RwMemoryFunctions *memFuncs, 0)
- * rwDEVICESYSTEMGETNUMMODES(RwInt32 *numModes, NULL, 0)
- * rwDEVICESYSTEMGETMODEINFO(RwVideoMode *modeinfo, NULL, RwInt32 modeNum)
- * rwDEVICESYSTEMUSEMODE(NULL, NULL, RwInt32 modeNum)
- * rwDEVICESYSTEMFOCUS(NULL, NULL, RwBool gainFocus)
- * rwDEVICESYSTEMINITPIPELINE(NULL, NULL, 0)
- * rwDEVICESYSTEMGETMODE(RwInt32 *curMode, NULL, 0)
- * rwDEVICESYSTEMSTANDARDS(RwStandardFunc *fnPtrArray, NULL, RwInt32 arraySize)
- * rwDEVICESYSTEMGETTEXMEMSIZE(RwInt32 *texMemSizeOut, NULL, 0)
- * rwDEVICESYSTEMGETNUMSUBSYSTEMS(RwInt32 *numSubSystemsOut, NULL, 0)
- * rwDEVICESYSTEMGETSUBSYSTEMINFO(RwSubSystemInfo *subSystemInfo, NULL, RwInt32 subSystemNum)
- * rwDEVICESYSTEMGETCURRENTSUBSYSTEM(RwInt32 *curSubSystem, NULL, 0)
- * rwDEVICESYSTEMSETSUBSYSTEM(NULL, NULL, RwInt32 subSystemNum)
- * rwDEVICESYSTEMFINALIZESTART(NULL, NULL, 0)
- * rwDEVICESYSTEMINITIATESTOP(NULL, NULL, 0)
- * rwDEVICESYSTEMRXPIPELINEREQUESTPIPE(RxPipeline **pipelineRef, NULL, RwInt32 pipeType)
- * rwDEVICESYSTEMDD - start of device specific controls
- */
-
-#define rwPIPETYPEMATERIAL 0
-#define rwPIPETYPEWORLDSECTORINSTANCE 1
-#define rwPIPETYPEATOMICINSTANCE 2
-
-enum RwCoreDeviceSystemFn
-{
- rwDEVICESYSTEMOPEN = 0x00,
- rwDEVICESYSTEMCLOSE,
- rwDEVICESYSTEMSTART,
- rwDEVICESYSTEMSTOP,
- rwDEVICESYSTEMREGISTER,
- rwDEVICESYSTEMGETNUMMODES,
- rwDEVICESYSTEMGETMODEINFO,
- rwDEVICESYSTEMUSEMODE,
- rwDEVICESYSTEMFOCUS,
- rwDEVICESYSTEMINITPIPELINE,
- rwDEVICESYSTEMGETMODE,
- rwDEVICESYSTEMSTANDARDS,
- rwDEVICESYSTEMGETTEXMEMSIZE,
- rwDEVICESYSTEMGETNUMSUBSYSTEMS,
- rwDEVICESYSTEMGETSUBSYSTEMINFO,
- rwDEVICESYSTEMGETCURRENTSUBSYSTEM,
- rwDEVICESYSTEMSETSUBSYSTEM,
- rwDEVICESYSTEMFINALIZESTART,
- rwDEVICESYSTEMINITIATESTOP,
- rwDEVICESYSTEMGETMAXTEXTURESIZE,
- rwDEVICESYSTEMRXPIPELINEREQUESTPIPE,
- rwDEVICESYSTEMGETMETRICBLOCK,
- rwDEVICESYSTEMDD = 0x1000,
- rwCOREDEVICESYSTEMFNFORCEENUMSIZEINT = RWFORCEENUMSIZEINT
-};
-typedef enum RwCoreDeviceSystemFn RwCoreDeviceSystemFn;
-
-/******************************************************************************/
-/********************* Standard functions *************************************/
-/******************************************************************************/
-
-#define rwSTANDARDNASTANDARD 0
-#define rwSTANDARDCAMERABEGINUPDATE 1 /* Start 3d camera update */
-#define rwSTANDARDRGBTOPIXEL 2 /* For an RGB value return a pixel value */
-#define rwSTANDARDPIXELTORGB 3 /* For a pixel value returns a RGB value */
-#define rwSTANDARDRASTERCREATE 4 /* Create an raster */
-#define rwSTANDARDRASTERDESTROY 5 /* Raster destroy */
-#define rwSTANDARDIMAGEGETRASTER 6 /* Get image from a raster */
-#define rwSTANDARDRASTERSETIMAGE 7 /* Set raster from an image */
-#define rwSTANDARDTEXTURESETRASTER 8 /* Set texture's raster */
-#define rwSTANDARDIMAGEFINDRASTERFORMAT 9 /* Find a suitable raster format for an image */
-#define rwSTANDARDCAMERAENDUPDATE 10 /* End 3d camera update */
-#define rwSTANDARDSETRASTERCONTEXT 11 /* Start destination of 2d operations */
-#define rwSTANDARDRASTERSUBRASTER 12 /* Make a raster inside another raster */
-#define rwSTANDARDRASTERCLEARRECT 13 /* Clear a rectangle of the current dest raster */
-#define rwSTANDARDRASTERCLEAR 14 /* Clear the current dest raster */
-#define rwSTANDARDRASTERLOCK 15 /* Lock a raster to get it's pixels */
-#define rwSTANDARDRASTERUNLOCK 16 /* Unlock a raster to return it's pixels */
-#define rwSTANDARDRASTERRENDER 17 /* Render a raster (not scaled, but masked) */
-#define rwSTANDARDRASTERRENDERSCALED 18 /* Render a raster (scaled and masked) */
-#define rwSTANDARDRASTERRENDERFAST 19 /* Render a raster (not scaled or masked) */
-#define rwSTANDARDRASTERSHOWRASTER 20 /* Show a camera raster */
-#define rwSTANDARDCAMERACLEAR 21 /* Clear a camera's raster and/or Z raster */
-#define rwSTANDARDHINTRENDERF2B 22 /* Set hint for rendering direction in the world */
-#define rwSTANDARDRASTERLOCKPALETTE 23 /* Lock a raster to get it's palette */
-#define rwSTANDARDRASTERUNLOCKPALETTE 24 /* Unlock a raster to return it's palette */
-#define rwSTANDARDNATIVETEXTUREGETSIZE 25 /* Get size of native texture when written to a stream */
-#define rwSTANDARDNATIVETEXTUREREAD 26 /* Read native texture from the stream */
-#define rwSTANDARDNATIVETEXTUREWRITE 27 /* Write native texture to the stream */
-#define rwSTANDARDRASTERGETMIPLEVELS 28 /* Get the number of mip levels in a raster */
-#define rwSTANDARDNUMOFSTANDARD 29
-
-/****************************************************************************
- Global Types
- */
-
-/* Standard functions */
-typedef RwBool (*RwStandardFunc)(void *pOut,void *pInOut,RwInt32 nI);
-
-typedef struct RwEngineOpenParams RwEngineOpenParams;
-
-/**
- * \ingroup datatypes
- * \struct RwEngineOpenParams
- * This type is used to specify device dependent parameters
- * for use by the API function \ref RwEngineOpen.
- * For a Windows application the displayID field
- * should be set to the window's handle (of type HWND).
- * For NULL and sky libraries displayID=0:
- */
-struct RwEngineOpenParams
-{
- void *displayID; /**< Display Identifier */
-};
-
-/* nOption is one of a list of possible System defines (see above) */
-typedef RwBool
- (*RwSystemFunc)(RwInt32 nOption,
- void *pOut,
- void *pInOut,
- RwInt32 nIn);
-
-/* Device block */
-typedef RwBool
- (*RwRenderStateSetFunction)(RwRenderState nState,void *pParam);
-
-typedef RwBool
- (*RwRenderStateGetFunction)(RwRenderState nState,void *pParam);
-
-typedef RwBool
- (*RwIm2DRenderLineFunction)(RwIm2DVertex *vertices,
- RwInt32 numVertices,
- RwInt32 vert1,
- RwInt32 vert2);
-
-typedef RwBool
- (*RwIm2DRenderTriangleFunction)(RwIm2DVertex *vertices,
- RwInt32 numVertices,
- RwInt32 vert1,
- RwInt32 vert2,
- RwInt32 vert3);
-
-typedef RwBool
- (*RwIm2DRenderPrimitiveFunction)(RwPrimitiveType primType,
- RwIm2DVertex *vertices,
- RwInt32 numVertices);
-
-typedef RwBool
- (*RwIm2DRenderIndexedPrimitiveFunction)(RwPrimitiveType primType,
- RwIm2DVertex *vertices,
- RwInt32 numVertices,
- RwImVertexIndex *indices,
- RwInt32 numIndices);
-
-typedef RwBool
- (*RwIm3DRenderLineFunction)(RwInt32 vert1,
- RwInt32 vert2);
-
-typedef RwBool
- (*RwIm3DRenderTriangleFunction)(RwInt32 vert1,
- RwInt32 vert2,
- RwInt32 vert3);
-
-typedef RwBool
- (*RwIm3DRenderPrimitiveFunction)(RwPrimitiveType primType);
-
-typedef RwBool
- (*RwIm3DRenderIndexedPrimitiveFunction)(RwPrimitiveType primtype,
- RwImVertexIndex *indices,
- RwInt32 numIndices);
-
-
-typedef struct RwDevice RwDevice;
-/**
- * \ingroup datatypes
- * \struct RwDevice
- * Structure describing a display device
- */
-struct RwDevice
-{
- RwReal gammaCorrection; /**<Gamma correction */
- RwSystemFunc fpSystem; /**< System handler */
- RwReal zBufferNear; /**< Near Z buffer value */
- RwReal zBufferFar; /**< Far Z buffer value */
-
- /* Immediate mode functions */
- RwRenderStateSetFunction fpRenderStateSet; /**< Internal Use */
- RwRenderStateGetFunction fpRenderStateGet; /**< Internal Use */
-
- /* Render functions */
- RwIm2DRenderLineFunction fpIm2DRenderLine; /**< Internal Use */
- RwIm2DRenderTriangleFunction fpIm2DRenderTriangle; /**< Internal Use */
- RwIm2DRenderPrimitiveFunction fpIm2DRenderPrimitive; /**< Internal Use */
- RwIm2DRenderIndexedPrimitiveFunction fpIm2DRenderIndexedPrimitive; /**< Internal Use */
-
- RwIm3DRenderLineFunction fpIm3DRenderLine; /**< Internal Use */
- RwIm3DRenderTriangleFunction fpIm3DRenderTriangle; /**< Internal Use */
- RwIm3DRenderPrimitiveFunction fpIm3DRenderPrimitive; /**< Internal Use */
- RwIm3DRenderIndexedPrimitiveFunction fpIm3DRenderIndexedPrimitive; /**< Internal Use */
-};
-
-typedef struct RwMetrics RwMetrics;
-/**
- * \ingroup datatypes
- * \struct RwMetrics
- * This structure provides information about the performance
- * of the application. The metrics are recorded only in the metrics
- * libraries. To use metrics you should compile with the RWMETRICS
- * preprocessor symbol defines, and link with the metrics libraries
- * that ship with the SDK. The metrics are recorded on a per-frame
- * basis. Each platform may provide additional information that
- * is specific to that platform. Note that either the
- * \ref numTextureUploads or \ref numResourceAllocs being non-zero can
- * be considered as bad news and will indicate a significantly
- * reduced rendering performance.
- */
-struct RwMetrics
-{
- RwUInt32 numTriangles; /**< Number of triangles processed */
- RwUInt32 numProcTriangles; /**< Number of mesh triangles processed */
- RwUInt32 numVertices; /**< Number of vertices processed */
- RwUInt32 numTextureUploads; /**< Number of textures swapped */
- RwUInt32 sizeTextureUploads; /**< Size of textures swapped */
- RwUInt32 numResourceAllocs; /**< Number of resource blocks swapped */
- void *devSpecificMetrics; /**< Device specific metrics */
-};
-
-#define SUBSYSTEMNAME_MAXLEN 80
-
-typedef struct RwSubSystemInfo RwSubSystemInfo;
-/**
- * \ingroup datatypes
- * \struct RwSubSystemInfo
- * This type is used to represent information about a device.
- * The only available field specifies a character string
- * which identifies the subsystem
- * (see API function \ref RwEngineGetSubSystemInfo). */
-struct RwSubSystemInfo
-{
- RwChar name[SUBSYSTEMNAME_MAXLEN]; /**< Sub system string */
-};
-
-
-/* Video modes */
-/* These are flag bits which may be ORd */
-
-/**
- * \ingroup datatypes
- * RwVideoModeFlag
- * These flags specify the type of display that RenderWare
- * will use. The flags may be OR'd together to build composite modes.
- * Note that not all modes are supported on all platforms.
- */
-enum RwVideoModeFlag
-{
- rwVIDEOMODEEXCLUSIVE = 0x1, /**<Exclusive (i.e. full-screen) */
- rwVIDEOMODEINTERLACE = 0x2, /**<Interlaced */
- rwVIDEOMODEFFINTERLACE = 0x4, /**<Flicker Free Interlaced */
- rwVIDEOMODEFSAA0 = 0x8, /**< \if sky2
- * Full-screen antialiasing mode 0
- * \endif */
- rwVIDEOMODEFSAA1 = 0x10, /**< \if sky2
- * Full-screen antialiasing mode 1
- * \endif */
- rwVIDEOMODEFLAGFORCEENUMSIZEINT = RWFORCEENUMSIZEINT
-};
-typedef enum RwVideoModeFlag RwVideoModeFlag;
-
-typedef struct RwVideoMode RwVideoMode;
-/**
- * \ingroup datatypes
- * \struct RwVideoMode
- * This type represents a video mode available on a device specified
- * by the frame buffer resolution (width and height) and depth,
- * and a flag indicating whether the device has exclusive use of
- * the mode (see API function \ref RwEngineGetVideoModeInfo): */
-struct RwVideoMode
-{
- RwInt32 width; /**< Width */
- RwInt32 height; /**< Height */
- RwInt32 depth; /**< Depth */
- RwVideoModeFlag flags; /**< Flags */
-};
-
-/**
- * \ingroup datatypes
- * RwEngineInitFlag
- * Engine initialization flags. An application can use
- * these to control the memory manager that RenderWare uses for dynamic
- * memory management. By default RenderWare uses FreeLists. This is the
- * preferred way of using RenderWare. If the application does not want
- * RenderWare to use the memory manager, then the application can pass
- * rwENGINEINITNOFREELISTS as the argument to \ref RwEngineInit and
- * RenderWare will replace freelist calls to corresponding calls to
- * RwMalloc and RwFree. This will result in more memory management
- * related calls.
- */
-enum RwEngineInitFlag
-{
- rwENGINEINITFREELISTS = 0, /**<Use Freelists */
- rwENGINEINITNOFREELISTS = 0x1, /**<Don't use Freelists */
- rwENGINEINITFLAGFORCEENUMSIZEINT = RWFORCEENUMSIZEINT
-};
-typedef enum RwEngineInitFlag RwEngineInitFlag;
-
-/****************************************************************************
- Function prototypes
- */
-
-#ifdef __cplusplus
-extern "C"
-{
-#endif /* __cplusplus */
-
-/* Get the library binary version */
-extern RwInt32 RwEngineGetVersion(void);
-
-/* Sequence of events to get RenderWare up and running */
-extern RwBool RwEngineInit(RwMemoryFunctions *memFuncs, RwUInt32 initFlags, RwUInt32 resArenaSize);
-extern RwInt32 RwEngineRegisterPlugin(RwInt32 size, RwUInt32 pluginID,
- RwPluginObjectConstructor initCB,
- RwPluginObjectDestructor termCB);
-extern RwInt32 RwEngineGetPluginOffset(RwUInt32 pluginID);
-extern RwBool RwEngineOpen(RwEngineOpenParams *initParams);
-extern RwBool RwEngineStart(void);
-extern RwBool RwEngineStop(void);
-extern RwBool RwEngineClose(void);
-extern RwBool RwEngineTerm(void);
-
-/* Finding out about the rendering sub systems available */
-extern RwInt32 RwEngineGetNumSubSystems(void);
-extern RwSubSystemInfo *RwEngineGetSubSystemInfo(RwSubSystemInfo *subSystemInfo, RwInt32 subSystemIndex);
-extern RwInt32 RwEngineGetCurrentSubSystem(void);
-extern RwBool RwEngineSetSubSystem(RwInt32 subSystemIndex);
-
-/* Finding out about the modes available */
-extern RwInt32 RwEngineGetNumVideoModes(void);
-extern RwVideoMode *RwEngineGetVideoModeInfo(RwVideoMode *modeinfo, RwInt32 modeIndex);
-extern RwInt32 RwEngineGetCurrentVideoMode(void);
-extern RwBool RwEngineSetVideoMode(RwInt32 modeIndex);
-
-/* Finding out how much texture memory is available */
-extern RwInt32 RwEngineGetTextureMemorySize(void);
-extern RwInt32 RwEngineGetMaxTextureSize(void);
-
-/* Getting/Releasing the focus */
-extern RwBool RwEngineSetFocus(RwBool enable);
-
-/* Getting metrics */
-extern RwMetrics *RwEngineGetMetrics(void);
-
-#ifdef __cplusplus
-}
-#endif /* __cplusplus */
-
-
-/*--- Automatically derived from: C:/daily/rwsdk/src/plcore/bafsys.h ---*/
-
-/****************************************************************************
- Global Types
- */
-
-/*
- * \typedef rwFnFexist
- * Returns TRUE if file with given name exists, FALSE if it doesn't.
- */
-typedef RwBool (*rwFnFexist)(const RwChar *name);
-
-/*
- * \typedef rwFnFopen
- * Mimics ANSI C Standard Library fopen.
- */
-typedef void *(*rwFnFopen)(const RwChar *name, const RwChar *mode);
-
-/*
- * \typedef rwFnFclose
- * Mimics ANSI C Standard Library fclose.
- */
-typedef int (*rwFnFclose)(void *fptr);
-
-/*
- * \typedef rwFnFread
- * Mimics ANSI C Standard Library fread.
- */
-typedef size_t (*rwFnFread)(void *addr, size_t size, size_t count, void *fptr);
-
-/*
- * \typedef rwFnFwrite
- * Mimics ANSI C Standard Library fwrite.
- */
-typedef size_t (*rwFnFwrite)(const void *addr, size_t size, size_t count, void *fptr);
-
-/*
- * \typedef rwFnFgets
- * Mimics ANSI C Standard Library fgets.
- */
-typedef RwChar *(*rwFnFgets)(RwChar *buffer, int maxLen, void *fptr);
-
-/*
- * \typedef rwFnFputs
- * Mimics ANSI C Standard Library fputs.
- */
-typedef int (*rwFnFputs)(const RwChar *buffer, void *fptr);
-
-/*
- * \typedef rwFnFeof
- * Mimics ANSI C Standard Library feof.
- */
-typedef int (*rwFnFeof)(void *fptr);
-
-/*
- * \typedef rwFnFseek
- * Mimics ANSI C Standard Library fseek.
- */
-typedef int (*rwFnFseek)(void *fptr, long offset, int origin);
-
-/*
- * \typedef rwFnFflush
- * Mimics ANSI C Standard Library fflush.
- */
-typedef int (*rwFnFflush)(void *fptr);
-
-/*
- * \typedef rwFnFtell
- * Mimics ANSI C Standard Library ftell.
- */
-typedef int (*rwFnFtell)(void *fptr);
-
-
-/**
- * \ingroup datatypes
- * \typedef RwFileFunctions
- * typedef for struct RwFileFunctions
- */
-typedef struct RwFileFunctions RwFileFunctions;
-/**
- * \ingroup datatypes
- * \struct RwFileFunctions
- * This type is used to specify the file access
- * functions used by RenderWare. The default file system uses the standard
- * ANSI functions. The application may install an alternative file system
- * providing it complies with the ANSI interface -- see API
- * function \ref RwOsGetFileInterface.
- *
- * The function types associated with this type are defined as follows
- *
- * \verbatim
- RwBool (*rwFnFexist)(const RwChar *name)
- void *(*rwFnFopen)(const RwChar *name, const RwChar *access)
- int (*rwFnFclose)(void *fptr)
- size_t (*rwFnFread)(void *addr, size_t size, size_t count, void *fptr)
- size_t (*rwFnFwrite)(const void *addr, size_t size, size_t count,
- void *fptr)
- RwChar *(*rwFnFgets)(RwChar *buffer, int maxLen, void *fptr)
- int (*rwFnFputs)(const RwChar *buffer, void *fptr)
- int (*rwFnFeof)(void *fptr)
- int (*rwFnFseek)(void *fptr, long offset, int origin)
- int (*rwFnFflush)(void *fptr)
- int (*rwFnFtell)(void *fptr)
- \endverbatim
- * Note the function argument lists are consistent with the ANSI
- * standard file access interface:
- */
-struct RwFileFunctions
-{
- rwFnFexist rwfexist; /**< Pointer to fexist function */
- rwFnFopen rwfopen; /**< Pointer to fopen function */
- rwFnFclose rwfclose; /**< Pointer to fclose function */
- rwFnFread rwfread; /**< Pointer to fread function */
- rwFnFwrite rwfwrite; /**< Pointer to fwrite function */
- rwFnFgets rwfgets; /**< Pointer to fgets function */
- rwFnFputs rwfputs; /**< Pointer to puts function */
- rwFnFeof rwfeof; /**< Pointer to feof function */
- rwFnFseek rwfseek; /**< Pointer to fseek function */
- rwFnFflush rwfflush; /**< Pointer to fflush function */
- rwFnFtell rwftell; /**< Pointer to ftell function */
-};
-
-
-#ifdef __cplusplus
-extern "C"
-{
-#endif /* __cplusplus */
-
-extern RwFileFunctions *RwOsGetFileInterface(void);
-
-#ifdef __cplusplus
-}
-#endif /* __cplusplus */
-
-
-/*--- Automatically derived from: C:/daily/rwsdk/src/plcore/baerr.h ---*/
-/****************************************************************************
- Global Types
- */
-
-typedef struct RwError RwError;
-/**
- * \ingroup datatypes
- * \struct RwError
- * This type represents a RenderWare error specified by the
- * ID of the plugin that the error was issued from (pluginID) and the error
- * code itself (errorCode) (see API function \ref RwErrorGet).
- * \param pluginID The ID of the plugin that issued the error.
- * \param errorCode A value representing the error code.
- */
-struct RwError
-{
- RwInt32 pluginID; /**< Internal Use */
- RwInt32 errorCode; /**< Internal Use */
-};
-
-#define RWECODE(a,b) a,
-
-/* common errors have the MSB set */
-
-enum RwErrorCodeCommon
-{
- E_RW_NOERROR = (int)0x80000000L,
-#include "errcom.def"
- E_RW_LASTERROR = RWFORCEENUMSIZEINT
-};
-typedef enum RwErrorCodeCommon RwErrorCodeCommon;
-
-#undef RWECODE
-
-/****************************************************************************
- Function prototypes
- */
-
-#ifdef __cplusplus
-extern "C"
-{
-#endif /* __cplusplus */
-
-extern RwError *RwErrorGet(RwError *code);
-extern RwError *RwErrorSet(RwError *code);
-extern RwInt32 _rwerror(RwInt32 code, ...);
-
-#ifdef __cplusplus
-}
-#endif /* __cplusplus */
-
-
-/*--- Automatically derived from: C:/daily/rwsdk/src/plcore/badebug.h ---*/
-
-/****************************************************************************
- Global Types
- */
-
-/**
- * \ingroup datatypes
- * RwDebugType
- * This type represents the different types of debug and
- * trace messages that can be sent to the currently installed debug handler
- * (see API function \ref RwDebugSendMessage)*/
-enum RwDebugType
-{
- rwNADEBUGTYPE = 0, /**<Invalid */
- rwDEBUGASSERT, /**<Send an assert message */
- rwDEBUGERROR, /**<Send an error message */
- rwDEBUGMESSAGE, /**<Send an informational message */
- rwDEBUGTRACE, /**<Send a trace message */
- rwDEBUGTYPEFORCEENUMSIZEINT = RWFORCEENUMSIZEINT
-};
-typedef enum RwDebugType RwDebugType;
-
-/**
- * \ingroup datatypes
- * \ref RwDebugHandler
- * This type represents the
- * function called from \ref RwDebugSendMessage for sending a message to the
- * RenderWare debug stream.
- *
- * \param type Type of debug message (assert, error, etc.).
- *
- * \param string Pointer to a string containing the error
- * message.
- *
- * \see RwDebugSetHandler
- */
-typedef void (*RwDebugHandler) (RwDebugType type,
-
- const RwChar * string);
-
-#ifdef RWDEBUG
-
-#define RwDebugSendMessage(type, funcName, message) \
- _rwDebugSendMessage(type, \
- RWSTRING(__FILE__), \
- __LINE__, \
- funcName, \
- message)
-
-/****************************************************************************
- Function prototypes
- */
-
-#ifdef __cplusplus
-extern "C"
-{
-#endif /* __cplusplus */
-
-/* Setting the debug message handler */
-extern RwDebugHandler RwDebugSetHandler(RwDebugHandler handler);
-extern void RwDebugSetTraceState(RwBool state);
-
-extern void _rwDebugSendMessage(RwDebugType type,
- const RwChar * file,
- const RwInt32 line,
- const RwChar * funcName,
- const RwChar * message);
-
-/* Sending a message */
-extern RwChar *_rwdberrcommon(RwInt32 code, ...);
-extern RwChar *_rwdbsprintf(const RwChar * format,
- ...) __RWFORMAT__(printf, 1, 2);
-
-
-#ifdef __cplusplus
-}
-#endif /* __cplusplus */
-
-#else /* RWDEBUG */
-
-#define RwDebugSetHandler(handler)
-#define RwDebugSetTraceState(state)
-#define RwDebugSendMessage(type, funcName, message)
-
-#if (!defined(RWREGSETDEBUGTRACE))
-#define RWREGSETDEBUGTRACE(_name) /* No op */
-#endif /* (!defined(RWREGSETDEBUGTRACE)) */
-
-#endif /* RWDEBUG */
-
-
-/*--- Automatically derived from: C:/daily/rwsdk/src/plcore/balibtyp.h ---*/
-/* Finding MSBs */
-
-#define RWBYTEFINDMSB(a) \
- (_rwMsbBit[(a)]-1)
-
-#define RWWORDFINDMSB(a) \
- (((a)&0xff00)?RWBYTEFINDMSB((a)>>8)+8: RWBYTEFINDMSB(a))
-
-#define RWLONGFINDMSB(a) \
- (((a)&0xffff0000UL)?RWWORDFINDMSB((a)>>16)+16: RWWORDFINDMSB(a))
-
-/****************************************************************************
- Defines
- */
-
-/* macros used to access plugin data in objects */
-#define RWPLUGINOFFSET(_type, _base, _offset) \
- ((_type *)((RwUInt8 *)(_base) + (_offset)))
-
-#define RWPLUGINOFFSETCONST(_type, _base, _offset) \
- ((const _type *)((const RwUInt8 *)(_base) + (_offset)))
-
-/* macro used to access global data structure (the root type is RwGlobals) */
-#define RWSRCGLOBAL(variable) \
- (((RwGlobals *)RwEngineInstance)->variable)
-
-#define RWASSERTISTYPE(_f, _t) \
- RWASSERT((((const RwObject *)(_f))->type)==(_t))
-
-/****************************************************************************
- Global Types
- */
-
-enum RwEngineStatus
-{
- rwENGINESTATUSIDLE = 0, /* This needs to be zero */
- rwENGINESTATUSINITED = 1,
- rwENGINESTATUSOPENED = 2,
- rwENGINESTATUSSTARTED = 3,
- rwENGINESTATUSFORCEENUMSIZEINT = RWFORCEENUMSIZEINT
-};
-typedef enum RwEngineStatus RwEngineStatus;
-
-typedef struct RwGlobals RwGlobals;
-struct RwGlobals
-{
-#ifdef RWDEBUG
- RwDebugHandler debugFunction; /* debug string handler */
- void *debugFile; /* debug output file */
- RwInt32 debugStackDepth; /* current depth of function stack */
- RwBool debugTrace; /* is function tracing enabled */
-#endif
-
- /* Current entities */
- void *curCamera; /* Current camera */
- void *curWorld; /* Current World */
-
- /* Checking counters */
- RwUInt16 renderFrame; /* Camera display count */
- RwUInt16 lightFrame; /* Used to ensure each light is applied only once. */
- RwUInt16 pad[2]; /* Longword align it again */
-
- /* For the currently accessed device */
- RwDevice dOpenDevice;
-
- /* Standard renderers and functions */
- RwStandardFunc stdFunc[rwSTANDARDNUMOFSTANDARD];
-
- /* All of the frames which have been updated */
- RwLinkList dirtyFrameList;
-
- /* The file functions */
- RwFileFunctions fileFuncs;
-
- /* The string functions */
- RwStringFunctions stringFuncs;
-
- /* The memory allocation functions */
- RwMemoryFunctions memoryFuncs;
-#ifdef RWDEBUG
- RwBool freeListExtraDebug;
-#endif /* RWDEBUG */
-
- /* virtual memory alloc/free functions */
- RwMemoryAllocFn memoryAlloc;
- RwMemoryFreeFn memoryFree;
-
- RwMetrics *metrics;
-
- /* Current engine status */
- RwEngineStatus engineStatus;
-
- /* Resource arena init size. */
- RwUInt32 resArenaInitSize;
-};
-
-typedef struct RwModuleInfo RwModuleInfo;
-struct RwModuleInfo
-{
- RwInt32 globalsOffset;
- RwInt32 numInstances;
-};
-
-
-
-/****************************************************************************
- Program wide globals
- */
-
-#ifdef __cplusplus
-extern "C"
-{
-#endif /* __cplusplus */
-
-#ifdef RWGLOBALSIZE
-extern RwUInt32 ourGlobals[RWGLOBALSIZE / sizeof(RwUInt32)];
-#define RwEngineInstance ourGlobals
-#else /* RWGLOBALSIZE */
-extern void *RwEngineInstance;
-#endif /* RWGLOBALSIZE */
-
-extern RwInt8 _rwMsbBit[];
-
-#ifdef __cplusplus
-}
-#endif /* __cplusplus */
-
-
-/*--- Automatically derived from: C:/daily/rwsdk/src/plcore/baresour.h ---*/
-
-#define RWRESOURCESGLOBAL(var) (RWPLUGINOFFSET(rwResourcesGlobals, \
- RwEngineInstance, resourcesModule.globalsOffset)->var)
-
-/**
- * \ingroup datatypes
- * \typedef RwResEntry
- * RwResEntry object. Instanced data block in resources arena.
- * This should be considered an opaque
- * type. Use the RwResEntry API functions to access.
- */
-typedef struct RwResEntry RwResEntry;
-
-/**
- * \ingroup datatypes
- * \typedef RwResEntryDestroyNotify
- * This type represents the function
- * called from \ref RwResourcesFreeResEntry (and indirectly from
- * \ref RwResourcesEmptyArena) immediately before the memory used by the
- * specified resources entry is released.
- *
- * \param resEntry Pointer to the instanced data.
- */
-typedef void (*RwResEntryDestroyNotify) (RwResEntry * resEntry);
-
-#if (!defined(DOXYGEN))
-struct RwResEntry
-{
- RwLLLink link; /**< Node in the list of resource elements */
- RwInt32 size; /**< Size of this node */
- void *owner; /**< Owner of this node */
- RwResEntry **ownerRef; /**< Pointer to pointer to this (enables de-alloc) */
- RwResEntryDestroyNotify destroyNotify; /**< This is called right before destruction */
-};
-#endif /* (!defined(DOXYGEN)) */
-
-typedef struct rwResources rwResources;
-struct rwResources
-{
- RwInt32 maxSize;
- RwInt32 currentSize;
- RwInt32 reusageSize;
-
- void *memHeap;
-
- RwLinkList entriesA;
- RwLinkList entriesB;
-
- RwLinkList *freeEntries;
- RwLinkList *usedEntries;
-};
-
-typedef struct rwResourcesGlobals rwResourcesGlobals;
-struct rwResourcesGlobals
-{
- rwResources res;
-};
-
-
-#ifdef __cplusplus
-extern "C"
-{
-#endif /* __cplusplus */
-
-/* Setting the resources arena size */
-extern RwBool RwResourcesSetArenaSize(RwUInt32 size);
-extern RwInt32 RwResourcesGetArenaSize(void);
-extern RwInt32 RwResourcesGetArenaUsage(void);
-extern RwBool RwResourcesEmptyArena(void);
-
-/* Allocate */
-extern RwResEntry *RwResourcesAllocateResEntry(void *owner,
- RwResEntry **ownerRef,
- RwInt32 size,
- RwResEntryDestroyNotify
- destroyNotify);
-/* Deallocate */
-extern RwBool RwResourcesFreeResEntry(RwResEntry * entry);
-/* Mark all as unused */
-extern void _rwResourcesPurge(void);
-#if ((defined(RWDEBUG)) || (defined(RWSUPPRESSINLINE)))
-/* Mark as used */
-extern RwResEntry *RwResourcesUseResEntry(RwResEntry * entry);
-#endif /* ((defined(RWDEBUG)) || (defined(RWSUPPRESSINLINE))) */
-
-extern RwModuleInfo resourcesModule;
-
-
-#ifdef __cplusplus
-}
-#endif /* __cplusplus */
-
-#if ((!defined(RWDEBUG)) && (!defined(RWSUPPRESSINLINE)))
-#define RwResourcesUseResEntry(_ntry) \
- ((((_ntry)->link.next)? \
- (rwLinkListRemoveLLLink(&((_ntry)->link)), \
- rwLinkListAddLLLink(RWRESOURCESGLOBAL(res.usedEntries), \
- &((_ntry)->link))): \
- NULL), \
- (_ntry))
-#endif /* ((!defined(RWDEBUG)) && (!defined(RWSUPPRESSINLINE))) */
-
-
-/*--- Automatically derived from: C:/daily/rwsdk/src/plcore/bacolor.h ---*/
-/****************************************************************************
- Global Types
- */
-
-typedef struct RwRGBAReal RwRGBAReal;
-/**
- * \ingroup datatypes
- * \struct RwRGBAReal
- * This structure represents a RGBA color which has
- * components specified as real values.
- *
- * A color component of an RwRGBA with the value 255 generally corresponds
- * to the associated component in an RwRGBAReal with the value 1.0f.
- * However, any values can be substituted to denormalize/normalize
- * RwRGBAReal and create different effects. For example, while light colors
- * are expressed as normalized RGBA, interesting effects can be gained using
- * larger values.
- *
- * It should also be noted that a color component of an RwRGBA with the
- * value 0 generally corresponds to the associcated component in an
- * RwRGBAReal with the value 0.0.
- */
-struct RwRGBAReal
-{
- RwReal red; /**< red component */
- RwReal green; /**< green component */
- RwReal blue; /**< blue component */
- RwReal alpha; /**< alpha component */
-};
-
-#if (!defined(RwRGBARealAssign))
-#define RwRGBARealAssign(_target, _source) \
- ( *(_target) = *(_source) )
-#endif /* (!defined(RwRGBARealAssign)) */
-
-typedef struct RwRGBA RwRGBA;
-/**
- * \ingroup datatypes
- * \struct RwRGBA
- * This structure represents a RGBA color
- * which has integer components specified in the range 0 to 255. */
-struct RwRGBA
-{
- RwUInt8 red; /**< red component */
- RwUInt8 green; /**< green component */
- RwUInt8 blue; /**< blue component */
- RwUInt8 alpha; /**< alpha component */
-};
-
-#if (!defined(RwRGBAAssign))
-#define RwRGBAAssign(_target, _source) \
- ( *(_target) = *(_source) )
-#endif /* (!defined(RwRGBAAssign)) */
-
-#define RwRGBARealAddMacro(o,a,b) \
-MACRO_START \
-{ \
- (o)->red = (((a)->red) + ( (b)->red)); \
- (o)->green = (((a)->green) + ( (b)->green)); \
- (o)->blue = (((a)->blue) + ( (b)->blue)); \
- (o)->alpha = (((a)->alpha) + ( (b)->alpha)); \
-} \
-MACRO_STOP
-
-#define RwRGBARealSubMacro(o,a,b) \
-MACRO_START \
-{ \
- (o)->red = (((a)->red) - ( (b)->red)); \
- (o)->green = (((a)->green) - ( (b)->green)); \
- (o)->blue = (((a)->blue) - ( (b)->blue)); \
- (o)->alpha = (((a)->alpha) - ( (b)->alpha)); \
-} \
-MACRO_STOP
-
-#define RwRGBARealScaleMacro(o,a,scale) \
-MACRO_START \
-{ \
- (o)->red = (((a)->red) * ( scale)); \
- (o)->green = (((a)->green) * ( scale)); \
- (o)->blue = (((a)->blue) * ( scale)); \
- (o)->alpha = (((a)->alpha) * ( scale)); \
-} \
-MACRO_STOP
-
-/* Conversion macros */
-#define RwRGBAFromRwRGBARealMacro(o, i) \
-MACRO_START \
-{ \
- RwInt32 quantize; \
- \
- quantize = RwInt32FromRealMacro( ((i)->red * (RwReal)255.0) \
- + (RwReal)0.5 ); \
- (o)->red = (RwUInt8) quantize; \
- quantize = RwInt32FromRealMacro( ((i)->green * (RwReal)255.0) \
- + (RwReal)0.5 ); \
- (o)->green = (RwUInt8) quantize; \
- quantize = RwInt32FromRealMacro( ((i)->blue * (RwReal)255.0) \
- + (RwReal)0.5 ); \
- (o)->blue = (RwUInt8) quantize; \
- quantize = RwInt32FromRealMacro( ((i)->alpha * (RwReal)255.0) \
- + (RwReal)0.5 ); \
- (o)->alpha = (RwUInt8) quantize; \
- \
-} \
-MACRO_STOP
-
-#define RwRGBARealFromRwRGBAMacro(o, i) \
-MACRO_START \
-{ \
- (o)->red = \
- (((RwReal)(((i)->red))) * ( (RwReal)((1.0/255.0)))); \
- (o)->green = \
- (((RwReal)(((i)->green))) * ( (RwReal)((1.0/255.0)))); \
- (o)->blue = \
- (((RwReal)(((i)->blue))) * ( (RwReal)((1.0/255.0)))); \
- (o)->alpha = \
- (((RwReal)(((i)->alpha))) * ( (RwReal)((1.0/255.0)))); \
-} \
-MACRO_STOP
-
-/****************************************************************************
- Function prototypes
- */
-
-#ifdef __cplusplus
-extern "C"
-{
-#endif /* __cplusplus */
-
-
-#if (! ( defined(RWDEBUG) || defined(RWSUPPRESSINLINE) ))
-
-#define RwRGBARealAdd(o,a,b) \
- RwRGBARealAddMacro(o,a,b)
-
-#define RwRGBARealSub(o,a,b) \
- RwRGBARealSubMacro(o,a,b)
-
-#define RwRGBARealScale(o,a,scale) \
- RwRGBARealScaleMacro(o,a,scale)
-
-#define RwRGBAFromRwRGBAReal(o, i) \
- RwRGBAFromRwRGBARealMacro(o, i)
-
-#define RwRGBARealFromRwRGBA(o, i) \
- RwRGBARealFromRwRGBAMacro(o, i)
-
-#else /* (! ( defined(RWDEBUG) || defined(RWSUPPRESSINLINE) )) */
-
-/* Function versions for debug */
-extern void RwRGBARealAdd(RwRGBAReal *result,
- const RwRGBAReal *source1,
- const RwRGBAReal *source2);
-
-extern void RwRGBARealSub(RwRGBAReal *result,
- const RwRGBAReal *source1,
- const RwRGBAReal *source2);
-
-extern void RwRGBARealScale(RwRGBAReal *result,
- const RwRGBAReal *source,
- RwReal scalar);
-
-extern void RwRGBAFromRwRGBAReal(RwRGBA *result,
- const RwRGBAReal *source);
-
-extern void RwRGBARealFromRwRGBA(RwRGBAReal *result,
- RwRGBA *source);
-
-#endif /* (! ( defined(RWDEBUG) || defined(RWSUPPRESSINLINE) )) */
-
-#ifdef __cplusplus
-}
-#endif /* __cplusplus */
-
-
-/*--- Automatically derived from: C:/daily/rwsdk/src/plcore/babinmtx.h ---*/
-
-/****************************************************************************
- Global types
- */
-
-/* Matrix stream format */
-typedef struct rwStreamMatrix RwMatrixChunkInfo;
-typedef struct rwStreamMatrix rwStreamMatrix;
-struct rwStreamMatrix
-{
- RwV3d right;
- RwV3d up;
- RwV3d at;
- RwV3d pos;
- RwInt32 type;
-};
-
-
-/****************************************************************************
- Function prototypes
- */
-
-#ifdef __cplusplus
-extern "C"
-{
-#endif /* __cplusplus */
-
-/* Matrix binary format */
-extern RwUInt32 RwMatrixStreamGetSize(const RwMatrix * matrix);
-extern RwMatrix *RwMatrixStreamRead(RwStream * stream,
- RwMatrix * matrix);
-extern const RwMatrix *RwMatrixStreamWrite(const RwMatrix * matrix,
- RwStream * stream);
-extern RwMatrixChunkInfo *RwMatrixChunkInfoRead(RwStream * stream,
- RwMatrixChunkInfo *
- matrixChunkInfo,
- RwInt32 * bytesRead);
-
-#ifdef __cplusplus
-}
-#endif /* __cplusplus */
-
-
-/*--- Automatically derived from: C:/daily/rwsdk/src/plcore/babinary.h ---*/
-/****************************************************************************
- Defines
- */
-
-#ifndef rwCHUNKHEADERSIZE
-#define rwCHUNKHEADERSIZE (sizeof(RwUInt32)*3)
-#endif /* rwCHUNKHEADERSIZE */
-
-/* Compatibility macro */
-#define RwStreamWriteInt(_stream, _ints, _numBytes) \
- RwStreamWriteInt32(_stream, _ints, _numBytes)
-
-#define RwStreamReadInt(_stream, _ints, _numBytes) \
- RwStreamReadInt32(_stream, _ints, _numBytes)
-
-#define RwMemLittleEndian(_mem, _size) \
- RwMemLittleEndian32(_mem, _size)
-
-#define RwMemNative(_mem, _size) \
- RwMemNative32(_mem, _size)
-
-/****************************************************************************
- Global Types
- */
-
-typedef struct RwChunkHeaderInfo RwChunkHeaderInfo;
-/**
- * \ingroup datatypes
- * \struct RwChunkHeaderInfo
- * Holds data for a chunk header read from a
- * stream with \ref RwStreamReadChunkHeaderInfo. */
-struct RwChunkHeaderInfo
-{
- RwUInt32 type; /**< chunk ID - see \ref RwStreamFindChunk */
- RwUInt32 length; /**< length of the chunk data in bytes */
- RwUInt32 version; /**< version of the chunk data.
- * See \ref RwEngineGetVersion. */
- RwUInt32 buildNum; /**< build number of the RenderWare libraries
- * previously used to stream out the data */
- RwBool isComplex; /**< Internal Use */
-};
-
-/****************************************************************************
- Function prototypes
- */
-
-#ifdef __cplusplus
-extern "C"
-{
-#endif /* __cplusplus */
-
-/* Chunk header stuff */
-extern RwBool RwStreamFindChunk(RwStream *stream, RwUInt32 type,
- RwUInt32 *lengthOut, RwUInt32 *versionOut);
-
-#define RwStreamWriteChunkHeader(stream, type, size) \
- _rwStreamWriteVersionedChunkHeader( \
- stream, type, size, rwLIBRARYCURRENTVERSION, RWBUILDNUMBER)
-
-extern RwStream *_rwStreamWriteVersionedChunkHeader(RwStream *stream,
- RwInt32 type,
- RwInt32 size,
- RwUInt32 version,
- RwUInt32 buildNum);
-
-extern RwStream *RwStreamWriteReal(RwStream *stream, const RwReal *reals,
- RwUInt32 numBytes);
-extern RwStream *RwStreamWriteInt32(RwStream *stream, const RwInt32 *ints,
- RwUInt32 numBytes);
-extern RwStream *RwStreamWriteInt16(RwStream *stream, const RwInt16 *ints,
- RwUInt32 numBytes);
-
-extern RwStream *RwStreamReadReal(RwStream *stream, RwReal *reals,
- RwUInt32 numBytes);
-extern RwStream *RwStreamReadInt32(RwStream *stream, RwInt32 *ints,
- RwUInt32 numBytes);
-extern RwStream *RwStreamReadInt16(RwStream *stream, RwInt16 *ints,
- RwUInt32 numBytes);
-
-/* Binary Portability Functions */
-extern void *RwMemLittleEndian16(void *mem, RwUInt32 size);
-extern void *RwMemLittleEndian32(void *mem, RwUInt32 size);
-extern void *RwMemNative16(void *mem, RwUInt32 size);
-extern void *RwMemNative32(void *mem, RwUInt32 size);
-extern void *RwMemRealToFloat32(void *mem, RwUInt32 size);
-extern void *RwMemFloat32ToReal(void *mem, RwUInt32 size);
-
-extern RwStream *
-RwStreamReadChunkHeaderInfo(RwStream *stream, RwChunkHeaderInfo *chunkHeaderInfo);
-
-#ifdef __cplusplus
-}
-#endif /* __cplusplus */
-
-#endif /* RWPLCORE_H */