Exemplo n.º 1
0
 public void Assign(int type, int index, ref CustomInstancing.Item item)
 {
     item.t         = time;
     item.transform = _typedItems [type] [index];
 }
        void Update()
        {
            var clusterLen = _clusters.Count;

            for (var i = 0; i < clusterLen; i++)
            {
                _clusters [i].ManualUpdate();
            }

            if (_countInInstancings == null || _countInInstancings.Length != instancings.Length)
            {
                _countInInstancings = new int[instancings.Length];
            }
            System.Array.Clear(_countInInstancings, 0, _countInInstancings.Length);
            for (var i = 0; i < clusterLen; i++)
            {
                var cluster = _clusters [i];
                for (var j = 0; j < instancings.Length; j++)
                {
                    _countInInstancings [j] += cluster.Count(j);
                }
            }

            if (_itemsInInstancings == null || _itemsInInstancings.Length != _countInInstancings.Length)
            {
                _itemsInInstancings = new CustomInstancing.Item[_countInInstancings.Length][];
            }
            for (var i = 0; i < _itemsInInstancings.Length; i++)
            {
                if (_itemsInInstancings [i] == null || _itemsInInstancings [i].Length != _countInInstancings [i])
                {
                    _itemsInInstancings [i] = new CustomInstancing.Item[_countInInstancings [i]];
                    var itemsInInstancing = _itemsInInstancings [i];
                    for (var j = 0; j < itemsInInstancing.Length; j++)
                    {
                        itemsInInstancing [j] = new CustomInstancing.Item();
                    }
                }
            }

            System.Array.Clear(_countInInstancings, 0, _countInInstancings.Length);
            for (var i = 0; i < clusterLen; i++)
            {
                var cluster = _clusters [i];
                for (var j = 0; j < instancings.Length; j++)
                {
                    var itemsInInstancing   = _itemsInInstancings [j];
                    var typedCountInCluster = cluster.Count(j);
                    for (var k = 0; k < typedCountInCluster; k++)
                    {
                        var itemIndex = _countInInstancings [j]++;
                        cluster.Assign(j, k, ref itemsInInstancing [itemIndex]);
                    }
                }
            }

            for (var i = 0; i < instancings.Length; i++)
            {
                instancings [i].Items = _itemsInInstancings [i];
            }
        }