Inheritance: MonoBehaviour
Exemple #1
0
    public override void OnInspectorGUI()
    {
        DrawDefaultInspector();

        RoomCreator myScript = (RoomCreator)target;

        #region Кнопка загрузки данных о точках и создания комнат на основе данных
        if (GUILayout.Button("Download ListNodes & Build Rooms"))
        {
            ListNodesDownload(myScript);
            StoreysDefinition(myScript);
            BuildingRooms(myScript);
        }
        #endregion
        if (GUILayout.Button(ButtonName_FloorControllerBuilding))
        {
            FloorManagerController manager = Instantiate(myScript.FloorManagerPrefab, Vector3.zero, Quaternion.identity);
            myScript.FloorManagers.Add(manager.transform);
        }
    }
Exemple #2
0
    void Setup()
    {
        //find grid size
        roomHeight = Mathf.RoundToInt(roomSizeWorldUnits.x);
        roomWidth  = Mathf.RoundToInt(roomSizeWorldUnits.y);
        //create grid
        grid  = new bool[roomWidth, roomHeight];
        names = new string[roomWidth, roomHeight];

        possibleBoss = new List <Vector2>();
        possibleInit = new List <Vector2>();
        //set grid's default state
        for (int x = 0; x < roomWidth - 1; x++)
        {
            for (int y = 0; y < roomHeight - 1; y++)
            {
                grid[x, y]  = false;
                names[x, y] = "";
            }
        }

        roomScript = GetComponent <RoomCreator>();

        //set first walker
        //init list
        walkers = new List <walker>();
        //create a walker
        walker newWalker = new walker();

        newWalker.dir = RandomDirection();
        //find center of grid
        Vector2 spawnPos = new Vector2(Mathf.RoundToInt(roomWidth / 2.0f),
                                       Mathf.RoundToInt(roomHeight / 2.0f));

        newWalker.pos = spawnPos;
        //add walker to list
        walkers.Add(newWalker);
    }
Exemple #3
0
 // Awake is called before Start
 void Awake()
 {
     roomScript = GetComponent <RoomCreator>();
     InitGame();
 }
    public virtual GameObject construct(GameObject prefab, Transform parent)
    {
        GameObject created = RoomCreator.construct(startPosition, dimensions, prefab, parent);

        return(created);
    }
Exemple #5
0
    public override void OnInspectorGUI()
    {
        base.OnInspectorGUI();
        creator = (RoomCreator)target;

        var styleIntrolabel = new GUIStyle(GUI.skin.label)
        {
            alignment = TextAnchor.MiddleCenter
        };

        EditorGUILayout.LabelField("To interact with grid press SPACE, in case of ADD nodes use DOUBLE SPACE ", styleIntrolabel);

        // Mode buttons
        GUILayout.BeginHorizontal();

        var defaultGUIColor = GUI.backgroundColor;

        GUI.backgroundColor = Color.green;

        if (!addButtonToggled && !removeButtonToggled && !addObjFromPrefabToggled)
        {
            addChecked              = false;
            removeChecked           = false;
            addObjFromPrefabChecked = false;
            creator.SetMode(RoomCreator.RoomCreatorMode.DEFAULT);
        }

        addButtonToggled = GUILayout.Toggle(addButtonToggled, "ADD hex mode", "Button");
        if (addButtonToggled && addButtonToggled != addChecked)
        {
            addChecked = true;

            removeButtonToggled     = false;
            removeChecked           = false;
            addObjFromPrefabToggled = false;
            addObjFromPrefabChecked = false;
            Debug.Log("ADD mode ON !");

            creator.SetMode(RoomCreator.RoomCreatorMode.ADD);
        }
        else if (!addButtonToggled && addChecked)
        {
            addChecked = false;
            Debug.Log("Default mode !");

            creator.SetMode(RoomCreator.RoomCreatorMode.DEFAULT);
        }

        GUI.backgroundColor = Color.red;

        removeButtonToggled = GUILayout.Toggle(removeButtonToggled, "REMOVE hex mode", "Button");
        if (removeButtonToggled && removeButtonToggled != removeChecked)
        {
            removeChecked = true;

            addButtonToggled        = false;
            addChecked              = false;
            addObjFromPrefabToggled = false;
            addObjFromPrefabChecked = false;
            Debug.Log("REMOVE mode ON !");

            creator.SetMode(RoomCreator.RoomCreatorMode.REMOVE);
        }
        else if (!removeButtonToggled && removeChecked)
        {
            removeChecked = false;
            Debug.Log("Default mode !");

            creator.SetMode(RoomCreator.RoomCreatorMode.DEFAULT);
        }
        GUILayout.EndHorizontal();


        GUI.backgroundColor     = Color.cyan;
        addObjFromPrefabToggled = GUILayout.Toggle(addObjFromPrefabToggled, "ADD OBJECT from prefab mode", "Button");
        if (addObjFromPrefabToggled && addObjFromPrefabToggled != addObjFromPrefabChecked)
        {
            addObjFromPrefabChecked = true;

            removeButtonToggled = false;
            removeChecked       = false;
            addButtonToggled    = false;
            addChecked          = false;
            Debug.Log("ADD OBJ from prefab mode ON !");

            creator.SetMode(RoomCreator.RoomCreatorMode.ADDOBJ);
        }
        else if (!addObjFromPrefabToggled && addObjFromPrefabChecked)
        {
            addObjFromPrefabChecked = false;
            Debug.Log("Default mode !");

            creator.SetMode(RoomCreator.RoomCreatorMode.DEFAULT);
        }

        GUI.backgroundColor = defaultGUIColor;

        // Get is SPACE down
        Event e         = Event.current;
        int   controlID = GUIUtility.GetControlID(FocusType.Passive);

        switch (e.GetTypeForControl(controlID))
        {
        case EventType.KeyDown:
            if (e.keyCode == KeyCode.Space)
            {
                // Actions
                if (creator.Mode == RoomCreator.RoomCreatorMode.ADD)
                {
                    creator.InteractWithGhosts();
                }
                else if (creator.Mode == RoomCreator.RoomCreatorMode.REMOVE)
                {
                    creator.DeleteNode();
                }
                else if (creator.Mode == RoomCreator.RoomCreatorMode.ADDOBJ)
                {
                    creator.SpawnObject();
                }
            }
            break;
        }

        // Add drop menu in Add prefab mode
        if (creator.Mode == RoomCreator.RoomCreatorMode.ADDOBJ)
        {
            var stylePrefLabel = new GUIStyle(GUI.skin.label)
            {
                alignment = TextAnchor.MiddleCenter
            };
            stylePrefLabel.fontStyle = FontStyle.Bold;
            EditorGUILayout.LabelField("SELECT ROOM PREFAB", stylePrefLabel);
            creator.RoomEditorType = (EditorPrefabsScriptable.PrefabRoomEditorType)EditorGUILayout.EnumPopup("Room prefab type", creator.RoomEditorType);
            // select room prefab
            List <string> prefabNames = new List <string>();
            foreach (EditorPrefabsScriptable scriptable in EditorPrefabsScriptable.FindPrefabsByType(creator.RoomEditorType, creator.editorScriptables))
            {
                prefabNames.Add(scriptable.name);
            }
            prefabChoice = EditorGUILayout.Popup(prefabChoice, prefabNames.ToArray());

            creator.Rotation       = (RoomCreator.RotationType)EditorGUILayout.EnumPopup("Rotation", creator.Rotation);
            GUI.enabled            = false;
            creator.SelectedPrefab = (GameObject)EditorGUILayout.ObjectField(new GUIContent("Selected Prefab", "Add object to fracture"), creator.SelectedPrefab, typeof(GameObject), false);
            GUI.enabled            = true;

            SerializedObject   so = new SerializedObject(target);
            SerializedProperty stringsProperty = so.FindProperty("editorScriptables");

            EditorGUILayout.PropertyField(stringsProperty, true); // True means show children
            so.ApplyModifiedProperties();                         // Remember to apply modified properties
        }

        if (creator.SelectedScriptable == null && creator.editorScriptables.Length != 0)
        {
            creator.SelectedScriptable = creator.editorScriptables[0];
            if (creator.SelectedScriptable)
            {
                creator.SelectedPrefab = creator.SelectedScriptable.Prefab;
            }
        }
        // Change room prefab type
        else if (creator.editorScriptables.Length != 0 && (creator.SelectedScriptable.Type != creator.RoomEditorType))
        {
            prefabChoice = 0;
            creator.SelectedScriptable = EditorPrefabsScriptable.FindPrefabsByType(creator.RoomEditorType, creator.editorScriptables)[prefabChoice];
            if (creator.SelectedScriptable)
            {
                creator.SelectedPrefab = creator.SelectedScriptable.Prefab;
            }
        }
        // Change room prefab
        else if (creator.editorScriptables.Length != 0 && oldPrefabChoice != prefabChoice)
        {
            oldPrefabChoice            = prefabChoice;
            creator.SelectedScriptable = EditorPrefabsScriptable.FindPrefabsByType(creator.RoomEditorType, creator.editorScriptables)[prefabChoice];
            if (creator.SelectedScriptable)
            {
                creator.SelectedPrefab = creator.SelectedScriptable.Prefab;
            }
        }
    }
Exemple #6
0
 public void Prime(GameObject tile, RoomCreator destinationRoom, Vector2 destinationCoords)
 {
     _tile = tile;
     _dr = destinationRoom;
     _dc = destinationCoords;
 }
Exemple #7
0
    private void BuildingRooms(RoomCreator manager)
    {
        #region удаляем и создаем новый контейнер

        if (manager.WallContainer != null)
        {
            while (manager.WallContainer.childCount > 0)
            {
                DestroyImmediate(manager.WallContainer.GetChild(0).gameObject);
            }
            DestroyImmediate(manager.WallContainer.gameObject);
        }
        manager.WallContainer = Instantiate(manager.PrefabNodeContainer, new Vector3(0, 0, 0), Quaternion.identity);
        #endregion

        for (int i = 0; i < manager.LinkNodes.Count; i++)
        {
            for (int j = 0; j < manager.LinkNodes[i].toNode.Count; j++)
            {
                Transform wall = Instantiate(manager.WallPrefab, (manager.LinkNodes[i].NodePosition + manager.LinkNodes[i].toNode[j] + new Vector3(0, manager.Height, 0)) / 2, Quaternion.identity, manager.WallContainer);
                manager.ConverterMesh.GetPolygonTree(wall.gameObject);
                keys = manager.ConverterMesh.GetKeys();


                if (manager.BuildWithMeshEditing == RoomCreator.statesBuilds.WithMeshEdit)
                {
                    InstantinateWallWithEditMesh(manager, wall, manager.LinkNodes[i].toNode[j], manager.LinkNodes[i].NodePosition);
                }
                else if (manager.BuildWithMeshEditing == RoomCreator.statesBuilds.WithoutMeshEdit)
                {
                    wall.LookAt(manager.LinkNodes[i].NodePosition + new Vector3(0, manager.Height / 2, 0));
                    wall.localScale = new Vector3(manager.Width, manager.Height, Vector3.Distance(manager.LinkNodes[i].NodePosition, manager.LinkNodes[i].toNode[j]) + manager.Width);
                }
                else if (manager.BuildWithMeshEditing == RoomCreator.statesBuilds.Combination)
                {
                    int     axiesChanges = 0;
                    Vector3 vector       = manager.LinkNodes[i].NodePosition - manager.LinkNodes[i].toNode[j];
                    if (Mathf.Abs(vector.x) > 0)
                    {
                        axiesChanges++;
                    }
                    if (Mathf.Abs(vector.y) > 0)
                    {
                        axiesChanges++;
                    }
                    if (Mathf.Abs(vector.z) > 0)
                    {
                        axiesChanges++;
                    }


                    if (axiesChanges > 1)
                    {
                        InstantinateWallWithEditMesh(manager, wall, manager.LinkNodes[i].toNode[j], manager.LinkNodes[i].NodePosition);
                    }
                    else
                    {
                        wall.LookAt(manager.LinkNodes[i].NodePosition + new Vector3(0, manager.Height / 2, 0));
                        wall.localScale = new Vector3(manager.Width, manager.Height, Vector3.Distance(manager.LinkNodes[i].NodePosition, manager.LinkNodes[i].toNode[j]) + manager.Width);
                    }
                }
            }
        }
        if (manager.BuildWithMeshEditing != RoomCreator.statesBuilds.WithoutMeshEdit)
        {
            SaveAndLoadAssetWithMenu.DownloadMeshes_andSaveRooms(manager);
        }
    }
 private void Awake()
 {
     rc = GetComponent <RoomCreator>();
 }
Exemple #9
0
 void Awake()
 {
     roomCreator = GetComponent <RoomCreator>();
 }
Exemple #10
0
        private void Button3_Click(object sender, EventArgs e)
        {
            RoomCreator room = new RoomCreator(l);

            room.ShowDialog();
        }
Exemple #11
0
    private bool LoadLevel()
    {
        RoomCreator creator = GameObject.FindGameObjectWithTag("RoomCreator").GetComponent <RoomCreator>();

        return(creator.LoadNextLevel(transform));
    }
Exemple #12
0
    private void DestroyLevel()
    {
        RoomCreator creator = GameObject.FindGameObjectWithTag("RoomCreator").GetComponent <RoomCreator>();

        creator.DestroyOldLevel();
    }
    static void Init()
    {
        RoomCreator window = (RoomCreator)EditorWindow.GetWindow(typeof(RoomCreator));

        window.Show();
    }