Ejemplo n.º 1
0
        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;
            }
        }
Ejemplo n.º 2
0
        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);
        }
Ejemplo n.º 3
0
		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;
			}
		}