private void RunUpdate(ref SpriteSimpleRendererComponent renderer)
 {
     for (int i = 0; i < renderer.Sprites.Length; i++)
     {
         var data = renderer.Sprites[i];
         if (data.Sprite == null)
         {
             continue;
         }
         if (data.IsDirty)
         {
             data.SetUv(GetUv(data.Sprite));
             data.MatBlock.SetColor(ShaderPropertyColor, Color.white);
             data.MatBlock.SetTexture(ShaderPropertyTexture, data.Sprite.texture);
             data.MatBlock.SetTexture(ShaderPropertyNormal, data.Normal);
             if (data.Emissive != null)
             {
                 data.MatBlock.SetTexture(ShaderPropertyEmissive, data.Emissive);
             }
             data.MatBlock.SetFloat(ShaderPropertyEmissivePower, data.Emissive != null ? 1 : 0);
         }
         var rotation = renderer.Rotation;
         var scale    = renderer.Scale;
         if (data.Flip)
         {
             scale.x = -scale.x;
             //rotation = Quaternion.Inverse(rotation);
         }
         var matrix = Matrix4x4.TRS(renderer.Position, rotation, scale);
         data.MatBlock.SetVector(ShaderPropertyUv, data.Uv);
         Graphics.DrawMesh(renderer.Quad, matrix, renderer.Mat, 0, null, 0, data.MatBlock, ShadowCastingMode.On);
     }
 }
Example #2
0
 public RuntimeNode(SetSpriteNode node, RuntimeStateGraph graph) : base(node, graph)
 {
     _spriteNode = node;
     if (_spriteNode.InstancedIndex >= 0)
     {
         _simpleRenderer = Graph.Entity.Get <SpriteSimpleRendererComponent>();
     }
     else
     {
         _spriteRenderer = Graph.Entity.Get <SpriteRendererComponent>();
     }
 }
 public InstancedRuntimeAnimationNode(SpriteAnimationNode node, RuntimeStateGraph graph) : base
         (node, graph)
 {
     _simpleRenderer = graph.Entity.Get <SpriteSimpleRendererComponent>();
 }