/** handles rendering of sprite data, highly extensible */ module re.gfx.sprite_renderer; import re.gfx; import re.ecs; import re.math; import re.ng.diag; static import raylib; class SpriteRenderer : Component, Renderable2D { /// the sprite public Sprite sprite; /// color tint public Color color = Colors.WHITE; this(Sprite sprite) { this.sprite = sprite; } @property Rectangle bounds() { return Bounds.calculate(entity.transform, sprite.origin, sprite.src_rect.width, sprite.src_rect.height); } public void render() { // draw the sprite auto dest_rect = Rectangle(entity.position2.x, entity.position2.y, sprite.src_rect.width, sprite.src_rect.height); raylib.DrawTexturePro(sprite.texture, sprite.src_rect, dest_rect, sprite.origin, entity.transform.rotation_z * C_RAD2DEG, color); } public void debug_render() { DebugRender.default_debug_render(this); } }