Skip to content

File format: mxv

chino edited this page Jan 5, 2013 · 3 revisions
Execution list format with visibility info and vertex index (*.mxv):

num_texture_files : uint16
texture_file_name[num_texture_files] : '\\0' separated strings
num_groups : uint16
{
	num_exec_lists : uint16
	{
		exec_type : uint32 // 0 = entirely opaque, 1 = contains transparencies
		num_vertices : uint16
		vertex(x,y,z,reserved,colour,specular,tu,tv)[num_vertices] : x, y, z float, others uint32
		num_texture_groups : uint16
		{
		  texture_type : uint16 // 0 = normal, 1 = environment mapped
		  start_vertex : uint16
		  num_vertices : uint16
		  texture_no : uint16
		  num_triangles : uint16
		  triangles(v0,v1,v2,pad16,nx,ny,nz)[num_triangles] : v? uint16, pad16 uint16, n? float
		}[num_texture_groups]
	
		num_animating_polys : uint16
		{
		  animation : uint16
		  frames : uint16
		  vertices : uint16
		  vertex[ vertices ] : uint16
		  {
		     {
		  	tu, tv : float
		     }[ vertices ]
		  }[ frames ]
		}[ num_animating_polys ]

	}[num_exec_lists]
}[num_groups]
num_animations : uint16
{
	frames : uint16
	maxloops : uint16
	animsize : uint16
	animdata[ animsize ] : uint16
}[ num_animations ]
mxvflag : uint16 // always 1 for mxv format
{
	group_name : '\\0' separated string
	group_center(x, y, z) : all float
	group_half_size(x, y, z) : all float
	num_portals_in_group : uint16
	{
		num_vertices_in_portal : uint16
		vertex(x, y, z)[num_vertices_in_portal] : all float
		num_groups_visible_from_portal : uint16
		groups_visible_from_portal[num_groups_visible_from_portal] : uint16
	}[num_portals_in_group]
}[num_groups]
mxviflag : uint16 // always 1 for mxv format with vertex index
{
	num_exec_lists : uint16
	{
		cell_origin(x, y, z) : all float
		xcells, ycells, zcells : all uint16
		num_vertex_indices : uint16
		vertex_index[num_vertex_indices] : uint16 // points into exec buffer vertex[]
		vertex_cell(num_verts_in_cell : uint16
			start_vert_in_cell : uint16)[num_vertex_cells] // points into vertex_index[]
	}[num_exec_lists]
}[num_groups]
num_start_points : uint16
{
	x, y, z : float
	in_group : uint16
}[num_start_points]
Clone this wiki locally