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