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