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); }
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); }
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); }
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); }