public static void DuplicateLocation(LocationCreator window)
        {
            EditorSceneManager.SaveCurrentModifiedScenesIfUserWantsTo();


            bool isEmpty = window.CheckIfNewLocationNameIsEmpty();

            if (isEmpty == true)
            {
                window.SendLocationStringIsMissingMessage();
                return;
            }

            bool isExisting = window.CheckIfLocationExists();

            if (isExisting == true)
            {
                window.SendMessageLocationAlreadyExists();
                return;
            }

            string LocationRootPath       = "Assets/" + StaticProjectSettings.projectName + "/Scenes/Locations/";
            string guid                   = AssetDatabase.CreateFolder("Assets/" + StaticProjectSettings.projectName + "/Scenes/Locations", window.newLocationName);
            string locationObjectPathGuid = AssetDatabase.CreateFolder("Assets/" + StaticProjectSettings.projectName + "/Resources/Locations", window.newLocationName);
            string locationObjectPath     = AssetDatabase.GUIDToAssetPath(locationObjectPathGuid);
            string newFolderPath          = AssetDatabase.GUIDToAssetPath(guid);

            //Copy Settings Files
            window.CopySceneFile(LocationRootPath + window.selectedLocation + "/" + window.selectedLocation, "_Settings.unity", newFolderPath);
            //Copy Gameplay File
            window.CopySceneFile(LocationRootPath + window.selectedLocation + "/" + window.selectedLocation, "_Gameplay.unity", newFolderPath);
            //Copy Ground File
            window.CopySceneFile(LocationRootPath + window.selectedLocation + "/" + window.selectedLocation, "_Ground.unity", newFolderPath);
            //Copy Props File
            window.CopySceneFile(LocationRootPath + window.selectedLocation + "/" + window.selectedLocation, "_Props.unity", newFolderPath);
            //Copy Buildings File
            window.CopySceneFile(LocationRootPath + window.selectedLocation + "/" + window.selectedLocation, "_Buildings.unity", newFolderPath);
            //Copy Lighting File
            window.CopySceneFile(LocationRootPath + window.selectedLocation + "/" + window.selectedLocation, "_Lighting.unity", newFolderPath);
            //Copy Editor File
            window.CopySceneFile(LocationRootPath + window.selectedLocation + "/" + window.selectedLocation, "_Editor.unity", newFolderPath);
            //Create Location Object
            Location locationAsset = ScriptableObject.CreateInstance <Location>();

            locationAsset.locationName = window.newLocationName;

            AssetDatabase.CreateAsset(locationAsset, locationObjectPath + "/" + window.newLocationName + ".Asset");
            AssetDatabase.SaveAssets();
            AssetDatabase.MoveAsset(AssetDatabase.GetAssetPath(locationAsset), newFolderPath);
            AssetDatabase.Refresh();

            LocationHandler locationHandle = Object.FindObjectOfType <LocationHandler>();

            locationHandle.locationData = locationAsset;

            window.RefreshLocationsList();
        }
示例#2
0
        private static void OpenLocationInteface()
        {
            window = GetWindow <LocationCreator>();

            //Load Locations List
            window.locationsList = Resources.Load("Locations/Location List") as LocationList;

            foreach (LocationList item in Resources.FindObjectsOfTypeAll(typeof(LocationList)) as LocationList[])
            {
                window.locationsList = item;
            }
            if (window.locationsList != null)
            {
                window.RefreshLocationsList();
            }

            window.position = GUIHelper.GetEditorWindowRect().AlignCenter(800, 500);
            window.RefreshLocationsList();
        }
示例#3
0
        LocationCreator GetRefreshedWindowReference()
        {
            window = GetWindow <LocationCreator>();

            //Load Locations List
            window.locationsList = Resources.Load("Locations/Location List") as LocationList;

            foreach (LocationList item in Resources.FindObjectsOfTypeAll(typeof(LocationList)) as LocationList[])
            {
                window.locationsList = item;
            }
            if (window.locationsList != null)
            {
                window.RefreshLocationsList();
            }

            window.RefreshLocationsList();

            return(window);
        }
        public static void AddNewLocationToList(string locationName, LocationCreator window)
        {
            AssetDatabase.SaveAssets();
            AssetDatabase.Refresh();
            LocationList locationList     = Resources.Load("Locations/Location List") as LocationList;
            string       LocationRootPath = "Locations";
            string       fullpath         = LocationRootPath + "/" + locationName + "/" + locationName;
            Location     locationData     = Resources.Load(fullpath) as Location;

            window.locationsList.locations.Add(locationData);
            AssetDatabase.SaveAssets();
            window.RefreshLocationsList();
        }
        public static void DeleteLocation(LocationCreator window)
        {
            EditorSceneManager.SaveCurrentModifiedScenesIfUserWantsTo();
            string   fullpath     = "Locations" + "/" + window.selectedLocation + "/" + window.selectedLocation;
            Location locationData = Resources.Load(fullpath) as Location;

            window.locationsList.locations.Remove(locationData);
            string SceneRootPath = "Assets/" + StaticProjectSettings.projectName + "/Scenes/Locations/";
            string LocationPath  = "Assets/" + StaticProjectSettings.projectName + "/Resources/Locations/";

            for (int i = 0; i < window.availableLocations.Count; i++)
            {
                if (window.availableLocations[i].Text == window.selectedLocation)
                {
                    window.availableLocations.Remove(window.availableLocations[i]);
                }
            }
            FileUtil.DeleteFileOrDirectory(SceneRootPath + window.selectedLocation + "/");
            FileUtil.DeleteFileOrDirectory(LocationPath + window.selectedLocation + "/");
            AssetDatabase.SaveAssets();
            AssetDatabase.Refresh();
            window.selectedLocation = window.locationsList.locations[0].locationName;
            window.RefreshLocationsList();
        }