Beispiel #1
0
    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));
        }
    }
Beispiel #2
0
 // 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());
         });
     });
 }