mirror of
https://gitlab.com/GaryOderNichts/re3-wiiu.git
synced 2024-11-25 18:46:52 +01:00
more work on CPhysical
This commit is contained in:
parent
58ebd6c6d4
commit
9e496100b7
13
premake5.lua
13
premake5.lua
@ -7,11 +7,16 @@ workspace "re3"
|
||||
files { "src/modelinfo/*.*" }
|
||||
files { "src/entities/*.*" }
|
||||
files { "src/render/*.*" }
|
||||
files { "src/control/*.*" }
|
||||
files { "src/audio/*.*" }
|
||||
|
||||
includedirs { "src", "src/modelinfo" }
|
||||
includedirs { "src", "src/entities" }
|
||||
includedirs { "src", "src/render" }
|
||||
includedirs { os.getenv("RWSDK33") }
|
||||
includedirs { "src" }
|
||||
includedirs { "src/modelinfo" }
|
||||
includedirs { "src/entities" }
|
||||
includedirs { "src/render" }
|
||||
includedirs { "src/control" }
|
||||
includedirs { "src/audio" }
|
||||
includedirs { "rwsdk/include/d3d8" }
|
||||
|
||||
project "re3"
|
||||
kind "SharedLib"
|
||||
|
793
rwsdk/include/d3d8/baaplylt.c
Normal file
793
rwsdk/include/d3d8/baaplylt.c
Normal file
@ -0,0 +1,793 @@
|
||||
|
||||
/* 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();
|
||||
}
|
60
rwsdk/include/d3d8/errcom.def
Normal file
60
rwsdk/include/d3d8/errcom.def
Normal file
@ -0,0 +1,60 @@
|
||||
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")
|
117
rwsdk/include/d3d8/errcore.def
Normal file
117
rwsdk/include/d3d8/errcore.def
Normal file
@ -0,0 +1,117 @@
|
||||
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")
|
54
rwsdk/include/d3d8/rpanisot.h
Normal file
54
rwsdk/include/d3d8/rpanisot.h
Normal file
@ -0,0 +1,54 @@
|
||||
/**
|
||||
* 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 */
|
639
rwsdk/include/d3d8/rpanisot.rpe
Normal file
639
rwsdk/include/d3d8/rpanisot.rpe
Normal file
@ -0,0 +1,639 @@
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
enum e_rwdb_CriterionLabel
|
||||
{
|
||||
|
||||
|
||||
|
||||
e_rwdb_CriterionLabelLAST = RWFORCEENUMSIZEINT
|
||||
};
|
||||
|
||||
typedef enum e_rwdb_CriterionLabel e_rwdb_CriterionLabel;
|
||||
|
||||
|
372
rwsdk/include/d3d8/rpcollis.h
Normal file
372
rwsdk/include/d3d8/rpcollis.h
Normal file
@ -0,0 +1,372 @@
|
||||
|
||||
/*****************************************************************************
|
||||
*
|
||||
* 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 */
|
||||
|
637
rwsdk/include/d3d8/rpcollis.rpe
Normal file
637
rwsdk/include/d3d8/rpcollis.rpe
Normal file
@ -0,0 +1,637 @@
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
enum e_rwdb_CriterionCollis
|
||||
{
|
||||
|
||||
E_RP_COLLIS_INV_INTERSECTION,
|
||||
|
||||
e_rwdb_CriterionCollisLAST = RWFORCEENUMSIZEINT
|
||||
};
|
||||
|
||||
typedef enum e_rwdb_CriterionCollis e_rwdb_CriterionCollis;
|
||||
|
||||
|
572
rwsdk/include/d3d8/rpcriter.h
Normal file
572
rwsdk/include/d3d8/rpcriter.h
Normal file
@ -0,0 +1,572 @@
|
||||
/* 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 permission 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.
|
||||
*
|
||||
*/
|
90
rwsdk/include/d3d8/rpdbgerr.c
Normal file
90
rwsdk/include/d3d8/rpdbgerr.c
Normal file
@ -0,0 +1,90 @@
|
||||
/*
|
||||
* 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 */
|
||||
|
278
rwsdk/include/d3d8/rpdbgerr.h
Normal file
278
rwsdk/include/d3d8/rpdbgerr.h
Normal file
@ -0,0 +1,278 @@
|
||||
/***************************************************************************
|
||||
* *
|
||||
* 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 */
|
311
rwsdk/include/d3d8/rpdmorph.h
Normal file
311
rwsdk/include/d3d8/rpdmorph.h
Normal file
@ -0,0 +1,311 @@
|
||||
/*****************************************************************************
|
||||
*
|
||||
* File : rpdmorph.h
|
||||
*
|
||||
* Abstract : DeltaMorph plugin for Renderware.
|
||||
*
|
||||
*****************************************************************************
|
||||
*
|
||||
* This file is a product of Criterion Software Ltd.
|
||||
*
|
||||
* This file is provided as is with no warranties of any kind and is
|
||||
* provided without any obligation on Criterion Software Ltd. or
|
||||
* Canon Inc. to assist in its use or modification.
|
||||
*
|
||||
* Criterion Software Ltd. will not, under any
|
||||
* circumstances, be liable for any lost revenue or other damages arising
|
||||
* from the use of this file.
|
||||
*
|
||||
* Copyright (c) 2000 Criterion Software Ltd.
|
||||
* All Rights Reserved.
|
||||
*
|
||||
* RenderWare is a trademark of Canon Inc.
|
||||
*
|
||||
*****************************************************************************/
|
||||
|
||||
#ifndef RPDMORPH_H
|
||||
#define RPDMORPH_H
|
||||
|
||||
/**
|
||||
* \defgroup rpdmorph RpDMorph
|
||||
* \ingroup rpplugin
|
||||
* \file rpdmorph.h
|
||||
*
|
||||
* Delta Morphing Plugin for RenderWare Graphics.
|
||||
*/
|
||||
|
||||
/*===========================================================================*
|
||||
*--- Include files ---------------------------------------------------------*
|
||||
*===========================================================================*/
|
||||
#include <rwcore.h>
|
||||
#include <rpworld.h>
|
||||
|
||||
#include "rpdmorph.rpe" /* automatically generated header file */
|
||||
|
||||
|
||||
/*===========================================================================*
|
||||
*--- Global Types ----------------------------------------------------------*
|
||||
*===========================================================================*/
|
||||
|
||||
/**
|
||||
* \ingroup rpdmorph
|
||||
* \struct RpDMorphTarget
|
||||
* Delta morph target object for defining a target for
|
||||
* a base geometry.
|
||||
* This should be considered an opaque type.
|
||||
* Use the RpDMorphGeometry and RpDMorphTarget API
|
||||
* functions to access.
|
||||
*/
|
||||
typedef struct RpDMorphTarget RpDMorphTarget;
|
||||
|
||||
/**
|
||||
* \ingroup rpdmorph
|
||||
* \struct RpDMorphAnimation
|
||||
* Contains frame sequences for animating delta
|
||||
* morph target objects.
|
||||
* This should be considered an opaque type.
|
||||
* Use the RpDMorphAnimation API
|
||||
* functions to access.
|
||||
*/
|
||||
typedef struct RpDMorphAnimation RpDMorphAnimation;
|
||||
|
||||
#define rpDMORPHNULLFRAME ((RwUInt32)~0)
|
||||
|
||||
/*===========================================================================*
|
||||
*--- Global variables ------------------------------------------------------*
|
||||
*===========================================================================*/
|
||||
|
||||
extern RwModuleInfo rpDMorphModule;
|
||||
|
||||
/*===========================================================================*
|
||||
*--- Plugin API Functions --------------------------------------------------*
|
||||
*===========================================================================*/
|
||||
#ifdef __cplusplus
|
||||
extern "C"
|
||||
{
|
||||
#endif /* __cplusplus */
|
||||
|
||||
/*--- DMorphPlugin functions ------------------------------------------------*/
|
||||
extern RwBool
|
||||
RpDMorphPluginAttach( void );
|
||||
|
||||
/*--- DMorphGeometry functions ----------------------------------------------
|
||||
*
|
||||
* These functios work on the DMorphGeometry level.
|
||||
* Each DMorphGeometry has a list of DMorphTargets.
|
||||
*/
|
||||
extern RpGeometry *
|
||||
RpDMorphGeometryCreateDMorphTargets( RpGeometry *geometry,
|
||||
RwUInt32 number );
|
||||
|
||||
extern RpGeometry *
|
||||
RpDMorphGeometryDestroyDMorphTargets( RpGeometry *geometry );
|
||||
|
||||
extern RpGeometry *
|
||||
RpDMorphGeometryAddDMorphTarget( RpGeometry *geometry,
|
||||
RwUInt32 index,
|
||||
RwV3d *vertices,
|
||||
RwV3d *normals,
|
||||
RwRGBA *preLightColors,
|
||||
RwTexCoords *texCoords,
|
||||
RwUInt32 flags );
|
||||
|
||||
extern RpGeometry *
|
||||
RpDMorphGeometryRemoveDMorphTarget( RpGeometry *geometry,
|
||||
RwUInt32 index );
|
||||
|
||||
extern RpDMorphTarget *
|
||||
RpDMorphGeometryGetDMorphTarget( const RpGeometry *geometry,
|
||||
RwUInt32 index );
|
||||
|
||||
extern RwUInt32
|
||||
RpDMorphGeometryGetNumDMorphTargets( const RpGeometry *geometry );
|
||||
|
||||
extern RpGeometry *
|
||||
RpDMorphGeometryTransformDMorphTargets( RpGeometry *geometry,
|
||||
const RwMatrix *matrix );
|
||||
|
||||
/*--- DMorphTarget functions ------------------------------------------------
|
||||
*
|
||||
* These functios work on the DMorphGeometry level.
|
||||
* Each DMorphGeometry has a list of DMorphTargets.
|
||||
*/
|
||||
|
||||
extern const RwSphere *
|
||||
RpDMorphTargetGetBoundingSphere( const RpDMorphTarget *dMorphTarget );
|
||||
|
||||
extern RpDMorphTarget *
|
||||
RpDMorphTargetSetName( RpDMorphTarget *dMorphTarget,
|
||||
RwChar *name );
|
||||
|
||||
extern RwChar *
|
||||
RpDMorphTargetGetName( RpDMorphTarget *dMorphTarget );
|
||||
|
||||
extern RpGeometryFlag
|
||||
RpDMorphTargetGetFlags( RpDMorphTarget *dMorphTarget );
|
||||
|
||||
|
||||
/*--- ANIMATION SYSTEM ------------------------------------------------------
|
||||
*/
|
||||
|
||||
/*--- DMorphAtomic functions ------------------------------------------------
|
||||
*
|
||||
* These functions work at the DMorphAtomic level.
|
||||
*/
|
||||
extern RpAtomic *
|
||||
RpDMorphAtomicInitalize( RpAtomic *atomic );
|
||||
|
||||
extern RwReal *
|
||||
RpDMorphAtomicGetDMorphValues( RpAtomic *atomic );
|
||||
|
||||
extern RpAtomic *
|
||||
RpDMorphAtomicSetAnimation( RpAtomic *atomic,
|
||||
RpDMorphAnimation *animation );
|
||||
|
||||
extern RpDMorphAnimation *
|
||||
RpDMorphAtomicGetAnimation( const RpAtomic *atomic );
|
||||
|
||||
extern RpAtomic *
|
||||
RpDMorphAtomicAddTime( RpAtomic *atomic,
|
||||
RwReal time );
|
||||
|
||||
extern RwReal
|
||||
RpDMorphAtomicGetAnimTime( const RpAtomic *atomic );
|
||||
|
||||
extern RpAtomic *
|
||||
RpDMorphAtomicSetAnimLoopCallBack( RpAtomic *atomic,
|
||||
RpAtomicCallBack callBack,
|
||||
void *data );
|
||||
|
||||
extern RpAtomicCallBack
|
||||
RpDMorphAtomicGetAnimLoopCallBack( const RpAtomic *atomic,
|
||||
void **callBackData );
|
||||
|
||||
extern RpAtomic *
|
||||
RpDMorphAtomicSetAnimFrame( RpAtomic *atomic,
|
||||
RwUInt32 dMorphTargetIndex,
|
||||
RwUInt32 index );
|
||||
|
||||
extern RwUInt32
|
||||
RpDMorphAtomicGetAnimFrame( const RpAtomic *atomic,
|
||||
RwUInt32 dMorphTargetIndex );
|
||||
|
||||
|
||||
extern RpAtomic *
|
||||
RpDMorphAtomicSetAnimFrameTime( RpAtomic *atomic,
|
||||
RwUInt32 dMorphTargetIndex,
|
||||
RwReal time );
|
||||
|
||||
extern RwReal
|
||||
RpDMorphAtomicGetAnimFrameTime( const RpAtomic *atomic,
|
||||
RwUInt32 dMorphTargetIndex );
|
||||
|
||||
/*--- Animation Functions --------------------------------------------------
|
||||
*/
|
||||
extern RpDMorphAnimation *
|
||||
RpDMorphAnimationCreate(RwUInt32 numDMorphTargets);
|
||||
|
||||
extern RpDMorphAnimation *
|
||||
RpDMorphAnimationDestroy(RpDMorphAnimation *anim);
|
||||
|
||||
extern RwUInt32
|
||||
RpDMorphAnimationGetNumDMorphTargets(RpDMorphAnimation *animation);
|
||||
|
||||
/* Animation Frames */
|
||||
extern RpDMorphAnimation *
|
||||
RpDMorphAnimationCreateFrames(RpDMorphAnimation *anim,
|
||||
RwUInt32 dMorphTargetIndex,
|
||||
RwUInt32 numFrames);
|
||||
|
||||
extern RpDMorphAnimation *
|
||||
RpDMorphAnimationDestroyFrames(RpDMorphAnimation *anim,
|
||||
RwUInt32 dMorphTargetIndex);
|
||||
|
||||
extern RwUInt32
|
||||
RpDMorphAnimationGetNumFrames(RpDMorphAnimation *animation,
|
||||
RwUInt32 dMorphTargetIndex);
|
||||
|
||||
/* Stream I/O */
|
||||
extern RpDMorphAnimation *
|
||||
RpDMorphAnimationStreamRead(RwStream *stream);
|
||||
|
||||
extern RpDMorphAnimation *
|
||||
RpDMorphAnimationStreamWrite(RpDMorphAnimation *animation,
|
||||
RwStream *stream);
|
||||
|
||||
extern RwUInt32
|
||||
RpDMorphAnimationStreamGetSize(RpDMorphAnimation *animation);
|
||||
|
||||
extern RpDMorphAnimation *
|
||||
RpDMorphAnimationRead(const RwChar *filename);
|
||||
|
||||
extern RpDMorphAnimation *
|
||||
RpDMorphAnimationWrite(RpDMorphAnimation *animation, const RwChar *filename);
|
||||
|
||||
/*--- Animation Frame Functions --------------------------------------------
|
||||
*
|
||||
* These functions work on the DMorphAnimationFrame level.
|
||||
* Each Frame can have a reference to the next Frame for the
|
||||
* DMorphTarget.
|
||||
*/
|
||||
extern RpDMorphAnimation *
|
||||
RpDMorphAnimationFrameSetNext(RpDMorphAnimation *anim,
|
||||
RwUInt32 dMorphTargetIndex,
|
||||
RwUInt32 frameIndex,
|
||||
RwUInt32 nextFrame );
|
||||
|
||||
extern RwUInt32
|
||||
RpDMorphAnimationFrameGetNext(RpDMorphAnimation *anim,
|
||||
RwUInt32 dMorphTargetIndex,
|
||||
RwUInt32 frameIndex );
|
||||
|
||||
extern RpDMorphAnimation *
|
||||
RpDMorphAnimationFrameSet(RpDMorphAnimation *anim,
|
||||
RwUInt32 dMorphTargetIndex,
|
||||
RwUInt32 frameIndex,
|
||||
RwReal startValue,
|
||||
RwReal endValue,
|
||||
RwReal duration,
|
||||
RwUInt32 nextFrame );
|
||||
|
||||
extern RpDMorphAnimation *
|
||||
RpDMorphAnimationFrameSetStartValue(RpDMorphAnimation *anim,
|
||||
RwUInt32 dMorphTargetIndex,
|
||||
RwUInt32 frameIndex,
|
||||
RwReal startValue );
|
||||
|
||||
extern RwReal
|
||||
RpDMorphAnimationFrameGetStartValue(RpDMorphAnimation *anim,
|
||||
RwUInt32 dMorphTargetIndex,
|
||||
RwUInt32 frameIndex );
|
||||
|
||||
extern RpDMorphAnimation *
|
||||
RpDMorphAnimationFrameSetEndValue(RpDMorphAnimation *anim,
|
||||
RwUInt32 dMorphTargetIndex,
|
||||
RwUInt32 frameIndex,
|
||||
RwReal endValue );
|
||||
|
||||
extern RwReal
|
||||
RpDMorphAnimationFrameGetEndValue(RpDMorphAnimation *anim,
|
||||
RwUInt32 dMorphTargetIndex,
|
||||
RwUInt32 frameIndex );
|
||||
|
||||
extern RpDMorphAnimation *
|
||||
RpDMorphAnimationFrameSetDuration(RpDMorphAnimation *anim,
|
||||
RwUInt32 dMorphTargetIndex,
|
||||
RwUInt32 frameIndex,
|
||||
RwReal duration );
|
||||
|
||||
extern RwReal
|
||||
RpDMorphAnimationFrameGetDuration(RpDMorphAnimation *anim,
|
||||
RwUInt32 dMorphTargetIndex,
|
||||
RwUInt32 frameIndex );
|
||||
|
||||
/*--------------------------------------------------------------------------*/
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif /* __cplusplus */
|
||||
|
||||
#endif /* RPDMORPH_H */
|
||||
|
639
rwsdk/include/d3d8/rpdmorph.rpe
Normal file
639
rwsdk/include/d3d8/rpdmorph.rpe
Normal file
@ -0,0 +1,639 @@
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
enum e_rwdb_CriterionDMorph
|
||||
{
|
||||
|
||||
|
||||
|
||||
e_rwdb_CriterionDMorphLAST = RWFORCEENUMSIZEINT
|
||||
};
|
||||
|
||||
typedef enum e_rwdb_CriterionDMorph e_rwdb_CriterionDMorph;
|
||||
|
||||
|
32
rwsdk/include/d3d8/rperror.h
Normal file
32
rwsdk/include/d3d8/rperror.h
Normal file
@ -0,0 +1,32 @@
|
||||
/***************************************************************************
|
||||
* *
|
||||
* 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 */
|
873
rwsdk/include/d3d8/rphanim.h
Normal file
873
rwsdk/include/d3d8/rphanim.h
Normal file
@ -0,0 +1,873 @@
|
||||
/******************************************
|
||||
* *
|
||||
* 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 */
|
644
rwsdk/include/d3d8/rphanim.rpe
Normal file
644
rwsdk/include/d3d8/rphanim.rpe
Normal file
@ -0,0 +1,644 @@
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
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;
|
||||
|
||||
|
131
rwsdk/include/d3d8/rplodatm.h
Normal file
131
rwsdk/include/d3d8/rplodatm.h
Normal file
@ -0,0 +1,131 @@
|
||||
|
||||
/******************************************
|
||||
* *
|
||||
* 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 */
|
||||
|
642
rwsdk/include/d3d8/rplodatm.rpe
Normal file
642
rwsdk/include/d3d8/rplodatm.rpe
Normal file
@ -0,0 +1,642 @@
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
enum e_rwdb_CriterionLODATM
|
||||
{
|
||||
|
||||
|
||||
|
||||
e_rwdb_CriterionLODATMLAST = RWFORCEENUMSIZEINT
|
||||
};
|
||||
|
||||
typedef enum e_rwdb_CriterionLODATM e_rwdb_CriterionLODATM;
|
||||
|
||||
|
83
rwsdk/include/d3d8/rplogo.h
Normal file
83
rwsdk/include/d3d8/rplogo.h
Normal file
@ -0,0 +1,83 @@
|
||||
/**
|
||||
* 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 */
|
||||
|
639
rwsdk/include/d3d8/rplogo.rpe
Normal file
639
rwsdk/include/d3d8/rplogo.rpe
Normal file
@ -0,0 +1,639 @@
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
enum e_rwdb_CriterionLogo
|
||||
{
|
||||
|
||||
|
||||
|
||||
e_rwdb_CriterionLogoLAST = RWFORCEENUMSIZEINT
|
||||
};
|
||||
|
||||
typedef enum e_rwdb_CriterionLogo e_rwdb_CriterionLogo;
|
||||
|
||||
|
90
rwsdk/include/d3d8/rpltmap.h
Normal file
90
rwsdk/include/d3d8/rpltmap.h
Normal file
@ -0,0 +1,90 @@
|
||||
|
||||
/**
|
||||
* \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 */
|
||||
|
||||
|
638
rwsdk/include/d3d8/rpltmap.rpe
Normal file
638
rwsdk/include/d3d8/rpltmap.rpe
Normal file
@ -0,0 +1,638 @@
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
enum e_rwdb_CriterionLTMAP
|
||||
{
|
||||
|
||||
|
||||
|
||||
e_rwdb_CriterionLTMAPLAST = RWFORCEENUMSIZEINT
|
||||
};
|
||||
|
||||
typedef enum e_rwdb_CriterionLTMAP e_rwdb_CriterionLTMAP;
|
||||
|
||||
|
237
rwsdk/include/d3d8/rpmatfx.h
Normal file
237
rwsdk/include/d3d8/rpmatfx.h
Normal file
@ -0,0 +1,237 @@
|
||||
|
||||
#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 */
|
||||
|
||||
|
638
rwsdk/include/d3d8/rpmatfx.rpe
Normal file
638
rwsdk/include/d3d8/rpmatfx.rpe
Normal file
@ -0,0 +1,638 @@
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
enum e_rwdb_CriterionMATERIALEFFECTS
|
||||
{
|
||||
|
||||
|
||||
|
||||
e_rwdb_CriterionMATERIALEFFECTSLAST = RWFORCEENUMSIZEINT
|
||||
};
|
||||
|
||||
typedef enum e_rwdb_CriterionMATERIALEFFECTS e_rwdb_CriterionMATERIALEFFECTS;
|
||||
|
||||
|
38
rwsdk/include/d3d8/rpmipkl.h
Normal file
38
rwsdk/include/d3d8/rpmipkl.h
Normal file
@ -0,0 +1,38 @@
|
||||
/**
|
||||
* 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 */
|
639
rwsdk/include/d3d8/rpmipkl.rpe
Normal file
639
rwsdk/include/d3d8/rpmipkl.rpe
Normal file
@ -0,0 +1,639 @@
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
enum e_rwdb_CriterionLabel
|
||||
{
|
||||
|
||||
|
||||
|
||||
e_rwdb_CriterionLabelLAST = RWFORCEENUMSIZEINT
|
||||
};
|
||||
|
||||
typedef enum e_rwdb_CriterionLabel e_rwdb_CriterionLabel;
|
||||
|
||||
|
138
rwsdk/include/d3d8/rpmorph.h
Normal file
138
rwsdk/include/d3d8/rpmorph.h
Normal file
@ -0,0 +1,138 @@
|
||||
|
||||
/******************************************/
|
||||
/* */
|
||||
/* 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 */
|
||||
|
641
rwsdk/include/d3d8/rpmorph.rpe
Normal file
641
rwsdk/include/d3d8/rpmorph.rpe
Normal file
@ -0,0 +1,641 @@
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
enum e_rwdb_CriterionMorph
|
||||
{
|
||||
|
||||
|
||||
E_RP_MORPH_INVALIDINTERP,
|
||||
|
||||
E_RP_MORPH_NOGEOMETRY,
|
||||
|
||||
e_rwdb_CriterionMorphLAST = RWFORCEENUMSIZEINT
|
||||
};
|
||||
|
||||
typedef enum e_rwdb_CriterionMorph e_rwdb_CriterionMorph;
|
||||
|
||||
|
683
rwsdk/include/d3d8/rppatch.h
Normal file
683
rwsdk/include/d3d8/rppatch.h
Normal file
@ -0,0 +1,683 @@
|
||||
|
||||
#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 */
|
||||
|
||||
|
638
rwsdk/include/d3d8/rppatch.rpe
Normal file
638
rwsdk/include/d3d8/rppatch.rpe
Normal file
@ -0,0 +1,638 @@
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
enum e_rwdb_CriterionPATCH
|
||||
{
|
||||
|
||||
|
||||
|
||||
e_rwdb_CriterionPATCHLAST = RWFORCEENUMSIZEINT
|
||||
};
|
||||
|
||||
typedef enum e_rwdb_CriterionPATCH e_rwdb_CriterionPATCH;
|
||||
|
||||
|
1026
rwsdk/include/d3d8/rpprtstd.h
Normal file
1026
rwsdk/include/d3d8/rpprtstd.h
Normal file
File diff suppressed because it is too large
Load Diff
639
rwsdk/include/d3d8/rpprtstd.rpe
Normal file
639
rwsdk/include/d3d8/rpprtstd.rpe
Normal file
@ -0,0 +1,639 @@
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
enum e_rwdb_CriterionParticleStandard
|
||||
{
|
||||
|
||||
|
||||
|
||||
e_rwdb_CriterionParticleStandardLAST = RWFORCEENUMSIZEINT
|
||||
};
|
||||
|
||||
typedef enum e_rwdb_CriterionParticleStandard e_rwdb_CriterionParticleStandard;
|
||||
|
||||
|
781
rwsdk/include/d3d8/rpptank.h
Normal file
781
rwsdk/include/d3d8/rpptank.h
Normal file
@ -0,0 +1,781 @@
|
||||
|
||||
#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 */
|
||||
|
||||
|
643
rwsdk/include/d3d8/rpptank.rpe
Normal file
643
rwsdk/include/d3d8/rpptank.rpe
Normal file
@ -0,0 +1,643 @@
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
enum e_rwdb_CriterionPTank
|
||||
{
|
||||
|
||||
|
||||
|
||||
e_rwdb_CriterionPTankLAST = RWFORCEENUMSIZEINT
|
||||
};
|
||||
|
||||
typedef enum e_rwdb_CriterionPTank e_rwdb_CriterionPTank;
|
||||
|
||||
|
395
rwsdk/include/d3d8/rppvs.h
Normal file
395
rwsdk/include/d3d8/rppvs.h
Normal file
@ -0,0 +1,395 @@
|
||||
/*
|
||||
* 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 */
|
640
rwsdk/include/d3d8/rppvs.rpe
Normal file
640
rwsdk/include/d3d8/rppvs.rpe
Normal file
@ -0,0 +1,640 @@
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
enum e_rwdb_CriterionGPVS
|
||||
{
|
||||
|
||||
|
||||
|
||||
e_rwdb_CriterionGPVSLAST = RWFORCEENUMSIZEINT
|
||||
};
|
||||
|
||||
typedef enum e_rwdb_CriterionGPVS e_rwdb_CriterionGPVS;
|
||||
|
||||
|
65
rwsdk/include/d3d8/rprandom.h
Normal file
65
rwsdk/include/d3d8/rprandom.h
Normal file
@ -0,0 +1,65 @@
|
||||
/**********************************************************************
|
||||
*
|
||||
* 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 */
|
||||
|
638
rwsdk/include/d3d8/rprandom.rpe
Normal file
638
rwsdk/include/d3d8/rprandom.rpe
Normal file
@ -0,0 +1,638 @@
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
enum e_rwdb_CriterionRandom
|
||||
{
|
||||
|
||||
|
||||
|
||||
e_rwdb_CriterionRandomLAST = RWFORCEENUMSIZEINT
|
||||
};
|
||||
|
||||
typedef enum e_rwdb_CriterionRandom e_rwdb_CriterionRandom;
|
||||
|
||||
|
222
rwsdk/include/d3d8/rpskin.h
Normal file
222
rwsdk/include/d3d8/rpskin.h
Normal file
@ -0,0 +1,222 @@
|
||||
|
||||
#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 */
|
||||
|
||||
|
638
rwsdk/include/d3d8/rpskin.rpe
Normal file
638
rwsdk/include/d3d8/rpskin.rpe
Normal file
@ -0,0 +1,638 @@
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
enum e_rwdb_CriterionSKIN
|
||||
{
|
||||
|
||||
|
||||
|
||||
e_rwdb_CriterionSKINLAST = RWFORCEENUMSIZEINT
|
||||
};
|
||||
|
||||
typedef enum e_rwdb_CriterionSKIN e_rwdb_CriterionSKIN;
|
||||
|
||||
|
141
rwsdk/include/d3d8/rpspline.h
Normal file
141
rwsdk/include/d3d8/rpspline.h
Normal file
@ -0,0 +1,141 @@
|
||||
/*
|
||||
* Structure for splines
|
||||
*
|
||||
*
|
||||
* Copyright (c) Criterion Software Limited
|
||||
*/
|
||||
|
||||
/******************************************/
|
||||
/* */
|
||||
/* RenderWare(TM) Graphics Library */
|
||||
/* */
|
||||
/******************************************/
|
||||
|
||||
/*
|
||||
* This file is a product of Criterion Software Ltd.
|
||||
*
|
||||
* This file is provided as is with no warranties of any kind and is
|
||||
* provided without any obligation on Criterion Software Ltd.
|
||||
* or Canon Inc. to assist in its use or modification.
|
||||
*
|
||||
* Criterion Software Ltd. and Canon Inc. will not, under any
|
||||
* circumstances, be liable for any lost revenue or other damages
|
||||
* arising from the use of this file.
|
||||
*
|
||||
* Copyright (c) 1998. Criterion Software Ltd.
|
||||
* All Rights Reserved.
|
||||
*/
|
||||
|
||||
/***************************************************************************
|
||||
* *
|
||||
* Module : rpspline.h *
|
||||
* *
|
||||
* Purpose : Spline operations *
|
||||
* *
|
||||
**************************************************************************/
|
||||
|
||||
#ifndef RPSPLINE_H
|
||||
#define RPSPLINE_H
|
||||
|
||||
/**
|
||||
* \defgroup rpspline RpSpline
|
||||
* \ingroup 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 */
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
642
rwsdk/include/d3d8/rpspline.rpe
Normal file
642
rwsdk/include/d3d8/rpspline.rpe
Normal file
@ -0,0 +1,642 @@
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
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;
|
||||
|
||||
|
141
rwsdk/include/d3d8/rpstereo.h
Normal file
141
rwsdk/include/d3d8/rpstereo.h
Normal file
@ -0,0 +1,141 @@
|
||||
/*
|
||||
* 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 */
|
||||
|
641
rwsdk/include/d3d8/rpstereo.rpe
Normal file
641
rwsdk/include/d3d8/rpstereo.rpe
Normal file
@ -0,0 +1,641 @@
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
enum e_rwdb_CriterionStereo
|
||||
{
|
||||
|
||||
|
||||
E_RP_STEREO_INVMODE,
|
||||
|
||||
E_RP_STEREO_INVFOCAL,
|
||||
|
||||
e_rwdb_CriterionStereoLAST = RWFORCEENUMSIZEINT
|
||||
};
|
||||
|
||||
typedef enum e_rwdb_CriterionStereo e_rwdb_CriterionStereo;
|
||||
|
||||
|
124
rwsdk/include/d3d8/rpusrdat.h
Normal file
124
rwsdk/include/d3d8/rpusrdat.h
Normal file
@ -0,0 +1,124 @@
|
||||
#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 */
|
639
rwsdk/include/d3d8/rpusrdat.rpe
Normal file
639
rwsdk/include/d3d8/rpusrdat.rpe
Normal file
@ -0,0 +1,639 @@
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
enum e_rwdb_CriterionUserData
|
||||
{
|
||||
|
||||
|
||||
|
||||
e_rwdb_CriterionUserDataLAST = RWFORCEENUMSIZEINT
|
||||
};
|
||||
|
||||
typedef enum e_rwdb_CriterionUserData e_rwdb_CriterionUserData;
|
||||
|
||||
|
3735
rwsdk/include/d3d8/rpworld.h
Normal file
3735
rwsdk/include/d3d8/rpworld.h
Normal file
File diff suppressed because it is too large
Load Diff
63
rwsdk/include/d3d8/rpworld.rpe
Normal file
63
rwsdk/include/d3d8/rpworld.rpe
Normal file
@ -0,0 +1,63 @@
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
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;
|
||||
|
||||
|
911
rwsdk/include/d3d8/rt2d.h
Normal file
911
rwsdk/include/d3d8/rt2d.h
Normal file
@ -0,0 +1,911 @@
|
||||
/*
|
||||
* 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 */
|
629
rwsdk/include/d3d8/rt2d.rpe
Normal file
629
rwsdk/include/d3d8/rt2d.rpe
Normal file
@ -0,0 +1,629 @@
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
enum e_rwdb_Criterion2D
|
||||
{
|
||||
|
||||
|
||||
|
||||
e_rwdb_Criterion2DLAST = RWFORCEENUMSIZEINT
|
||||
};
|
||||
|
||||
typedef enum e_rwdb_Criterion2D e_rwdb_Criterion2D;
|
||||
|
||||
|
1056
rwsdk/include/d3d8/rt2danim.h
Normal file
1056
rwsdk/include/d3d8/rt2danim.h
Normal file
File diff suppressed because it is too large
Load Diff
629
rwsdk/include/d3d8/rt2danim.rpe
Normal file
629
rwsdk/include/d3d8/rt2danim.rpe
Normal file
@ -0,0 +1,629 @@
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
enum rwPLUGIN_ERRENUM
|
||||
{
|
||||
|
||||
|
||||
|
||||
rwPLUGIN_ERRENUMLAST = RWFORCEENUMSIZEINT
|
||||
};
|
||||
|
||||
typedef enum rwPLUGIN_ERRENUM rwPLUGIN_ERRENUM;
|
||||
|
||||
|
141
rwsdk/include/d3d8/rtbary.h
Normal file
141
rwsdk/include/d3d8/rtbary.h
Normal file
@ -0,0 +1,141 @@
|
||||
/***************************************************************************
|
||||
* *
|
||||
* 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 */
|
645
rwsdk/include/d3d8/rtbary.rpe
Normal file
645
rwsdk/include/d3d8/rtbary.rpe
Normal file
@ -0,0 +1,645 @@
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
enum e_rwdb_CriterionBary
|
||||
{
|
||||
|
||||
|
||||
|
||||
e_rwdb_CriterionBaryLAST = RWFORCEENUMSIZEINT
|
||||
};
|
||||
|
||||
typedef enum e_rwdb_CriterionBary e_rwdb_CriterionBary;
|
||||
|
||||
|
401
rwsdk/include/d3d8/rtbezpat.h
Normal file
401
rwsdk/include/d3d8/rtbezpat.h
Normal file
@ -0,0 +1,401 @@
|
||||
/*
|
||||
* 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)) */
|
629
rwsdk/include/d3d8/rtbezpat.rpe
Normal file
629
rwsdk/include/d3d8/rtbezpat.rpe
Normal file
@ -0,0 +1,629 @@
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
enum e_rwdb_CriterionBEZPATCH
|
||||
{
|
||||
|
||||
|
||||
|
||||
e_rwdb_CriterionBEZPATCHLAST = RWFORCEENUMSIZEINT
|
||||
};
|
||||
|
||||
typedef enum e_rwdb_CriterionBEZPATCH e_rwdb_CriterionBEZPATCH;
|
||||
|
||||
|
51
rwsdk/include/d3d8/rtbmp.h
Normal file
51
rwsdk/include/d3d8/rtbmp.h
Normal file
@ -0,0 +1,51 @@
|
||||
|
||||
/***************************************************************************
|
||||
* *
|
||||
* 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 */
|
629
rwsdk/include/d3d8/rtbmp.rpe
Normal file
629
rwsdk/include/d3d8/rtbmp.rpe
Normal file
@ -0,0 +1,629 @@
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
enum e_rwdb_CriterionBMP
|
||||
{
|
||||
|
||||
|
||||
|
||||
e_rwdb_CriterionBMPLAST = RWFORCEENUMSIZEINT
|
||||
};
|
||||
|
||||
typedef enum e_rwdb_CriterionBMP e_rwdb_CriterionBMP;
|
||||
|
||||
|
111
rwsdk/include/d3d8/rtcharse.h
Normal file
111
rwsdk/include/d3d8/rtcharse.h
Normal file
@ -0,0 +1,111 @@
|
||||
/*
|
||||
*
|
||||
* 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 */
|
629
rwsdk/include/d3d8/rtcharse.rpe
Normal file
629
rwsdk/include/d3d8/rtcharse.rpe
Normal file
@ -0,0 +1,629 @@
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
enum e_rwdb_CriterionCharset
|
||||
{
|
||||
|
||||
|
||||
|
||||
e_rwdb_CriterionCharsetLAST = RWFORCEENUMSIZEINT
|
||||
};
|
||||
|
||||
typedef enum e_rwdb_CriterionCharset e_rwdb_CriterionCharset;
|
||||
|
||||
|
1278
rwsdk/include/d3d8/rtimport.h
Normal file
1278
rwsdk/include/d3d8/rtimport.h
Normal file
File diff suppressed because it is too large
Load Diff
640
rwsdk/include/d3d8/rtimport.rpe
Normal file
640
rwsdk/include/d3d8/rtimport.rpe
Normal file
@ -0,0 +1,640 @@
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
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;
|
||||
|
||||
|
1206
rwsdk/include/d3d8/rtintel.h
Normal file
1206
rwsdk/include/d3d8/rtintel.h
Normal file
File diff suppressed because it is too large
Load Diff
645
rwsdk/include/d3d8/rtintel.rpe
Normal file
645
rwsdk/include/d3d8/rtintel.rpe
Normal file
@ -0,0 +1,645 @@
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
enum e_rwdb_CriterionIntel
|
||||
{
|
||||
|
||||
|
||||
|
||||
e_rwdb_CriterionIntelLAST = RWFORCEENUMSIZEINT
|
||||
};
|
||||
|
||||
typedef enum e_rwdb_CriterionIntel e_rwdb_CriterionIntel;
|
||||
|
||||
|
138
rwsdk/include/d3d8/rtintsec.h
Normal file
138
rwsdk/include/d3d8/rtintsec.h
Normal file
@ -0,0 +1,138 @@
|
||||
/***************************************************************************
|
||||
* *
|
||||
* 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 */
|
628
rwsdk/include/d3d8/rtintsec.rpe
Normal file
628
rwsdk/include/d3d8/rtintsec.rpe
Normal file
@ -0,0 +1,628 @@
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
enum e_rwdb_CriterionIntsec
|
||||
{
|
||||
|
||||
|
||||
|
||||
e_rwdb_CriterionIntsecLAST = RWFORCEENUMSIZEINT
|
||||
};
|
||||
|
||||
typedef enum e_rwdb_CriterionIntsec e_rwdb_CriterionIntsec;
|
||||
|
||||
|
601
rwsdk/include/d3d8/rtltmap.h
Normal file
601
rwsdk/include/d3d8/rtltmap.h
Normal file
@ -0,0 +1,601 @@
|
||||
|
||||
/**
|
||||
* \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 */
|
||||
|
||||
|
638
rwsdk/include/d3d8/rtltmap.rpe
Normal file
638
rwsdk/include/d3d8/rtltmap.rpe
Normal file
@ -0,0 +1,638 @@
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
enum e_rwdb_CriterionLTMAPTOOL
|
||||
{
|
||||
|
||||
|
||||
|
||||
e_rwdb_CriterionLTMAPTOOLLAST = RWFORCEENUMSIZEINT
|
||||
};
|
||||
|
||||
typedef enum e_rwdb_CriterionLTMAPTOOL e_rwdb_CriterionLTMAPTOOL;
|
||||
|
||||
|
58
rwsdk/include/d3d8/rtmipk.h
Normal file
58
rwsdk/include/d3d8/rtmipk.h
Normal file
@ -0,0 +1,58 @@
|
||||
/**
|
||||
* 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 */
|
628
rwsdk/include/d3d8/rtmipk.rpe
Normal file
628
rwsdk/include/d3d8/rtmipk.rpe
Normal file
@ -0,0 +1,628 @@
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
enum e_rwdb_CriterionMipmapK
|
||||
{
|
||||
|
||||
|
||||
|
||||
e_rwdb_CriterionMipmapKLAST = RWFORCEENUMSIZEINT
|
||||
};
|
||||
|
||||
typedef enum e_rwdb_CriterionMipmapK e_rwdb_CriterionMipmapK;
|
||||
|
||||
|
59
rwsdk/include/d3d8/rtpick.h
Normal file
59
rwsdk/include/d3d8/rtpick.h
Normal file
@ -0,0 +1,59 @@
|
||||
/***************************************************************************
|
||||
* *
|
||||
* 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 */
|
628
rwsdk/include/d3d8/rtpick.rpe
Normal file
628
rwsdk/include/d3d8/rtpick.rpe
Normal file
@ -0,0 +1,628 @@
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
enum e_rwdb_CriterionPick
|
||||
{
|
||||
|
||||
|
||||
|
||||
e_rwdb_CriterionPickLAST = RWFORCEENUMSIZEINT
|
||||
};
|
||||
|
||||
typedef enum e_rwdb_CriterionPick e_rwdb_CriterionPick;
|
||||
|
||||
|
74
rwsdk/include/d3d8/rtpitexd.h
Normal file
74
rwsdk/include/d3d8/rtpitexd.h
Normal file
@ -0,0 +1,74 @@
|
||||
/***********************************************************************
|
||||
*
|
||||
* 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 ) */
|
682
rwsdk/include/d3d8/rtpitexd.rpe
Normal file
682
rwsdk/include/d3d8/rtpitexd.rpe
Normal file
@ -0,0 +1,682 @@
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
enum e_rwdb_CriterionPITexDict
|
||||
{
|
||||
|
||||
|
||||
|
||||
e_rwdb_CriterionPITexDictLAST = RWFORCEENUMSIZEINT
|
||||
};
|
||||
|
||||
typedef enum e_rwdb_CriterionPITexDict e_rwdb_CriterionPITexDict;
|
||||
|
||||
|
49
rwsdk/include/d3d8/rtpng.h
Normal file
49
rwsdk/include/d3d8/rtpng.h
Normal file
@ -0,0 +1,49 @@
|
||||
|
||||
/***************************************************************************
|
||||
* *
|
||||
* 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 */
|
629
rwsdk/include/d3d8/rtpng.rpe
Normal file
629
rwsdk/include/d3d8/rtpng.rpe
Normal file
@ -0,0 +1,629 @@
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
enum e_rwdb_CriterionPNG
|
||||
{
|
||||
|
||||
|
||||
|
||||
e_rwdb_CriterionPNGLAST = RWFORCEENUMSIZEINT
|
||||
};
|
||||
|
||||
typedef enum e_rwdb_CriterionPNG e_rwdb_CriterionPNG;
|
||||
|
||||
|
646
rwsdk/include/d3d8/rtquat.h
Normal file
646
rwsdk/include/d3d8/rtquat.h
Normal file
@ -0,0 +1,646 @@
|
||||
/*
|
||||
* 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 */
|
||||
|
645
rwsdk/include/d3d8/rtquat.rpe
Normal file
645
rwsdk/include/d3d8/rtquat.rpe
Normal file
@ -0,0 +1,645 @@
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
enum e_rwdb_CriterionQuat
|
||||
{
|
||||
|
||||
|
||||
|
||||
e_rwdb_CriterionQuatLAST = RWFORCEENUMSIZEINT
|
||||
};
|
||||
|
||||
typedef enum e_rwdb_CriterionQuat e_rwdb_CriterionQuat;
|
||||
|
||||
|
54
rwsdk/include/d3d8/rtras.h
Normal file
54
rwsdk/include/d3d8/rtras.h
Normal file
@ -0,0 +1,54 @@
|
||||
/***************************************************************************
|
||||
* *
|
||||
* 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 */
|
629
rwsdk/include/d3d8/rtras.rpe
Normal file
629
rwsdk/include/d3d8/rtras.rpe
Normal file
@ -0,0 +1,629 @@
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
enum e_rwdb_CriterionRAS
|
||||
{
|
||||
|
||||
|
||||
|
||||
e_rwdb_CriterionRASLAST = RWFORCEENUMSIZEINT
|
||||
};
|
||||
|
||||
typedef enum e_rwdb_CriterionRAS e_rwdb_CriterionRAS;
|
||||
|
||||
|
61
rwsdk/include/d3d8/rtray.h
Normal file
61
rwsdk/include/d3d8/rtray.h
Normal file
@ -0,0 +1,61 @@
|
||||
/***************************************************************************
|
||||
* *
|
||||
* 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 */
|
628
rwsdk/include/d3d8/rtray.rpe
Normal file
628
rwsdk/include/d3d8/rtray.rpe
Normal file
@ -0,0 +1,628 @@
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
enum e_rwdb_CriterionRay
|
||||
{
|
||||
|
||||
|
||||
|
||||
e_rwdb_CriterionRayLAST = RWFORCEENUMSIZEINT
|
||||
};
|
||||
|
||||
typedef enum e_rwdb_CriterionRay e_rwdb_CriterionRay;
|
||||
|
||||
|
262
rwsdk/include/d3d8/rtslerp.h
Normal file
262
rwsdk/include/d3d8/rtslerp.h
Normal file
@ -0,0 +1,262 @@
|
||||
/*
|
||||
* 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 */
|
||||
|
646
rwsdk/include/d3d8/rtslerp.rpe
Normal file
646
rwsdk/include/d3d8/rtslerp.rpe
Normal file
@ -0,0 +1,646 @@
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
enum e_rwdb_CriterionSlerp
|
||||
{
|
||||
|
||||
|
||||
|
||||
e_rwdb_CriterionSlerpLAST = RWFORCEENUMSIZEINT
|
||||
};
|
||||
|
||||
typedef enum e_rwdb_CriterionSlerp e_rwdb_CriterionSlerp;
|
||||
|
||||
|
65
rwsdk/include/d3d8/rtsplpvs.h
Normal file
65
rwsdk/include/d3d8/rtsplpvs.h
Normal file
@ -0,0 +1,65 @@
|
||||
|
||||
/***************************************************************************
|
||||
* *
|
||||
* 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 */
|
628
rwsdk/include/d3d8/rtsplpvs.rpe
Normal file
628
rwsdk/include/d3d8/rtsplpvs.rpe
Normal file
@ -0,0 +1,628 @@
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
enum e_rwdb_CriterionSplinePVS
|
||||
{
|
||||
|
||||
|
||||
|
||||
e_rwdb_CriterionSplinePVSLAST = RWFORCEENUMSIZEINT
|
||||
};
|
||||
|
||||
typedef enum e_rwdb_CriterionSplinePVS e_rwdb_CriterionSplinePVS;
|
||||
|
||||
|
47
rwsdk/include/d3d8/rttiff.h
Normal file
47
rwsdk/include/d3d8/rttiff.h
Normal file
@ -0,0 +1,47 @@
|
||||
/***************************************************************************
|
||||
* *
|
||||
* 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 */
|
629
rwsdk/include/d3d8/rttiff.rpe
Normal file
629
rwsdk/include/d3d8/rttiff.rpe
Normal file
@ -0,0 +1,629 @@
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
enum e_rwdb_CriterionTIFF
|
||||
{
|
||||
|
||||
|
||||
|
||||
e_rwdb_CriterionTIFFLAST = RWFORCEENUMSIZEINT
|
||||
};
|
||||
|
||||
typedef enum e_rwdb_CriterionTIFF e_rwdb_CriterionTIFF;
|
||||
|
||||
|
70
rwsdk/include/d3d8/rttilerd.h
Normal file
70
rwsdk/include/d3d8/rttilerd.h
Normal file
@ -0,0 +1,70 @@
|
||||
/***************************************************************************
|
||||
* *
|
||||
* 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 */
|
629
rwsdk/include/d3d8/rttilerd.rpe
Normal file
629
rwsdk/include/d3d8/rttilerd.rpe
Normal file
@ -0,0 +1,629 @@
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
enum e_rwdb_CriterionTileRend
|
||||
{
|
||||
|
||||
|
||||
|
||||
e_rwdb_CriterionTileRendLAST = RWFORCEENUMSIZEINT
|
||||
};
|
||||
|
||||
typedef enum e_rwdb_CriterionTileRend e_rwdb_CriterionTileRend;
|
||||
|
||||
|
99
rwsdk/include/d3d8/rttoc.h
Normal file
99
rwsdk/include/d3d8/rttoc.h
Normal file
@ -0,0 +1,99 @@
|
||||
/***************************************************************************
|
||||
* *
|
||||
* 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 */
|
629
rwsdk/include/d3d8/rttoc.rpe
Normal file
629
rwsdk/include/d3d8/rttoc.rpe
Normal file
@ -0,0 +1,629 @@
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
enum e_rwdb_CriterionTOC
|
||||
{
|
||||
|
||||
|
||||
|
||||
e_rwdb_CriterionTOCLAST = RWFORCEENUMSIZEINT
|
||||
};
|
||||
|
||||
typedef enum e_rwdb_CriterionTOC e_rwdb_CriterionTOC;
|
||||
|
||||
|
38
rwsdk/include/d3d8/rtvcat.h
Normal file
38
rwsdk/include/d3d8/rtvcat.h
Normal file
@ -0,0 +1,38 @@
|
||||
|
||||
/***************************************************************************
|
||||
* *
|
||||
* 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 */
|
629
rwsdk/include/d3d8/rtvcat.rpe
Normal file
629
rwsdk/include/d3d8/rtvcat.rpe
Normal file
@ -0,0 +1,629 @@
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
enum e_rwdb_CriterionVextexCacheStrip
|
||||
{
|
||||
|
||||
|
||||
|
||||
e_rwdb_CriterionVextexCacheStripLAST = RWFORCEENUMSIZEINT
|
||||
};
|
||||
|
||||
typedef enum e_rwdb_CriterionVextexCacheStrip e_rwdb_CriterionVextexCacheStrip;
|
||||
|
||||
|
85
rwsdk/include/d3d8/rtworld.h
Normal file
85
rwsdk/include/d3d8/rtworld.h
Normal file
@ -0,0 +1,85 @@
|
||||
/*
|
||||
* 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 */
|
628
rwsdk/include/d3d8/rtworld.rpe
Normal file
628
rwsdk/include/d3d8/rtworld.rpe
Normal file
@ -0,0 +1,628 @@
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
enum e_rwdb_CriterionTlWorld
|
||||
{
|
||||
|
||||
|
||||
|
||||
e_rwdb_CriterionTlWorldLAST = RWFORCEENUMSIZEINT
|
||||
};
|
||||
|
||||
typedef enum e_rwdb_CriterionTlWorld e_rwdb_CriterionTlWorld;
|
||||
|
||||
|
4791
rwsdk/include/d3d8/rwcore.h
Normal file
4791
rwsdk/include/d3d8/rwcore.h
Normal file
File diff suppressed because it is too large
Load Diff
6080
rwsdk/include/d3d8/rwplcore.h
Normal file
6080
rwsdk/include/d3d8/rwplcore.h
Normal file
File diff suppressed because it is too large
Load Diff
@ -1,7 +1,11 @@
|
||||
#include "common.h"
|
||||
#include "patcher.h"
|
||||
#include "Weather.h"
|
||||
#include "Collision.h"
|
||||
#include "SurfaceTable.h"
|
||||
|
||||
float (*CSurfaceTable::ms_aAdhesiveLimitTable)[NUMADHESIVEGROUPS] = (float (*)[NUMADHESIVEGROUPS])0x8E29D4;
|
||||
|
||||
int
|
||||
CSurfaceTable::GetAdhesionGroup(uint8 surfaceType)
|
||||
{
|
||||
@ -42,3 +46,52 @@ CSurfaceTable::GetAdhesionGroup(uint8 surfaceType)
|
||||
default: return ADHESIVE_ROAD;
|
||||
}
|
||||
}
|
||||
|
||||
float
|
||||
CSurfaceTable::GetWetMultiplier(uint8 surfaceType)
|
||||
{
|
||||
switch(surfaceType){
|
||||
case SURFACE_0:
|
||||
case SURFACE_1:
|
||||
case SURFACE_4:
|
||||
case SURFACE_5:
|
||||
case SURFACE_8:
|
||||
case SURFACE_20:
|
||||
case SURFACE_21:
|
||||
case SURFACE_22:
|
||||
case SURFACE_25:
|
||||
case SURFACE_30:
|
||||
case SURFACE_31:
|
||||
return 1.0f - CWeather::WetRoads*0.25f;
|
||||
|
||||
case SURFACE_2:
|
||||
case SURFACE_6:
|
||||
case SURFACE_7:
|
||||
case SURFACE_9:
|
||||
case SURFACE_10:
|
||||
case SURFACE_11:
|
||||
case SURFACE_12:
|
||||
case SURFACE_13:
|
||||
case SURFACE_14:
|
||||
case SURFACE_15:
|
||||
case SURFACE_16:
|
||||
case SURFACE_17:
|
||||
case SURFACE_23:
|
||||
case SURFACE_24:
|
||||
case SURFACE_26:
|
||||
case SURFACE_27:
|
||||
case SURFACE_28:
|
||||
case SURFACE_29:
|
||||
case SURFACE_32:
|
||||
return 1.0f - CWeather::WetRoads*0.4f;
|
||||
|
||||
default:
|
||||
return 1.0f;
|
||||
}
|
||||
}
|
||||
|
||||
float
|
||||
CSurfaceTable::GetAdhesiveLimit(CColPoint &colpoint)
|
||||
{
|
||||
return ms_aAdhesiveLimitTable[GetAdhesionGroup(colpoint.surfaceB)][GetAdhesionGroup(colpoint.surfaceA)];
|
||||
}
|
||||
|
@ -92,8 +92,14 @@ enum
|
||||
NUMADHESIVEGROUPS
|
||||
};
|
||||
|
||||
struct CColPoint;
|
||||
|
||||
class CSurfaceTable
|
||||
{
|
||||
// static float ms_aAdhesiveLimitTable[NUMADHESIVEGROUPS][NUMADHESIVEGROUPS];
|
||||
static float (*ms_aAdhesiveLimitTable)[NUMADHESIVEGROUPS];
|
||||
public:
|
||||
static int GetAdhesionGroup(uint8 surfaceType);
|
||||
static float GetWetMultiplier(uint8 surfaceType);
|
||||
static float GetAdhesiveLimit(CColPoint &colpoint);
|
||||
};
|
||||
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue
Block a user