void OnGUI() { // scene view mouse position Handles.BeginGUI(); UpdateSkin(); //Rect MyRenderRect = new Rect(0,0,350,400); //GUI.Label (MyRenderRect, ""); EditorVoxels.SetVoxelMode(GUILayout.Toggle(EditorVoxels.IsEditVoxels, "Voxel Edit Mode")); if (!EditorVoxels.GetVoxelEditMode()) { LevelSelectGui.MapSelectionGui(); } else { EditorVoxels.VoxelGui(); } LevelSelectGui.MapSelectionGui2(); Handles.EndGUI(); }
public LevelSelectScreen() : base() { _gui = new LevelSelectGui(); }
public static void RayTraceVoxels(SceneView MySceneView) { if (IsEditVoxels) { SceneCamera = MySceneView.camera; string DebugRayString = ""; Vector3 MyMousePosition = Event.current.mousePosition; MyMousePosition.y = LevelSelectGui.GetMainCamera().pixelHeight - MyMousePosition.y; Ray MyRay = LevelSelectGui.GetMainCamera().ScreenPointToRay(MyMousePosition); RaycastHit MyHit; if (Physics.Raycast(MyRay, out MyHit)) { DebugRayString += " Ray YES hit.\n"; SetSelectionVisibility(true); } else { DebugRayString += " Ray NO hit.\n"; SetSelectionVisibility(false); } if (MyHitObject != null) { DebugRayString += " Selected in debugger: " + MyHitObject.name + ".\n"; } else { DebugRayString += " Debugger - Null Selected.\n"; } if (Selection.activeObject) { DebugRayString += " Selected: " + Selection.activeObject.name + ".\n"; } else { DebugRayString += " Heirarchy - Null Selected.\n"; } var style = new GUIStyle(GUI.skin.button); style.normal.textColor = Color.white; //GUILayout.Label (DebugRayString, style, GUILayout.Width (80), GUILayout.Width (500)); if (MyHit.collider && MyHit.collider.gameObject) // if was hit { MyHitObject = MyHit.collider.gameObject.transform; if (MyHitObject.GetComponent <VoxelEngine.Chunk> ()) { if (MyCube == null) { MyCube = GameObject.Find("SelectionMesh"); } if (MyCube == null) { MyCube = GameObject.CreatePrimitive(PrimitiveType.Cube); //DestroyImmediate (MyCube.GetComponent<BoxCollider> ()); MyCube.name = "SelectionMesh"; } if (MyCube != null) { //MyHitObject.parent.GetComponent<VoxelEngine.World>(),MyHit.point)) MyCube.transform.position = MyHitObject.parent.TransformPoint(VoxelEngine.World.RayHitToBlockPosition(MyHit, (BlockType == 0)) + MyHitObject.transform.lossyScale / 2f); MyCube.transform.rotation = MyHitObject.parent.transform.rotation; } } // Retrieve the control Id if (BlockType >= 0) { if (Event.current.isMouse && Event.current.type == EventType.MouseDown && Event.current.button == 0) { int controlId = GUIUtility.GetControlID(FocusType.Passive); Event.current.Use(); { //Debug.DrawLine(MyRay.origin, MyHit.point, Color.blue, 60); if (MyHitObject.GetComponent <VoxelEngine.Chunk> ()) { MyWorld = MyHitObject.parent.GetComponent <VoxelEngine.World> (); if (MyWorld) { MyWorld.UpdateBlockType(MyHit, BlockType, UpdateSize); /*VoxelEngine.World.UpdateBlockCamera(MySceneView.camera, * BlockType, * UpdateSize/2f, * 10000);*/ } } MyHitObject = MyHitObject.parent; } GUIUtility.hotControl = controlId; } } // Tell the UI your event is the main one to use, it override the selection in the scene view } } }