Ejemplo n.º 1
0
        public override bool Update()
        {
            if (!_HasRimPropertySetted)
            {
                var e = RendererInfoMap.GetEnumerator();
                while (e.MoveNext())
                {
                    var rendererInfo = e.Current.Value;
                    if (rendererInfo.CurrentMat != null)
                    {
                        if (rendererInfo.CurrentMat.HasProperty(ShaderIDs.ShaderPropertyRimColor))
                        {
                            rendererInfo.CurrentMat.SetColor(ShaderIDs.ShaderPropertyRimColor, RimColor);
                        }

                        if (rendererInfo.CurrentMat.HasProperty(ShaderIDs.ShaderPropertyRimPower))
                        {
                            rendererInfo.CurrentMat.SetFloat(ShaderIDs.ShaderPropertyRimPower, RimPower);
                        }

                        _HasRimPropertySetted = true;
                    }
                }
                e.Dispose();
            }

            return(true);
        }
Ejemplo n.º 2
0
        public override bool Update()
        {
            if (RendererInfoMap == null)
            {
                return(false);
            }

            if (Time.time < _TurningTime)
            {
                _CurrentColor = RimColor;
                _CurrentPower = RimPower;
            }
            else
            {
                var ratio = (Time.time - _TurningTime) / _FadeoutDuration;
                _CurrentPower = Mathf.Lerp(RimPower, 0, ratio);
            }

            var e = RendererInfoMap.GetEnumerator();

            while (e.MoveNext())
            {
                var rendererInfo = e.Current.Value;
                if (rendererInfo.CurrentMat != null)
                {
                    if (rendererInfo.CurrentMat.HasProperty(ShaderIDs.ShaderPropertyRimColor))
                    {
                        rendererInfo.CurrentMat.SetColor(ShaderIDs.ShaderPropertyRimColor, _CurrentColor);
                    }

                    if (rendererInfo.CurrentMat.HasProperty(ShaderIDs.ShaderPropertyRimPower))
                    {
                        rendererInfo.CurrentMat.SetFloat(ShaderIDs.ShaderPropertyRimPower, _CurrentPower);
                    }
                }
            }
            e.Dispose();

            return(Time.time < _EndTime);
        }
Ejemplo n.º 3
0
        public override bool Update()
        {
            if (!_HasRimPropertySetted)
            {
                var e = RendererInfoMap.GetEnumerator();
                while (e.MoveNext())
                {
                    var rendererInfo = e.Current.Value;
                    if (rendererInfo.CurrentMat != null)
                    {
                        rendererInfo.CurrentMat.SetFloat(ShaderIDs.SinceLevelLoadedTime, Time.timeSinceLevelLoad);
                        rendererInfo.CurrentMat.SetFloat(ShaderIDs.DeathDuration, _CorpseStayDuration);
                        rendererInfo.CurrentMat.renderQueue = 3900;
                        rendererInfo.CurrentMat.SetColor(ShaderIDs.ShaderPropertyDeathColor, _DeathColor);

                        _HasRimPropertySetted = true;
                    }
                }
                e.Dispose();
            }

            return(Time.time - _StartTime < _CorpseStayDuration);
        }
Ejemplo n.º 4
0
        public override bool Update()
        {
            if (Time.time - _StartTime > _Duration)
            {
                return(false);
            }

            if (RendererInfoMap != null)
            {
                float curAlpha = Mathf.Lerp(_StartAlpha, _EndAlpha, (Time.time - _StartTime) / _Duration);
                var   e        = RendererInfoMap.GetEnumerator();
                while (e.MoveNext())
                {
                    RendererInfoItem rendererInfo = e.Current.Value;
                    if (rendererInfo.CurrentMat != null && rendererInfo.CurrentMat.HasProperty(ColorProp))
                    {
                        var color = rendererInfo.OriginMat.GetColor(ColorProp);
                        color.a = color.a * curAlpha;
                        rendererInfo.CurrentMat.SetColor(ColorProp, color);

                        // TODO: 不用放在Update中
                        if (rendererInfo.OriginMat.renderQueue == MaterialUtility.RenderQueue_AlphaTest)
                        {
                            MaterialUtility.SetMaterialRenderingMode(rendererInfo.CurrentMat, RenderingMode.CutOut);
                        }
                        else if (rendererInfo.OriginMat.renderQueue == MaterialUtility.RenderQueue_Geometry)
                        {
                            MaterialUtility.SetMaterialRenderingMode(rendererInfo.CurrentMat, RenderingMode.Fade);
                        }
                    }
                }
                e.Dispose();
            }

            return(true);
        }