falling tests
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
f457decb5f
commit
f78c8b6633
@ -12,6 +12,7 @@ import electrosphere.entity.EntityDataStrings;
|
||||
import electrosphere.entity.EntityUtils;
|
||||
import electrosphere.entity.btree.BehaviorTree;
|
||||
import electrosphere.entity.state.gravity.ClientGravityTree;
|
||||
import electrosphere.entity.state.movement.fall.ClientFallTree;
|
||||
|
||||
/**
|
||||
* Client collidable tree
|
||||
|
||||
@ -8,6 +8,7 @@ import electrosphere.entity.EntityDataStrings;
|
||||
import electrosphere.entity.EntityUtils;
|
||||
import electrosphere.entity.btree.BehaviorTree;
|
||||
import electrosphere.entity.state.gravity.ServerGravityTree;
|
||||
import electrosphere.entity.state.movement.fall.ServerFallTree;
|
||||
import electrosphere.server.datacell.Realm;
|
||||
|
||||
import org.joml.Quaterniond;
|
||||
|
||||
@ -1,10 +1,6 @@
|
||||
package electrosphere.entity.state.gravity;
|
||||
|
||||
|
||||
import electrosphere.net.parser.net.message.SynchronizationMessage;
|
||||
import java.util.List;
|
||||
import java.util.concurrent.CopyOnWriteArrayList;
|
||||
|
||||
import org.joml.Vector3d;
|
||||
import org.ode4j.ode.DBody;
|
||||
|
||||
@ -16,7 +12,6 @@ import electrosphere.entity.btree.BehaviorTree;
|
||||
import electrosphere.entity.state.collidable.Impulse;
|
||||
import electrosphere.entity.state.movement.fall.ClientFallTree;
|
||||
import electrosphere.entity.state.movement.jump.ClientJumpTree;
|
||||
import electrosphere.net.parser.net.message.EntityMessage;
|
||||
import electrosphere.net.synchronization.annotation.SyncedField;
|
||||
import electrosphere.net.synchronization.annotation.SynchronizableEnum;
|
||||
import electrosphere.net.synchronization.annotation.SynchronizedBehaviorTree;
|
||||
@ -45,8 +40,6 @@ public class ClientGravityTree implements BehaviorTree {
|
||||
DBody body;
|
||||
Collidable collidable;
|
||||
|
||||
List<EntityMessage> networkMessageQueue = new CopyOnWriteArrayList<EntityMessage>();
|
||||
|
||||
private ClientGravityTree(Entity e, Object ... params){
|
||||
//Collidable collidable, DBody body, int fallFrame
|
||||
state = GravityTreeState.ACTIVE;
|
||||
@ -56,11 +49,6 @@ public class ClientGravityTree implements BehaviorTree {
|
||||
this.fallFrame = (int)params[2];
|
||||
}
|
||||
|
||||
// public void setCollisionObject(CollisionObject body, Collidable collidable){
|
||||
// this.body = body;
|
||||
// this.collidable = collidable;
|
||||
// }
|
||||
|
||||
/**
|
||||
* <p> Automatically generated </p>
|
||||
* <p>
|
||||
@ -95,7 +83,6 @@ public class ClientGravityTree implements BehaviorTree {
|
||||
if(hadGroundCollision()){
|
||||
state = GravityTreeState.NOT_ACTIVE;
|
||||
if(!hadStructureCollision()){
|
||||
// position.set(new Vector3d(position.x,Globals.commonWorldData.getElevationAtPoint(position) + 0.0001f,position.z));
|
||||
}
|
||||
ClientJumpTree jumpTree;
|
||||
if((jumpTree = ClientJumpTree.getClientJumpTree(parent))!=null){
|
||||
@ -119,19 +106,12 @@ public class ClientGravityTree implements BehaviorTree {
|
||||
}
|
||||
break;
|
||||
case NOT_ACTIVE:
|
||||
if(hadEntityCollision()){
|
||||
// start();
|
||||
}
|
||||
//nothing here atm
|
||||
//eventually want to check if need to re-activate somehow
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
public void addNetworkMessage(EntityMessage networkMessage) {
|
||||
networkMessageQueue.add(networkMessage);
|
||||
}
|
||||
|
||||
public boolean hadStructureCollision(){
|
||||
boolean rVal = false;
|
||||
for(Impulse impulse : collidable.getImpulses()){
|
||||
|
||||
@ -6,25 +6,17 @@ import electrosphere.net.parser.net.message.SynchronizationMessage;
|
||||
import electrosphere.server.datacell.utils.DataCellSearchUtils;
|
||||
import electrosphere.server.datacell.utils.ServerBehaviorTreeUtils;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.concurrent.CopyOnWriteArrayList;
|
||||
|
||||
import org.joml.Quaterniond;
|
||||
import org.joml.Vector3d;
|
||||
import org.joml.Vector3f;
|
||||
import org.ode4j.ode.DBody;
|
||||
|
||||
import electrosphere.collision.collidable.Collidable;
|
||||
import electrosphere.engine.Globals;
|
||||
import electrosphere.entity.Entity;
|
||||
import electrosphere.entity.EntityUtils;
|
||||
import electrosphere.entity.btree.BehaviorTree;
|
||||
import electrosphere.entity.state.collidable.Impulse;
|
||||
import electrosphere.entity.state.collidable.ServerCollidableTree;
|
||||
import electrosphere.entity.state.gravity.ClientGravityTree.GravityTreeState;
|
||||
import electrosphere.entity.state.movement.fall.ServerFallTree;
|
||||
import electrosphere.entity.state.movement.jump.ServerJumpTree;
|
||||
import electrosphere.net.parser.net.message.EntityMessage;
|
||||
import electrosphere.net.synchronization.annotation.SyncedField;
|
||||
import electrosphere.net.synchronization.annotation.SynchronizedBehaviorTree;
|
||||
import electrosphere.net.synchronization.enums.BehaviorTreeIdEnums;
|
||||
@ -47,10 +39,7 @@ public class ServerGravityTree implements BehaviorTree {
|
||||
DBody body;
|
||||
Collidable collidable;
|
||||
|
||||
List<EntityMessage> networkMessageQueue = new CopyOnWriteArrayList<EntityMessage>();
|
||||
|
||||
private ServerGravityTree(Entity e, Object ... params){
|
||||
//Collidable collidable, DBody body, int fallFrame
|
||||
state = GravityTreeState.ACTIVE;
|
||||
parent = e;
|
||||
this.collidable = (Collidable)params[0];
|
||||
@ -58,11 +47,6 @@ public class ServerGravityTree implements BehaviorTree {
|
||||
this.fallFrame = (int)params[2];
|
||||
}
|
||||
|
||||
// public void setCollisionObject(CollisionObject body, Collidable collidable){
|
||||
// this.body = body;
|
||||
// this.collidable = collidable;
|
||||
// }
|
||||
|
||||
/**
|
||||
* <p> Automatically generated </p>
|
||||
* <p>
|
||||
@ -93,39 +77,6 @@ public class ServerGravityTree implements BehaviorTree {
|
||||
static final float linearDamping = 0.1f;
|
||||
|
||||
public void simulate(float deltaTime){
|
||||
// float velocity = CreatureUtils.getVelocity(parent);
|
||||
// float acceleration = CreatureUtils.getAcceleration(parent);
|
||||
// float maxNaturalVelocity = CreatureUtils.getMaxNaturalVelocity(parent);
|
||||
// Actor entityActor = EntityUtils.getActor(parent);
|
||||
Vector3d position = EntityUtils.getPosition(parent);
|
||||
// Vector3f movementVector = CreatureUtils.getMovementVector(parent);
|
||||
Quaterniond rotation = EntityUtils.getRotation(parent);
|
||||
Vector3f newPosition;
|
||||
ServerCollidableTree collidableTree = null;
|
||||
if(ServerCollidableTree.hasServerCollidableTree(parent)){
|
||||
collidableTree = ServerCollidableTree.getServerCollidableTree(parent);
|
||||
}
|
||||
|
||||
//parse attached network messages
|
||||
// for(EntityMessage message : networkMessageQueue){
|
||||
// networkMessageQueue.remove(message);
|
||||
//// System.out.println("MOVE to " + message.getX() + " " + message.getY() + " " + message.getZ());
|
||||
// switch(message.getMessageSubtype()){
|
||||
// case ATTACKUPDATE:
|
||||
// switch(message.gettreeState()){
|
||||
// case 0:
|
||||
// state = IdleTreeState.IDLE;
|
||||
// break;
|
||||
// case 1:
|
||||
// state = IdleTreeState.NOT_IDLE;
|
||||
// break;
|
||||
// }
|
||||
// EntityUtils.getPosition(parent).set(message.getpositionX(),message.getpositionY(),message.getpositionZ());
|
||||
// CreatureUtils.setMovementVector(parent, new Vector3f(message.getrotationX(),message.getrotationY(),message.getrotationZ()));
|
||||
// break;
|
||||
// }
|
||||
// }
|
||||
|
||||
|
||||
//state machine
|
||||
switch(state){
|
||||
@ -162,10 +113,6 @@ public class ServerGravityTree implements BehaviorTree {
|
||||
}
|
||||
}
|
||||
|
||||
public void addNetworkMessage(EntityMessage networkMessage) {
|
||||
networkMessageQueue.add(networkMessage);
|
||||
}
|
||||
|
||||
public boolean hadStructureCollision(){
|
||||
boolean rVal = false;
|
||||
for(Impulse impulse : collidable.getImpulses()){
|
||||
|
||||
@ -0,0 +1,40 @@
|
||||
package electrosphere.entity.state.collidable;
|
||||
|
||||
import static org.junit.jupiter.api.Assertions.*;
|
||||
|
||||
import org.joml.Vector3d;
|
||||
|
||||
import annotations.IntegrationTest;
|
||||
import electrosphere.engine.Globals;
|
||||
import electrosphere.entity.Entity;
|
||||
import electrosphere.entity.EntityTags;
|
||||
import electrosphere.entity.state.movement.fall.ClientFallTree;
|
||||
import electrosphere.entity.types.creature.CreatureTemplate;
|
||||
import electrosphere.entity.types.creature.CreatureUtils;
|
||||
import template.EntityTestTemplate;
|
||||
import testutils.TestEngineUtils;
|
||||
|
||||
/**
|
||||
* Tests for the client collidable component
|
||||
*/
|
||||
public class ClientCollidableTreeTests extends EntityTestTemplate {
|
||||
|
||||
@IntegrationTest
|
||||
public void testCollidableFallCancel(){
|
||||
//warm up engine
|
||||
TestEngineUtils.simulateFrames(1);
|
||||
|
||||
//spawn on server
|
||||
CreatureUtils.serverSpawnBasicCreature(Globals.realmManager.first(), new Vector3d(0,0,0), "human", CreatureTemplate.createDefault("human"));
|
||||
|
||||
//wait for the creature to land
|
||||
TestEngineUtils.simulateFrames(3);
|
||||
|
||||
//get client entity
|
||||
Entity clientEntity = Globals.clientSceneWrapper.getScene().getEntitiesWithTag(EntityTags.CREATURE).iterator().next();
|
||||
|
||||
//verify it was started on server
|
||||
assertEquals(false, ClientFallTree.getFallTree(clientEntity).isFalling());
|
||||
}
|
||||
|
||||
}
|
||||
@ -0,0 +1,36 @@
|
||||
package electrosphere.entity.state.collidable;
|
||||
|
||||
import static org.junit.jupiter.api.Assertions.*;
|
||||
|
||||
import org.joml.Vector3d;
|
||||
|
||||
import annotations.IntegrationTest;
|
||||
import electrosphere.engine.Globals;
|
||||
import electrosphere.entity.Entity;
|
||||
import electrosphere.entity.state.movement.fall.ServerFallTree;
|
||||
import electrosphere.entity.types.creature.CreatureTemplate;
|
||||
import electrosphere.entity.types.creature.CreatureUtils;
|
||||
import template.EntityTestTemplate;
|
||||
import testutils.TestEngineUtils;
|
||||
|
||||
/**
|
||||
* Tests for the server collidable tree
|
||||
*/
|
||||
public class ServerCollidableTreeTests extends EntityTestTemplate {
|
||||
|
||||
@IntegrationTest
|
||||
public void testCollidableFallCancel(){
|
||||
//warm up engine
|
||||
TestEngineUtils.simulateFrames(1);
|
||||
|
||||
//spawn on server
|
||||
Entity creature = CreatureUtils.serverSpawnBasicCreature(Globals.realmManager.first(), new Vector3d(0,0,0), "human", CreatureTemplate.createDefault("human"));
|
||||
|
||||
//wait for the creature to land
|
||||
TestEngineUtils.simulateFrames(3);
|
||||
|
||||
//verify it was started on server
|
||||
assertEquals(false, ServerFallTree.getFallTree(creature).isFalling());
|
||||
}
|
||||
|
||||
}
|
||||
Loading…
Reference in New Issue
Block a user