23 lines
578 B
Go
23 lines
578 B
Go
|
|
package entity
|
||
|
|
|
||
|
|
import (
|
||
|
|
"github.com/df-mc/dragonfly/server/world"
|
||
|
|
"github.com/go-gl/mathgl/mgl64"
|
||
|
|
)
|
||
|
|
|
||
|
|
// Eyed represents an entity that has eyes.
|
||
|
|
type Eyed interface {
|
||
|
|
// EyeHeight returns the offset from their base position that the eyes of an entity are found at.
|
||
|
|
EyeHeight() float64
|
||
|
|
}
|
||
|
|
|
||
|
|
// EyePosition returns the position of the eyes of the entity if the entity implements entity.Eyed, or the
|
||
|
|
// actual position if it doesn't.
|
||
|
|
func EyePosition(e world.Entity) mgl64.Vec3 {
|
||
|
|
pos := e.Position()
|
||
|
|
if eyed, ok := e.(Eyed); ok {
|
||
|
|
pos[1] += eyed.EyeHeight()
|
||
|
|
}
|
||
|
|
return pos
|
||
|
|
}
|