From d470cca696d98b2a84f1667f29139c750888cdcd Mon Sep 17 00:00:00 2001 From: physcik Date: Fri, 20 Mar 2026 13:59:24 +0500 Subject: Object target scale property --- engine/Dynamic/Descriptors/Objects.go | 19 ++++++++++++++++++- 1 file changed, 18 insertions(+), 1 deletion(-) (limited to 'engine/Dynamic') diff --git a/engine/Dynamic/Descriptors/Objects.go b/engine/Dynamic/Descriptors/Objects.go index 4dbee34..eb3fb78 100644 --- a/engine/Dynamic/Descriptors/Objects.go +++ b/engine/Dynamic/Descriptors/Objects.go @@ -49,9 +49,10 @@ func (base *ObjectDescriptor) parseTextures() []*coreobjects.TextureBlock { rl.TraceLog(rl.LogWarning, "Failed to get the required by the object %s texture: %s", base.Name, err.Error()) continue } + outp = append(outp, &coreobjects.TextureBlock { Texture: texture, - Offset: v.Offset, + Window: v.getTargetWindow(texture), }) } return outp @@ -85,6 +86,7 @@ type ObjectTextureBlock struct { Name string TextureId *uint64 Offset rl.Vector2 + TargetScale *rl.Vector2 } func (base *ObjectTextureBlock) GetTexture() (*rl.Texture2D, error) { @@ -94,6 +96,21 @@ func (base *ObjectTextureBlock) GetTexture() (*rl.Texture2D, error) { return components.Resources.Textures.GetTextureByName(base.Name) } +// Calculates the target window of the tetxure block. Should be provided with its target texture +func (base *ObjectTextureBlock) getTargetWindow(texture *rl.Texture2D) *rl.Rectangle { + var outp = &rl.Rectangle { + X: base.Offset.X, + Y: base.Offset.Y, + Width: float32(texture.Width), + Height: float32(texture.Height), + } + if base.TargetScale != nil { + outp.Width = base.TargetScale.X + outp.Height = base.TargetScale.Y + } + return outp +} + type ObjectColliderBlock struct { Type string Size rl.Vector2 -- cgit v1.3