public void OnEnable() { maze = (Maze_e)target; LevelEditor.CurrentMaze = maze.gameObject; LevelEditor.CurrentMaze.GetComponent <Maze.Maze_e>().ID = LevelEditor.CurrentMaze.name.Split(' ')[1]; if (LevelEditor.Mazes != null) { Selection.SetActiveObjectWithContext(maze, maze); SceneView.lastActiveSceneView.FrameSelected(); if (maze.transform.parent != LevelEditor.Mazes) { LevelEditor.SetMazeParent(); } LevelEditor.ReCalculateAllItems(); LevelEditor.ReCalculateAllMazeCubes(); } StartNode = null; EndNode = null; }
private void CreateMazeStructureHandle(GameObject mazeCube) { RaycastHit hit; for (int i = 0; i < mazeCube.transform.childCount; i++) { Game.Maze.Node node = mazeCube.transform.GetChild(i).gameObject.GetComponent <Game.Maze.Node>(); if (node == null) { continue; } Handles.zTest = UnityEngine.Rendering.CompareFunction.Less; Handles.color = Color.black; if (node.rightPath) { Handles.DrawAAPolyLine(Texture2D.whiteTexture, 10, node.transform.position + node.transform.forward * 0.01f, node.transform.position + node.transform.forward * 0.01f + node.transform.right * 0.52f); } if (node.leftPath) { Handles.DrawAAPolyLine(Texture2D.whiteTexture, 10, node.transform.position + node.transform.forward * 0.01f, node.transform.position + node.transform.forward * 0.01f - node.transform.right * 0.52f); } if (node.upPath) { Handles.DrawAAPolyLine(Texture2D.whiteTexture, 10, node.transform.position + node.transform.forward * 0.01f, node.transform.position + node.transform.forward * 0.01f + node.transform.up * 0.52f); } if (node.downPath) { Handles.DrawAAPolyLine(Texture2D.whiteTexture, 10, node.transform.position + node.transform.forward * 0.01f, node.transform.position + node.transform.forward * 0.01f - node.transform.up * 0.52f); } if (StartNode != node) { Handles.color = new Color(0.99f, 0.99f, 1f); } else { Handles.color = new Color(1f, 0.57f, 0.34f); } if (node.inactive) { Handles.color = Color.black; } if (Handles.Button(node.transform.position, Quaternion.Euler(node.transform.eulerAngles), 0.15f, 0.15f, Handles.SphereCap)) { if (!LevelEditor.InactiveNodeEditing) { EndNode = node; if (StartNode != null) { StartNode.CalculatePathDirection(EndNode); EndNode.CalculatePathDirection(StartNode); } else { LevelEditor.ReCalculateNodes(); } if (StartNode == EndNode) { StartNode = null; EndNode = null; } else { EndNode = null; StartNode = node; } } else { if (!node.inactive) { node.Reset(); node.inactive = true; } else { node.inactive = false; StartNode = node; } } } } }