private void StartReducing(AimingWorkActivationNode weapon, TankNode tank, ICollection <RendererNode> renderers, bool switchShader) { base.ScheduleEvent(new AddTankShaderEffectEvent(ClientGraphicsConstants.SHAFT_AIMING_EFFECT, false), tank); if (switchShader) { Shader transparentShader = tank.tankShader.TransparentShader; this.SetTransparentMode(renderers, tank, transparentShader, -1f); } if (weapon.Entity.HasComponent <ShaftAimingRendererRecoveringAlphaComponent>()) { weapon.Entity.RemoveComponent <ShaftAimingRendererRecoveringAlphaComponent>(); } float alpha = TankMaterialsUtil.GetAlpha(tank.trackRenderer.Renderer); weapon.Entity.AddComponent(new ShaftAimingRendererReducingAlphaComponent(alpha)); ShaftAimingRendererQueueMapComponent component = new ShaftAimingRendererQueueMapComponent(); foreach (RendererNode node in renderers) { foreach (Material material in node.baseRenderer.Renderer.materials) { component.QueueMap.Add(material, material.renderQueue); material.renderQueue = weapon.shaftAimingRendererEffect.TransparentRenderQueue; } } weapon.Entity.AddComponent(component); }
public void StartReducing(NodeAddedEvent evt, AimingWorkActivationNode weapon, [JoinByTank] TankWorkingInvisibilityEffectNode tank, [JoinByTank] ICollection <RendererNode> renderers) { this.StartReducing(weapon, tank, renderers, false); }