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; } }
private void SetTile(MixInput input, Vector3Int cell) { TileBase tile = input.map == null ? null : input.map.GetTile(cell); m_MapToEdit.SetTile(cell, tile); }