public void DisableShadowOnDeadState(NodeRemoveEvent evt, DeadTankNode state, [Combine, JoinByTank] TankPartRendererNode renderer)
        {
            Renderer renderer2 = renderer.baseRenderer.Renderer;

            renderer2.enabled = false;
            TankMaterialsUtil.SetAlpha(renderer2, 0f);
        }
        public void UpdateTransparencyTransition(TimeUpdateEvent evt, TransitionRendererNode renderer)
        {
            TransparencyTransitionComponent transparencyTransition = renderer.transparencyTransition;

            transparencyTransition.CurrentTransitionTime += evt.DeltaTime;
            if (renderer.baseRenderer.Renderer)
            {
                float targetAlpha;
                if (transparencyTransition.CurrentTransitionTime < transparencyTransition.TransparencyTransitionTime)
                {
                    targetAlpha = transparencyTransition.OriginAlpha + (transparencyTransition.AlphaSpeed * transparencyTransition.CurrentTransitionTime);
                }
                else
                {
                    targetAlpha = transparencyTransition.TargetAlpha;
                    if (transparencyTransition.TargetAlpha >= ClientGraphicsConstants.OPAQUE_ALPHA)
                    {
                        base.ScheduleEvent <TransparencyFinalizeEvent>(renderer.Entity);
                    }
                    else if (transparencyTransition.TargetAlpha <= ClientGraphicsConstants.TRANSPARENT_ALPHA)
                    {
                        renderer.baseRenderer.Renderer.enabled = false;
                    }
                }
                renderer.transparencyTransition.CurrentAlpha = targetAlpha;
                TankMaterialsUtil.SetAlpha(renderer.baseRenderer.Renderer, targetAlpha);
            }
        }
        public void HideAndPrepareRenderer(NodeAddedEvent evt, TankPartRendererNode renderer)
        {
            Renderer renderer2 = renderer.baseRenderer.Renderer;

            renderer2.enabled = false;
            TankMaterialsUtil.SetAlpha(renderer2, ClientGraphicsConstants.OPAQUE_ALPHA);
            renderer.startMaterials.Materials = renderer2.materials;
            renderer.Entity.AddComponent <RendererInitializedComponent>();
        }
        private bool FadeAlpha()
        {
            float clampedAlpha = 1f - Mathf.Clamp01((Time.timeSinceLevelLoad - ((this.effectStartTime + this.effectLifeTime) - this.fadeTime)) / this.fadeTime);

            if (clampedAlpha != this.lastAlpha)
            {
                this.lastAlpha = clampedAlpha;
                foreach (Material material in this.materials)
                {
                    TankMaterialsUtil.SetAlpha(material, clampedAlpha);
                }
            }
            return(Time.timeSinceLevelLoad < (this.effectStartTime + this.effectLifeTime));
        }
Example #5
0
 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 InitSemiActiveTransition(NodeAddedEvent e, SemiActiveTankNode tank, [Combine, Context, JoinByTank] RendererNode renderer)
 {
     base.ScheduleEvent(new AddTankShaderEffectEvent(ClientGraphicsConstants.TRANSPARENCY_TRANSITION_EFFECT, false), tank);
     base.ScheduleEvent <TransparencyInitEvent>(renderer);
     TankMaterialsUtil.SetAlpha(renderer.baseRenderer.Renderer, ClientGraphicsConstants.SEMI_TRANSPARENT_ALPHA);
 }
 public void FinalizeTransparency(TransparencyFinalizeEvent evt, TransitionRendererNode renderer, [JoinByTank] TankShaderNode tankShader)
 {
     renderer.Entity.RemoveComponent <TransparencyTransitionComponent>();
     TankMaterialsUtil.SetAlpha(renderer.baseRenderer.Renderer, ClientGraphicsConstants.OPAQUE_ALPHA);
     base.ScheduleEvent(new StopTankShaderEffectEvent(ClientGraphicsConstants.TRANSPARENCY_TRANSITION_EFFECT, false), tankShader);
 }