func (p *Player) Bind(program uint32) error {
	return p.Sprites[p.current].Bind(program)
}
Bind TODO doc
package player
import (
	"fmt"
	"runtime"
	"github.com/go-gl/glfw/v3.1/glfw"
	"github.com/go-gl/mathgl/mgl32"
	"github.com/hurricanerix/shade/entity"
	"github.com/hurricanerix/shade/events"
	"github.com/hurricanerix/shade/fonts"
	"github.com/hurricanerix/shade/shapes"
	"github.com/hurricanerix/shade/sprite"
)
func init() {
	runtime.LockOSThread()
}
type Player struct {
	pos       mgl32.Vec3
	Sprites   []sprite.Context
	Font      fonts.Context
	Shapes    []shapes.Shape
	Collision *entity.Collision
	With      string
	current   int
}
func New(x, y float32, sprites []sprite.Context, shapes []shapes.Shape, font fonts.Context) Player {
	b := Player{
		pos:     mgl32.Vec3{x, y, 1.0},
		Sprites: sprites,
		Font:    font,
		Shapes:  shapes,
		current: 1,
	}
	return b
}
func (p *Player) Handle(event events.Event) {
	if (event.Type == events.KeyDown || event.Type == events.KeyRepeat) && event.Key == glfw.KeySpace {
		p.NextShape()
	}
	if event.Type == events.MouseButtonUp && event.MouseButton == glfw.MouseButton1 {
		p.NextShape()
	}
	if event.Type == events.CursorPosition {
		p.SetPos(mgl32.Vec3{event.X, event.Y, 1.0})
	}
}
func (p Player) Pos() mgl32.Vec3 {
	return p.pos
}
func (p *Player) SetPos(pos mgl32.Vec3) {
	p.pos = pos
}