Files
firestorm/Gameleap/code/mw4/Libraries/mlr/MLRCulturShape.cpp
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

174 lines
4.5 KiB
C++

#include "MLRHeaders.hpp"
//#############################################################################
//########################### MLRCulturShape ############################
//#############################################################################
MLRCulturShape::ClassData*
MLRCulturShape::DefaultData = NULL;
MLRShape*
MLRCulturShape::culturalRevolution = NULL;
bool
MLRCulturShape::isDayTime = true;
Stuff::RGBAColor
MLRCulturShape::dayColor = RGBAColor::White;
Stuff::RGBAColor
MLRCulturShape::nightColor = RGBAColor::White;
Stuff::DynamicArrayOf<MLR_I_C_TMesh*> *MLRCulturShape::theNaturals = NULL;
Stuff::DynamicArrayOf<Stuff::Point3D> *MLRCulturShape::theNaturalCoords = NULL;
Stuff::DynamicArrayOf<Vector2DScalar> *MLRCulturShape::theNaturalTexCoords = NULL;
Stuff::DynamicArrayOf<BYTE> *MLRCulturShape::theNaturalIndicies = NULL;
Stuff::DynamicArrayOf<ColorType> *MLRCulturShape::theNaturalColors = NULL;
int MLRCulturShape::lastUsedMesh = 0, MLRCulturShape::lastUsedVertex = 0, MLRCulturShape::nrOfNaturalMeshes = 16;
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
//
void
MLRCulturShape::InitializeClass()
{
Verify(!DefaultData);
Verify(gos_GetCurrentHeap() == StaticHeap);
DefaultData =
new ClassData(
MLRCulturShapeClassID,
"MidLevelRenderer::MLRCulturShape",
MLRShape::DefaultData
);
Register_Object(DefaultData);
isDayTime = true;
dayColor = RGBAColor::White;
nightColor = RGBAColor(0.447059f, 0.55934f, 0.58317f, 1.0f);
theNaturals = new DynamicArrayOf<MLR_I_C_TMesh*> (nrOfNaturalMeshes);
for(int i=0;i<nrOfNaturalMeshes;i++)
{
(*theNaturals)[i] = new MLR_I_C_TMesh;
}
theNaturalCoords = new DynamicArrayOf<Point3D> (nrOfNaturalMeshes*Limits::Max_Number_Vertices_Per_Mesh);
theNaturalTexCoords = new DynamicArrayOf<Vector2DScalar> (nrOfNaturalMeshes*Limits::Max_Number_Vertices_Per_Mesh);
theNaturalIndicies = new DynamicArrayOf<BYTE> (nrOfNaturalMeshes*Limits::Max_Number_Vertices_Per_Mesh);
theNaturalColors = new DynamicArrayOf<ColorType> (nrOfNaturalMeshes*Limits::Max_Number_Vertices_Per_Mesh);
culturalRevolution = NULL;
}
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
//
void
MLRCulturShape::TerminateClass()
{
if(culturalRevolution!=NULL)
{
culturalRevolution->DetachReference();
}
for(int i=0;i<nrOfNaturalMeshes;i++)
{
(*theNaturals)[i]->DetachReference();
}
theNaturals->SetLength(0);
delete theNaturals;
theNaturalCoords->SetLength(0);
delete theNaturalCoords;
theNaturalTexCoords->SetLength(0);
delete theNaturalTexCoords;
theNaturalIndicies->SetLength(0);
delete theNaturalIndicies;
theNaturalColors->SetLength(0);
delete theNaturalColors;
Unregister_Object(DefaultData);
delete DefaultData;
DefaultData = NULL;
if(culturalRevolution!=NULL)
{
Unregister_Object(culturalRevolution);
culturalRevolution->DetachReference();
}
}
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
//
MLRCulturShape::MLRCulturShape(
MemoryStream *stream,
int version
) :
MLRShape(DefaultData, stream, version)
{
*stream >> centerInWorldX >> centerInWorldZ;
*stream >> fadeOutStart >> fadeOutEnd;
*stream >> radius;
MemoryStreamIO_Read(stream, &culturals);
}
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
//
MLRCulturShape::MLRCulturShape():
MLRShape(0, DefaultData)
{
Verify(gos_GetCurrentHeap() == ShapeHeap);
centerInWorldX = 0.0f;
centerInWorldZ = 0.0f;
fadeOutStart = 50.0f;
fadeOutEnd = 80.0f;
radius = 114.0f;
}
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
//
MLRCulturShape::~MLRCulturShape()
{
}
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
//
MLRCulturShape*
MLRCulturShape::Make(
MemoryStream *stream,
int version
)
{
Check_Object(stream);
gos_PushCurrentHeap(ShapeHeap);
MLRCulturShape *shape = new MLRCulturShape(stream, version);
gos_PopCurrentHeap();
return shape;
}
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
//
void
MLRCulturShape::Save(MemoryStream *stream)
{
Check_Object(this);
Check_Object(stream);
MLRShape::Save(stream);
*stream << centerInWorldX << centerInWorldZ;
*stream << fadeOutStart << fadeOutEnd;
*stream << radius;
MemoryStreamIO_Write(stream, &culturals);
}