public void OnSceneGUI() { hallway.PositionUpdate(); int[] gridSize = hallway.GridSize; for (int i = 0; i < gridSize[0]; i++) { for (int j = 0; j < gridSize[1]; j++) { Handles.color = StateColor(i, j); Vector3 absolutePosition = hallway.GetPosition(i, j); if (hallway.HasAdjacents(i, j) && Handles.Button(absolutePosition, Quaternion.identity, 0.5f, 0.5f, Handles.CubeHandleCap)) { hallway.SwitchState(i, j, MaskState.FILL); hallway.DrawGeometry(); SceneUpdater.UpdateScene(); } var state = hallway.GetState(i, j); if (NeedsToDrawCube(state)) { Handles.color = ColorForState(state); Vector3 cubePosition = new Vector3(absolutePosition.x, DoorDefinition.GlobalSize / 2f, absolutePosition.z); Handles.CubeHandleCap(0, cubePosition, Quaternion.identity, DoorDefinition.GlobalSize, EventType.Repaint); } } } }