project-ely/internal/sprite/spritesheet.go

60 lines
1011 B
Go

package sprite
import (
"git.wisellama.rocks/Project-Ely/project-ely/internal/channels"
rl "github.com/gen2brain/raylib-go/raylib"
)
type spritesheet struct {
filename string
texture rl.Texture2D
}
func NewSprite(filename string) *spritesheet {
var texture rl.Texture2D
channels.RL.Do(func() {
texture = rl.LoadTexture(filename)
})
s := spritesheet{
filename: filename,
texture: texture,
}
return &s
}
func (s *spritesheet) Cleanup() {
channels.RL.Do(func() {
// Clean up spritesheet
rl.UnloadTexture(s.texture)
})
}
func (s *spritesheet) Draw(
section rl.Rectangle,
placement rl.Rectangle,
angle float32,
center rl.Vector2,
color rl.Color,
) error {
var err error
channels.RL.Do(func() {
origin := rl.Vector2{}
rl.DrawTexturePro(s.texture, section, placement, origin, angle, color)
})
if err != nil {
return err
}
return nil
}
func (s *spritesheet) Bounds() rl.Vector2 {
return rl.Vector2{
X: float32(s.texture.Width),
Y: float32(s.texture.Height),
}
}