diff --git a/engine/src/test/jme3test/bullet/TestBoneRagdoll.java b/engine/src/test/jme3test/bullet/TestBoneRagdoll.java index 368907991..97e891c53 100644 --- a/engine/src/test/jme3test/bullet/TestBoneRagdoll.java +++ b/engine/src/test/jme3test/bullet/TestBoneRagdoll.java @@ -48,6 +48,7 @@ import com.jme3.input.KeyInput; import com.jme3.input.MouseInput; import com.jme3.input.controls.ActionListener; import com.jme3.input.controls.KeyTrigger; +import com.jme3.input.controls.MouseAxisTrigger; import com.jme3.input.controls.MouseButtonTrigger; import com.jme3.light.AmbientLight; import com.jme3.light.DirectionalLight; @@ -73,7 +74,7 @@ public class TestBoneRagdoll extends SimpleApplication implements RagdollCollisi Material matBullet; Node model; RagdollControl ragdoll; - float timer = 0; + float bulletSize = 1f; public static void main(String[] args) { TestBoneRagdoll app = new TestBoneRagdoll(); @@ -123,7 +124,7 @@ public class TestBoneRagdoll extends SimpleApplication implements RagdollCollisi speed = 1.3f; rootNode.attachChild(model); - // rootNode.attachChild(skeletonDebug); + // rootNode.attachChild(skeletonDebug); flyCam.setMoveSpeed(50); @@ -135,23 +136,31 @@ public class TestBoneRagdoll extends SimpleApplication implements RagdollCollisi public void onAction(String name, boolean isPressed, float tpf) { if (name.equals("toggle") && isPressed) { ragdoll.setControl(false); + model.setLocalTranslation(0, 0, 0); } - if (name.equals("shoot") && isPressed) { - timer = 0; + if (name.equals("bullet+") && isPressed) { + bulletSize += 0.1f; + + } + if (name.equals("bullet-") && isPressed) { + bulletSize -= 0.1f; + } + if (name.equals("shoot") && isPressed) { +// bulletSize = 0; } if (name.equals("stop") && isPressed) { - bulletAppState.setEnabled(!bulletAppState.isEnabled()); + bulletAppState.setEnabled(!bulletAppState.isEnabled()); } if (name.equals("shoot") && !isPressed) { Geometry bulletg = new Geometry("bullet", bullet); bulletg.setMaterial(matBullet); bulletg.setLocalTranslation(cam.getLocation()); - bulletg.setLocalScale(timer); - bulletCollisionShape = new SphereCollisionShape(timer); + bulletg.setLocalScale(bulletSize); + bulletCollisionShape = new SphereCollisionShape(bulletSize); // RigidBodyControl bulletNode = new BombControl(assetManager, bulletCollisionShape, 1); - RigidBodyControl bulletNode = new RigidBodyControl(bulletCollisionShape, timer * 10); + RigidBodyControl bulletNode = new RigidBodyControl(bulletCollisionShape, bulletSize * 10); bulletNode.setCcdMotionThreshold(0.001f); bulletNode.setLinearVelocity(cam.getDirection().mult(80)); bulletg.addControl(bulletNode); @@ -161,10 +170,13 @@ public class TestBoneRagdoll extends SimpleApplication implements RagdollCollisi } } - }, "toggle", "shoot","stop"); + }, "toggle", "shoot", "stop", "bullet+", "bullet-"); inputManager.addMapping("toggle", new KeyTrigger(KeyInput.KEY_SPACE)); inputManager.addMapping("shoot", new MouseButtonTrigger(MouseInput.BUTTON_LEFT)); - inputManager.addMapping("stop", new KeyTrigger(KeyInput.KEY_H)); + inputManager.addMapping("stop", new KeyTrigger(KeyInput.KEY_H)); + inputManager.addMapping("bullet-", new KeyTrigger(KeyInput.KEY_COMMA)); + inputManager.addMapping("bullet+", new KeyTrigger(KeyInput.KEY_PERIOD)); + } @@ -329,14 +341,28 @@ public class TestBoneRagdoll extends SimpleApplication implements RagdollCollisi elTime = 0; } float elTime = 0; + boolean forward = true; @Override public void simpleUpdate(float tpf) { // System.out.println(model.getLocalTranslation()); - elTime += tpf; - if (elTime > 0.05f && speed < 1.0f) { - speed += tpf * 8; +// elTime += tpf; +// if (elTime > 0.05f && speed < 1.0f) { +// speed += tpf * 8; +// } +// timer += tpf; + fpsText.setText("Bullet Size: " + bulletSize); + if (!ragdoll.hasControl()) { + if (model.getLocalTranslation().getZ() < -10) { + forward = true; + } else if (model.getLocalTranslation().getZ() > 10) { + forward = false; + } + if (forward) { + model.move(-tpf, 0, tpf); + } else { + model.move(tpf, 0, -tpf); + } } - timer += tpf; } }