Exemple #1
0
        private void SetMix(float nextMix)
        {
            Init();
            m_Mix = nextMix;

            int numInputs = m_MixInputs.Length;

            if (numInputs == 0)
            {
                return;
            }

            MixInput lowerInput = m_MixInputs[0];

            for (int inputIndex = 1; inputIndex < numInputs;
                 lowerInput = m_MixInputs[inputIndex], ++inputIndex
                 )
            {
                MixInput input             = m_MixInputs[inputIndex];
                int      previousNumActive = input.numActive;
                int      nextNumActive     = StableLerp(lowerInput.lowerBound, input.lowerBound, nextMix,
                                                        0, input.cellsToMix.Count, previousNumActive);
                if (nextNumActive == input.numActive)
                {
                    continue;
                }

                if (nextNumActive > previousNumActive)
                {
                    for (int activeIndex = previousNumActive; activeIndex < nextNumActive; ++activeIndex)
                    {
                        Vector3Int cell = input.cellsToMix[activeIndex];
                        SetTile(input, cell);
                    }
                }
                else
                {
                    for (int activeIndex = previousNumActive - 1; activeIndex >= nextNumActive; --activeIndex)
                    {
                        Vector3Int cell = input.cellsToMix[activeIndex];
                        SetTile(lowerInput, cell);
                    }
                }
                input.numActive = nextNumActive;
            }
        }
Exemple #2
0
        private void SetTile(MixInput input, Vector3Int cell)
        {
            TileBase tile = input.map == null ? null : input.map.GetTile(cell);

            m_MapToEdit.SetTile(cell, tile);
        }