remove static geom space

This commit is contained in:
austin 2025-06-04 11:58:10 -04:00
parent aa0956477d
commit 1e113d8598
6 changed files with 2 additions and 101 deletions

View File

@ -120,11 +120,6 @@ public class CollisionEngine {
*/ */
protected DBhvSpace space; protected DBhvSpace space;
/**
* Space for storing static geoms
*/
protected DSpace staticGeomSpace;
/** /**
* Lock for thread-safeing all ODE calls * Lock for thread-safeing all ODE calls
*/ */
@ -256,8 +251,6 @@ public class CollisionEngine {
CollisionEngine rVal = new CollisionEngine(name); CollisionEngine rVal = new CollisionEngine(name);
rVal.nearCallback = callback; rVal.nearCallback = callback;
callback.engine = rVal; callback.engine = rVal;
rVal.staticGeomSpace = OdeHelper.createBHVSpace(Collidable.TYPE_STATIC_BIT);
rVal.staticGeomSpace.setCategoryBits(Collidable.TYPE_STATIC_BIT);
return rVal; return rVal;
} }
@ -526,58 +519,6 @@ public class CollisionEngine {
for(int i=0; i<numc; i++){ for(int i=0; i<numc; i++){
DContact contact = contacts.get(i); DContact contact = contacts.get(i);
//this triggers if o2 is the static geom space and we did an inner collide to find the geom within that space to collide with
if(o2 == this.staticGeomSpace){
//get the opposite geom from the collision
if(contact.geom.g1 == o1){
o2 = contact.geom.g2;
} else if(contact.geom.g2 == o1){
o2 = contact.geom.g1;
} else {
String message = "Failed to get collidable from geom within static geom space!\n" +
"Geoms:\n" +
o1 + " \n" +
o2 + " \n" +
"Bodies:\n" +
b1 + " \n" +
b2 + " \n" +
"Colliders:\n" +
c1 + " \n" +
c2 + " \n" +
"Obj 1 pointers:\n" +
this.bodyPointerMap.get(b1) + " \n" +
this.geomPointerMap.get(o1) + " \n" +
"Obj 2 pointers:\n" +
this.bodyPointerMap.get(b2) + " \n" +
this.geomPointerMap.get(o2) + " \n" +
"Contact geoms:\n" +
contact.geom.g1 + "\n" +
contact.geom.g2 + "\n" +
"";
throw new Error(message);
}
c2 = geomPointerMap.get(o2);
if(c2 == null){
String message = "Failed to get collidable from geom within static geom space!\n" +
"Geoms:\n" +
o1 + " \n" +
o2 + " \n" +
"Bodies:\n" +
b1 + " \n" +
b2 + " \n" +
"Colliders:\n" +
c1 + " \n" +
c2 + " \n" +
"Obj 1 pointers:\n" +
this.bodyPointerMap.get(b1) + " \n" +
this.geomPointerMap.get(o1) + " \n" +
"Obj 2 pointers:\n" +
this.bodyPointerMap.get(b2) + " \n" +
this.geomPointerMap.get(o2) + " \n" +
"";
throw new Error(message);
}
}
//special code for ray casting //special code for ray casting
if (o1 instanceof DRay || o2 instanceof DRay){ if (o1 instanceof DRay || o2 instanceof DRay){
@ -1682,19 +1623,6 @@ public class CollisionEngine {
geom.setBody(body); geom.setBody(body);
} }
/**
* Adds the geometry to the static geom space
* @param staticGeom The geom (ie a cylinder, cube, etc)
*/
protected void addToStaticSpace(DGeom staticGeom){
// spaceLock.lock();
// if(staticGeom.getSpace() != null){
// staticGeom.getSpace().remove(staticGeom);
// }
// this.staticGeomSpace.add(staticGeom);
// spaceLock.unlock();
}
/** /**
* Locks the ode library * Locks the ode library
*/ */

View File

@ -54,15 +54,6 @@ public class PhysicsCallback implements DNearCallback {
return; return;
} }
if(o1 == engine.staticGeomSpace){
OdeHelper.spaceCollide2(o2, engine.staticGeomSpace, 0, this);
return;
}
if(o2 == engine.staticGeomSpace){
OdeHelper.spaceCollide2(o1, engine.staticGeomSpace, 0, this);
return;
}
//get the collidables for each geom //get the collidables for each geom
Collidable c1 = null; Collidable c1 = null;
if(b1 != null){ if(b1 != null){

View File

@ -399,8 +399,7 @@ public class PhysicsEntityUtils {
} }
CollisionEngine.lockOde(); CollisionEngine.lockOde();
if(physicsTemplate.getKinematic()){ if(physicsTemplate.getKinematic()){
DGeom geom = PhysicsEntityUtils.serverAttachGeom(realm,rVal,physicsTemplate); PhysicsEntityUtils.serverAttachGeom(realm,rVal,physicsTemplate);
PhysicsUtils.makeGeomStatic(realm.getCollisionEngine(), geom);
} else { } else {
DBody rigidBody = null; DBody rigidBody = null;
switch(physicsTemplate.getType()){ switch(physicsTemplate.getType()){
@ -724,9 +723,6 @@ public class PhysicsEntityUtils {
realm.getCollisionEngine().registerCollisionObject(geom, collidable); realm.getCollisionEngine().registerCollisionObject(geom, collidable);
} break; } break;
} }
if(geom != null){
realm.getCollisionEngine().addToStaticSpace(geom);
}
CollisionEngine.unlockOde(); CollisionEngine.unlockOde();
return geom; return geom;
} }
@ -826,7 +822,6 @@ public class PhysicsEntityUtils {
PhysicsEntityUtils.setCollidable(terrain, collidable); PhysicsEntityUtils.setCollidable(terrain, collidable);
realm.getCollisionEngine().registerCollisionObject(terrainCollider, collidable); realm.getCollisionEngine().registerCollisionObject(terrainCollider, collidable);
PhysicsEntityUtils.setDGeom(terrain,terrainCollider); PhysicsEntityUtils.setDGeom(terrain,terrainCollider);
PhysicsUtils.makeGeomStatic(realm.getCollisionEngine(), terrainCollider);
return terrainCollider; return terrainCollider;
} }
@ -862,7 +857,6 @@ public class PhysicsEntityUtils {
PhysicsEntityUtils.setCollidable(terrain, collidable); PhysicsEntityUtils.setCollidable(terrain, collidable);
realm.getCollisionEngine().registerCollisionObject(terrainBody, collidable); realm.getCollisionEngine().registerCollisionObject(terrainBody, collidable);
PhysicsEntityUtils.setDGeom(terrain,terrainBody); PhysicsEntityUtils.setDGeom(terrain,terrainBody);
PhysicsUtils.makeGeomStatic(realm.getCollisionEngine(), terrainBody);
return terrainBody; return terrainBody;
} }

View File

@ -136,15 +136,6 @@ public class PhysicsUtils {
collisionEngine.synchronizeData(body, position, rotation, linearVel, angularVel, linearForce, angularForce); collisionEngine.synchronizeData(body, position, rotation, linearVel, angularVel, linearForce, angularForce);
} }
/**
* Adds a geom to the static geom space
* @param collisionEngine The collision engine
* @param geom The geom
*/
public static void makeGeomStatic(CollisionEngine collisionEngine, DGeom geom){
collisionEngine.addToStaticSpace(geom);
}
/** /**
* Sets the position + rotation + scale of a body * Sets the position + rotation + scale of a body

View File

@ -5,7 +5,6 @@ import java.util.LinkedList;
import java.util.List; import java.util.List;
import java.util.concurrent.TimeUnit; import java.util.concurrent.TimeUnit;
import org.joml.Vector3d;
import org.joml.Vector3i; import org.joml.Vector3i;
import electrosphere.engine.Globals; import electrosphere.engine.Globals;

View File

@ -3,7 +3,6 @@ package electrosphere.collision;
import static org.junit.jupiter.api.Assertions.assertEquals; import static org.junit.jupiter.api.Assertions.assertEquals;
import org.joml.Vector3d; import org.joml.Vector3d;
import org.ode4j.ode.DBox;
import electrosphere.data.entity.collidable.CollidableTemplate; import electrosphere.data.entity.collidable.CollidableTemplate;
import electrosphere.engine.Globals; import electrosphere.engine.Globals;
@ -45,8 +44,7 @@ public class CollisionEngineStaticSpaceTests extends EntityTestTemplate {
Realm realm = Globals.serverState.realmManager.first(); Realm realm = Globals.serverState.realmManager.first();
CollisionEngine collisionEngine = realm.getCollisionEngine(); CollisionEngine collisionEngine = realm.getCollisionEngine();
DBox box = collisionEngine.createCubeGeom(new Vector3d(1,1,1), 0); collisionEngine.createCubeGeom(new Vector3d(1,1,1), 0);
collisionEngine.addToStaticSpace(box);
//simulate the physics //simulate the physics
collisionEngine.simulatePhysics(); collisionEngine.simulatePhysics();