56 lines
963 B
Go
56 lines
963 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 {
|
|
|
|
channels.RL.Do(func() {
|
|
origin := rl.Vector2{}
|
|
rl.DrawTexturePro(s.texture, section, placement, origin, angle, color)
|
|
})
|
|
|
|
return nil
|
|
}
|
|
|
|
func (s *spritesheet) Bounds() rl.Vector2 {
|
|
return rl.Vector2{
|
|
X: float32(s.texture.Width),
|
|
Y: float32(s.texture.Height),
|
|
}
|
|
}
|