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; }