Files
firestorm/Gameleap/code/mw4/Libraries/mlr/MLR_BumpyWater.hpp
T
Cyd 2b8ca921cb Initial full mirror of c:\VWE (source + assets + toolchain + outputs) via Git LFS
Complete disaster-recovery snapshot: engine/game source, game data assets,
VC6 toolchain + DX SDKs, build outputs, deployed game, and _UNUSED archive.
Large binaries in Git LFS; text preserved byte-for-byte (core.autocrlf=false,
no eol attributes). See RECOVERY.md for the one-clone rebuild procedure.
2026-06-24 21:28:16 -05:00

147 lines
3.4 KiB
C++

#pragma once
#define MLR_MLR_BUMPYWATER_HPP
#include <MLR\MLR.hpp>
#include <MLR\MLR_I_C_DT_TMesh.hpp>
namespace MidLevelRenderer {
//##########################################################################
//###### MLRIndexedTriMesh with color no lighting w/ detail texture ######
//##########################################################################
class MLR_BumpyWater:
public MLR_I_C_TMesh
{
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
// Initialization
//
public:
static void
InitializeClass();
static void
TerminateClass();
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
// Constructors/Destructors
//
protected:
MLR_BumpyWater(
ClassData *class_data,
Stuff::MemoryStream *stream,
int version
);
~MLR_BumpyWater();
public:
MLR_BumpyWater(ClassData *class_data=MLR_BumpyWater::DefaultData);
static MLR_BumpyWater*
Make(
Stuff::MemoryStream *stream,
int version
);
void
Save(Stuff::MemoryStream *stream);
virtual void
FindFacePlanes();
int
FindBackFace(const Point3D& u, const Normal3D& n);
void
Copy(
MLR_Water*
);
bool
Copy(MLR_I_C_DeT_PMesh*);
public:
virtual int
TransformAndClip(Stuff::Matrix4D *, MLRClippingState, GOSVertexPool*, FogData*, DWORD=0xffffffff, bool=false);
virtual void
TransformNoClip(Stuff::Matrix4D*, GOSVertexPool*, FogData*, DWORD=0xffffffff, bool=false);
void
LightMapLighting(MLRLight*);
virtual GOSVertex3UV*
GetGOSVertices3UV(int=0)
{ Check_Object(this); return gos_vertices3uv; }
void
SetTextures(DWORD tBump, DWORD tEnv, DWORD tNorm)
{ Check_Object(this); textureBump = tBump; textureEnv = tEnv; textureNorm = tNorm; }
virtual DWORD
GetTexture2()
{
Check_Object(this);
if(MLRState::GetCanBumpEnvMap()==true)
return textureBump;
else if(MLRState::GetCanBumpDotMap()==true)
return textureNorm;
else
return 0;
}
virtual DWORD
GetTexture3()
{ Check_Object(this); return textureEnv; }
static void
SetSunLight(Stuff::UnitVector3D& sl)
{ sunLight = sl; }
void
SetBumpWrapRatio(Scalar br)
{ Check_Object(this); bumpRatio = br; }
void
SetEnvWrapRatio(Scalar er)
{ Check_Object(this); envRatio = er; }
void
SetBumpNormWrapRatio(Scalar bnr)
{ Check_Object(this); bumpNormRatio = bnr; }
// virtual int
// GetNumPasses();
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
// Class Data Support
//
public:
static ClassData
*DefaultData;
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
// Testing
//
public:
void
TestInstance() const;
protected:
static Stuff::UnitVector3D sunLight;
GOSVertex3UV *gos_vertices3uv;
Scalar bumpRatio, envRatio, bumpNormRatio;
static Stuff::DynamicArrayOf<Vector2DScalar> *texCoords2; // Base address of texture coordinate list
static Stuff::DynamicArrayOf<Vector2DScalar> *texCoords3; // Base address of texture coordinate list
DWORD textureBump;
DWORD textureEnv;
DWORD textureNorm;
static Stuff::DynamicArrayOf<Vector2DScalar> *clipExtraTexCoords2; // Max_Number_Vertices_Per_Mesh
static Stuff::DynamicArrayOf<Vector2DScalar> *clipExtraTexCoords3; // Max_Number_Vertices_Per_Mesh
};
}