Пример #1
0
        public void SetNearestIndexTipColor()
        {
            IndexTipColor nearestIndexTipColor = GetNearestTipColor();

            if (nearestIndexTipColor != null)
            {
                nearestIndexTipColor.SetColor(this.GetColor());
            }
        }
Пример #2
0
        public void ReceiveNearestIndexTipColor()
        {
            IndexTipColor nearestIndexTipColor = GetNearestTipColor();

            if (nearestIndexTipColor != null)
            {
                if (nearestIndexTipColor.IsClean)
                {
                    // If the index tip is clean, set its color instead of receiving its color.
                    nearestIndexTipColor.SetColor(this.GetColor());
                }
                else
                {
                    this.SetColor(nearestIndexTipColor.GetColor());
                }
            }
        }
Пример #3
0
        /// <summary>
        /// Lerps this mixing liquid's color towards the index tip's color, and returns the index tip's color lerped towards the mixing liquid's color.
        /// </summary>
        public Color MixWithIndexTipColor(IndexTipColor indexTipColor, float multiplier = 1F)
        {
            int extra = (int)((Time.time - _nextEffectTime) / _effectPeriod);

            if (extra > 1)
            {
                _nextEffectTime += extra * _effectPeriod;
                _mixEffect.PlayAtPosition(transform, Mathf.Clamp01(multiplier / _maxEffectValue));
            }

            Color mixColor    = indexTipColor.GetColor();
            Color liquidColor = _liquidMeshRenderer.material.GetColor(Shader.PropertyToID("_Color"));

            _liquidMeshRenderer.material.SetColor("_Color", Color.Lerp(liquidColor, mixColor, _mixingCoefficient * multiplier));
            //Debug.Log("Liquid lerped to index tip distance: " + GetColorDistance(mixColor, Color.Lerp(liquidColor, mixColor, _mixingCoefficient * multiplier)));
            liquidColor = _liquidMeshRenderer.material.GetColor(Shader.PropertyToID("_Color"));
            return(Color.Lerp(mixColor, liquidColor, _mixingCoefficient * multiplier));
        }
Пример #4
0
        private IndexTipColor GetNearestTipColor()
        {
            IndexTipColor[] eligibleTipColors    = _palette.eligibleIndexTipColors;
            IndexTipColor   nearestIndexTipColor = null;

            for (int i = 0; i < eligibleTipColors.Length; i++)
            {
                if (nearestIndexTipColor == null ||
                    Vector3.Distance(this.transform.position, eligibleTipColors[i].transform.position) < Vector3.Distance(this.transform.position, nearestIndexTipColor.transform.position))
                {
                    nearestIndexTipColor = eligibleTipColors[i];
                }
            }
            if (nearestIndexTipColor != null)
            {
                return(nearestIndexTipColor);
            }
            else
            {
                Debug.LogWarning("[ColorSwatch] No IndexTipColor found! Could not retrieve nearest one.");
                return(null);
            }
        }