Esempio n. 1
0
        // PUBLIC METHODS: ------------------------------------------------------------------------

        public static string RandomHash(int count)
        {
            string hash = "";

            for (int i = 0; i < count; ++i)
            {
                int charPosition = GameCreatorUtilities.RandomValue(0, CHARACTERS.Length);
                hash += CHARACTERS[charPosition];
            }

            return(hash);
        }
Esempio n. 2
0
        private void LoadDatabases()
        {
            List <IDatabase> databases = GameCreatorUtilities.FindAssetsByType <IDatabase>();
            int databasesCount         = databases.Count;

            DATABASES = new List <DatabaseInfo>();
            for (int i = 0; i < databasesCount; ++i)
            {
                DATABASES.Add(new DatabaseInfo(databases[i]));
            }

            DATABASES.Sort();
        }
Esempio n. 3
0
        private void LoadDatabases()
        {
            List <IDatabase> databases = GameCreatorUtilities.FindAssetsByType <IDatabase>();
            int databasesCount         = databases.Count;

            DATABASES = new List <DatabaseInfo>();
            for (int i = 0; i < databasesCount; ++i)
            {
                DATABASES.Add(new DatabaseInfo(databases[i]));
            }

            DATABASES.Sort((DatabaseInfo x, DatabaseInfo y) =>
            {
                int valueX = x.data.GetSidebarPriority();
                int valueY = y.data.GetSidebarPriority();
                return(valueX.CompareTo(valueY));
            });
        }
Esempio n. 4
0
        private static void SetupDeferred <T>() where T : IDatabase
        {
            EditorApplication.update -= SetupDeferred <T>;

            T         database  = ScriptableObject.CreateInstance <T>();
            string    assetPath = database.GetAssetPath();
            IDatabase asset     = AssetDatabase.LoadAssetAtPath <IDatabase>(assetPath);

            if (asset == null)
            {
                GameCreatorUtilities.CreateFolderStructure(assetPath);
                AssetDatabase.Refresh();

                asset = ScriptableObject.CreateInstance <T>();
                AssetDatabase.CreateAsset(asset, assetPath);
                AssetDatabase.SaveAssets();
                AssetDatabase.Refresh();
            }
        }
        public static T AddGameObjectToPrefab <T>(GameObject prefabRoot, string name) where T : MonoBehaviour
        {
            GameObject instancePrefab    = (GameObject)PrefabUtility.InstantiatePrefab(prefabRoot);
            string     instanceChildName = string.Format("{0}-{1}", name, GameCreatorUtilities.RandomHash(8));
            GameObject instanceChild     = new GameObject(instanceChildName);

            instanceChild.AddComponent <T>();

            instanceChild.transform.SetParent(instancePrefab.transform);
            PrefabUtility.ReplacePrefab(instancePrefab, prefabRoot, ReplacePrefabOptions.Default);
            UnityEngine.Object.DestroyImmediate(instancePrefab);

            GameObject prefabChild = prefabRoot.transform.Find(instanceChildName).gameObject;

            prefabChild.name = name;
            AssetDatabase.ImportAsset(AssetDatabase.GetAssetPath(prefabRoot));

            return(prefabChild.GetComponent <T>());
        }
        public static void RemoveGameObjectFromPrefab(GameObject prefabRoot, GameObject prefabChild)
        {
            string prefabChildName = string.Format("{0}-{1}", prefabChild.name, GameCreatorUtilities.RandomHash(8));

            prefabChild.name = prefabChildName;

            GameObject instancePrefab = (GameObject)PrefabUtility.InstantiatePrefab(prefabRoot);

            foreach (Transform instanceChildEntry in instancePrefab.transform)
            {
                if (instanceChildEntry.gameObject.name == prefabChildName)
                {
                    UnityEngine.Object.DestroyImmediate(instanceChildEntry.gameObject);
                    break;
                }
            }

            PrefabUtility.ReplacePrefab(instancePrefab, prefabRoot, ReplacePrefabOptions.ConnectToPrefab);
            UnityEngine.Object.DestroyImmediate(instancePrefab);
        }