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