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

129 lines
2.8 KiB
C++

#pragma once
#define MLR_MLRINDEXEDPRIMITIVEBASE_HPP
#include "MLR.hpp"
#include "MLRPrimitiveBase.hpp"
namespace MidLevelRenderer {
//##########################################################################
//################### MLRIndexedPrimitiveBase ########################
//##########################################################################
class MLRIndexedPrimitiveBase:
public MLRPrimitiveBase
{
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
// Initialization
//
public:
static void
InitializeClass();
static void
TerminateClass();
static ClassData
*DefaultData;
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
// Constructors/Destructors
//
protected:
MLRIndexedPrimitiveBase(
ClassData *class_data,
Stuff::MemoryStream *stream,
int version
);
~MLRIndexedPrimitiveBase();
public:
MLRIndexedPrimitiveBase(ClassData *class_data);
static MLRIndexedPrimitiveBase*
Make(
Stuff::MemoryStream *stream,
int version
);
virtual void
Save(Stuff::MemoryStream *stream);
virtual void InitializeDrawPrimitive(BYTE, int=0);
virtual void
SetCoordData(
const Stuff::Point3D *array,
int point_count
);
virtual void
SetIndexData(
const BYTE *index_array,
int index_count
);
virtual void
GetIndexData(
const BYTE **index_array,
int *index_count
);
virtual WORD*
GetGOSIndices(int=0)
{ Check_Object(this); return gos_indices; }
int
GetNumGOSIndices()
{ Check_Object(this); return numGOSIndices; }
virtual void
Transform(Stuff::Matrix4D*);
virtual void
TransformNoClip(Stuff::Matrix4D*, GOSVertexPool*, FogData*, DWORD=0xffffffff, bool=false) = 0;
virtual void FindFacePlanes() = 0;
virtual int
FindVisibleVertices() = 0;
void
TheIndexer(int num)
{
Check_Object(this);
dataStore->index.SetLength(num);
BYTE *in = dataStore->index.GetData();
for(BYTE i=0;i<num;i++)
{
in[i] = i;
}
SetIndexData(in, num);
}
virtual bool
FogMesh(const Stuff::LinearMatrix4D *worldToShape, const Stuff::Point3D *cameraPos, FogData *fogData);
//~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
// Testing
//
public:
void
TestInstance() const;
bool
CheckIndicies();
protected:
static Stuff::DynamicArrayOf<BYTE> *visibleIndexedVertices; // , Max_Number_Vertices_Per_Mesh
Stuff::ReadOnlyArrayOf<BYTE> index; // List of color indexes
static Stuff::DynamicArrayOf<WORD> *clipExtraIndex; // , Max_Number_Vertices_Per_Mesh
WORD *gos_indices;
WORD numGOSIndices;
WORD visibleIndexedVerticesKey;
};
}