private void UpdateMeshRenderer(SpriteRendererTemplate template, Vector2 size) { var renderer = template.Renderer; renderer.MatBlock.SetVector(ShaderPropertyColor, template.SpriteColor.CurrentColor); renderer.MatBlock.SetVector(ShaderPropertyUv, renderer.Uv); renderer.MatBlock.SetTexture(ShaderPropertyTexture, renderer.Sprite.texture); renderer.MatBlock.SetTexture(ShaderPropertyNormal, renderer.Normal); renderer.MatBlock.SetTexture(ShaderPropertyEmissive, renderer.Emissive); renderer.ApplyMaterialBlock(); Vector2 scaledPivot = size * new Vector2(0.5f, 0); renderer.MeshVertices[0] = new Vector3(size.x - scaledPivot.x, size.y - scaledPivot.y, 0); renderer.MeshVertices[1] = new Vector3(size.x - scaledPivot.x, -scaledPivot.y, 0); renderer.MeshVertices[2] = new Vector3(-scaledPivot.x, -scaledPivot.y, 0); renderer.MeshVertices[3] = new Vector3(-scaledPivot.x, size.y - scaledPivot.y, 0); renderer.UpdateMesh(); }
private void RunUpdate(ref SpriteRendererTemplate template) { if (template.Billboard != null) { bool backwards = template.Billboard.Backwards; if (template.Renderer.MeshRenderer != null) { backwards = template.Billboard.Backwards && !template.Renderer.FlipX; } UpdateBillboard(template.Billboard, template.Renderer.BaseTr, template.Renderer.SpriteTr, backwards); } if (!template.Renderer.IsDirty) { return; } template.Renderer.UpdatedSprite(); var sprite = template.Renderer.Sprite; template.Renderer.Uv = GetUv(sprite); var size = new Vector2(sprite.rect.width / sprite.pixelsPerUnit, sprite.rect.height / sprite.pixelsPerUnit); if (template.Renderer.SavedCollider != null) { template.Collider.Value.UpdateCollider(template.Renderer.SavedCollider); if (template.CriticalHitCollider != null) { template.CriticalHitCollider.Assign(template.Renderer.SavedCollider.CriticalRect, size); } } else { template.Collider.Value.UpdateSprite(sprite, template.Renderer.FlipX); } UpdateMeshRenderer(template, size); }