1
0
Fork 0
go-raytracer/player.go
2025-06-08 15:51:07 +02:00

38 lines
744 B
Go

package main
import (
"github.com/pnx/go-raytracer/math"
"github.com/pnx/go-raytracer/world"
)
type Player struct {
math.Transform
MoveSpd float64
RotSpd float64
}
func (p *Player) Move(delta float64, level *world.Level) {
deltaVec := p.ForwardVector().Scale(delta)
newPos := p.Position.Get().AddVec(deltaVec)
// make sure we don't move past walls.
if !level.Wall(int(newPos.X)/world.TileSize, int(newPos.Y)/world.TileSize) {
p.Position.Set(newPos)
}
}
func (p *Player) MoveForward(level *world.Level) {
p.Move(p.MoveSpd, level)
}
func (p *Player) MoveBackward(level *world.Level) {
p.Move(-p.MoveSpd, level)
}
func (p *Player) RotateLeft() {
p.Rotate(-p.RotSpd)
}
func (p *Player) RotateRight() {
p.Rotate(p.RotSpd)
}