void ClearNCreateNewInSceneCaches(int newLength) { versionDataCache = new int[newLength]; for (int i = 0; i < blockObjects.Length; i++) { if (blockObjects [i]) { ISObjectPoolManager.Unspawn(blockObjects [i]); } } blockObjects = new GameObject[newLength]; }
void UpdateEntireScene() { int versionCheckResult = gridData.IsLastestVersion(currentVersion); if (versionCheckResult == -1) { return; } Debug.Log("New version detected, updating " + (versionCheckResult - currentVersion).ToString() + " changes..."); int[] data = gridData.GetRawData(); for (int i = 0; i < data.Length; i++) { if (data [i] == versionDataCache [i]) { continue; } //Once a block is changed(otherwise, loop is continued), check the surrounding blocks and see if some of them also need to be updated. UpdateBlocksCacheIgroned(gridData.SurroundingBlocks(gridData.DecodeIndex(i))); versionDataCache [i] = data [i]; ISSCBlockVector b = gridData.DecodeIndex(i); if (blockObjects [i]) { ISObjectPoolManager.Unspawn(blockObjects [i]); } if (data [i] <= 1) { continue; } if (!gridData.IsBlockVisiable(b)) { continue; } Vector3 position = ISSCBGrid.GridPositionToWorldPosition(b, transform.position); blockObjects [i] = ISObjectPoolManager.Spawn(blockList.blocks [data [i]].gameObject, position, Quaternion.identity) as GameObject; } currentVersion = versionCheckResult; }
public void UpdateBlockCacheIgroned(ISSCBlockVector block) { int id = gridData.EncodeIndex(block); if (blockObjects [id]) { ISObjectPoolManager.Unspawn(blockObjects [id]); } if (!gridData.IsBlockVisiable(block)) { return; } int[] data = gridData.GetRawData(); if (data [id] <= 1) { return; } Vector3 position = ISSCBGrid.GridPositionToWorldPosition(block, transform.position); blockObjects [id] = ISObjectPoolManager.Spawn(blockList.blocks [data [id]].gameObject, position, Quaternion.identity) as GameObject; }
IEnumerator TimeUp() { yield return(new WaitForSeconds(time)); ISObjectPoolManager.Unspawn(this.gameObject); }
override public void OnStateExit(Animator animator, AnimatorStateInfo animatorStateInfo, int layerIndex) { ISObjectPoolManager.Unspawn(animator.gameObject); }