From cf9371461b90a04ed1790ba17f462fa9730aad5e Mon Sep 17 00:00:00 2001 From: austin Date: Fri, 29 Nov 2024 12:23:23 -0500 Subject: [PATCH] autodisable terrain colliders --- docs/src/progress/renderertodo.md | 1 + .../java/electrosphere/collision/PhysicsEntityUtils.java | 8 +++++--- 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/docs/src/progress/renderertodo.md b/docs/src/progress/renderertodo.md index f5eba19a..e5c1c653 100644 --- a/docs/src/progress/renderertodo.md +++ b/docs/src/progress/renderertodo.md @@ -1170,6 +1170,7 @@ Fix reentrant locking bug Convert server physics cell generation to executor service Simplifying physics cases Allow variable collision bits for collidable entities +Autodisable terrain colliders # TODO diff --git a/src/main/java/electrosphere/collision/PhysicsEntityUtils.java b/src/main/java/electrosphere/collision/PhysicsEntityUtils.java index b85fed71..fac926f9 100644 --- a/src/main/java/electrosphere/collision/PhysicsEntityUtils.java +++ b/src/main/java/electrosphere/collision/PhysicsEntityUtils.java @@ -497,6 +497,7 @@ public class PhysicsEntityUtils { */ public static void clientAttachTriGeomRigidBody(Entity terrain, TriGeomData data){ DBody terrainBody = CollisionBodyCreation.generateBodyFromTerrainData(Globals.clientSceneWrapper.getCollisionEngine(), data, Collidable.TYPE_STATIC_BIT); + CollisionBodyCreation.setAutoDisable(Globals.clientSceneWrapper.getCollisionEngine(), terrainBody, true, LINEAR_THRESHOLD, ANGULAR_THRESHOLD, STEP_THRESHOLD); Collidable collidable = new Collidable(terrain,Collidable.TYPE_STATIC, false); Globals.clientSceneWrapper.getCollisionEngine().registerCollisionObject(terrainBody, collidable); PhysicsEntityUtils.setDBody(terrain,terrainBody); @@ -511,10 +512,11 @@ public class PhysicsEntityUtils { * @return The rigid body created (note, attachment has already been performed) */ public static DBody serverAttachTriGeomRigidBody(Entity terrain, TriGeomData data){ - Realm terrainRealm = Globals.realmManager.getEntityRealm(terrain); - DBody terrainBody = CollisionBodyCreation.generateBodyFromTerrainData(terrainRealm.getCollisionEngine(),data,Collidable.TYPE_STATIC_BIT); + Realm realm = Globals.realmManager.getEntityRealm(terrain); + DBody terrainBody = CollisionBodyCreation.generateBodyFromTerrainData(realm.getCollisionEngine(),data,Collidable.TYPE_STATIC_BIT); + CollisionBodyCreation.setAutoDisable(realm.getCollisionEngine(), terrainBody, true, LINEAR_THRESHOLD, ANGULAR_THRESHOLD, STEP_THRESHOLD); - terrainRealm.getCollisionEngine().registerCollisionObject(terrainBody, new Collidable(terrain,Collidable.TYPE_STATIC, false)); + realm.getCollisionEngine().registerCollisionObject(terrainBody, new Collidable(terrain,Collidable.TYPE_STATIC, false)); PhysicsEntityUtils.setDBody(terrain,terrainBody); return terrainBody;