Directors Cut Wiki : ExtraInfoFiles

DirectorsCutModdingFoundry Categories PageIndex RecentChanges RecentlyCommented Login/Register
Trail: CategoryTechnicalInfo FileFormats TextElement CategoryDocumentation FlmMainHeader ParticleFiles AnimEffects ExtraInfoFiles

Oldest known version of this page was edited on 2007-12-11 13:08:22 by Gleem! [Added 010 Template]
Page view:
These hold extra non-mesh and specific game information for meshes.

This is a partial template, there are some unfinished parts, particularly LOD.

Technical File Info

//--------------------------------------
//--- 010 Editor v2.1.3 Binary Template
//
// File: LH .inf file (ExtraInfo)
// Author: Glen Rickey
// Revision: 0.02
// Purpose: To Parse The Movies tm ExtraInfo (.inf) files
//--------------------------------------
#include "VecMatrix.bt"
#include "CompressedU16.bt"
enum
	{
		CE_HAS_BEEN_REMOVED,
		CE_CHUNK_MORPH_BODY_PART,
		CE_CHUNK_GAME_2DPOSITION,
		CE_CHUNK_LANDSCAPE,
		CE_CHUNK_LOD,
		CE_CHUNK_HAIR,
		CE_CHUNK_SET_VARIATION,
		CE_CHUNK_CAMERAS,
		CE_CHUNK_FIRE,
		CE_CHUNK_MISC,
		CE_CHUNK_FOG,
		CE_CHUNK_ROOM,
		CE_CHUNK_SPECIAL_POSITION,
		CE_CHUNK_SCRIPTDATA,
	};

// Basic chunks
struct cchunk 
{
	int32	type;
	int32	chunksize;
};


// Define chunk parts
struct morphbodypart
{
	int32	VertexCount;
	int32	Unknown;
	struct VertNorm
	{
		V3	Pos;
		V3	Norm;
	} VertNorms[VertexCount*3];
	
		
};

struct game2Dpos
{
	int32	CountPos;
	int32	ListPosMem;
	
	struct	G2DPos
	{
		V3	Pos;
		char	PosName[32];
	} pos[CountPos];
};

struct landscape
{

};

// support structure for LOD
struct lodprimdata
{
	int	CountVertex;
	int	CountTriangle;
	uint32	IdTriangles;
	int	ListTriangle;
};
struct lodprim
{
	int	Size;
	int 	CountMaxVertex;
	local int t;
	local int MAX_COUNT_LOD;
	MAX_COUNT_LOD=4; 
	for (t=0; t<MAX_COUNT_LOD; t++)
	{
		lodprimdata	ListPrimData;
	}
	
	local int	ListPrimTri;
	local int tri;
	for (t=0; t<MAX_COUNT_LOD; t++)
	{
		//RMU16(ListPrimData[t].ListTriangle, data, ListPrimData[t].CountTriangle*3);
		ListPrimTri = ListPrimData[t].CountTriangle;
		
		for (tri=0; tri < ListPrimTri*3; tri++)
		{
			U16F	ListTriangle;
		}
	}

	struct ri
	{
		uint16	ReindexData;
	} ReIndexing[CountMaxVertex];
};
struct lod
{
	int	magicnum_2; // 2
	int	CountPrimitives;
	lodprim	LOD[4];
};

struct hair
{
	int	MagicNumber;
	uint16	CountPrimitives;

	struct 
		{
			ubyte	DontMorphMe	: 1;
		} Flags1;
	ubyte	ALIGN;

	struct
		{
			U16F	x;
			U16F	y;
		} Coords[3];

	struct CChunkHairPrim	
		{
			
			int	Size;
			int	CountVertex;
			struct
			{
				U16F	PosX;
				U16F	PosY;
			} Pos;

			struct CVertHair
			{
				int 	IndexMetrics[2];
				V3 	Coords [2];
			} Infos[CountVertex];

		} ListChunkPrim[CountPrimitives] <optimize=false>;
};

struct setvariation
{

};

struct cameras
{
	uint32	RESERVED;
	int	CountCameras;
	struct camlist
	{
		int camMem;
		char	Name[32];
		struct camData
		{
			V3	CamLoc;
			V3	CamTargLoc;
			float	FOV;
			float	Rotation;
			float	Unk;
		} CamData;
	} CamList[CountCameras];
	
};

struct fire
{
	uint32 	RESERVED;
	int	CountFire;
	int	Fires;
	struct CFireLocation
		{
		char	Name[32];
		int	CountLocation;
		struct CLocation
			{
				V3	Position;
				float	Scale;
			} Locations[CountLocation] <optimize=false>;
	
		} Fires[CountFire];
};

struct misc
{
	int	RESERVED;
	int	TypeSoundProp;
};

struct fog
{
	uint32		Reserved;	
	int		RefCount;
	int		CountSprite;
	V2	MinPos;
	V2	MaxPos;
	int	ListPosMem;
	int	ListScaleMem;
	int	Obj3dMem;
	V3	
ListPos [CountSprite];
	struct
	{
		float	Scale;
	} ListScale [CountSprite];
	
};

struct room
{
	uint32	RESERVED;
	char	Name[32];
	V3	TextTranslation;
	float	TextAngle;
	V2	TextShape;

	
};

struct specialpos
{
	char	Name[32];
			
};

struct scriptdata
{
	int32	RESERVED;
	int32	ScriptLength;
	int32	TextMem;
	char	ScriptData[ScriptLength];
};



//Main File Structure
struct extrainfo 
{
	struct exthead
	{
	uint32	magic;
	uint32	CountChunk;
	} head;
	
	//read the next chunk
	local int ichunk;
	for (ichunk=0; ichunk<head.CountChunk; ichunk++)
	{
		
		struct cc
		{
			cchunk	chunk;

			switch (chunk.type)
			{
				case CE_CHUNK_MORPH_BODY_PART : 
					morphbodypart 	Morph;
				break;
				
				case CE_CHUNK_GAME_2DPOSITION :
					game2Dpos	Game2DPos;
				break;

				case CE_CHUNK_LANDSCAPE :
					//landscape	Land;
					ubyte	data[chunk.chunksize-8];
				break;

				case CE_CHUNK_LOD :
					lod	LOD;
				break;

				case CE_CHUNK_HAIR :
					hair	Hair;
				break;

				case CE_CHUNK_SET_VARIATION :
					setvariation	SetVariation;
				break;

				case CE_CHUNK_CAMERAS :
					cameras	Cameras;
				break;

				case CE_CHUNK_FIRE :
					fire	Fire;
				break;

				case CE_CHUNK_MISC :
					misc	Misc;
				break;
				
				case CE_CHUNK_FOG :
					fog	Fog;
					//ubyte	data[chunk.chunksize-8];
				break;

				case CE_CHUNK_ROOM :
					room	Room;
				break;

				case CE_CHUNK_SPECIAL_POSITION :
					specialpos	SpecialPosition;
				break;

				case CE_CHUNK_SCRIPTDATA :
					scriptdata	ScriptData;
				break;
			}
		} CChunk;
	}

	
	
	


} inf;
Valid XHTML 1.0 Transitional Valid CSS Powered by Wikka Wakka Wiki 1.1.6.2
Page was generated in 0.0194 seconds