variable collision bits from collidable defns
All checks were successful
studiorailgun/Renderer/pipeline/head This commit looks good

This commit is contained in:
austin 2024-11-29 12:13:53 -05:00
parent 524f328fae
commit d8a9d660aa
2 changed files with 15 additions and 6 deletions

View File

@ -1169,6 +1169,7 @@ Fix block not firing
Fix reentrant locking bug Fix reentrant locking bug
Convert server physics cell generation to executor service Convert server physics cell generation to executor service
Simplifying physics cases Simplifying physics cases
Allow variable collision bits for collidable entities
# TODO # TODO

View File

@ -63,6 +63,10 @@ public class PhysicsEntityUtils {
if(physicsTemplate.getMass() != null){ if(physicsTemplate.getMass() != null){
mass = physicsTemplate.getMass(); mass = physicsTemplate.getMass();
} }
long categoryBit = Collidable.TYPE_CREATURE_BIT;
if(physicsTemplate.getKinematic()){
categoryBit = Collidable.TYPE_STATIC_BIT;
}
switch(physicsTemplate.getType()){ switch(physicsTemplate.getType()){
case "CYLINDER": { case "CYLINDER": {
@ -72,7 +76,7 @@ public class PhysicsEntityUtils {
Globals.clientSceneWrapper.getCollisionEngine(), Globals.clientSceneWrapper.getCollisionEngine(),
physicsTemplate.getDimension1(), physicsTemplate.getDimension1(),
physicsTemplate.getDimension2(), physicsTemplate.getDimension2(),
Collidable.TYPE_CREATURE_BIT categoryBit
); );
if(physicsTemplate.getMass() != null){ if(physicsTemplate.getMass() != null){
CollisionBodyCreation.setCylinderMass( CollisionBodyCreation.setCylinderMass(
@ -135,7 +139,7 @@ public class PhysicsEntityUtils {
rigidBody = CollisionBodyCreation.createCubeBody( rigidBody = CollisionBodyCreation.createCubeBody(
Globals.clientSceneWrapper.getCollisionEngine(), Globals.clientSceneWrapper.getCollisionEngine(),
new Vector3d(physicsTemplate.getDimension1(),physicsTemplate.getDimension2(),physicsTemplate.getDimension3()), new Vector3d(physicsTemplate.getDimension1(),physicsTemplate.getDimension2(),physicsTemplate.getDimension3()),
Collidable.TYPE_CREATURE_BIT categoryBit
); );
if(physicsTemplate.getMass() != null){ if(physicsTemplate.getMass() != null){
CollisionBodyCreation.setBoxMass( CollisionBodyCreation.setBoxMass(
@ -199,7 +203,7 @@ public class PhysicsEntityUtils {
Globals.clientSceneWrapper.getCollisionEngine(), Globals.clientSceneWrapper.getCollisionEngine(),
physicsTemplate.getDimension2(), physicsTemplate.getDimension2(),
physicsTemplate.getDimension2() - physicsTemplate.getDimension1() - physicsTemplate.getDimension1(), physicsTemplate.getDimension2() - physicsTemplate.getDimension1() - physicsTemplate.getDimension1(),
Collidable.TYPE_CREATURE_BIT categoryBit
); );
if(physicsTemplate.getMass() != null){ if(physicsTemplate.getMass() != null){
CollisionBodyCreation.setCapsuleMass( CollisionBodyCreation.setCapsuleMass(
@ -278,6 +282,10 @@ public class PhysicsEntityUtils {
if(physicsTemplate.getMass() != null){ if(physicsTemplate.getMass() != null){
mass = physicsTemplate.getMass(); mass = physicsTemplate.getMass();
} }
long categoryBit = Collidable.TYPE_CREATURE_BIT;
if(physicsTemplate.getKinematic()){
categoryBit = Collidable.TYPE_STATIC_BIT;
}
switch(physicsTemplate.getType()){ switch(physicsTemplate.getType()){
case "CYLINDER": { case "CYLINDER": {
@ -287,7 +295,7 @@ public class PhysicsEntityUtils {
realm.getCollisionEngine(), realm.getCollisionEngine(),
physicsTemplate.getDimension1(), physicsTemplate.getDimension1(),
physicsTemplate.getDimension2(), physicsTemplate.getDimension2(),
Collidable.TYPE_CREATURE_BIT categoryBit
); );
if(physicsTemplate.getMass() != null){ if(physicsTemplate.getMass() != null){
CollisionBodyCreation.setCylinderMass( CollisionBodyCreation.setCylinderMass(
@ -351,7 +359,7 @@ public class PhysicsEntityUtils {
rigidBody = CollisionBodyCreation.createCubeBody( rigidBody = CollisionBodyCreation.createCubeBody(
realm.getCollisionEngine(), realm.getCollisionEngine(),
new Vector3d(physicsTemplate.getDimension1(),physicsTemplate.getDimension2(),physicsTemplate.getDimension3()), new Vector3d(physicsTemplate.getDimension1(),physicsTemplate.getDimension2(),physicsTemplate.getDimension3()),
Collidable.TYPE_CREATURE_BIT categoryBit
); );
if(physicsTemplate.getMass() != null){ if(physicsTemplate.getMass() != null){
CollisionBodyCreation.setBoxMass( CollisionBodyCreation.setBoxMass(
@ -415,7 +423,7 @@ public class PhysicsEntityUtils {
realm.getCollisionEngine(), realm.getCollisionEngine(),
physicsTemplate.getDimension2(), physicsTemplate.getDimension2(),
physicsTemplate.getDimension2() - physicsTemplate.getDimension1() - physicsTemplate.getDimension1(), physicsTemplate.getDimension2() - physicsTemplate.getDimension1() - physicsTemplate.getDimension1(),
Collidable.TYPE_CREATURE_BIT categoryBit
); );
if(physicsTemplate.getMass() != null){ if(physicsTemplate.getMass() != null){
CollisionBodyCreation.setCapsuleMass( CollisionBodyCreation.setCapsuleMass(