public override void OnGUI(MazeCreationWorkflowBackEnd backend) { if (backend.selectedMaze == null && GUILayout.Button("New")) { CreateNewPlainMaze(backend); } if (backend.selectedMaze == null) { return; } var maze = backend.selectedMaze; maze.name = EditorGUILayout.TextField("Name", maze.name); maze.MazeWidthInMeter = EditorGUILayout.FloatField("Width", maze.MazeWidthInMeter); maze.MazeLengthInMeter = EditorGUILayout.FloatField("Length", maze.MazeLengthInMeter); maze.RoomDimension = EditorGUILayout.Vector3Field("Room WxHxL (m):", maze.RoomDimension, null); var gridSize = beMobileMaze.CalcGridSize(maze); MazeEditorUtil.RebuildGrid(maze); EditorGUILayout.Vector2Field("Grid Cols(x) Rows(y):", gridSize, null); if (GUILayout.Button("Create")) { backend.selectedMaze = maze; } }
private void AddANewUnit(beMobileMaze maze, Vector2 pos, MazeCreationWorkflowBackEnd backend) { var unitHost = PrefabUtility.InstantiatePrefab(unitPrefab) as GameObject; PrefabUtility.DisconnectPrefabInstance(unitHost); var unit = MazeEditorUtil.InitializeUnit(maze, pos, unitFloorOffset, unitHost); maze.Grid[(int)pos.x, (int)pos.y] = unit; maze.Units.Add(unit); }
public override Rect OnGUI() { var rect = EditorGUILayout.BeginVertical(); roomDimension = EditorGUILayout.Vector3Field("Room roomDimension", roomDimension); pivotOrigin = EditorGUILayout.Vector3Field("Origin", pivotOrigin); useCenterAsOrigin = EditorGUILayout.ToggleLeft("Use the Center as origin!", useCenterAsOrigin); addBoxCollider = EditorGUILayout.ToggleLeft("Add Box Collider", addBoxCollider); doNotCreateVisualStructure = EditorGUILayout.ToggleLeft("Don't create visual structure", doNotCreateVisualStructure); if (!doNotCreateVisualStructure) { createFromPrimitivePlanes = EditorGUILayout.ToggleLeft("Create from primitives", createFromPrimitivePlanes); createAsWholeMesh = EditorGUILayout.ToggleLeft("Create as whole Mesh", createAsWholeMesh); useUVTestMaterial = EditorGUILayout.ToggleLeft("Use UV Test material", useUVTestMaterial); } if (GUILayout.Button("Create new Maze Unit (Room)", GUILayout.Height(35f))) { if (expectedChildComponents == null) { Initialize(); } var resizeModel = new UnitMeshModificationModel(roomDimension, pivotOrigin, useCenterAsOrigin); constructedUnit = ConstructUnit(resizeModel); } if (GUILayout.Button("Resize Unit (Room)")) { var resizeModel = new UnitMeshModificationModel(roomDimension, pivotOrigin, useCenterAsOrigin); MazeEditorUtil.ResizeUnitByMeshModification(constructedUnit.gameObject, resizeModel); } constructedUnit = EditorGUILayout.ObjectField("Created Unit", constructedUnit, typeof(GameObject), true) as MazeUnit; EditorGUILayout.Space(); Render_SaveAsPrefab_Option <MazeUnit>(constructedUnit); EditorGUILayout.EndVertical(); return(rect); }
private void OnEnable() { var maze = target as beMobileMaze; if (maze.transform.childCount > 0 && !maze.Units.Any()) { MazeEditorUtil.CacheUnitsIn(maze); EditorUtility.SetDirty(maze); } if (maze.Grid == null) { MazeEditorUtil.RebuildGrid(maze); EditorUtility.SetDirty(maze); } }