fixes
This commit is contained in:
parent
e7851508fd
commit
51e028d9bb
@ -1,3 +1,3 @@
|
||||
#maven.buildNumber.plugin properties file
|
||||
#Fri Aug 16 10:14:05 EDT 2024
|
||||
buildNumber=249
|
||||
#Fri Aug 16 15:43:29 EDT 2024
|
||||
buildNumber=252
|
||||
|
||||
@ -21,8 +21,7 @@
|
||||
+ bug fixes
|
||||
Fix physics freakout for vertically aligned entities
|
||||
Fix entities running to edge of map causing audio engine to break
|
||||
Fix placing terrain
|
||||
Fix spawning item from non-local client
|
||||
|
||||
Fix attack animation mayyybe caching on non-local clients ??
|
||||
Fix sword double-swing
|
||||
Fix broken rendering pipeline when creating new level
|
||||
@ -31,4 +30,5 @@
|
||||
Fix being unable to jump sometimes (usually when pick up sword)
|
||||
Fix server ground movement tree playing animation over falling animation
|
||||
Fix F2 menu not regaining controls when Xing menu instead of hitting F2 to close
|
||||
Fix rotation not sending correctly on initialization of creatures on client
|
||||
Fix grass rendering distance
|
||||
|
||||
@ -591,6 +591,7 @@ Fix build tooling, scripts, etc
|
||||
Launcher fixes
|
||||
Fix inventory control state suggestions not working correctly
|
||||
Fix unequipping item hard crashing engine
|
||||
Fix terrain editing hard crashing engine
|
||||
|
||||
|
||||
# TODO
|
||||
|
||||
@ -458,7 +458,7 @@ public class CollisionEngine {
|
||||
for(Collidable collidable : collidableList){
|
||||
if(collidable.getParentTracksCollidable()){
|
||||
Entity physicsEntity = collidable.getParent();
|
||||
DBody rigidBody = (DBody)physicsEntity.getData(EntityDataStrings.PHYSICS_COLLISION_BODY);
|
||||
DBody rigidBody = PhysicsEntityUtils.getDBody(physicsEntity);
|
||||
Matrix4d inverseTransform = new Matrix4d();
|
||||
Vector4d rawPos = inverseTransform.transform(new Vector4d(PhysicsUtils.getRigidBodyPosition(rigidBody),1));
|
||||
Vector3d newPosition = new Vector3d(rawPos.x,rawPos.y,rawPos.z);
|
||||
|
||||
@ -49,7 +49,7 @@ public class PhysicsEntityUtils {
|
||||
rigidBody,
|
||||
new Vector3d(physicsTemplate.getOffsetX(), physicsTemplate.getOffsetY(), physicsTemplate.getOffsetZ())
|
||||
);
|
||||
collidable = new Collidable(rVal, Collidable.TYPE_CREATURE);
|
||||
collidable = new Collidable(rVal, Collidable.TYPE_CREATURE, true);
|
||||
ClientCollidableTree tree = new ClientCollidableTree(rVal,collidable,rigidBody);
|
||||
rVal.putData(EntityDataStrings.PHYSICS_COLLISION_BODY, rigidBody);
|
||||
Matrix4d offsetTransform = new Matrix4d().translationRotate(
|
||||
@ -72,7 +72,7 @@ public class PhysicsEntityUtils {
|
||||
new Vector3d(physicsTemplate.getDimension1(),physicsTemplate.getDimension2(),physicsTemplate.getDimension3()),
|
||||
Collidable.TYPE_CREATURE_BIT
|
||||
);
|
||||
collidable = new Collidable(rVal, Collidable.TYPE_CREATURE);
|
||||
collidable = new Collidable(rVal, Collidable.TYPE_CREATURE, true);
|
||||
ClientCollidableTree tree = new ClientCollidableTree(rVal,collidable,rigidBody);
|
||||
rVal.putData(EntityDataStrings.PHYSICS_COLLISION_BODY, rigidBody);
|
||||
Matrix4d offsetTransform = new Matrix4d().translationRotateScale(
|
||||
@ -121,7 +121,7 @@ public class PhysicsEntityUtils {
|
||||
rigidBody,
|
||||
new Vector3d(physicsTemplate.getOffsetX(), physicsTemplate.getOffsetY(), physicsTemplate.getOffsetZ())
|
||||
);
|
||||
collidable = new Collidable(rVal, Collidable.TYPE_CREATURE);
|
||||
collidable = new Collidable(rVal, Collidable.TYPE_CREATURE, true);
|
||||
ServerCollidableTree tree = new ServerCollidableTree(rVal,collidable,rigidBody);
|
||||
rVal.putData(EntityDataStrings.PHYSICS_COLLISION_BODY, rigidBody);
|
||||
Matrix4d offsetTransform = new Matrix4d().translationRotateScale(
|
||||
@ -141,7 +141,7 @@ public class PhysicsEntityUtils {
|
||||
} break;
|
||||
case "CUBE": {
|
||||
rigidBody = CollisionBodyCreation.createCubeBody(realm.getCollisionEngine(),new Vector3d(physicsTemplate.getDimension1(),physicsTemplate.getDimension2(),physicsTemplate.getDimension3()),Collidable.TYPE_CREATURE_BIT);
|
||||
collidable = new Collidable(rVal, Collidable.TYPE_CREATURE);
|
||||
collidable = new Collidable(rVal, Collidable.TYPE_CREATURE, true);
|
||||
ServerCollidableTree tree = new ServerCollidableTree(rVal,collidable,rigidBody);
|
||||
rVal.putData(EntityDataStrings.PHYSICS_COLLISION_BODY, rigidBody);
|
||||
Matrix4d offsetTransform = new Matrix4d().translationRotateScale(
|
||||
@ -239,7 +239,7 @@ public class PhysicsEntityUtils {
|
||||
DTriMesh triMesh = collisionEngine.createTrimeshGeom(vertices,indices,Collidable.TYPE_STATIC_BIT);
|
||||
DBody body = collisionEngine.createDBody(triMesh);
|
||||
|
||||
Globals.clientSceneWrapper.getCollisionEngine().registerCollisionObject(body, new Collidable(terrain,Collidable.TYPE_TERRAIN));
|
||||
Globals.clientSceneWrapper.getCollisionEngine().registerCollisionObject(body, new Collidable(terrain,Collidable.TYPE_TERRAIN, false));
|
||||
terrain.putData(EntityDataStrings.PHYSICS_COLLISION_BODY, body);
|
||||
|
||||
return body;
|
||||
@ -259,7 +259,7 @@ public class PhysicsEntityUtils {
|
||||
CollisionBodyCreation.setGravityMode(Globals.clientSceneWrapper.getCollisionEngine(), terrainBody, false);
|
||||
|
||||
|
||||
Globals.clientSceneWrapper.getCollisionEngine().registerCollisionObject(terrainBody, new Collidable(terrain,Collidable.TYPE_TERRAIN));
|
||||
Globals.clientSceneWrapper.getCollisionEngine().registerCollisionObject(terrainBody, new Collidable(terrain,Collidable.TYPE_TERRAIN, false));
|
||||
terrain.putData(EntityDataStrings.PHYSICS_COLLISION_BODY, terrainBody);
|
||||
|
||||
return terrainBody;
|
||||
@ -279,7 +279,7 @@ public class PhysicsEntityUtils {
|
||||
CollisionBodyCreation.setKinematic(terrainRealm.getCollisionEngine(), terrainBody);
|
||||
CollisionBodyCreation.setGravityMode(terrainRealm.getCollisionEngine(), terrainBody, false);
|
||||
|
||||
terrainRealm.getCollisionEngine().registerCollisionObject(terrainBody, new Collidable(terrain,Collidable.TYPE_TERRAIN));
|
||||
terrainRealm.getCollisionEngine().registerCollisionObject(terrainBody, new Collidable(terrain,Collidable.TYPE_TERRAIN, false));
|
||||
terrain.putData(EntityDataStrings.PHYSICS_COLLISION_BODY, terrainBody);
|
||||
|
||||
return terrainBody;
|
||||
|
||||
@ -48,10 +48,16 @@ public class Collidable {
|
||||
public static final long TYPE_FOLIAGE_BIT = 0x80;
|
||||
|
||||
|
||||
|
||||
public Collidable(Entity parent, String type){
|
||||
/**
|
||||
* Constructor
|
||||
* @param parent The parent entity
|
||||
* @param type The type of collidable
|
||||
* @param parentTracksCollidable true if the parent should have the same position as the collidable, false otherwise
|
||||
*/
|
||||
public Collidable(Entity parent, String type, boolean parentTracksCollidable){
|
||||
this.parent = parent;
|
||||
this.type = type;
|
||||
this.parentTracksCollidable = parentTracksCollidable;
|
||||
}
|
||||
|
||||
public List<Impulse> getImpulses() {
|
||||
|
||||
@ -140,7 +140,7 @@ public class CameraHandler {
|
||||
if(Globals.controlHandler.cameraIsThirdPerson()){
|
||||
perspectiveVal = CameraHandler.CAMERA_PERSPECTIVE_THIRD;
|
||||
}
|
||||
if(Globals.cameraHandler.getTrackPlayerEntity()){
|
||||
if(Globals.cameraHandler.getTrackPlayerEntity() && Globals.playerEntity != null){
|
||||
Globals.clientConnection.queueOutgoingMessage(
|
||||
EntityMessage.constructupdateEntityViewDirMessage(
|
||||
Globals.clientSceneWrapper.mapClientToServerId(Globals.playerEntity.getId()),
|
||||
|
||||
@ -206,7 +206,9 @@ public class ClientAttackTree implements BehaviorTree {
|
||||
return state.getAudioData();
|
||||
}
|
||||
},
|
||||
false
|
||||
() -> {
|
||||
this.setState(AttackTreeState.IDLE);
|
||||
}
|
||||
),
|
||||
});
|
||||
}
|
||||
|
||||
@ -155,8 +155,8 @@ public class ServerAttackTree implements BehaviorTree {
|
||||
},
|
||||
null,
|
||||
() -> {
|
||||
this.setState(AttackTreeState.COOLDOWN);
|
||||
this.stateTransitionUtil.interrupt(AttackTreeState.ATTACK);
|
||||
this.setState(AttackTreeState.COOLDOWN);
|
||||
}
|
||||
),
|
||||
StateTransitionUtilItem.create(
|
||||
@ -170,7 +170,10 @@ public class ServerAttackTree implements BehaviorTree {
|
||||
}
|
||||
},
|
||||
null,
|
||||
null
|
||||
() -> {
|
||||
this.setState(AttackTreeState.IDLE);
|
||||
this.stateTransitionUtil.interrupt(AttackTreeState.COOLDOWN);
|
||||
}
|
||||
),
|
||||
});
|
||||
}
|
||||
|
||||
@ -173,7 +173,7 @@ public class HitboxCollectionState {
|
||||
rVal.body = CollisionBodyCreation.createBodyWithShapes(manager.getCollisionEngine(), geomArray);
|
||||
|
||||
//register collidable with collision engine
|
||||
Collidable collidable = new Collidable(entity, Collidable.TYPE_OBJECT);
|
||||
Collidable collidable = new Collidable(entity, Collidable.TYPE_OBJECT, true);
|
||||
manager.getCollisionEngine().registerCollisionObject(rVal.body, collidable);
|
||||
|
||||
//attach
|
||||
|
||||
@ -39,6 +39,7 @@ public class ClientAlwaysUprightTree implements BehaviorTree {
|
||||
Vector3d angularForce = new Vector3d();
|
||||
|
||||
//make sure rotation is vertical
|
||||
body.setMaxAngularSpeed(0);
|
||||
// sourceRotation = sourceRotation.mul(0.001, 1, 0.001, 1).normalize();
|
||||
|
||||
EntityUtils.getPosition(parent).set(position);
|
||||
|
||||
@ -42,7 +42,8 @@ public class ServerAlwaysUprightTree implements BehaviorTree {
|
||||
Vector3d angularForce = new Vector3d();
|
||||
|
||||
//make sure rotation is vertical
|
||||
// sourceRotation = sourceRotation.mul(0.001, 1, 0.001, 1).normalize();
|
||||
body.setMaxAngularSpeed(0);
|
||||
// sourceRotation = sourceRotation.mul(0.001, 0.001, 0.001, 1).normalize();
|
||||
|
||||
EntityUtils.getPosition(parent).set(position);
|
||||
EntityUtils.getRotation(parent).set(sourceRotation);
|
||||
|
||||
@ -29,7 +29,7 @@ public class CollisionObjUtils {
|
||||
|
||||
DBody planeObject = CollisionBodyCreation.createPlaneBody(Globals.clientSceneWrapper.getCollisionEngine(),new Vector3d(scale),Collidable.TYPE_STATIC_BIT);
|
||||
PhysicsUtils.setRigidBodyTransform(Globals.clientSceneWrapper.getCollisionEngine(), position, rotation, planeObject);
|
||||
Collidable collidable = new Collidable(rVal, Collidable.TYPE_STRUCTURE);
|
||||
Collidable collidable = new Collidable(rVal, Collidable.TYPE_STRUCTURE, true);
|
||||
Globals.clientSceneWrapper.getCollisionEngine().registerCollisionObject(planeObject, collidable);
|
||||
|
||||
rVal.putData(EntityDataStrings.COLLISION_ENTITY_TYPE_PLANE, true);
|
||||
@ -51,7 +51,7 @@ public class CollisionObjUtils {
|
||||
|
||||
DBody planeObject = CollisionBodyCreation.createPlaneBody(realm.getCollisionEngine(),new Vector3d(scale),Collidable.TYPE_STATIC_BIT);
|
||||
PhysicsUtils.setRigidBodyTransform(realm.getCollisionEngine(), position, rotation, planeObject);
|
||||
Collidable collidable = new Collidable(rVal, Collidable.TYPE_STRUCTURE);
|
||||
Collidable collidable = new Collidable(rVal, Collidable.TYPE_STRUCTURE, true);
|
||||
realm.getCollisionEngine().registerCollisionObject(planeObject, collidable);
|
||||
|
||||
rVal.putData(EntityDataStrings.COLLISION_ENTITY_TYPE_PLANE, true);
|
||||
@ -74,7 +74,7 @@ public class CollisionObjUtils {
|
||||
|
||||
DBody cubeObject = CollisionBodyCreation.createCubeBody(Globals.clientSceneWrapper.getCollisionEngine(),new Vector3d(scale),Collidable.TYPE_STATIC_BIT);
|
||||
PhysicsUtils.setRigidBodyTransform(Globals.clientSceneWrapper.getCollisionEngine(), position, rotation, cubeObject);
|
||||
Collidable collidable = new Collidable(rVal, Collidable.TYPE_STRUCTURE);
|
||||
Collidable collidable = new Collidable(rVal, Collidable.TYPE_STRUCTURE, true);
|
||||
Globals.clientSceneWrapper.getCollisionEngine().registerCollisionObject(cubeObject, collidable);
|
||||
|
||||
rVal.putData(EntityDataStrings.COLLISION_ENTITY_TYPE_CUBE, true);
|
||||
@ -96,7 +96,7 @@ public class CollisionObjUtils {
|
||||
|
||||
DBody cubeObject = CollisionBodyCreation.createCubeBody(realm.getCollisionEngine(),new Vector3d(scale),Collidable.TYPE_STATIC_BIT);
|
||||
PhysicsUtils.setRigidBodyTransform(realm.getCollisionEngine(), position, rotation, cubeObject);
|
||||
Collidable collidable = new Collidable(rVal, Collidable.TYPE_STRUCTURE);
|
||||
Collidable collidable = new Collidable(rVal, Collidable.TYPE_STRUCTURE, true);
|
||||
realm.getCollisionEngine().registerCollisionObject(cubeObject, collidable);
|
||||
|
||||
rVal.putData(EntityDataStrings.COLLISION_ENTITY_TYPE_CUBE, true);
|
||||
@ -117,7 +117,7 @@ public class CollisionObjUtils {
|
||||
float mass = 1.0f;
|
||||
DBody cubeObject = CollisionBodyCreation.createCylinderBody(Globals.clientSceneWrapper.getCollisionEngine(),scale.x,scale.y,Collidable.TYPE_STATIC_BIT);
|
||||
PhysicsUtils.setRigidBodyTransform(Globals.clientSceneWrapper.getCollisionEngine(), position, rotation, cubeObject);
|
||||
Collidable collidable = new Collidable(rVal, Collidable.TYPE_STRUCTURE);
|
||||
Collidable collidable = new Collidable(rVal, Collidable.TYPE_STRUCTURE, true);
|
||||
Globals.clientSceneWrapper.getCollisionEngine().registerCollisionObject(cubeObject, collidable);
|
||||
|
||||
rVal.putData(EntityDataStrings.COLLISION_ENTITY_TYPE_CYLINDER, true);
|
||||
@ -138,7 +138,7 @@ public class CollisionObjUtils {
|
||||
float mass = 1.0f;
|
||||
DBody cubeObject = CollisionBodyCreation.createCylinderBody(realm.getCollisionEngine(),scale.x,scale.y,Collidable.TYPE_STATIC_BIT);
|
||||
PhysicsUtils.setRigidBodyTransform(realm.getCollisionEngine(), position, rotation, cubeObject);
|
||||
Collidable collidable = new Collidable(rVal, Collidable.TYPE_STRUCTURE);
|
||||
Collidable collidable = new Collidable(rVal, Collidable.TYPE_STRUCTURE, true);
|
||||
realm.getCollisionEngine().registerCollisionObject(cubeObject, collidable);
|
||||
|
||||
rVal.putData(EntityDataStrings.COLLISION_ENTITY_TYPE_CYLINDER, true);
|
||||
@ -233,7 +233,7 @@ public class CollisionObjUtils {
|
||||
public static void clientAttachCollisionObjectToEntity(Entity entity, DBody collisionObject, float mass, String collidableType){
|
||||
Vector3d position = EntityUtils.getPosition(entity);
|
||||
Vector3f scale = EntityUtils.getScale(entity);
|
||||
Collidable collidable = new Collidable(entity, collidableType);
|
||||
Collidable collidable = new Collidable(entity, collidableType, true);
|
||||
Globals.clientSceneWrapper.getCollisionEngine().registerCollisionObject(collisionObject, collidable);
|
||||
|
||||
entity.putData(EntityDataStrings.PHYSICS_COLLISION_BODY, collisionObject);
|
||||
@ -256,7 +256,7 @@ public class CollisionObjUtils {
|
||||
public static void serverAttachCollisionObjectToEntity(Entity entity, DBody collisionObject, float mass, String collidableType){
|
||||
Vector3d position = EntityUtils.getPosition(entity);
|
||||
Vector3f scale = EntityUtils.getScale(entity);
|
||||
Collidable collidable = new Collidable(entity, collidableType);
|
||||
Collidable collidable = new Collidable(entity, collidableType, true);
|
||||
Realm realm = Globals.realmManager.getEntityRealm(entity);
|
||||
realm.getCollisionEngine().registerCollisionObject(collisionObject, collidable);
|
||||
|
||||
|
||||
@ -118,7 +118,7 @@ public class ProceduralTree {
|
||||
);
|
||||
CollisionBodyCreation.setOffsetPosition(Globals.clientSceneWrapper.getCollisionEngine(), rigidBody, new Vector3d(0,treeModel.getPhysicsBody().getOffsetY(),0));
|
||||
CollisionBodyCreation.setKinematic(Globals.clientSceneWrapper.getCollisionEngine(), rigidBody);
|
||||
Collidable collidable = new Collidable(trunkChild, Collidable.TYPE_OBJECT);
|
||||
Collidable collidable = new Collidable(trunkChild, Collidable.TYPE_FOLIAGE_STATIC, true);
|
||||
trunkChild.putData(EntityDataStrings.PHYSICS_COLLISION_BODY, rigidBody);
|
||||
Matrix4d offsetTransform = new Matrix4d().translationRotateScale(
|
||||
0,treeModel.getPhysicsBody().getOffsetY(),0, //translate
|
||||
@ -384,7 +384,7 @@ public class ProceduralTree {
|
||||
);
|
||||
CollisionBodyCreation.setOffsetPosition(realm.getCollisionEngine(), rigidBody, new Vector3d(0,treeModel.getPhysicsBody().getOffsetY(),0));
|
||||
CollisionBodyCreation.setKinematic(realm.getCollisionEngine(), rigidBody);
|
||||
Collidable collidable = new Collidable(trunkChild, Collidable.TYPE_FOLIAGE_STATIC);
|
||||
Collidable collidable = new Collidable(trunkChild, Collidable.TYPE_FOLIAGE_STATIC, true);
|
||||
trunkChild.putData(EntityDataStrings.PHYSICS_COLLISION_BODY, rigidBody);
|
||||
Matrix4d offsetTransform = new Matrix4d().translationRotateScale(
|
||||
0,treeModel.getPhysicsBody().getOffsetY(),0, //translate
|
||||
|
||||
@ -122,9 +122,11 @@ public class MenuGeneratorsInGame {
|
||||
}});
|
||||
// }
|
||||
|
||||
if(MenuGeneratorsInGame.shouldShowLevelEditor()){
|
||||
div.addChild(Button.createButton("Open Level Editor Tools", () -> {
|
||||
WindowUtils.replaceWindow(WindowStrings.LEVEL_EDTIOR_SIDE_PANEL,MenuGeneratorsLevelEditor.createLevelEditorSidePanel());
|
||||
}));
|
||||
}
|
||||
|
||||
rVal.applyYoga(0,0);
|
||||
|
||||
@ -401,4 +403,12 @@ public class MenuGeneratorsInGame {
|
||||
return rVal;
|
||||
}
|
||||
|
||||
/**
|
||||
* Checks if should show the level editor button
|
||||
* @return True if should show button, false otherwise
|
||||
*/
|
||||
private static boolean shouldShowLevelEditor(){
|
||||
return Globals.server != null;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
Loading…
Reference in New Issue
Block a user