package objs import ( "github.com/Zyko0/go-sdl3/sdl" "ponger/ecs" "ponger/events" ) type Cursor struct { *ecs.GameObject MaxX, MaxY float32 } func (c *Cursor) ProcessWindowChange(ev events.WindowChange) { c.MaxX = float32(ev.Width) c.MaxY = float32(ev.Height) } func (c *Cursor) Render(renderer *sdl.Renderer) { renderer.SetDrawColor(255, 0, 0, 255) size := float32(13) r := &sdl.FRect{ X: c.Position.X - size/2, Y: c.Position.Y - size/2, W: size, H: size, } renderer.RenderRect(r) } func (c *Cursor) ProcessMouseMotion(ev events.MouseMotion) { c.Position.X += ev.Dx c.Position.Y += ev.Dy if c.Position.X < 0 { c.Position.X = 0 } if c.Position.Y < 0 { c.Position.Y = 0 } if c.Position.X > c.MaxX { c.Position.X = c.MaxX } if c.Position.Y > c.MaxY { c.Position.Y = c.MaxY } } func (c *Cursor) GO() *ecs.GameObject { return c.GameObject } func NewCursor() ecs.IsGameObject { return &Cursor{ GameObject: &ecs.GameObject{}, } }