public IEnumerator ChangeVerticesPosition() { bool requested = false; List <float> offsets = null; _randomProvider.GenerateFloatPool(_verticesTarget.Length * 6, (pool) => { offsets = pool; }); while (true) { yield return(new WaitWhile(() => offsets == null || offsets.Count < _verticesTarget.Length)); _currentTransition = 0; for (int i = 0; i < _verticesTarget.Length; i++) { _verticesLastPosition[i] = _currentVertices[i]; _verticesTarget[i] = _verticesSrc[i] + Vector3.up * offsets[0]; offsets.RemoveAt(0); } if (!requested && offsets.Count < _verticesTarget.Length * 3) { requested = true; _randomProvider.GenerateFloatPool(_verticesTarget.Length * 6, (pool) => { offsets.AddRange(pool); requested = false; }); } yield return(new WaitForSeconds(1f)); } }
// Start is called before the first frame update void Start() { _randomProvider = FindObjectOfType <QASMRandomProvider>(); _randomProvider.GenerateFloatPool(128, (fpool) => { _randomProvider.GenerateBoolPool(128, (bpool) => { _timeDiscount = 0; _qbitStateRandoms = bpool; _spawnRandoms = fpool; StartCoroutine(SpawnPeriodically()); }); }); }