You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
73 lines
1.5 KiB
73 lines
1.5 KiB
//====== Copyright © 1996-2008, Valve Corporation, All rights reserved. =======
|
|
//
|
|
// Purpose:
|
|
//
|
|
//=============================================================================
|
|
|
|
#ifndef VOXFILE_H
|
|
#define VOXFILE_H
|
|
#ifdef _WIN32
|
|
#pragma once
|
|
#endif
|
|
|
|
#pragma pack(1)
|
|
const uint16 DVOX_CHILD_NOT_PRESENT = 0xFFFF;
|
|
struct dvoxtreenode_t
|
|
{
|
|
uint16 childNodes[8];
|
|
uint32 voxelIndex;
|
|
uint32 treeLevel;
|
|
};
|
|
|
|
struct dvoxelvert_t
|
|
{
|
|
int16 pos[3];
|
|
uint32 normal;
|
|
};
|
|
|
|
struct dvoxel_t
|
|
{
|
|
uint32 fileOffset;
|
|
uint32 fileSize;
|
|
uint32 vertexCount;
|
|
uint32 indexCount;
|
|
float vertexScale;
|
|
Vector origin; // quantized grid origin
|
|
Vector localMins; // origin relative bbox
|
|
Vector localMaxs; // ...
|
|
};
|
|
|
|
struct dvoxfilechunk_t
|
|
{
|
|
uint32 identFourCC;
|
|
uint32 version;
|
|
uint32 fileOffset;
|
|
uint32 fileSize;
|
|
};
|
|
|
|
// 1KB header
|
|
struct dvoxelfileheader_t
|
|
{
|
|
uint32 identFourCC;
|
|
uint32 voxelCount; // number of voxels in the file including LODs etc
|
|
uint32 voxTreeNodeCount; // number of nodes in the tree
|
|
uint32 voxTreeNodeRefCount; // number of references to nodes
|
|
|
|
uint32 voxTreeTopLevelNodeCount; // number of top level nodes in the tree
|
|
uint32 chunkCount;
|
|
uint32 pad0;
|
|
uint32 pad1;
|
|
|
|
dvoxfilechunk_t chunks[62];
|
|
};
|
|
#pragma pack()
|
|
|
|
#define VOXEL_FILEID MAKEID('V','M','A','P')
|
|
|
|
#define VOX_CHUNK_VOXELS MAKEID('V','V','O','X')
|
|
#define VOX_CHUNK_VOXELTREE MAKEID('T','R','E','E')
|
|
#define VOX_CHUNK_VOXELGRID MAKEID('G','R','I','D')
|
|
#define VOX_CHUNK_ENTITIES MAKEID('E','N','T','S')
|
|
|
|
|
|
#endif // VOXFILE_H
|