summaryrefslogtreecommitdiff
path: root/engine/Dynamic/Descriptors
diff options
context:
space:
mode:
Diffstat (limited to 'engine/Dynamic/Descriptors')
-rw-r--r--engine/Dynamic/Descriptors/Objects.go19
1 files changed, 18 insertions, 1 deletions
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