public virtual void DestroyObject(bool now = false, float time = 0.0f) { if (time > 0.0f) { StartCoroutine(__destroyAfter(time)); return; } if (transform.parent != null) { if (transform.parent.tag == "PoolingContainer") { _destroy(); return; } } if (now) { _destroy(); return; } Util_PoolManagerDatabase.GetInstance(0).AddObjectToDestroy(this); _destroystate = DestroyState.kPrepareDestroy; }
private IEnumerator __destroyAfter(float t) { yield return(new WaitForSeconds(t)); Util_PoolManagerDatabase.GetInstance(0).AddObjectToDestroy(this); _destroystate = DestroyState.kPrepareDestroy; }
IEnumerator __awake() { int index = 0; int count = _poolingDataBase.Length; if (count < _poolingDefinitions.Length) { _poolingDataBase = new Util_PoolManager[_poolingDefinitions.Length]; while (count < _poolingDefinitions.Length) { Util_PoolManager o = new Util_PoolManager(); o._noPooling = _noPooling; PoolingDefinition p = _poolingDefinitions[count++]; if (p._amount == 0 && !_noPooling) { Debug.LogWarning("Create a pooling with 0 element!"); continue; } o.Create(p, gameObject); yield return(o.waitingForCompletition()); _poolingDataBase[index++] = o; } } yield return(new WaitForEndOfFrame()); _loaded = true; __ENEMY = Util_PoolManagerDatabase.GetInstance("ENEMY"); __FX = Util_PoolManagerDatabase.GetInstance("FX"); __BULLETS = Util_PoolManagerDatabase.GetInstance("BULLETS"); #if UNITY_EDITOR string children = ""; for (int i = 0; i < transform.childCount; ++i) { children += transform.GetChild(i).name; children += "\n"; } Debug.Log(transform.name); Debug.Log(children); #endif }
public void UnLoad(string key) { for (int i = 0; i < transform.childCount; ++i) { Util_PoolManagerDatabase o = transform.GetChild(i).GetComponent <Util_PoolManagerDatabase>(); if (o != null && _keys[o._key] == key) { o.UnLoad(); return; } } }
/// <summary> /// Gets the instance. /// </summary> /// <value>The instance.</value> public static Util_PoolManagerDatabase GetInstance(string tag) { if (_instance.ContainsKey(tag)) { Util_PoolManagerDatabase ret = _instance[tag]; return(ret); } else { Debug.LogWarning(string.Format("Cannot found {0} Key in Util_PoolManagerDatabase", tag)); } return(null); }
public void ResetAllObjects() { // StartCoroutine(__reset()); // for(int i = 0; i < _containeres.transform.childCount; ++i) { // // _containeres.transform.GetChild(i).gameObject.SetActive(false); // } for (int i = 0; i < transform.childCount; ++i) { Util_PoolManagerDatabase o = transform.GetChild(i).GetComponent <Util_PoolManagerDatabase>(); if (o != null) { o.Reset(); } } }
public static GameObject GetObject(string tag, bool autoresize = true, bool forceUseFirst = false) { char [] splitter = new char[] { '/' }; string [] args = tag.Split(splitter, StringSplitOptions.RemoveEmptyEntries); if (args.Length != 2) { Debug.LogWarning(string.Format("*** Util_PoolManagerDatabase: Error tags count (es: <database>/<object_name>: {0}", tag)); return(null); } Util_PoolManagerDatabase db = GetInstance(args[0]); if (db == null) { Debug.LogWarning(string.Format("*** Util_PoolManagerDatabase: Database not found: {0}", args[0])); return(null); } Util_PoolManager m = db.GetManager(args[1]); if (m == null) { Debug.LogWarning(string.Format("*** Util_PoolManager: Manager not found: {0}", args[1])); return(null); } GameObject o = GetInstance(args[0]).GetManager(args[1]).GetObject(autoresize, forceUseFirst); // if(autoresize) { // o = GetInstance(args[0]).GetManager(args[1]).GetObject(false, forceUseFirst); // if(o == null) { // // Debug.LogWarning(string.Format("*** Util_PoolManager: Error to create object, waiting for resize: {0}", args[1])); // return null; // } // } // return(o); }
/// <summary> /// Load by specified keys /// </summary> /// <param name="keys">Keys.</param> IEnumerator __load(List <string> keys) { #if UNITY_EDITOR _database.Clear(); for (int i = 0; i < transform.childCount; ++i) { Util_PoolManagerDatabase o = transform.GetChild(i).GetComponent <Util_PoolManagerDatabase>(); if (o != null && keys.Contains(_keys[o._key])) { _totalToLoad++; } _database.Add(o); } #endif for (int i = 0; i < transform.childCount; ++i) { Util_PoolManagerDatabase o = transform.GetChild(i).GetComponent <Util_PoolManagerDatabase>(); if (o != null && keys.Contains(_keys[o._key])) { Debug.Log(string.Format("*** Util_PoolLoading: - load {0}", o.name)); o.Load(true); yield return(o.waitingForCompletition()); _currentLoading++; _progress = (float)_currentLoading / (float)_totalToLoad; } // yield return new WaitForEndOfFrame(); } _progress = 1.0f; _loaded = true; }
IEnumerator __update() { while (true) { float r = Random.Range(min, max); yield return(new WaitForSeconds(r)); GameObject o = Util_PoolManagerDatabase.GetObject("MYDATABASE/MyObject"); if (o != null) { o.SetActive(true); o.transform.position = new Vector3(Random.Range(-2.0f, 2.0f), Random.Range(-2.0f, 2.0f), Random.Range(-2.0f, 2.0f)); o.GetComponent <Util_PoolObject>().DestroyObject(time: 2.0f); } } }
IEnumerator __update() { while (true) { float r = Random.Range(0.0f, .5f); yield return(new WaitForSeconds(r)); // get a object inside databse GameObject o = Util_PoolManagerDatabase.GetObject("ENEMY/MyObject"); if (o != null) { o.SetActive(true); o.transform.position = new Vector3(Random.Range(-2.0f, 2.0f), Random.Range(2.0f, 4.0f), Random.Range(-2.0f, 2.0f)); o.GetComponent <Util_PoolObject>().DestroyObject(time: 2.0f); } } }
public override void OnInspectorGUI() { serializedObject.Update(); Color c = GUI.backgroundColor; // store value GUI.backgroundColor = Color.cyan; EditorGUILayout.HelpBox("Auto play. Start initialization whe the object is acivated.", MessageType.Info); GUI.backgroundColor = c; EditorGUILayout.Space(); myScript._autoplay = EditorGUILayout.Toggle("Play at Start: ", myScript._autoplay); EditorGUILayout.Space(); EditorGUILayout.Space(); GUI.backgroundColor = Color.cyan; EditorGUILayout.HelpBox("Don't destroy this gameObject!", MessageType.Info); GUI.backgroundColor = c; EditorGUILayout.Space(); myScript._dontDestroy = EditorGUILayout.Toggle("Don't Destroy: ", myScript._dontDestroy); EditorGUILayout.Space(); EditorGUILayout.Space(); GUI.backgroundColor = Color.cyan; EditorGUILayout.HelpBox("Key list for load and unload a database. Default is kEverytime.", MessageType.Info); GUI.backgroundColor = c; EditorGUILayout.Space(); // DrawDefaultInspector(); for (int i = 1; i < myScript._keys.Count; ++i) { EditorGUILayout.Space(); EditorGUILayout.BeginHorizontal(); EditorGUILayout.TextArea(myScript._keys[i], GUILayout.MaxWidth(150)); GUI.backgroundColor = Color.red; if (GUILayout.Button("-", GUILayout.MaxWidth(30))) { myScript._keys.RemoveAt(i); return; } GUI.backgroundColor = c; EditorGUILayout.EndHorizontal(); } GUI.backgroundColor = Color.green; if (GUILayout.Button("Add Key")) { myScript._keys.Add(""); } GUI.backgroundColor = c; EditorGUILayout.Space(); EditorGUILayout.Space(); EditorGUILayout.Space(); EditorGUILayout.Space(); GUI.backgroundColor = Color.cyan; EditorGUILayout.HelpBox("Database list:", MessageType.Info); GUI.backgroundColor = c; for (int i = 0; i < myScript.transform.childCount; ++i) { Transform t = myScript.transform.GetChild(i); Util_PoolManagerDatabase o = t.GetComponent <Util_PoolManagerDatabase>(); if (o != null) { EditorGUILayout.Space(); EditorGUILayout.BeginHorizontal(); EditorGUILayout.LabelField(t.name, GUILayout.MaxWidth(150)); GUI.backgroundColor = Color.red; if (GUILayout.Button("-", GUILayout.MaxWidth(30))) { DestroyImmediate(t.gameObject); myScript._database.RemoveAt(i); return; } GUI.backgroundColor = c; if (GUILayout.Button(">", GUILayout.MaxWidth(30))) { Selection.activeGameObject = t.gameObject; } EditorGUILayout.EndHorizontal(); } } EditorGUILayout.Space(); GUI.backgroundColor = Color.green; if (GUILayout.Button("Add Database")) { AddDatabase(); } GUI.backgroundColor = c; Util_PoolLoading.Instance = myScript; serializedObject.ApplyModifiedProperties(); }
private void OnEnable() { myScript = (Util_PoolManagerDatabase)(target); __refresh(); }