public BSPModel(ref Meta meta)
{
if (meta == null)
{
MessageBox.Show("ERROR: NO SBSP tag selected!");
this.BspNumber = -1;
return;
}
this.map = meta.Map;
string[] temps = meta.name.Split('\\');
Name = temps[temps.Length - 1];
BspNumber = map.BSP.FindBSPNumberByBSPIdent(meta.ident);
switch (map.HaloVersion)
{
case HaloVersionEnum.Halo2:
case HaloVersionEnum.Halo2Vista:
// 10x 0.0000010
LoadModelStructure(ref meta);
// 5x 0.0000010
LoadPermutations(ref meta);
// Load Decorators
LoadUnknowns(ref meta);
// 5x 0.0000010
Shaders = new BSPShaderContainer(this, ref meta);
Display = new BSPDisplayedInfo();
// 2x 0.0000010
LoadLightmaps();
sky = new Sky();
LoadSky(ref meta);
Spawns = new SpawnInfo(map);
// 1x 0.0000010
ClusterInfo = ClustersPVS.GetClustersPVSInfo(ref meta);
break;
case HaloVersionEnum.Halo1:
case HaloVersionEnum.HaloCE:
Shaders = new BSPShaderContainer();
this.BSPPermutationRawDataMetaChunks = new BSPPermutationRawDataMetaChunk[0];
this.LightMapBitmap = new Bitmap[0];
this.SceneryLightMapBitmap = new Bitmap[0];
this.PermutationInfo = new PermutationPlacement[0];
LoadModelStructure(ref meta);
Display = new BSPDisplayedInfo();
Spawns = new SpawnInfo(map);
sky = new Sky();
break;
}
}