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