static void OnMenuItemSelected(GUIContextMenu menu) { guiID id = (guiID)menu.SelectedCommandID; GUIEnvironment env = device.GUIEnvironment; switch (id) { case guiID.OpenModel: // FilOnButtonSetScalinge -> Open Model env.AddFileOpenDialog("Please select a model file to open"); break; case guiID.SetModelArchive: // File -> Set Model Archive env.AddFileOpenDialog("Please select your game archive/directory"); break; case guiID.LoadAsOctree: // File -> LoadAsOctree octree = !octree; menu.SetItemChecked(menu.SelectedIndex, octree); break; case guiID.Quit: // File -> Quit device.Close(); break; case guiID.SkyBoxVisible: // View -> Skybox menu.SetItemChecked(menu.SelectedIndex, !menu.GetItemChecked(menu.SelectedIndex)); skybox.Visible = !skybox.Visible; break; case guiID.DebugOff: // View -> Debug Information -> Off for (int i = 1; i <= 6; i++) { menu.SetItemChecked(menu.SelectedIndex + i, false); } if (model != null) { model.DebugDataVisible = DebugSceneType.Off; } break; case guiID.DebugBoundingBox: // View -> Debug Information -> Bounding Box menu.SetItemChecked(menu.SelectedIndex, !menu.GetItemChecked(menu.SelectedIndex)); if (model != null) { model.DebugDataVisible ^= DebugSceneType.BBox; } break; case guiID.DebugNormals: // View -> Debug Information -> Normals menu.SetItemChecked(menu.SelectedIndex, !menu.GetItemChecked(menu.SelectedIndex)); if (model != null) { model.DebugDataVisible ^= DebugSceneType.Normals; } break; case guiID.DebugSkeleton: // View -> Debug Information -> Skeleton menu.SetItemChecked(menu.SelectedIndex, !menu.GetItemChecked(menu.SelectedIndex)); if (model != null) { model.DebugDataVisible ^= DebugSceneType.Skeleton; } break; case guiID.DebugWireOverlay: // View -> Debug Information -> Wire overlay menu.SetItemChecked(menu.SelectedIndex, !menu.GetItemChecked(menu.SelectedIndex)); if (model != null) { model.DebugDataVisible ^= DebugSceneType.MeshWireOverlay; } break; case guiID.DebugHalfTransparent: // View -> Debug Information -> Half-Transparent menu.SetItemChecked(menu.SelectedIndex, !menu.GetItemChecked(menu.SelectedIndex)); if (model != null) { model.DebugDataVisible ^= DebugSceneType.HalfTransparency; } break; case guiID.DebugBuffersBoundingBoxes: // View -> Debug Information -> Buffers bounding boxes menu.SetItemChecked(menu.SelectedIndex, !menu.GetItemChecked(menu.SelectedIndex)); if (model != null) { model.DebugDataVisible ^= DebugSceneType.BBoxBuffers; } break; case guiID.DebugAll: // View -> Debug Information -> All for (int i = 1; i <= 6; i++) { menu.SetItemChecked(menu.SelectedIndex - i, true); } if (model != null) { model.DebugDataVisible = DebugSceneType.Full; } break; case guiID.About: // Help->About showAboutText(); break; case guiID.ModelMaterialSolid: // View -> Material -> Solid if (model != null) { model.SetMaterialType(MaterialType.Solid); } break; case guiID.ModelMaterialTransparent: // View -> Material -> Transparent if (model != null) { model.SetMaterialType(MaterialType.TransparentAddColor); } break; case guiID.ModelMaterialReflection: // View -> Material -> Reflection if (model != null) { model.SetMaterialType(MaterialType.SphereMap); } break; case guiID.CameraMaya: setActiveCamera(camera[0]); break; case guiID.CameraFirstPerson: setActiveCamera(camera[1]); break; } }
static void loadModel(string f) { string e = Path.GetExtension(f); switch (e) { // if a texture is loaded apply it to the current model case ".jpg": case ".pcx": case ".png": case ".ppm": case ".pgm": case ".pbm": case ".psd": case ".tga": case ".bmp": case ".wal": case ".rgb": case ".rgba": Texture t = device.VideoDriver.GetTexture(f); if (t != null && model != null) { // always reload texture device.VideoDriver.RemoveTexture(t); t = device.VideoDriver.GetTexture(f); model.SetMaterialTexture(0, t); } return; // if a archive is loaded add it to the FileArchive case ".pk3": case ".zip": case ".pak": case ".npk": device.FileSystem.AddFileArchive(f); return; } // load a model into the engine if (model != null) { model.Remove(); } model = null; if (e == ".irr") { device.SceneManager.LoadScene(f); model = device.SceneManager.GetSceneNodeFromType(SceneNodeType.AnimatedMesh); return; } AnimatedMesh m = device.SceneManager.GetMesh(f); if (m == null) { // model could not be loaded if (startUpModelFile != f) { device.GUIEnvironment.AddMessageBox(caption, "The model could not be loaded. Maybe it is not a supported file format."); } return; } // set default material properties if (octree) { model = device.SceneManager.AddOctreeSceneNode(m.GetMesh(0)); } else { AnimatedMeshSceneNode n = device.SceneManager.AddAnimatedMeshSceneNode(m); model = n; } model.SetMaterialFlag(MaterialFlag.Lighting, useLight); model.SetMaterialFlag(MaterialFlag.NormalizeNormals, useLight); model.DebugDataVisible = DebugSceneType.Off; // we need to uncheck the menu entries. would be cool to fake a menu event, but // that's not so simple. so we do it brute force GUIContextMenu u = device.GUIEnvironment.RootElement.GetElementFromID((int)guiID.ToggleDebugInfo, true) as GUIContextMenu; if (u != null) { for (int i = 0; i < 6; i++) { u.SetItemChecked(i, false); } } updateScaleInfo(model); }
static void OnMenuItemSelected(GUIContextMenu menu) { guiID id = (guiID)menu.SelectedCommandID; GUIEnvironment env = device.GUIEnvironment; switch (id) { case guiID.OpenModel: // FilOnButtonSetScalinge -> Open Model env.AddFileOpenDialog("Please select a model file to open"); break; case guiID.SetModelArchive: // File -> Set Model Archive env.AddFileOpenDialog("Please select your game archive/directory"); break; case guiID.LoadAsOctree: // File -> LoadAsOctree octree = !octree; menu.SetItemChecked(menu.SelectedIndex, octree); break; case guiID.Quit: // File -> Quit device.Close(); break; case guiID.SkyBoxVisible: // View -> Skybox menu.SetItemChecked(menu.SelectedIndex, !menu.GetItemChecked(menu.SelectedIndex)); skybox.Visible = !skybox.Visible; break; case guiID.DebugOff: // View -> Debug Information -> Off for (int i = 1; i <= 6; i++) menu.SetItemChecked(menu.SelectedIndex + i, false); if (model != null) model.DebugDataVisible = DebugSceneType.Off; break; case guiID.DebugBoundingBox: // View -> Debug Information -> Bounding Box menu.SetItemChecked(menu.SelectedIndex, !menu.GetItemChecked(menu.SelectedIndex)); if (model != null) model.DebugDataVisible ^= DebugSceneType.BBox; break; case guiID.DebugNormals: // View -> Debug Information -> Normals menu.SetItemChecked(menu.SelectedIndex, !menu.GetItemChecked(menu.SelectedIndex)); if (model != null) model.DebugDataVisible ^= DebugSceneType.Normals; break; case guiID.DebugSkeleton: // View -> Debug Information -> Skeleton menu.SetItemChecked(menu.SelectedIndex, !menu.GetItemChecked(menu.SelectedIndex)); if (model != null) model.DebugDataVisible ^= DebugSceneType.Skeleton; break; case guiID.DebugWireOverlay: // View -> Debug Information -> Wire overlay menu.SetItemChecked(menu.SelectedIndex, !menu.GetItemChecked(menu.SelectedIndex)); if (model != null) model.DebugDataVisible ^= DebugSceneType.MeshWireOverlay; break; case guiID.DebugHalfTransparent: // View -> Debug Information -> Half-Transparent menu.SetItemChecked(menu.SelectedIndex, !menu.GetItemChecked(menu.SelectedIndex)); if (model != null) model.DebugDataVisible ^= DebugSceneType.HalfTransparency; break; case guiID.DebugBuffersBoundingBoxes: // View -> Debug Information -> Buffers bounding boxes menu.SetItemChecked(menu.SelectedIndex, !menu.GetItemChecked(menu.SelectedIndex)); if (model != null) model.DebugDataVisible ^= DebugSceneType.BBoxBuffers; break; case guiID.DebugAll: // View -> Debug Information -> All for (int i = 1; i <= 6; i++) menu.SetItemChecked(menu.SelectedIndex - i, true); if (model != null) model.DebugDataVisible = DebugSceneType.Full; break; case guiID.About: // Help->About showAboutText(); break; case guiID.ModelMaterialSolid: // View -> Material -> Solid if (model != null) model.SetMaterialType(MaterialType.Solid); break; case guiID.ModelMaterialTransparent: // View -> Material -> Transparent if (model != null) model.SetMaterialType(MaterialType.TransparentAddColor); break; case guiID.ModelMaterialReflection: // View -> Material -> Reflection if (model != null) model.SetMaterialType(MaterialType.SphereMap); break; case guiID.CameraMaya: setActiveCamera(camera[0]); break; case guiID.CameraFirstPerson: setActiveCamera(camera[1]); break; } }