Ejemplo n.º 1
0
        public static void OpenRegionSceneEditor(LevelRegion region = null)
        {
            previousScene = GUIAuxiliar.OpenNewScene("Region Editor", out var actualScene);
            RegionEditorWindow window = GUIAuxiliar.OpenEditorWindow <RegionEditorWindow>(Style.TITLE_REGION_EDITOR_WINDOW);

            if (String.IsNullOrEmpty(previousScene))
            {
                return;
            }


            //RegionEditorWindow window = (RegionEditorWindow)EditorWindow.GetWindow(typeof(RegionEditorWindow));

            if (!AssetDatabase.IsValidFolder(Paths.FOLDER_MAPS))
            {
                AssetDatabase.CreateFolder(Paths.FOLDER_PREFABS, Paths.NAME_MAPS);
            }
            window.ReStart();

            if (region != null)
            {
                Editlevel = region;
                window.LoadGrid();
            }

            window.FindLevel();
            Selection.activeObject = Editlevel.terrainGrid.gameObject;
            SceneView.lastActiveSceneView.FrameSelected();
            window.Show();
            //OpenWindow();
            PrefabCollectionWindow.OpenWindow();
        }
Ejemplo n.º 2
0
        /**
         * Add a Prefab Object into the cells. Takes the size of the object in cells an puts into the middle.
         *
         */
        private void AddObjectToCell(Vector2Int size, Vector2Int indexPosition, Cell mainCell, SceneObjectContainer sceneObject, bool instancing = false)
        {
            var cellToObtain = new Cell[size.x * size.y];

            if (indexPosition.x + size.x >= xSize)
            {
                indexPosition.x = xSize - size.x;
            }

            if (indexPosition.y + size.y >= ySize)
            {
                indexPosition.y = xSize - size.y;
            }
            //Calculamos las celdas adyacentes.
            Vector3 position = Vector3.zero;

            for (int i = 0; i < size.x; i++)
            {
                for (int j = 0; j < size.y; j++)
                {
                    int index = i + j * size.x;
                    cellToObtain[index] = cells[getIndex(indexPosition.x + i, indexPosition.y + j)];

                    position += transform.TransformPoint(cellToObtain[index].lastObjectPos);
                }
            }
            position /= sceneObject.CellCountSize;
            position -= sceneObject.Pivot;
            GameObject realObject;

            realObject = GUIAuxiliar.Instanciate(sceneObject.Prefab, transform, position, sceneObject.Rotation, sceneObject.Scale, instancing);
            var newInfo = new ObjectInfo(cellToObtain, realObject, realObject.transform.position, sceneObject.Pivot, sceneObject.Size.y, size);

            Array.ForEach(cellToObtain, element => element.SetObjectAsInfoOnly(newInfo));
        }
Ejemplo n.º 3
0
 public void SaveVars()
 {
     jsonData = GUIAuxiliar.Serialize(new VariableContainer()
     {
         value = varList
     });
 }
Ejemplo n.º 4
0
        public void SetObject(SceneObjectContainer selectObject, Vector3 position, bool instancing = false)
        {
            var sceneObject = GUIAuxiliar.Instanciate(selectObject.Prefab, transform, position, selectObject.Rotation, selectObject.Scale, instancing);
            var dataObject  = new LevelObjectData(sceneObject, position);

            listOfObjects.Add(dataObject);
        }
Ejemplo n.º 5
0
        public LevelObjectData RemoveFromIndex(int index)
        {
            var data = listOfObjects[index];

            GUIAuxiliar.Destroy(data.gameObject);
            listOfObjects.RemoveAt(index);
            return(data);
        }
Ejemplo n.º 6
0
            public static ContainerWindowCreator CreateEditWindow(EditorWindow owner, PrefabDataBase data, Container tipe)
            {
                var window = GUIAuxiliar.OpenEditorWindow <ContainerWindowCreator>("Create Prefab");

                window.edit = true;
                window      = DoStyle(owner, data, tipe, window);
                return(window);
            }
Ejemplo n.º 7
0
        //Creates the main window.
        public static void OpenWindow()
        {
            PrefabCollectionWindow window = GUIAuxiliar.OpenEditorWindow <PrefabCollectionWindow>(Style.TITLE_PREFAB_COLLECTION_WINDOW);

            window.minSize = new Vector2(350, 250);
            window.maxSize = new Vector2(350, 1000);
            PrefabCollectionWindow.selectObject = new SceneObjectContainer();
            window.Show();
        }
Ejemplo n.º 8
0
        public WallInfo(SceneObjectContainer c, Transform t, Vector3 position, bool instancing)
        {
            var wallInfo = c.GetAsWall();

            height        = wallInfo.height;
            transitable   = wallInfo.transitable;
            this.position = position;
            //TODO
            prefabObject = GUIAuxiliar.Instanciate(wallInfo.prefab, t, c.preview.transform.position, c.preview.transform.rotation, Vector3.one, instancing);
        }
Ejemplo n.º 9
0
 private void NewMap()
 {
     GUIAuxiliar.Destroy(actualLevel.runTimeTerrain);
     actualLevel = null;
     InitWindow();
     levelSerialized = new SerializedObject(actualLevel);
     CreateReorderableList();
     Selection.activeGameObject = actualLevel.runTimeTerrain;
     SceneView.lastActiveSceneView.FrameSelected();
 }
Ejemplo n.º 10
0
            public static CellEditWindow CreateWindow(Cell owner)
            {
                var window = GUIAuxiliar.OpenEditorWindow <CellEditWindow>("Cell Editor");

                window.owner   = owner;
                window.maxSize = new Vector2(400, 250);
                window.minSize = window.maxSize;
                window.ShowUtility();
                return(window);
            }
Ejemplo n.º 11
0
        internal void RemoveLast()
        {
            if (objectList.Count < 1)
            {
                return;
            }
            ObjectInfo info = objectList.Last();

            GUIAuxiliar.Destroy(info.gameObject);
            objectList.Remove(info);
        }
Ejemplo n.º 12
0
        internal void AddWall(SceneObjectContainer obj, Transform t, int wallIndex, bool instancing)
        {
            WallInfo preWall = walls[wallIndex];

            if (preWall.prefabObject != null)
            {
                GUIAuxiliar.Destroy(preWall.prefabObject);
            }
            WallInfo wall = new WallInfo(obj, t, preWall.position, instancing);

            walls[wallIndex] = wall;
        }
Ejemplo n.º 13
0
        public static void OpenEditor(Level editLevel = null)
        {
            string pre    = GUIAuxiliar.OpenNewScene("Level Editor", out var scene);
            var    window = GUIAuxiliar.OpenEditorWindow <LevelEditorWindow>(Style.TITLE_LEVEL_EDITOR_WINDOW);

            if (String.IsNullOrEmpty(pre))
            {
                return;
            }

            previousScene = pre;
            scenePath     = GUIAuxiliar.CreateTemporalScene(Paths.PATH_PREFABS, scene, "Level Editor");

            if (editLevel != null)
            {
                actualLevel = editLevel;
                actualLevel.LoadLevel(Vector3.zero, null);
                Selection.activeGameObject = actualLevel.runTimeTerrain;
                SceneView.lastActiveSceneView.FrameSelected();
            }

            else
            {
                actualLevel = null;
                window.InitWindow();
            }

            window.titleContent        = Style.TITLE_LEVEL_EDITOR_WINDOW;
            Selection.activeGameObject = actualLevel.runTimeTerrain;
            SceneView.lastActiveSceneView.FrameSelected();

            window.maxSize = new Vector2(300, 700);
            window.minSize = new Vector2(300, 300);

            window.Show();


            Paths.CreateFolderIfNotExist(Paths.FOLDER_PREFABS, Paths.NAME_LEVELS);
            Paths.CreateFolderIfNotExist(Paths.FOLDER_RESOURCES_LEVEL_EDITOR, Paths.NAME_LEVELS);
            //We create the folders here.

            /* if (!AssetDatabase.IsValidFolder(Paths.FOLDER_LEVELS))
             * {
             *  AssetDatabase.CreateFolder(Paths.FOLDER_PREFABS, Paths.NAME_LEVELS);
             *
             * }
             *
             * if (!AssetDatabase.IsValidFolder(Paths.FOLDER_RESOURCE_LEVEL))
             * {
             *  AssetDatabase.CreateFolder(Paths.FOLDER_RESOURCES_LEVEL_EDITOR, Paths.NAME_LEVELS);
             * }
             */
        }
Ejemplo n.º 14
0
        private void Remove(WallInfo wallInfo)
        {
            if (wallInfo.prefabObject != null)
            {
                GUIAuxiliar.Destroy(wallInfo.prefabObject);
            }

            var newWall = new WallInfo()
            {
                position = wallInfo.position
            };
        }
Ejemplo n.º 15
0
 public void LoadVars()
 {
     if (!string.IsNullOrEmpty(jsonData))
     {
         var container = (VariableContainer)GUIAuxiliar.Deserialize <VariableContainer>(jsonData);
         varList = container.value;
     }
     else
     {
         varList = new List <IData>();
     }
 }
Ejemplo n.º 16
0
        public void Remove(ObjectInfo objectInfo)
        {
            int index = objectList.IndexOf(objectInfo);

            if (index != -1)
            {
                objectList.Remove(objectInfo);

                for (int i = index; i < objectList.Count; i++)
                {
                }
                GUIAuxiliar.Destroy(objectInfo.gameObject);
            }
        }
Ejemplo n.º 17
0
        //Añade un objeto a la lista de la celda.
        internal void AddObject(SceneObjectContainer obj, Transform t, Vector3 offset, bool instancing = false)
        {
            Transform  parent  = t;
            ObjectInfo newInfo = new ObjectInfo();

            if (objectList.Count >= 1)
            {
                var last = objectList.Last();
                newInfo.realPosition = lastObjectPos + offset - obj.Pivot;
            }
            else
            {
                newInfo.realPosition = obj.Position + offset;
            }
            newInfo.yOffset = obj.Size.y;
            newInfo.pivot   = obj.Pivot;

            newInfo.gameObject = GUIAuxiliar.Instanciate(obj.Prefab, parent, newInfo.realPosition, obj.Rotation, obj.Scale, instancing);
            objectList.Add(newInfo);
        }
Ejemplo n.º 18
0
            public static PrefabCollectionCreatorWindow CreateWindow(PrefabCollectionWindow owner)
            {
                var window = GUIAuxiliar.OpenEditorWindow <PrefabCollectionCreatorWindow>("Collection Creator");

                Paths.CreateFolderIfNotExist(Paths.FOLDER_RESOURCES_LEVEL_EDITOR, Paths.NAME_DATA_BASE);

                /* if (!AssetDatabase.IsValidFolder(Paths.FOLDER_DATA_BASE))
                 * {
                 *  AssetDatabase.CreateFolder(Paths.FOLDER_RESOURCES_LEVEL_EDITOR, Paths.NAME_DATA_BASE);
                 * }
                 */
                window.ShowUtility();
                window.dataBase = CreateInstance <PrefabDataBase>();
                window.dataBase.Init();
                window.dataBase.dataBaseName = "New";
                window.dataBase.prefabList   = new List <PrefabContainer>();
                window.maxSize = new Vector2(300, 100);
                window.minSize = new Vector2(300, 100);
                window.owner   = owner;
                return(window);
            }
Ejemplo n.º 19
0
        private void CheckPicker()
        {
            string commandName = Event.current.commandName;

            if (commandName == RegionEditorWindow.ON_PICK_COMMAND)
            {
                if (isPicking)
                {
                    Level data = (Level)EditorGUIUtility.GetObjectPickerObject();
                    if (data != null)
                    {
                        GUIAuxiliar.Destroy(actualLevel.runTimeTerrain);
                        actualLevel = data;
                        actualLevel.LoadLevel(Vector3.zero, null);
                        levelSerialized = new SerializedObject(actualLevel);
                        CreateReorderableList();
                        Selection.activeGameObject = actualLevel.runTimeTerrain;
                        SceneView.lastActiveSceneView.FrameSelected();
                    }
                    isPicking = false;
                }
            }
        }
Ejemplo n.º 20
0
 private void OnGUI()
 {
     container.ShowGUIEdit(this);
     GUIAuxiliar.Button(createObject, !edit ? Style.BUTTON_TEXT_NEW_PREFAB : Style.BUTTON_TEXT_EDIT_PREFAB);
 }
Ejemplo n.º 21
0
 private void DoAddButtons(EditorWindow window)
 {
     GUIAuxiliar.Button <EditorWindow>(Style.BUTTON_TEXT_NEW_PREFAB, ContainerWindowCreator.create, window, this, new PrefabContainer());
     GUIAuxiliar.Button <EditorWindow>(Style.BUTTON_TEXT_NEW_WALL, ContainerWindowCreator.create, window, this, new WallContainer());
     GUIAuxiliar.Button <EditorWindow>(Style.BUTTON_TEXT_NEW_REGION_CONTAINER, ContainerWindowCreator.create, window, this, new RegionContainer());
 }