private void PickMesh() { if (tv2.SelectedNode == null) { return; } engineMeshExplorer.ClearScene(); byte[] data = BF2FileSystem.GetFileFromNode(tv2.SelectedNode); if (data == null) { return; } string ending = Path.GetExtension(BF2FileSystem.GetPathFromNode(tv2.SelectedNode)).ToLower(); switch (ending) { case ".staticmesh": BF2StaticMesh stm = new BF2StaticMesh(data); engineMeshExplorer.objects.AddRange(stm.ConvertForEngine(engineMeshExplorer, toolStripButton3.Checked, toolStripComboBox1.SelectedIndex)); break; case ".bundledmesh": BF2BundledMesh bm = new BF2BundledMesh(data); engineMeshExplorer.objects.AddRange(bm.ConvertForEngine(engineMeshExplorer, toolStripButton3.Checked, toolStripComboBox1.SelectedIndex)); break; case ".skinnedmesh": BF2SkinnedMesh skm = new BF2SkinnedMesh(data); engineMeshExplorer.objects.AddRange(skm.ConvertForEngine(engineMeshExplorer, toolStripButton3.Checked, toolStripComboBox1.SelectedIndex)); break; case ".collisionmesh": BF2CollisionMesh cm = new BF2CollisionMesh(data); engineMeshExplorer.objects.AddRange(cm.ConvertForEngine(engineMeshExplorer)); break; default: RenderObject o = new RenderObject(engineMeshExplorer.device, RenderObject.RenderType.TriListWired, engineMeshExplorer.defaultTexture, engineMeshExplorer); o.InitGeometry(); engineMeshExplorer.objects.Add(o); break; } engineMeshExplorer.ResetCameraDistance(); }
public static void Load() { Stopwatch sw = new Stopwatch(); sw.Start(); objects = new List <BF2LevelObject>(); engine.ClearScene(); foreach (BF2LevelObject lo in objects) { lo.Free(); GC.Collect(); } objects.Clear(); engine.textureManager.ClearCache(); LoadTerrain(); LoadRoadObjects(); LoadStaticObjects(); Log.WriteLine("[BF2 LL] Loaded level in " + sw.ElapsedMilliseconds + "ms"); }