/// <inheritdoc />
        public T[] CreateValueArray(int length, T initialValue)
        {
            T[]  array;
            bool alreadyInitialised = false;
            bool initialIsDefault   = initialValue.Equals(default(T));

            if (!BufferSessions || (array = _InternalGetBufferedArray(length)) == null)
            {
                array = new T[length];
                alreadyInitialised = initialIsDefault;
            }

            if (BufferSessions)
            {
                _InternalAddToCurrentSession(array);
            }

            if (!alreadyInitialised)
            {
                if (initialIsDefault)
                {
                    Array.Clear(array, 0, array.Length);
                }
                else
                {
                    if (array.Length <= 8)
                    {
                        for (var i = 0; i < array.Length; i++)
                        {
                            array[i] = initialValue;
                        }
                    }
                    else
                    {
                        array[0] = initialValue;
                        array[1] = initialValue;
                        array[2] = initialValue;
                        array[3] = initialValue;
                        array[4] = initialValue;
                        array[5] = initialValue;
                        array[6] = initialValue;
                        array[7] = initialValue;

                        int arrayToFillHalfLength = array.Length / 2;
                        int copyLength;

                        for (copyLength = 8; copyLength < arrayToFillHalfLength; copyLength <<= 1)
                        {
                            Array.Copy(array, 0, array, copyLength, copyLength);
                        }

                        Array.Copy(array, 0, array, copyLength, array.Length - copyLength);
                    }
                }
            }

            OnValueArrayCreated(array, initialValue);

            return(array);
        }
        public void Link()
        {
            var hits         = new RaycastHit2D[5];
            var hitPositions = LevelGenerator.GetRayXPositions(gameObject);

            LinkBottom(hits, hitPositions);
            Array.Clear(hits, 0, hits.Length);
            LinkTop(hits, hitPositions);
        }
Beispiel #3
0
    void Reset()
    {
        ClearOverlay();
        cities.Clear();
        Array.Clear(civilizaitons, 0, civilizaitons.Length);
        civCount = 0;

        foreach (GameObject city in cityObjs)
        {
            Destroy(city);
        }
        cityObjs.Clear();
        isStarted = false;
    }