Revert "fix MP broadphase"

This reverts commit e78343ce39.
This commit is contained in:
RandomityGuy 2023-07-16 19:13:50 +05:30
parent f821db4cea
commit 4e20125a2d

View file

@ -11,13 +11,11 @@ class CollisionWorld {
public var octree:Octree; public var octree:Octree;
public var entities:Array<CollisionEntity> = []; public var entities:Array<CollisionEntity> = [];
public var dynamicEntities:Array<CollisionEntity> = []; public var dynamicEntities:Array<CollisionEntity> = [];
public var dynamicOctree:Octree; public var dynamicBVH:BVHTree<CollisionEntity>;
var dynamicEntitySet:Map<CollisionEntity, Bool> = [];
public function new() { public function new() {
this.octree = new Octree(); this.octree = new Octree();
this.dynamicOctree = new Octree(); this.dynamicBVH = new BVHTree();
} }
public function sphereIntersection(spherecollision:SphereCollisionEntity, timeState:TimeState) { public function sphereIntersection(spherecollision:SphereCollisionEntity, timeState:TimeState) {
@ -48,7 +46,7 @@ class CollisionWorld {
} }
} }
var dynSearch = dynamicOctree.boundingSearch(box).map(x -> cast(x, CollisionEntity)); var dynSearch = dynamicBVH.boundingSearch(box);
for (obj in dynSearch) { for (obj in dynSearch) {
if (obj != spherecollision) { if (obj != spherecollision) {
if (obj.boundingBox.collide(box) && obj.go.isCollideable) if (obj.boundingBox.collide(box) && obj.go.isCollideable)
@ -77,14 +75,14 @@ class CollisionWorld {
contacts.push(entity); contacts.push(entity);
} }
contacts = contacts.concat(dynamicOctree.boundingSearch(box, false).map(x -> cast(x, CollisionEntity))); contacts = contacts.concat(dynamicBVH.boundingSearch(box));
return contacts; return contacts;
} }
public function boundingSearch(bounds:Bounds, useCache:Bool = true) { public function boundingSearch(bounds:Bounds, useCache:Bool = true) {
var contacts = this.octree.boundingSearch(bounds, useCache).map(x -> cast(x, CollisionEntity)); var contacts = this.octree.boundingSearch(bounds, useCache).map(x -> cast(x, CollisionEntity));
contacts = contacts.concat(dynamicOctree.boundingSearch(bounds, useCache).map(x -> cast(x, CollisionEntity))); contacts = contacts.concat(dynamicBVH.boundingSearch(bounds));
return contacts; return contacts;
} }
@ -98,7 +96,7 @@ class CollisionWorld {
+ rayDirection.x * rayLength, rayStart.y + rayDirection.x * rayLength, rayStart.y
+ rayDirection.y * rayLength, rayStart.z + rayDirection.y * rayLength, rayStart.z
+ rayDirection.z * rayLength); + rayDirection.z * rayLength);
var objs = this.octree.boundingSearch(bounds).concat(dynamicOctree.boundingSearch(bounds)).map(x -> cast(x, CollisionEntity)); var objs = this.octree.boundingSearch(bounds).map(x -> cast(x, CollisionEntity));
var results = []; var results = [];
for (obj in objs) { for (obj in objs) {
results = results.concat(obj.rayCast(rayStart, rayDirection)); results = results.concat(obj.rayCast(rayStart, rayDirection));
@ -116,8 +114,7 @@ class CollisionWorld {
public function addMovingEntity(entity:CollisionEntity) { public function addMovingEntity(entity:CollisionEntity) {
this.dynamicEntities.push(entity); this.dynamicEntities.push(entity);
this.dynamicOctree.insert(entity); this.dynamicBVH.add(entity);
this.dynamicEntitySet.set(entity, true);
} }
public function removeMovingEntity(entity:CollisionEntity) { public function removeMovingEntity(entity:CollisionEntity) {
@ -127,10 +124,6 @@ class CollisionWorld {
} }
public function updateTransform(entity:CollisionEntity) { public function updateTransform(entity:CollisionEntity) {
if (!dynamicEntitySet.exists(entity)) { this.octree.update(entity);
this.octree.update(entity);
} else {
this.dynamicOctree.update(entity);
}
} }
} }