Skip to content

Render Primitive

Pavle edited this page Mar 10, 2022 · 2 revisions
struct SPrimHeader
{
	enum EPrimType
	{
		PTOBJECTHEADER = 1,
		PTMESH = 2,
		PTDECAL = 3,
		PTSPRITES = 4,
		PTSHAPE = 5,
		PTUNUSED = 6
	};

	unsigned char lDrawDestination;
	unsigned char lPackType;
	unsigned short lType;
};

struct SPrims : SPrimHeader
{
};

struct SPrimObjectHeader : SPrims
{
	enum PROPERTY_FLAGS
	{
		HAS_BONES = 1,
		HAS_FRAMES = 2,
		IS_LINKED_OBJECT = 4,
		IS_WEIGHTED_OBJECT = 8,
		USE_BOUNDS = 256,
		HAS_HIRES_POSITIONS = 512
	};

	unsigned int lPropertyFlags;
	unsigned int lBoneRigResourceIndex;
	unsigned int lNumObjects;
	unsigned int lObjectTable;
	float vMin[3];
	float vMax[3];
};

struct SPrimObject : SPrims
{
	enum SUBTYPE
	{
		SUBTYPE_STANDARD = 0,
		SUBTYPE_LINKED = 1,
		SUBTYPE_WEIGHTED = 2,
		SUBTYPE_STANDARDUV2 = 3,
		SUBTYPE_STANDARDUV3 = 4,
		SUBTYPE_STANDARDUV4 = 5
	};

	enum PROPERTY_FLAGS
	{
		PROPERTY_XAXISLOCKED = 1,
		PROPERTY_YAXISLOCKED = 2,
		PROPERTY_ZAXISLOCKED = 4,
		PROPERTY_HIRES_POSITIONS = 8,
		PROPERTY_PS3_EDGE = 16,
		PROPERTY_COLOR1 = 32,
		PROPERTY_ISNOPHYSICSPROP = 64
	};

	unsigned char lSubType;
	unsigned char lProperties;
	unsigned char lLODMask;
	unsigned char lVariantId;
	unsigned char nZBias;
	unsigned char nZOffset;
	unsigned short lMaterialId;
	unsigned int lWireColor;
	unsigned int lColor1;
	float vMin[3];
	float vMax[3];
};

struct SPrimMeshWeighted : SPrimMesh
{
	unsigned int lNumCopyBones;
	unsigned int lCopyBones;
	unsigned int lBoneIndices;
	unsigned int lBoneInfo;
};

struct SPrimMesh : SPrimObject
{
	unsigned int lSubMeshTable;
	unsigned int lNumFrames;
	unsigned short lFrameStart;
	unsigned short lFrameStep;
	float vPosScale[4];
	float vPosBias[4];
	float vTexScaleBias[4];
};

struct SPrimSubMesh : SPrimObject
{
	unsigned int lNumVertices;
	unsigned int lVertices;
	unsigned int lNumIndices;
	unsigned int lIndices;
	unsigned int lCollision;
	unsigned short lColorStreamSize;
	unsigned char lNumUVChannels;
	unsigned char lDummy1;
};

Clone this wiki locally