diff --git a/collider/collider.go b/collider/collider.go index 16f3c86..b7861bc 100644 --- a/collider/collider.go +++ b/collider/collider.go @@ -80,6 +80,7 @@ func (c *C) InsertFeature(o feature.O) *feature.F { f := feature.New(o) feature.SetID(f, x) + c.features[x] = f if err := c.bvhFeatures.Insert(x, f.AABB()); err != nil { panic(fmt.Sprintf("cannot insert feature: %v", err)) } @@ -166,7 +167,6 @@ func (c *C) queryFeatures(q hyperrectangle.R, filter func(f *feature.F) bool) [] collisions = append(collisions, x) } } - return collisions } diff --git a/collider/collider_test.go b/collider/collider_test.go index 567f53d..20e87b8 100644 --- a/collider/collider_test.go +++ b/collider/collider_test.go @@ -345,6 +345,29 @@ func BenchmarkTick(b *testing.B) { Mask: mask.MSizeSmall, }) } + + // Add world borders. + // Add xmin border. + collider.InsertFeature(feature.O{ + Min: vector.V{-1, -1}, + Max: vector.V{0, max + 1}, + }) + // Add xmax border. + collider.InsertFeature(feature.O{ + Min: vector.V{max, -1}, + Max: vector.V{max + 1, max + 1}, + }) + // Add ymin border. + collider.InsertFeature(feature.O{ + Min: vector.V{0, -1}, + Max: vector.V{max, 0}, + }) + // Add ymax border. + collider.InsertFeature(feature.O{ + Min: vector.V{0, max}, + Max: vector.V{max, max + 1}, + }) + b.StartTimer() for i := 0; i < b.N; i++ { collider.Tick(33 * time.Millisecond)