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