dbody entity key refactor
	
		
			
	
		
	
	
		
	
		
			All checks were successful
		
		
	
	
		
			
				
	
				studiorailgun/Renderer/pipeline/head This commit looks good
				
			
		
		
	
	
				
					
				
			
		
			All checks were successful
		
		
	
	studiorailgun/Renderer/pipeline/head This commit looks good
				
			This commit is contained in:
		
							parent
							
								
									3082dde1b1
								
							
						
					
					
						commit
						5fce9bc292
					
				| @ -11,6 +11,7 @@ import org.joml.Vector3i; | |||||||
| import electrosphere.client.terrain.cache.ChunkData; | import electrosphere.client.terrain.cache.ChunkData; | ||||||
| import electrosphere.client.terrain.cells.DrawCell.DrawCellFace; | import electrosphere.client.terrain.cells.DrawCell.DrawCellFace; | ||||||
| import electrosphere.client.terrain.manager.ClientTerrainManager; | import electrosphere.client.terrain.manager.ClientTerrainManager; | ||||||
|  | import electrosphere.collision.PhysicsEntityUtils; | ||||||
| import electrosphere.engine.Globals; | import electrosphere.engine.Globals; | ||||||
| import electrosphere.entity.EntityUtils; | import electrosphere.entity.EntityUtils; | ||||||
| import electrosphere.net.parser.net.message.TerrainMessage; | import electrosphere.net.parser.net.message.TerrainMessage; | ||||||
| @ -76,7 +77,7 @@ public class DrawCellManager { | |||||||
|      |      | ||||||
|     //the real-space radius for which we will construct draw cells inside of |     //the real-space radius for which we will construct draw cells inside of | ||||||
|     //ie, we check if the draw cell's entity would be inside this radius. If it would, create the draw cell, otherwise don't |     //ie, we check if the draw cell's entity would be inside this radius. If it would, create the draw cell, otherwise don't | ||||||
|     double drawFullModelRadius = 50; |     double drawFullModelRadius = 70; | ||||||
| 
 | 
 | ||||||
|     //the radius we'll draw LODed chunks for |     //the radius we'll draw LODed chunks for | ||||||
|     double drawLODRadius = drawFullModelRadius + ServerTerrainChunk.CHUNK_DIMENSION * (2*2 + 4*4 + 8*8 + 16*16); |     double drawLODRadius = drawFullModelRadius + ServerTerrainChunk.CHUNK_DIMENSION * (2*2 + 4*4 + 8*8 + 16*16); | ||||||
| @ -501,7 +502,7 @@ public class DrawCellManager { | |||||||
|             return false; |             return false; | ||||||
|         } |         } | ||||||
|         DrawCell cell = this.keyCellMap.get(key); |         DrawCell cell = this.keyCellMap.get(key); | ||||||
|         return cell.modelEntity != null; |         return cell.modelEntity != null && PhysicsEntityUtils.getDBody(cell.modelEntity) != null; | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
|  | |||||||
| @ -623,8 +623,8 @@ public class CollisionEngine { | |||||||
|      */ |      */ | ||||||
|     public void destroyPhysics(Entity e){ |     public void destroyPhysics(Entity e){ | ||||||
|         //make uncollidable |         //make uncollidable | ||||||
|         if(e.containsKey(EntityDataStrings.PHYSICS_COLLISION_BODY)){ |         if(PhysicsEntityUtils.containsDBody(e)){ | ||||||
|             DBody rigidBody = (DBody)e.getData(EntityDataStrings.PHYSICS_COLLISION_BODY); |             DBody rigidBody = PhysicsEntityUtils.getDBody(e); | ||||||
|             deregisterCollisionObject(rigidBody,PhysicsEntityUtils.getCollidable(e)); |             deregisterCollisionObject(rigidBody,PhysicsEntityUtils.getCollidable(e)); | ||||||
|             e.removeData(EntityDataStrings.PHYSICS_COLLISION_BODY); |             e.removeData(EntityDataStrings.PHYSICS_COLLISION_BODY); | ||||||
|             deregisterPhysicsObject(rigidBody); |             deregisterPhysicsObject(rigidBody); | ||||||
|  | |||||||
| @ -50,7 +50,7 @@ public class PhysicsEntityUtils { | |||||||
|                 ); |                 ); | ||||||
|                 collidable = new Collidable(rVal, Collidable.TYPE_CREATURE, true); |                 collidable = new Collidable(rVal, Collidable.TYPE_CREATURE, true); | ||||||
|                 ClientCollidableTree tree = new ClientCollidableTree(rVal,collidable,rigidBody); |                 ClientCollidableTree tree = new ClientCollidableTree(rVal,collidable,rigidBody); | ||||||
|                 rVal.putData(EntityDataStrings.PHYSICS_COLLISION_BODY, rigidBody); |                 PhysicsEntityUtils.setDBody(rVal,rigidBody); | ||||||
|                 Matrix4d offsetTransform = new Matrix4d().translationRotate( |                 Matrix4d offsetTransform = new Matrix4d().translationRotate( | ||||||
|                     physicsTemplate.getOffsetX(), physicsTemplate.getOffsetY(), physicsTemplate.getOffsetZ(), //translate |                     physicsTemplate.getOffsetX(), physicsTemplate.getOffsetY(), physicsTemplate.getOffsetZ(), //translate | ||||||
|                     physicsTemplate.getRotX(), physicsTemplate.getRotY(), physicsTemplate.getRotZ(), physicsTemplate.getRotW() //rotate |                     physicsTemplate.getRotX(), physicsTemplate.getRotY(), physicsTemplate.getRotZ(), physicsTemplate.getRotW() //rotate | ||||||
| @ -76,7 +76,7 @@ public class PhysicsEntityUtils { | |||||||
|                 ); |                 ); | ||||||
|                 collidable = new Collidable(rVal, Collidable.TYPE_CREATURE, true); |                 collidable = new Collidable(rVal, Collidable.TYPE_CREATURE, true); | ||||||
|                 ClientCollidableTree tree = new ClientCollidableTree(rVal,collidable,rigidBody); |                 ClientCollidableTree tree = new ClientCollidableTree(rVal,collidable,rigidBody); | ||||||
|                 rVal.putData(EntityDataStrings.PHYSICS_COLLISION_BODY, rigidBody); |                 PhysicsEntityUtils.setDBody(rVal,rigidBody); | ||||||
|                 Matrix4d offsetTransform = new Matrix4d().translationRotateScale( |                 Matrix4d offsetTransform = new Matrix4d().translationRotateScale( | ||||||
|                     physicsTemplate.getOffsetX(), physicsTemplate.getOffsetY(), physicsTemplate.getOffsetZ(), //translate |                     physicsTemplate.getOffsetX(), physicsTemplate.getOffsetY(), physicsTemplate.getOffsetZ(), //translate | ||||||
|                     physicsTemplate.getRotX(), physicsTemplate.getRotY(), physicsTemplate.getRotZ(), physicsTemplate.getRotW(), //rotate |                     physicsTemplate.getRotX(), physicsTemplate.getRotY(), physicsTemplate.getRotZ(), physicsTemplate.getRotW(), //rotate | ||||||
| @ -128,7 +128,7 @@ public class PhysicsEntityUtils { | |||||||
|                 ); |                 ); | ||||||
|                 collidable = new Collidable(rVal, Collidable.TYPE_CREATURE, true); |                 collidable = new Collidable(rVal, Collidable.TYPE_CREATURE, true); | ||||||
|                 ServerCollidableTree tree = new ServerCollidableTree(rVal,collidable,rigidBody); |                 ServerCollidableTree tree = new ServerCollidableTree(rVal,collidable,rigidBody); | ||||||
|                 rVal.putData(EntityDataStrings.PHYSICS_COLLISION_BODY, rigidBody); |                 PhysicsEntityUtils.setDBody(rVal,rigidBody); | ||||||
|                 Matrix4d offsetTransform = new Matrix4d().translationRotateScale( |                 Matrix4d offsetTransform = new Matrix4d().translationRotateScale( | ||||||
|                     physicsTemplate.getOffsetX(), physicsTemplate.getOffsetY(), physicsTemplate.getOffsetZ(), //translate |                     physicsTemplate.getOffsetX(), physicsTemplate.getOffsetY(), physicsTemplate.getOffsetZ(), //translate | ||||||
|                     physicsTemplate.getRotX(), physicsTemplate.getRotY(), physicsTemplate.getRotZ(), physicsTemplate.getRotW(), //rotate |                     physicsTemplate.getRotX(), physicsTemplate.getRotY(), physicsTemplate.getRotZ(), physicsTemplate.getRotW(), //rotate | ||||||
| @ -151,7 +151,7 @@ public class PhysicsEntityUtils { | |||||||
|                 rigidBody = CollisionBodyCreation.createCubeBody(realm.getCollisionEngine(),new Vector3d(physicsTemplate.getDimension1(),physicsTemplate.getDimension2(),physicsTemplate.getDimension3()),Collidable.TYPE_CREATURE_BIT); |                 rigidBody = CollisionBodyCreation.createCubeBody(realm.getCollisionEngine(),new Vector3d(physicsTemplate.getDimension1(),physicsTemplate.getDimension2(),physicsTemplate.getDimension3()),Collidable.TYPE_CREATURE_BIT); | ||||||
|                 collidable = new Collidable(rVal, Collidable.TYPE_CREATURE, true); |                 collidable = new Collidable(rVal, Collidable.TYPE_CREATURE, true); | ||||||
|                 ServerCollidableTree tree = new ServerCollidableTree(rVal,collidable,rigidBody); |                 ServerCollidableTree tree = new ServerCollidableTree(rVal,collidable,rigidBody); | ||||||
|                 rVal.putData(EntityDataStrings.PHYSICS_COLLISION_BODY, rigidBody); |                 PhysicsEntityUtils.setDBody(rVal,rigidBody); | ||||||
|                 Matrix4d offsetTransform = new Matrix4d().translationRotateScale( |                 Matrix4d offsetTransform = new Matrix4d().translationRotateScale( | ||||||
|                     physicsTemplate.getOffsetX(), physicsTemplate.getOffsetY(), physicsTemplate.getOffsetZ(), //translate |                     physicsTemplate.getOffsetX(), physicsTemplate.getOffsetY(), physicsTemplate.getOffsetZ(), //translate | ||||||
|                     physicsTemplate.getRotX(), physicsTemplate.getRotY(), physicsTemplate.getRotZ(), physicsTemplate.getRotW(), //rotate |                     physicsTemplate.getRotX(), physicsTemplate.getRotY(), physicsTemplate.getRotZ(), physicsTemplate.getRotW(), //rotate | ||||||
| @ -248,7 +248,7 @@ public class PhysicsEntityUtils { | |||||||
|         DBody body = collisionEngine.createDBody(triMesh); |         DBody body = collisionEngine.createDBody(triMesh); | ||||||
| 
 | 
 | ||||||
|         Globals.clientSceneWrapper.getCollisionEngine().registerCollisionObject(body, new Collidable(terrain,Collidable.TYPE_TERRAIN, false)); |         Globals.clientSceneWrapper.getCollisionEngine().registerCollisionObject(body, new Collidable(terrain,Collidable.TYPE_TERRAIN, false)); | ||||||
|         terrain.putData(EntityDataStrings.PHYSICS_COLLISION_BODY, body); |         PhysicsEntityUtils.setDBody(terrain,body); | ||||||
| 
 | 
 | ||||||
|         return body; |         return body; | ||||||
|     } |     } | ||||||
| @ -267,7 +267,7 @@ public class PhysicsEntityUtils { | |||||||
|          |          | ||||||
|          |          | ||||||
|         Globals.clientSceneWrapper.getCollisionEngine().registerCollisionObject(terrainBody, new Collidable(terrain,Collidable.TYPE_TERRAIN, false)); |         Globals.clientSceneWrapper.getCollisionEngine().registerCollisionObject(terrainBody, new Collidable(terrain,Collidable.TYPE_TERRAIN, false)); | ||||||
|         terrain.putData(EntityDataStrings.PHYSICS_COLLISION_BODY, terrainBody); |         PhysicsEntityUtils.setDBody(terrain,terrainBody); | ||||||
|          |          | ||||||
|         return terrainBody; |         return terrainBody; | ||||||
|     } |     } | ||||||
| @ -286,7 +286,7 @@ public class PhysicsEntityUtils { | |||||||
|         CollisionBodyCreation.setGravityMode(terrainRealm.getCollisionEngine(), terrainBody, false); |         CollisionBodyCreation.setGravityMode(terrainRealm.getCollisionEngine(), terrainBody, false); | ||||||
|          |          | ||||||
|         terrainRealm.getCollisionEngine().registerCollisionObject(terrainBody, new Collidable(terrain,Collidable.TYPE_TERRAIN, false)); |         terrainRealm.getCollisionEngine().registerCollisionObject(terrainBody, new Collidable(terrain,Collidable.TYPE_TERRAIN, false)); | ||||||
|         terrain.putData(EntityDataStrings.PHYSICS_COLLISION_BODY, terrainBody); |         PhysicsEntityUtils.setDBody(terrain,terrainBody); | ||||||
|          |          | ||||||
|         return terrainBody; |         return terrainBody; | ||||||
|     } |     } | ||||||
| @ -300,6 +300,24 @@ public class PhysicsEntityUtils { | |||||||
|         return (Matrix4d) entity.getData(EntityDataStrings.PHYSICS_COLLISION_BODY_TRANSFORM); |         return (Matrix4d) entity.getData(EntityDataStrings.PHYSICS_COLLISION_BODY_TRANSFORM); | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|  |     /** | ||||||
|  |      * Checks if the entity contains a dbody | ||||||
|  |      * @param entity the entity | ||||||
|  |      * @return true if contains, false otherwise | ||||||
|  |      */ | ||||||
|  |     public static boolean containsDBody(Entity entity){ | ||||||
|  |         return entity.containsKey(EntityDataStrings.PHYSICS_COLLISION_BODY); | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|  |     /** | ||||||
|  |      * Sets the dbody on the entity | ||||||
|  |      * @param entity The entity | ||||||
|  |      * @param body The body | ||||||
|  |      */ | ||||||
|  |     public static void setDBody(Entity entity, DBody body){ | ||||||
|  |         entity.putData(EntityDataStrings.PHYSICS_COLLISION_BODY, body); | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|     /** |     /** | ||||||
|      * Gets the DBody attached to an entity |      * Gets the DBody attached to an entity | ||||||
|      * @param entity the entity |      * @param entity the entity | ||||||
|  | |||||||
| @ -6,6 +6,7 @@ import java.util.LinkedList; | |||||||
| import java.util.List; | import java.util.List; | ||||||
| import java.util.Map; | import java.util.Map; | ||||||
| 
 | 
 | ||||||
|  | import electrosphere.collision.PhysicsEntityUtils; | ||||||
| import electrosphere.engine.Globals; | import electrosphere.engine.Globals; | ||||||
| import electrosphere.entity.Entity; | import electrosphere.entity.Entity; | ||||||
| import electrosphere.entity.EntityCreationUtils; | import electrosphere.entity.EntityCreationUtils; | ||||||
| @ -151,7 +152,7 @@ public class ClientEquipState implements BehaviorTree { | |||||||
|                             ); |                             ); | ||||||
|                         } |                         } | ||||||
|                         //make uncollidable |                         //make uncollidable | ||||||
|                         if(toEquip.containsKey(EntityDataStrings.PHYSICS_COLLISION_BODY) && toEquip.containsKey(EntityDataStrings.PHYSICS_COLLIDABLE)){ |                         if(PhysicsEntityUtils.containsDBody(toEquip) && toEquip.containsKey(EntityDataStrings.PHYSICS_COLLIDABLE)){ | ||||||
|                             Globals.clientSceneWrapper.getCollisionEngine().destroyPhysics(toEquip); |                             Globals.clientSceneWrapper.getCollisionEngine().destroyPhysics(toEquip); | ||||||
|                         } |                         } | ||||||
|                         //hide toEquip actor |                         //hide toEquip actor | ||||||
| @ -190,7 +191,7 @@ public class ClientEquipState implements BehaviorTree { | |||||||
|                         AttachUtils.getEquipPointRotationOffset(point.getOffsetRotationFirstPerson()) |                         AttachUtils.getEquipPointRotationOffset(point.getOffsetRotationFirstPerson()) | ||||||
|                     ); |                     ); | ||||||
|                 } |                 } | ||||||
|                 if(toEquip.containsKey(EntityDataStrings.PHYSICS_COLLISION_BODY) && toEquip.containsKey(EntityDataStrings.PHYSICS_COLLIDABLE)){ |                 if(PhysicsEntityUtils.containsDBody(toEquip) && toEquip.containsKey(EntityDataStrings.PHYSICS_COLLIDABLE)){ | ||||||
|                     Globals.clientSceneWrapper.getCollisionEngine().destroyPhysics(toEquip); |                     Globals.clientSceneWrapper.getCollisionEngine().destroyPhysics(toEquip); | ||||||
|                 } |                 } | ||||||
|                 Globals.clientSceneWrapper.getScene().removeEntityFromTag(toEquip, EntityTags.TARGETABLE); |                 Globals.clientSceneWrapper.getScene().removeEntityFromTag(toEquip, EntityTags.TARGETABLE); | ||||||
|  | |||||||
| @ -10,6 +10,7 @@ import java.util.Map; | |||||||
| 
 | 
 | ||||||
| import org.joml.Vector3d; | import org.joml.Vector3d; | ||||||
| 
 | 
 | ||||||
|  | import electrosphere.collision.PhysicsEntityUtils; | ||||||
| import electrosphere.engine.Globals; | import electrosphere.engine.Globals; | ||||||
| import electrosphere.entity.Entity; | import electrosphere.entity.Entity; | ||||||
| import electrosphere.entity.EntityDataStrings; | import electrosphere.entity.EntityDataStrings; | ||||||
| @ -125,7 +126,7 @@ public class ServerEquipState implements BehaviorTree { | |||||||
|                             AttachUtils.getEquipPointRotationOffset(point.getOffsetRotationThirdPerson()) |                             AttachUtils.getEquipPointRotationOffset(point.getOffsetRotationThirdPerson()) | ||||||
|                         ); |                         ); | ||||||
|                         //make uncollidable |                         //make uncollidable | ||||||
|                         if(inWorldItem.containsKey(EntityDataStrings.PHYSICS_COLLISION_BODY) && inWorldItem.containsKey(EntityDataStrings.PHYSICS_COLLIDABLE)){ |                         if(PhysicsEntityUtils.containsDBody(inWorldItem) && inWorldItem.containsKey(EntityDataStrings.PHYSICS_COLLIDABLE)){ | ||||||
|                             Realm inWorldRealm = Globals.realmManager.getEntityRealm(inWorldItem); |                             Realm inWorldRealm = Globals.realmManager.getEntityRealm(inWorldItem); | ||||||
|                             inWorldRealm.getCollisionEngine().destroyPhysics(inWorldItem); |                             inWorldRealm.getCollisionEngine().destroyPhysics(inWorldItem); | ||||||
|                         } |                         } | ||||||
| @ -146,7 +147,7 @@ public class ServerEquipState implements BehaviorTree { | |||||||
|                     AttachUtils.getEquipPointVectorOffset(point.getOffsetVectorThirdPerson()), |                     AttachUtils.getEquipPointVectorOffset(point.getOffsetVectorThirdPerson()), | ||||||
|                     AttachUtils.getEquipPointRotationOffset(point.getOffsetRotationThirdPerson()) |                     AttachUtils.getEquipPointRotationOffset(point.getOffsetRotationThirdPerson()) | ||||||
|                 ); |                 ); | ||||||
|                 if(inWorldItem.containsKey(EntityDataStrings.PHYSICS_COLLISION_BODY) && inWorldItem.containsKey(EntityDataStrings.PHYSICS_COLLIDABLE)){ |                 if(PhysicsEntityUtils.containsDBody(inWorldItem) && inWorldItem.containsKey(EntityDataStrings.PHYSICS_COLLIDABLE)){ | ||||||
|                     Realm inWorldRealm = Globals.realmManager.getEntityRealm(inWorldItem); |                     Realm inWorldRealm = Globals.realmManager.getEntityRealm(inWorldItem); | ||||||
|                     inWorldRealm.getCollisionEngine().destroyPhysics(inWorldItem); |                     inWorldRealm.getCollisionEngine().destroyPhysics(inWorldItem); | ||||||
|                 } |                 } | ||||||
|  | |||||||
| @ -7,6 +7,7 @@ import org.ode4j.ode.DBody; | |||||||
| 
 | 
 | ||||||
| import electrosphere.collision.CollisionBodyCreation; | import electrosphere.collision.CollisionBodyCreation; | ||||||
| import electrosphere.collision.CollisionEngine; | import electrosphere.collision.CollisionEngine; | ||||||
|  | import electrosphere.collision.PhysicsEntityUtils; | ||||||
| import electrosphere.collision.PhysicsUtils; | import electrosphere.collision.PhysicsUtils; | ||||||
| import electrosphere.collision.collidable.Collidable; | import electrosphere.collision.collidable.Collidable; | ||||||
| import electrosphere.engine.Globals; | import electrosphere.engine.Globals; | ||||||
| @ -237,7 +238,7 @@ public class CollisionObjUtils { | |||||||
|         Collidable collidable = new Collidable(entity, collidableType, true); |         Collidable collidable = new Collidable(entity, collidableType, true); | ||||||
|         Globals.clientSceneWrapper.getCollisionEngine().registerCollisionObject(collisionObject, collidable); |         Globals.clientSceneWrapper.getCollisionEngine().registerCollisionObject(collisionObject, collidable); | ||||||
| 
 | 
 | ||||||
|         entity.putData(EntityDataStrings.PHYSICS_COLLISION_BODY, collisionObject); |         PhysicsEntityUtils.setDBody(entity, collisionObject); | ||||||
| 
 | 
 | ||||||
|         //update world transform of collision object |         //update world transform of collision object | ||||||
|         clientPositionCharacter(entity,position,rotation); |         clientPositionCharacter(entity,position,rotation); | ||||||
| @ -261,7 +262,7 @@ public class CollisionObjUtils { | |||||||
|         Realm realm = Globals.realmManager.getEntityRealm(entity); |         Realm realm = Globals.realmManager.getEntityRealm(entity); | ||||||
|         realm.getCollisionEngine().registerCollisionObject(collisionObject, collidable); |         realm.getCollisionEngine().registerCollisionObject(collisionObject, collidable); | ||||||
| 
 | 
 | ||||||
|         entity.putData(EntityDataStrings.PHYSICS_COLLISION_BODY, collisionObject); |         PhysicsEntityUtils.setDBody(entity, collisionObject); | ||||||
| 
 | 
 | ||||||
|         //update world transform of collision object |         //update world transform of collision object | ||||||
|         serverPositionCharacter(entity,position); |         serverPositionCharacter(entity,position); | ||||||
| @ -271,14 +272,10 @@ public class CollisionObjUtils { | |||||||
|         entity.putData(EntityDataStrings.PHYSICS_MASS, mass); |         entity.putData(EntityDataStrings.PHYSICS_MASS, mass); | ||||||
|     } |     } | ||||||
|      |      | ||||||
|     public static DBody getCollisionBody(Entity e){ |  | ||||||
|         return (DBody)e.getData(EntityDataStrings.PHYSICS_COLLISION_BODY); |  | ||||||
|     } |  | ||||||
|      |  | ||||||
|     public static void serverPositionCharacter(Entity e, Vector3d position){ |     public static void serverPositionCharacter(Entity e, Vector3d position){ | ||||||
|         EntityUtils.getPosition(e).set(position); |         EntityUtils.getPosition(e).set(position); | ||||||
|         Quaterniond rotation = EntityUtils.getRotation(e); |         Quaterniond rotation = EntityUtils.getRotation(e); | ||||||
|         DBody body = getCollisionBody(e); |         DBody body = PhysicsEntityUtils.getDBody(e); | ||||||
|         CollisionEngine collisionEngine = Globals.realmManager.getEntityRealm(e).getCollisionEngine(); |         CollisionEngine collisionEngine = Globals.realmManager.getEntityRealm(e).getCollisionEngine(); | ||||||
|         if(body != null){ |         if(body != null){ | ||||||
|             PhysicsUtils.setRigidBodyTransform(collisionEngine, position, rotation, body); |             PhysicsUtils.setRigidBodyTransform(collisionEngine, position, rotation, body); | ||||||
| @ -287,7 +284,7 @@ public class CollisionObjUtils { | |||||||
| 
 | 
 | ||||||
|     public static void clientPositionCharacter(Entity e, Vector3d position, Quaterniond rotation){ |     public static void clientPositionCharacter(Entity e, Vector3d position, Quaterniond rotation){ | ||||||
|         EntityUtils.getPosition(e).set(position); |         EntityUtils.getPosition(e).set(position); | ||||||
|         DBody body = getCollisionBody(e); |         DBody body = PhysicsEntityUtils.getDBody(e); | ||||||
|         if(body != null){ |         if(body != null){ | ||||||
|             PhysicsUtils.setRigidBodyTransform(Globals.clientSceneWrapper.getCollisionEngine(), position, rotation, body); |             PhysicsUtils.setRigidBodyTransform(Globals.clientSceneWrapper.getCollisionEngine(), position, rotation, body); | ||||||
|         } |         } | ||||||
|  | |||||||
| @ -239,7 +239,7 @@ public class CreatureUtils { | |||||||
|                 } break; |                 } break; | ||||||
|                 case "GRAVITY": |                 case "GRAVITY": | ||||||
|                     Collidable collidable = (Collidable)rVal.getData(EntityDataStrings.PHYSICS_COLLIDABLE); |                     Collidable collidable = (Collidable)rVal.getData(EntityDataStrings.PHYSICS_COLLIDABLE); | ||||||
|                     DBody collisionObject = (DBody)rVal.getData(EntityDataStrings.PHYSICS_COLLISION_BODY); |                     DBody collisionObject = PhysicsEntityUtils.getDBody(rVal); | ||||||
|                     ClientGravityTree.attachTree(rVal, collidable, collisionObject, 30); |                     ClientGravityTree.attachTree(rVal, collidable, collisionObject, 30); | ||||||
|                     rVal.putData(EntityDataStrings.GRAVITY_ENTITY, true); |                     rVal.putData(EntityDataStrings.GRAVITY_ENTITY, true); | ||||||
|                     break; |                     break; | ||||||
| @ -527,7 +527,7 @@ public class CreatureUtils { | |||||||
|                 } break; |                 } break; | ||||||
|                 case "GRAVITY": { |                 case "GRAVITY": { | ||||||
|                     Collidable collidable = (Collidable)rVal.getData(EntityDataStrings.PHYSICS_COLLIDABLE); |                     Collidable collidable = (Collidable)rVal.getData(EntityDataStrings.PHYSICS_COLLIDABLE); | ||||||
|                     DBody collisionObject = (DBody)rVal.getData(EntityDataStrings.PHYSICS_COLLISION_BODY); |                     DBody collisionObject = PhysicsEntityUtils.getDBody(rVal); | ||||||
|                     ServerGravityTree.attachTree(rVal, collidable, collisionObject, 30); |                     ServerGravityTree.attachTree(rVal, collidable, collisionObject, 30); | ||||||
|                     rVal.putData(EntityDataStrings.GRAVITY_ENTITY, true); |                     rVal.putData(EntityDataStrings.GRAVITY_ENTITY, true); | ||||||
|                 } break; |                 } break; | ||||||
|  | |||||||
| @ -68,7 +68,7 @@ public class ItemUtils { | |||||||
|             switch(token){ |             switch(token){ | ||||||
|                 case "GRAVITY": |                 case "GRAVITY": | ||||||
|                     Collidable collidable = (Collidable)rVal.getData(EntityDataStrings.PHYSICS_COLLIDABLE); |                     Collidable collidable = (Collidable)rVal.getData(EntityDataStrings.PHYSICS_COLLIDABLE); | ||||||
|                     DBody collisionObject = (DBody)rVal.getData(EntityDataStrings.PHYSICS_COLLISION_BODY); |                     DBody collisionObject = PhysicsEntityUtils.getDBody(rVal); | ||||||
|                     ClientGravityTree.attachTree(rVal, collidable, collisionObject, 30); |                     ClientGravityTree.attachTree(rVal, collidable, collisionObject, 30); | ||||||
|                     rVal.putData(EntityDataStrings.GRAVITY_ENTITY, true); |                     rVal.putData(EntityDataStrings.GRAVITY_ENTITY, true); | ||||||
|                     break; |                     break; | ||||||
| @ -147,7 +147,7 @@ public class ItemUtils { | |||||||
|             switch(token){ |             switch(token){ | ||||||
|                 case "GRAVITY": |                 case "GRAVITY": | ||||||
|                     Collidable collidable = (Collidable)rVal.getData(EntityDataStrings.PHYSICS_COLLIDABLE); |                     Collidable collidable = (Collidable)rVal.getData(EntityDataStrings.PHYSICS_COLLIDABLE); | ||||||
|                     DBody collisionObject = (DBody)rVal.getData(EntityDataStrings.PHYSICS_COLLISION_BODY); |                     DBody collisionObject = PhysicsEntityUtils.getDBody(rVal); | ||||||
|                     ServerGravityTree.attachTree(rVal, collidable, collisionObject, 30); |                     ServerGravityTree.attachTree(rVal, collidable, collisionObject, 30); | ||||||
|                     rVal.putData(EntityDataStrings.GRAVITY_ENTITY, true); |                     rVal.putData(EntityDataStrings.GRAVITY_ENTITY, true); | ||||||
|                     break; |                     break; | ||||||
| @ -449,7 +449,7 @@ public class ItemUtils { | |||||||
|     public static void clientDestroyInWorldItem(Entity item){ |     public static void clientDestroyInWorldItem(Entity item){ | ||||||
|         if(isItem(item)){ |         if(isItem(item)){ | ||||||
|             //destroy physics |             //destroy physics | ||||||
|             if(item.containsKey(EntityDataStrings.PHYSICS_COLLISION_BODY) && item.containsKey(EntityDataStrings.PHYSICS_COLLIDABLE)){ |             if(PhysicsEntityUtils.containsDBody(item) && item.containsKey(EntityDataStrings.PHYSICS_COLLIDABLE)){ | ||||||
|                 //destroy physics |                 //destroy physics | ||||||
|                 //this deregisters from all four & unhooks rigid bodies from the physics runtime |                 //this deregisters from all four & unhooks rigid bodies from the physics runtime | ||||||
|                 Globals.clientSceneWrapper.getCollisionEngine().destroyPhysics(item); |                 Globals.clientSceneWrapper.getCollisionEngine().destroyPhysics(item); | ||||||
|  | |||||||
| @ -86,7 +86,7 @@ public class ObjectUtils { | |||||||
|             switch(token){ |             switch(token){ | ||||||
|                 case "GRAVITY": |                 case "GRAVITY": | ||||||
|                     Collidable collidable = (Collidable)rVal.getData(EntityDataStrings.PHYSICS_COLLIDABLE); |                     Collidable collidable = (Collidable)rVal.getData(EntityDataStrings.PHYSICS_COLLIDABLE); | ||||||
|                     DBody collisionObject = (DBody)rVal.getData(EntityDataStrings.PHYSICS_COLLISION_BODY); |                     DBody collisionObject = PhysicsEntityUtils.getDBody(rVal); | ||||||
|                     ClientGravityTree.attachTree(rVal, collidable, collisionObject, 30); |                     ClientGravityTree.attachTree(rVal, collidable, collisionObject, 30); | ||||||
|                     rVal.putData(EntityDataStrings.GRAVITY_ENTITY, true); |                     rVal.putData(EntityDataStrings.GRAVITY_ENTITY, true); | ||||||
|                     break; |                     break; | ||||||
| @ -173,7 +173,7 @@ public class ObjectUtils { | |||||||
|             switch(token){ |             switch(token){ | ||||||
|                 case "GRAVITY": |                 case "GRAVITY": | ||||||
|                     Collidable collidable = (Collidable)rVal.getData(EntityDataStrings.PHYSICS_COLLIDABLE); |                     Collidable collidable = (Collidable)rVal.getData(EntityDataStrings.PHYSICS_COLLIDABLE); | ||||||
|                     DBody collisionObject = (DBody)rVal.getData(EntityDataStrings.PHYSICS_COLLISION_BODY); |                     DBody collisionObject = PhysicsEntityUtils.getDBody(rVal); | ||||||
|                     ServerGravityTree.attachTree(rVal, collidable, collisionObject, 30); |                     ServerGravityTree.attachTree(rVal, collidable, collisionObject, 30); | ||||||
|                     rVal.putData(EntityDataStrings.GRAVITY_ENTITY, true); |                     rVal.putData(EntityDataStrings.GRAVITY_ENTITY, true); | ||||||
|                     break; |                     break; | ||||||
|  | |||||||
| @ -17,6 +17,7 @@ import org.joml.Vector4f; | |||||||
| import org.ode4j.ode.DBody; | import org.ode4j.ode.DBody; | ||||||
| 
 | 
 | ||||||
| import electrosphere.collision.CollisionBodyCreation; | import electrosphere.collision.CollisionBodyCreation; | ||||||
|  | import electrosphere.collision.PhysicsEntityUtils; | ||||||
| import electrosphere.collision.collidable.Collidable; | import electrosphere.collision.collidable.Collidable; | ||||||
| import electrosphere.engine.Globals; | import electrosphere.engine.Globals; | ||||||
| import electrosphere.entity.Entity; | import electrosphere.entity.Entity; | ||||||
| @ -119,7 +120,7 @@ public class ProceduralTree { | |||||||
|         CollisionBodyCreation.setOffsetPosition(Globals.clientSceneWrapper.getCollisionEngine(), rigidBody, new Vector3d(0,treeModel.getPhysicsBody().getOffsetY(),0)); |         CollisionBodyCreation.setOffsetPosition(Globals.clientSceneWrapper.getCollisionEngine(), rigidBody, new Vector3d(0,treeModel.getPhysicsBody().getOffsetY(),0)); | ||||||
|         CollisionBodyCreation.setKinematic(Globals.clientSceneWrapper.getCollisionEngine(), rigidBody); |         CollisionBodyCreation.setKinematic(Globals.clientSceneWrapper.getCollisionEngine(), rigidBody); | ||||||
|         Collidable collidable = new Collidable(trunkChild, Collidable.TYPE_FOLIAGE_STATIC, true); |         Collidable collidable = new Collidable(trunkChild, Collidable.TYPE_FOLIAGE_STATIC, true); | ||||||
|         trunkChild.putData(EntityDataStrings.PHYSICS_COLLISION_BODY, rigidBody); |         PhysicsEntityUtils.setDBody(trunkChild, rigidBody); | ||||||
|         Matrix4d offsetTransform = new Matrix4d().translationRotateScale( |         Matrix4d offsetTransform = new Matrix4d().translationRotateScale( | ||||||
|             0,treeModel.getPhysicsBody().getOffsetY(),0, //translate |             0,treeModel.getPhysicsBody().getOffsetY(),0, //translate | ||||||
|             0,0,0,1, //rotate |             0,0,0,1, //rotate | ||||||
| @ -385,7 +386,7 @@ public class ProceduralTree { | |||||||
|         CollisionBodyCreation.setOffsetPosition(realm.getCollisionEngine(), rigidBody, new Vector3d(0,treeModel.getPhysicsBody().getOffsetY(),0)); |         CollisionBodyCreation.setOffsetPosition(realm.getCollisionEngine(), rigidBody, new Vector3d(0,treeModel.getPhysicsBody().getOffsetY(),0)); | ||||||
|         CollisionBodyCreation.setKinematic(realm.getCollisionEngine(), rigidBody); |         CollisionBodyCreation.setKinematic(realm.getCollisionEngine(), rigidBody); | ||||||
|         Collidable collidable = new Collidable(trunkChild, Collidable.TYPE_FOLIAGE_STATIC, true); |         Collidable collidable = new Collidable(trunkChild, Collidable.TYPE_FOLIAGE_STATIC, true); | ||||||
|         trunkChild.putData(EntityDataStrings.PHYSICS_COLLISION_BODY, rigidBody); |         PhysicsEntityUtils.setDBody(trunkChild, rigidBody); | ||||||
|         Matrix4d offsetTransform = new Matrix4d().translationRotateScale( |         Matrix4d offsetTransform = new Matrix4d().translationRotateScale( | ||||||
|             0,treeModel.getPhysicsBody().getOffsetY(),0, //translate |             0,treeModel.getPhysicsBody().getOffsetY(),0, //translate | ||||||
|             0,0,0,1, //rotate |             0,0,0,1, //rotate | ||||||
|  | |||||||
		Loading…
	
		Reference in New Issue
	
	Block a user