private void UpdateAlpha(float alpha, params Material[] materials) { foreach (Material material in materials) { ClientGraphicsUtil.UpdateAlpha(material, "_TintColor", alpha); } }
public void StopTankShaderEffect(StopTankShaderEffectEvent e, TankNode tank, [JoinByTank] WeaponNode weapon) { if (e.EnableException && !tank.tankOpaqueShaderBlockers.Blockers.Contains(e.Key)) { throw new TankShaderEffectNotFoundException(e.Key); } tank.tankOpaqueShaderBlockers.Blockers.Remove(e.Key); if (tank.tankOpaqueShaderBlockers.Blockers.Count <= 0) { ClientGraphicsUtil.ApplyShaderToRenderer(tank.baseRenderer.Renderer, tank.tankShader.OpaqueShader); ClientGraphicsUtil.ApplyShaderToRenderer(weapon.baseRenderer.Renderer, tank.tankShader.OpaqueShader); } }
public void FadeTemperature(UpdateEvent e, TankDeadStateVisibleActivatedNode tank, [JoinByTank] ICollection <RendererNode> renderers) { float time = (float)((tank.tankDeadState.EndDate - Date.Now) / (tank.tankDeadState.EndDate - tank.tankDeadStateTexture.FadeStart)); if (time != tank.tankDeadStateTexture.LastFade) { tank.tankDeadStateTexture.LastFade = time; Vector4 vector = new Vector4(tank.tankDeadStateTexture.HeatEmission.Evaluate(time), 0f, tank.tankDeadStateTexture.WhiteToHeatTexture.Evaluate(time), tank.tankDeadStateTexture.PaintTextureToWhiteHeat.Evaluate(time)); foreach (RendererNode node in renderers) { ClientGraphicsUtil.UpdateVector(node.baseRenderer.Renderer, ClientGraphicsConstants.TEMPERATURE, vector); } } }
private void SetTransparentMode(ICollection <RendererNode> renderers, TankNode tank, Shader targetShader = null, float alpha = -1f) { foreach (RendererNode node in renderers) { if (targetShader != null) { ClientGraphicsUtil.ApplyShaderToRenderer(node.baseRenderer.Renderer, targetShader); } if ((alpha == 0f) || tank.Entity.HasComponent <TankPartIntersectedWithCameraStateComponent>()) { node.baseRenderer.Renderer.enabled = false; } else if (alpha > 0f) { TankMaterialsUtil.SetAlpha(node.baseRenderer.Renderer, alpha); node.baseRenderer.Renderer.enabled = true; } } }
public void InitTransparency(TransparencyInitEvent evt, RendererNode renderer, [JoinByTank] TankNotInvisibilityInvisibilityShaderNode tankShader) { ClientGraphicsUtil.ApplyShaderToRenderer(renderer.baseRenderer.Renderer, tankShader.tankShader.TransparentShader); }