Noah Petherbridge
f8a83cbad9
* Move all collision code into the pkg/collision package. * pkg/doodads/collision.go -> pkg/collision/collide_level.go * pkg/doodads/collide_actors.go for new Actor collide support * Add initial collision detection code between actors in Play Mode.
38 lines
802 B
Go
38 lines
802 B
Go
package doodads
|
|
|
|
import (
|
|
"git.kirsle.net/apps/doodle/lib/render"
|
|
)
|
|
|
|
// Actor is a reusable run-time drawing component used in Doodle. Actors are an
|
|
// active instance of a Doodad which have a position, velocity, etc.
|
|
type Actor interface {
|
|
ID() string
|
|
|
|
// Position and velocity, not saved to disk.
|
|
Position() render.Point
|
|
Velocity() render.Point
|
|
Size() render.Rect
|
|
Grounded() bool
|
|
SetGrounded(bool)
|
|
|
|
// Movement commands.
|
|
MoveBy(render.Point) // Add {X,Y} to current Position.
|
|
MoveTo(render.Point) // Set current Position to {X,Y}.
|
|
}
|
|
|
|
// GetBoundingRect computes the full pairs of points for the collision box
|
|
// around a doodad actor.
|
|
func GetBoundingRect(d Actor) render.Rect {
|
|
var (
|
|
P = d.Position()
|
|
S = d.Size()
|
|
)
|
|
return render.Rect{
|
|
X: P.X,
|
|
Y: P.Y,
|
|
W: S.W,
|
|
H: S.H,
|
|
}
|
|
}
|