private void filesTV_AfterSelect(object sender, TreeViewEventArgs e) { TreeNode node = filesTV.SelectedNode; if (node.Tag is PackedFile) { PackedFile file = node.Tag as PackedFile; switch (file.GetFileType()) { case TRFileType.GEO: showGEO(file); break; case TRFileType.DDS: case TRFileType.TGA: case TRFileType.JPG: showImage(file); break; default: Console.WriteLine("No handling available for {0} files", file.GetFileType()); break; } } }
private void showGEO(PackedFile geoFile) { if (geoFile.GetFileType() != TRFileType.GEO) { return; } using (MemoryStream memory = new MemoryStream(geoFile.GetContents())) { try { ChunkFile chunkie = new ChunkFile(); if (chunkie.Load(memory)) { GBODChunk gbod = chunkie.Chunks[0] as GBODChunk; var meshes = Viewer.ModelCreator.Generate(gbod, viewer3D.DX); viewer3D.DisplayMeshes(meshes); return; } } catch (Exception) { } MessageBox.Show("Failed to load geometry file"); } }