mirror of
				https://github.com/Dejvino/roadtrip
				synced 2025-10-31 07:45:22 +00:00 
			
		
		
		
	Refactor: moving player status out.
This commit is contained in:
		
							parent
							
								
									c0cffb6301
								
							
						
					
					
						commit
						33f2e768cc
					
				| @ -86,14 +86,16 @@ public class RoadTrip extends SimpleApplication implements ActionListener { | ||||
|     // END Terrain | ||||
|      | ||||
|     private List<VehicleNode> vehicles = new LinkedList<>(); | ||||
|      | ||||
|     // START Player | ||||
|     private Node playerNode; | ||||
|     private BetterCharacterControl playerPersonControl; | ||||
|     private Vector3f jumpForce = new Vector3f(0, 3000, 0); | ||||
|     private Vector3f walkDir = new Vector3f(); | ||||
|     private VehicleNode playerVehicleNode; | ||||
|     // END Player | ||||
| 
 | ||||
|     private static class Player | ||||
|     { | ||||
|         Node node; | ||||
|         BetterCharacterControl characterControl; | ||||
|         Vector3f jumpForce = new Vector3f(0, 3000, 0); | ||||
|         Vector3f walkDir = new Vector3f(); | ||||
|         VehicleNode vehicleNode; | ||||
|     } | ||||
|     private Player player = new Player(); | ||||
|      | ||||
|     private Vector3f journeyTarget = new Vector3f(50, 0f, 50f); | ||||
|     private Node targetNode; | ||||
| @ -144,7 +146,7 @@ public class RoadTrip extends SimpleApplication implements ActionListener { | ||||
|         addTarget(); | ||||
|         addCompass(); | ||||
|          | ||||
|         chaseCam = new ChaseCamera(cam, playerNode, inputManager); | ||||
|         chaseCam = new ChaseCamera(cam, player.node, inputManager); | ||||
|         chaseCam.setDefaultDistance(60f); | ||||
|         chaseCam.setSmoothMotion(true); | ||||
|     } | ||||
| @ -377,8 +379,8 @@ public class RoadTrip extends SimpleApplication implements ActionListener { | ||||
| 
 | ||||
|     private void addPlayer() | ||||
|     { | ||||
|         playerNode = addPerson(); | ||||
|         playerPersonControl = playerNode.getControl(BetterCharacterControl.class); | ||||
|         player.node = addPerson(); | ||||
|         player.characterControl = player.node.getControl(BetterCharacterControl.class); | ||||
|     } | ||||
|      | ||||
|     private void addTarget() | ||||
| @ -547,7 +549,7 @@ public class RoadTrip extends SimpleApplication implements ActionListener { | ||||
|      | ||||
|     @Override | ||||
|     public void simpleUpdate(float tpf) { | ||||
|         Vector3f playerLocation = playerNode.getWorldTranslation(); | ||||
|         Vector3f playerLocation = player.node.getWorldTranslation(); | ||||
|         Vector3f newLocation = new Vector3f(playerLocation).add(new Vector3f(-1f, 1.5f, 2.4f).mult(20f)); | ||||
|         /*cam.setLocation(new Vector3f(cam.getLocation()).interpolate(newLocation, Math.min(tpf, 1f))); | ||||
|         cam.lookAt(playerLocation, Vector3f.UNIT_Y);*/ | ||||
| @ -593,12 +595,12 @@ public class RoadTrip extends SimpleApplication implements ActionListener { | ||||
|         listener.setLocation(cam.getLocation()); | ||||
|         listener.setRotation(cam.getRotation()); | ||||
|          | ||||
|         if (playerVehicleNode == null) { | ||||
|             playerPersonControl.setViewDirection(new Quaternion().fromAngleAxis(inputTurning * tpf, Vector3f.UNIT_Y).mult(playerPersonControl.getViewDirection())); | ||||
|             playerPersonControl.setWalkDirection(new Vector3f(playerPersonControl.getViewDirection()).mult(inputAccel * tpf * 1000f)); | ||||
|         if (player.vehicleNode == null) { | ||||
|             player.characterControl.setViewDirection(new Quaternion().fromAngleAxis(inputTurning * tpf, Vector3f.UNIT_Y).mult(player.characterControl.getViewDirection())); | ||||
|             player.characterControl.setWalkDirection(new Vector3f(player.characterControl.getViewDirection()).mult(inputAccel * tpf * 1000f)); | ||||
|         } | ||||
|          | ||||
|         Vector3f playerPos2d = new Vector3f(playerNode.getWorldTranslation()); | ||||
|         Vector3f playerPos2d = new Vector3f(player.node.getWorldTranslation()); | ||||
|         playerPos2d.y = 0; | ||||
|         Vector3f targetPos2d = new Vector3f(targetNode.getWorldTranslation()); | ||||
|         targetPos2d.y = 0; | ||||
| @ -612,13 +614,13 @@ public class RoadTrip extends SimpleApplication implements ActionListener { | ||||
|          | ||||
|         txt.setText(((int)targetDistance) + " m"); | ||||
|          | ||||
|         compassNode.setLocalTranslation(new Vector3f(playerNode.getWorldTranslation()).addLocal(0f, 5f, 0f)); | ||||
|         compassNode.setLocalTranslation(new Vector3f(player.node.getWorldTranslation()).addLocal(0f, 5f, 0f)); | ||||
|         compassNode.setLocalRotation(new Quaternion().fromAngles(0f, (float)Math.atan2(targetDir.x, targetDir.z)/*targetDir.angleBetween(Vector3f.UNIT_Z)*/, 0f)); | ||||
|     } | ||||
| 
 | ||||
|     @Override | ||||
|     public void onAction(String binding, boolean value, float tpf) { | ||||
|         if (playerVehicleNode == null) { | ||||
|         if (player.vehicleNode == null) { | ||||
|             float walkSpeed = 1f; | ||||
|             float turnSpeed = 1f; | ||||
|             if (binding.equals("Lefts")) { | ||||
| @ -648,30 +650,30 @@ public class RoadTrip extends SimpleApplication implements ActionListener { | ||||
|             } else if (binding.equals("Reset")) { | ||||
|                 if (value) { | ||||
|                     System.out.println("Reset - to car"); | ||||
|                     Vector3f playerPos = playerNode.getWorldTranslation(); | ||||
|                     Vector3f playerPos = player.node.getWorldTranslation(); | ||||
|                     for (VehicleNode vehicle : vehicles) { | ||||
|                         Vector3f vehiclePos = vehicle.getWorldTranslation(); | ||||
|                         float dist = playerPos.distance(vehiclePos); | ||||
|                         System.out.println(" .. dist: " + dist); | ||||
|                         if (dist < 5f) { | ||||
|                             playerVehicleNode = vehicle; | ||||
|                             playerNode.removeFromParent(); | ||||
|                             playerNode.setLocalTranslation(0f, 0f, -1f); | ||||
|                             playerNode.setLocalRotation(Quaternion.DIRECTION_Z); | ||||
|                             playerNode.removeControl(playerPersonControl); | ||||
|                             playerVehicleNode.attachChild(playerNode); | ||||
|                             VehicleInstance playerVehicle = playerVehicleNode.vehicleInstance; | ||||
|                             player.vehicleNode = vehicle; | ||||
|                             player.node.removeFromParent(); | ||||
|                             player.node.setLocalTranslation(0f, 0f, -1f); | ||||
|                             player.node.setLocalRotation(Quaternion.DIRECTION_Z); | ||||
|                             player.node.removeControl(player.characterControl); | ||||
|                             player.vehicleNode.attachChild(player.node); | ||||
|                             VehicleInstance playerVehicle = player.vehicleNode.vehicleInstance; | ||||
|                             playerVehicle.accelerationValue = 0; | ||||
|                             playerVehicle.steeringValue = 0; | ||||
|                             walkDir = new Vector3f(); | ||||
|                             player.walkDir = new Vector3f(); | ||||
|                             break; | ||||
|                         } | ||||
|                     } | ||||
|                 } | ||||
|             } | ||||
|         } else { | ||||
|             VehicleInstance playerVehicle = playerVehicleNode.vehicleInstance; | ||||
|             VehicleControl playerVehicleControl = playerVehicleNode.vehicleControl; | ||||
|             VehicleInstance playerVehicle = player.vehicleNode.vehicleInstance; | ||||
|             VehicleControl playerVehicleControl = player.vehicleNode.vehicleControl; | ||||
|             int playerCarType = playerVehicle.carType; | ||||
|             float steerMax = 0.5f; | ||||
|             if (playerCarType == VehicleInstance.TRUCK) { | ||||
| @ -726,17 +728,17 @@ public class RoadTrip extends SimpleApplication implements ActionListener { | ||||
|                 } | ||||
|             } else if (binding.equals("Space")) { | ||||
|                 if (value) { | ||||
|                     playerVehicleControl.applyImpulse(jumpForce, Vector3f.ZERO); | ||||
|                     playerVehicleControl.applyImpulse(player.jumpForce, Vector3f.ZERO); | ||||
|                 } | ||||
|             } else if (binding.equals("Reset")) { | ||||
|                 if (value) { | ||||
|                     System.out.println("Reset - from car"); | ||||
|                     playerNode.removeFromParent(); | ||||
|                     playerNode.addControl(playerPersonControl); | ||||
|                     playerPersonControl.warp(playerVehicleNode.getLocalTranslation()); | ||||
|                     rootNode.attachChild(playerNode); | ||||
|                     playerVehicleNode = null; | ||||
|                     walkDir = new Vector3f(); | ||||
|                     player.node.removeFromParent(); | ||||
|                     player.node.addControl(player.characterControl); | ||||
|                     player.characterControl.warp(player.vehicleNode.getLocalTranslation()); | ||||
|                     rootNode.attachChild(player.node); | ||||
|                     player.vehicleNode = null; | ||||
|                     player.walkDir = new Vector3f(); | ||||
|                     /*playerVehicleControl.setPhysicsLocation(Vector3f.ZERO); | ||||
|                     playerVehicleControl.setPhysicsRotation(new Matrix3f()); | ||||
|                     playerVehicleControl.setLinearVelocity(Vector3f.ZERO); | ||||
|  | ||||
		Loading…
	
		Reference in New Issue
	
	Block a user