コード例 #1
0
        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);
        }
コード例 #2
0
 public void StartReducing(NodeAddedEvent evt, AimingWorkActivationNode weapon, [JoinByTank] TankWorkingInvisibilityEffectNode tank, [JoinByTank] ICollection <RendererNode> renderers)
 {
     this.StartReducing(weapon, tank, renderers, false);
 }