entity: physics rewrite

This commit is contained in:
2022-02-01 23:48:39 +08:00
parent 25872b257d
commit 37ee76e9fc
9 changed files with 201 additions and 256 deletions

View File

@ -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,

View File

@ -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])}
}