|
|
|
@ -41,6 +41,7 @@ import com.jme3.bullet.collision.shapes.MeshCollisionShape; |
|
|
|
|
import com.jme3.bullet.collision.shapes.SphereCollisionShape; |
|
|
|
|
import com.jme3.bullet.control.RigidBodyControl; |
|
|
|
|
import com.jme3.bullet.debug.DebugTools; |
|
|
|
|
import com.jme3.font.BitmapText; |
|
|
|
|
import com.jme3.input.KeyInput; |
|
|
|
|
import com.jme3.input.controls.AnalogListener; |
|
|
|
|
import com.jme3.input.controls.KeyTrigger; |
|
|
|
@ -116,6 +117,7 @@ public class WorldOfInception extends SimpleApplication implements AnalogListene |
|
|
|
|
poiCollisionShape = new SphereCollisionShape(1f); |
|
|
|
|
ballCollisionShape = new SphereCollisionShape(1f); |
|
|
|
|
setupKeys(); |
|
|
|
|
setupDisplay(); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
private void setupKeys() { |
|
|
|
@ -135,6 +137,17 @@ public class WorldOfInception extends SimpleApplication implements AnalogListene |
|
|
|
|
inputManager.addListener(this, "StrafeLeft", "StrafeRight", "Forward", "Back", "StrafeUp", "StrafeDown", "Space", "Reset", "Esc", "Up", "Down", "Left", "Right"); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
private void setupDisplay() { |
|
|
|
|
if (fpsText == null) { |
|
|
|
|
fpsText = new BitmapText(guiFont, false); |
|
|
|
|
} |
|
|
|
|
fpsText.setLocalScale(0.7f, 0.7f, 0.7f); |
|
|
|
|
fpsText.setLocalTranslation(0, fpsText.getLineHeight(), 0); |
|
|
|
|
fpsText.setText(""); |
|
|
|
|
fpsText.setCullHint(Spatial.CullHint.Never); |
|
|
|
|
guiNode.attachChild(fpsText); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
public void onAnalog(String name, float value, float tpf) { |
|
|
|
|
Vector3f left = rootNode.getLocalRotation().mult(Vector3f.UNIT_X.negate()); |
|
|
|
|
Vector3f forward = rootNode.getLocalRotation().mult(Vector3f.UNIT_Z.negate()); |
|
|
|
@ -167,6 +180,7 @@ public class WorldOfInception extends SimpleApplication implements AnalogListene |
|
|
|
|
public void simpleUpdate(float tpf) { |
|
|
|
|
currentLevel = currentLevel.getCurrentLevel(); |
|
|
|
|
currentLevel.move(walkDirection); |
|
|
|
|
fpsText.setText("Location: " + currentLevel.getCoordinates()); |
|
|
|
|
walkDirection.set(Vector3f.ZERO); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
@ -275,14 +289,6 @@ public class WorldOfInception extends SimpleApplication implements AnalogListene |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
public static float linear2decibel(float x) { |
|
|
|
|
return (float) (20.0 * Math.log(x) / Math.log(10)); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
public static float decibel2linear(float x) { |
|
|
|
|
return (float) Math.pow(10.0, x / 20.0); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
private void scaleAsChild(float percent, Vector3f dist) { |
|
|
|
|
float childScale = mapValue(percent, 1.0f / poiRadius, 1); |
|
|
|
|
Vector3f distToHorizon = dist.normalize(); |
|
|
|
@ -324,6 +330,12 @@ public class WorldOfInception extends SimpleApplication implements AnalogListene |
|
|
|
|
return null; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
public InceptionLevel getLevel(Vector3f... location) { |
|
|
|
|
// TODO: get a level based on positions getting ever more accurate,
|
|
|
|
|
// from any given position
|
|
|
|
|
return null; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
private void initData() { |
|
|
|
|
getRootNode(); |
|
|
|
|
physicsState = new BulletAppState(); |
|
|
|
@ -375,7 +387,7 @@ public class WorldOfInception extends SimpleApplication implements AnalogListene |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
private void cleanupData() { |
|
|
|
|
physicsState.cleanup(); |
|
|
|
|
physicsState.stopPhysics(); |
|
|
|
|
//TODO: remove all objects?
|
|
|
|
|
physicsState = null; |
|
|
|
|
rootNode = null; |
|
|
|
@ -439,9 +451,25 @@ public class WorldOfInception extends SimpleApplication implements AnalogListene |
|
|
|
|
return curScaleAmount; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
public InceptionLevel getParent() { |
|
|
|
|
return parent; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
public InceptionLevel getCurrentLevel() { |
|
|
|
|
return currentReturnLevel; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
public String getCoordinates() { |
|
|
|
|
InceptionLevel cur = this; |
|
|
|
|
StringBuilder strb = new StringBuilder(); |
|
|
|
|
strb.insert(0, this.getPlayerPosition()); |
|
|
|
|
cur = cur.getParent(); |
|
|
|
|
while (cur != null) { |
|
|
|
|
strb.insert(0, this.getPositionInParent() + " / "); |
|
|
|
|
cur = cur.getParent(); |
|
|
|
|
} |
|
|
|
|
return strb.toString(); |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
public static Vector3f[] getPositions(int count, long seed) { |
|
|
|
|