entity: physics rewrite
This commit is contained in:
@ -137,15 +137,15 @@ func pointIntersect(n, m, p, q float64) (min, len float64) {
|
||||
return arr[1], arr[2] - arr[1]
|
||||
}
|
||||
|
||||
func (box1 Boxd) Intersects(box2 Boxd) (result Boxd) {
|
||||
func (box1 Boxd) Intersect(box2 Boxd) (ok bool, intersect Boxd) {
|
||||
a, b := pointIntersect(box1.OffX, box1.OffX+box1.SizeX, box2.OffX, box2.OffX+box2.SizeX)
|
||||
c, d := pointIntersect(box1.OffY, box1.OffY+box1.SizeY, box2.OffY, box2.OffY+box2.SizeY)
|
||||
e, f := pointIntersect(box1.OffZ, box1.OffZ+box1.SizeZ, box2.OffZ, box2.OffZ+box2.SizeZ)
|
||||
|
||||
if b == 0 || d == 0 || f == 0 {
|
||||
return Boxd{}
|
||||
return false, Boxd{}
|
||||
} else {
|
||||
return Boxd{
|
||||
return true, Boxd{
|
||||
OffX: a,
|
||||
SizeX: b,
|
||||
OffY: c,
|
||||
|
@ -205,6 +205,14 @@ func (v Vec3d) Floor() Vec3i {
|
||||
}
|
||||
}
|
||||
|
||||
func (v Vec3d) Ceiling() Vec3i {
|
||||
return Vec3i{
|
||||
int(math.Ceil(v[0])),
|
||||
int(math.Ceil(v[1])),
|
||||
int(math.Ceil(v[2])),
|
||||
}
|
||||
}
|
||||
|
||||
func (v Vec3d) ToFloat32() Vec3f {
|
||||
return Vec3f{float32(v[0]), float32(v[1]), float32(v[2])}
|
||||
}
|
||||
|
Reference in New Issue
Block a user