Collision engine tweaks, crosshair+bow change
This commit is contained in:
parent
a00f423696
commit
bb3dae9814
Binary file not shown.
BIN
assets/Models/lockoncrosshair1.fbx
Normal file
BIN
assets/Models/lockoncrosshair1.fbx
Normal file
Binary file not shown.
@ -8,6 +8,7 @@ import electrosphere.entity.EntityUtils;
|
|||||||
import electrosphere.entity.state.AttackTree;
|
import electrosphere.entity.state.AttackTree;
|
||||||
import electrosphere.entity.state.movement.GroundMovementTree;
|
import electrosphere.entity.state.movement.GroundMovementTree;
|
||||||
import electrosphere.entity.state.movement.GroundMovementTree.MovementTreeState;
|
import electrosphere.entity.state.movement.GroundMovementTree.MovementTreeState;
|
||||||
|
import electrosphere.entity.types.collision.CollisionObjUtils;
|
||||||
import electrosphere.entity.types.item.ItemUtils;
|
import electrosphere.entity.types.item.ItemUtils;
|
||||||
import electrosphere.main.Globals;
|
import electrosphere.main.Globals;
|
||||||
import electrosphere.menu.MenuTransition;
|
import electrosphere.menu.MenuTransition;
|
||||||
@ -16,6 +17,7 @@ import electrosphere.util.Utilities;
|
|||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import org.joml.Vector2f;
|
import org.joml.Vector2f;
|
||||||
|
import org.joml.Vector3d;
|
||||||
import org.joml.Vector3f;
|
import org.joml.Vector3f;
|
||||||
import static org.lwjgl.glfw.GLFW.*;
|
import static org.lwjgl.glfw.GLFW.*;
|
||||||
import static org.lwjgl.glfw.GLFW.glfwGetCursorPos;
|
import static org.lwjgl.glfw.GLFW.glfwGetCursorPos;
|
||||||
@ -376,6 +378,7 @@ public class ControlHandler {
|
|||||||
if(controls.get(DATA_STRING_INPUT_CODE_DEBUG_SPAWN_ITEM).isState() == true){
|
if(controls.get(DATA_STRING_INPUT_CODE_DEBUG_SPAWN_ITEM).isState() == true){
|
||||||
Entity bow = ItemUtils.spawnBasicItem("Bow");
|
Entity bow = ItemUtils.spawnBasicItem("Bow");
|
||||||
EntityUtils.getPosition(bow).set(1, 5, 2);
|
EntityUtils.getPosition(bow).set(1, 5, 2);
|
||||||
|
CollisionObjUtils.positionCharacter(bow, new Vector3f(1, 5, 2));
|
||||||
}
|
}
|
||||||
controls.get(DATA_STRING_INPUT_CODE_DEBUG_SPAWN_ITEM).setState(false);
|
controls.get(DATA_STRING_INPUT_CODE_DEBUG_SPAWN_ITEM).setState(false);
|
||||||
}
|
}
|
||||||
|
|||||||
@ -589,12 +589,12 @@ public class LoadingThread extends Thread {
|
|||||||
// //attach ai to evil goblin
|
// //attach ai to evil goblin
|
||||||
// MindlessAttacker.attachToCreature(goblin);
|
// MindlessAttacker.attachToCreature(goblin);
|
||||||
|
|
||||||
// StructureUtils.spawnBasicStructure("building1", new Vector3f(5,2.4f,5), new Quaternionf());
|
StructureUtils.spawnBasicStructure("building1", new Vector3f(5,2.4f,5), new Quaternionf());
|
||||||
|
|
||||||
Entity bow = ItemUtils.spawnBasicItem("Bow");
|
Entity bow = ItemUtils.spawnBasicItem("Bow");
|
||||||
EntityUtils.getPosition(bow).set(1, 1, 2);
|
EntityUtils.getPosition(bow).set(1, 1, 2);
|
||||||
|
|
||||||
// NavMeshPathfinder.navigatePointToPointInMesh(Globals.navMeshManager.getMeshes().get(0), new Vector3d(10,0,5), new Vector3d(5,0,10));
|
// NavMeshPathfinder.navigatePointToPointInMesh(G*lobals.navMeshManager.getMeshes().get(0), new Vector3d(10,0,5), new Vector3d(5,0,10));
|
||||||
|
|
||||||
// NavMesh mesh = new NavMesh();
|
// NavMesh mesh = new NavMesh();
|
||||||
// NavCube cube = new NavCube(5,0,0,10,5,5);
|
// NavCube cube = new NavCube(5,0,0,10,5,5);
|
||||||
|
|||||||
@ -31,7 +31,7 @@ public class GravityTree {
|
|||||||
Entity parent;
|
Entity parent;
|
||||||
|
|
||||||
float gravityVelocity = 0;
|
float gravityVelocity = 0;
|
||||||
float gravityAccel = 0.01f;
|
float gravityAccel = 0.0002f;
|
||||||
|
|
||||||
CollisionObject body;
|
CollisionObject body;
|
||||||
Collidable collidable;
|
Collidable collidable;
|
||||||
|
|||||||
@ -37,30 +37,41 @@ public class CollidableTree {
|
|||||||
Vector3d offsetVector = new Vector3d();
|
Vector3d offsetVector = new Vector3d();
|
||||||
Vector3d newPosition = new Vector3d(position);
|
Vector3d newPosition = new Vector3d(position);
|
||||||
javax.vecmath.Matrix4f bodyTransformMatrix;
|
javax.vecmath.Matrix4f bodyTransformMatrix;
|
||||||
|
//have we hit a terrain impulse?
|
||||||
|
boolean hitTerrain = false;
|
||||||
//handle impulses
|
//handle impulses
|
||||||
for(Impulse impulse : collidable.getImpulses()){
|
for(Impulse impulse : collidable.getImpulses()){
|
||||||
// collidable.getImpulses().remove(impulse);
|
// collidable.getImpulses().remove(impulse);
|
||||||
Vector3d impulseForce = new Vector3d(impulse.getDirection()).mul(impulse.getForce());
|
Vector3d impulseForce = new Vector3d(impulse.getDirection()).mul(impulse.getForce());
|
||||||
// if(impulse.type.matches(Collidable.TYPE_TERRAIN)){
|
if(impulse.type.matches(Collidable.TYPE_TERRAIN)){
|
||||||
|
hitTerrain = true;
|
||||||
// System.out.println("Impulse force: " + impulseForce);
|
// System.out.println("Impulse force: " + impulseForce);
|
||||||
// System.out.println("Position: " + position);
|
// System.out.println("Position: " + position);
|
||||||
// }
|
}
|
||||||
// if(impulse.type.matches(Collidable.TYPE_ITEM)){
|
if(impulse.type.matches(Collidable.TYPE_ITEM)){
|
||||||
// if(parent.getDataKeys().contains(EntityDataStrings.GRAVITY_TREE)){
|
if(parent.getDataKeys().contains(EntityDataStrings.GRAVITY_TREE)){
|
||||||
// ((GravityTree)parent.getData(EntityDataStrings.GRAVITY_TREE)).start();
|
((GravityTree)parent.getData(EntityDataStrings.GRAVITY_TREE)).start();
|
||||||
// }
|
}
|
||||||
// }
|
}
|
||||||
// if(impulse.type.matches(Collidable.TYPE_CREATURE)){
|
if(impulse.type.matches(Collidable.TYPE_CREATURE)){
|
||||||
// if(parent.getDataKeys().contains(EntityDataStrings.GRAVITY_TREE)){
|
// System.out.println(System.currentTimeMillis() + " creature hit!");
|
||||||
// ((GravityTree)parent.getData(EntityDataStrings.GRAVITY_TREE)).start();
|
if(parent.getDataKeys().contains(EntityDataStrings.GRAVITY_TREE)){
|
||||||
// }
|
((GravityTree)parent.getData(EntityDataStrings.GRAVITY_TREE)).start();
|
||||||
// }
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// if(impulse.type.matches("movement")){
|
// if(impulse.type.matches("movement")){
|
||||||
// System.out.println("Impulse force: " + impulseForce);
|
// System.out.println("Impulse force: " + impulseForce);
|
||||||
// }
|
// }
|
||||||
offsetVector.add(impulseForce);
|
offsetVector.add(impulseForce);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//the reasoning here is that if we have something above something else and it's pushing it into the terrain,
|
||||||
|
//we should instead just not push into terrain and push along terrain
|
||||||
|
if(hitTerrain && offsetVector.y < 0){
|
||||||
|
offsetVector.y = 0;
|
||||||
|
}
|
||||||
|
|
||||||
//make sure we're in a valid (World bounds) position
|
//make sure we're in a valid (World bounds) position
|
||||||
newPosition.add(offsetVector);
|
newPosition.add(offsetVector);
|
||||||
if(!Globals.collisionEngine.checkCanOccupyPosition(Globals.commonWorldData, parent, newPosition)){
|
if(!Globals.collisionEngine.checkCanOccupyPosition(Globals.commonWorldData, parent, newPosition)){
|
||||||
|
|||||||
@ -129,9 +129,9 @@ public class CollisionEngine {
|
|||||||
receiver.addImpulse(new Impulse(normal, magnitude, Collidable.TYPE_CREATURE));
|
receiver.addImpulse(new Impulse(normal, magnitude, Collidable.TYPE_CREATURE));
|
||||||
break;
|
break;
|
||||||
case Collidable.TYPE_STRUCTURE:
|
case Collidable.TYPE_STRUCTURE:
|
||||||
float realMag = 1f/(float)Math.pow(0.1, magnitude);
|
// float realMag = 1f/(float)Math.pow(0.1, magnitude);
|
||||||
// System.out.println(normal + " - " + realMag);
|
// System.out.println(normal + " - " + realMag);
|
||||||
receiver.addImpulse(new Impulse(normal, realMag, Collidable.TYPE_STRUCTURE));
|
receiver.addImpulse(new Impulse(normal, magnitude, Collidable.TYPE_STRUCTURE));
|
||||||
// System.out.println("Structure-creature collision");
|
// System.out.println("Structure-creature collision");
|
||||||
break;
|
break;
|
||||||
case Collidable.TYPE_ITEM:
|
case Collidable.TYPE_ITEM:
|
||||||
@ -151,9 +151,9 @@ public class CollisionEngine {
|
|||||||
receiver.addImpulse(new Impulse(normal, Math.min(magnitude * 0.5,0.5), Collidable.TYPE_CREATURE));
|
receiver.addImpulse(new Impulse(normal, Math.min(magnitude * 0.5,0.5), Collidable.TYPE_CREATURE));
|
||||||
break;
|
break;
|
||||||
case Collidable.TYPE_STRUCTURE:
|
case Collidable.TYPE_STRUCTURE:
|
||||||
float realMag = 1f/(float)Math.pow(0.1, magnitude);
|
// float realMag = 1f/(float)Math.pow(0.1, magnitude);
|
||||||
// System.out.println(normal + " - " + realMag);
|
// System.out.println(normal + " - " + realMag);
|
||||||
receiver.addImpulse(new Impulse(normal, realMag, Collidable.TYPE_STRUCTURE));
|
receiver.addImpulse(new Impulse(normal, magnitude, Collidable.TYPE_STRUCTURE));
|
||||||
// System.out.println("Structure-creature collision");
|
// System.out.println("Structure-creature collision");
|
||||||
break;
|
break;
|
||||||
case Collidable.TYPE_ITEM:
|
case Collidable.TYPE_ITEM:
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user