|
|
@ -1,26 +1,33 @@ |
|
|
|
/* |
|
|
|
/* |
|
|
|
* Copyright (c) 2009-2012 jMonkeyEngine All rights reserved. <p/> |
|
|
|
* Copyright (c) 2009-2018 jMonkeyEngine |
|
|
|
|
|
|
|
* All rights reserved. |
|
|
|
|
|
|
|
* |
|
|
|
* Redistribution and use in source and binary forms, with or without |
|
|
|
* Redistribution and use in source and binary forms, with or without |
|
|
|
* modification, are permitted provided that the following conditions are met: |
|
|
|
* modification, are permitted provided that the following conditions are |
|
|
|
|
|
|
|
* met: |
|
|
|
|
|
|
|
* |
|
|
|
|
|
|
|
* * Redistributions of source code must retain the above copyright |
|
|
|
|
|
|
|
* notice, this list of conditions and the following disclaimer. |
|
|
|
|
|
|
|
* |
|
|
|
|
|
|
|
* * Redistributions in binary form must reproduce the above copyright |
|
|
|
|
|
|
|
* notice, this list of conditions and the following disclaimer in the |
|
|
|
|
|
|
|
* documentation and/or other materials provided with the distribution. |
|
|
|
* |
|
|
|
* |
|
|
|
* * Redistributions of source code must retain the above copyright notice, |
|
|
|
* * Neither the name of 'jMonkeyEngine' nor the names of its contributors |
|
|
|
* this list of conditions and the following disclaimer. <p/> * Redistributions |
|
|
|
* may be used to endorse or promote products derived from this software |
|
|
|
* in binary form must reproduce the above copyright notice, this list of |
|
|
|
* without specific prior written permission. |
|
|
|
* conditions and the following disclaimer in the documentation and/or other |
|
|
|
* |
|
|
|
* materials provided with the distribution. <p/> * Neither the name of |
|
|
|
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS |
|
|
|
* 'jMonkeyEngine' nor the names of its contributors may be used to endorse or |
|
|
|
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED |
|
|
|
* promote products derived from this software without specific prior written |
|
|
|
* TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR |
|
|
|
* permission. <p/> THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND |
|
|
|
* PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR |
|
|
|
* CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT |
|
|
|
|
|
|
|
* NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A |
|
|
|
|
|
|
|
* PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR |
|
|
|
|
|
|
|
* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, |
|
|
|
* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, |
|
|
|
* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, |
|
|
|
* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, |
|
|
|
* PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; |
|
|
|
* PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR |
|
|
|
* OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, |
|
|
|
* PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF |
|
|
|
* WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR |
|
|
|
* LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING |
|
|
|
* OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF |
|
|
|
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS |
|
|
|
* ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
|
|
|
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
|
|
|
*/ |
|
|
|
*/ |
|
|
|
package jme3test.bullet; |
|
|
|
package jme3test.bullet; |
|
|
|
|
|
|
|
|
|
|
@ -30,7 +37,6 @@ import com.jme3.bullet.PhysicsSpace; |
|
|
|
import com.jme3.bullet.collision.shapes.MeshCollisionShape; |
|
|
|
import com.jme3.bullet.collision.shapes.MeshCollisionShape; |
|
|
|
import com.jme3.bullet.control.BetterCharacterControl; |
|
|
|
import com.jme3.bullet.control.BetterCharacterControl; |
|
|
|
import com.jme3.bullet.control.RigidBodyControl; |
|
|
|
import com.jme3.bullet.control.RigidBodyControl; |
|
|
|
import com.jme3.bullet.debug.DebugTools; |
|
|
|
|
|
|
|
import com.jme3.input.KeyInput; |
|
|
|
import com.jme3.input.KeyInput; |
|
|
|
import com.jme3.input.controls.ActionListener; |
|
|
|
import com.jme3.input.controls.ActionListener; |
|
|
|
import com.jme3.input.controls.KeyTrigger; |
|
|
|
import com.jme3.input.controls.KeyTrigger; |
|
|
@ -80,7 +86,13 @@ public class TestBetterCharacter extends SimpleApplication implements ActionList |
|
|
|
setupKeys(); |
|
|
|
setupKeys(); |
|
|
|
|
|
|
|
|
|
|
|
// activate physics
|
|
|
|
// activate physics
|
|
|
|
bulletAppState = new BulletAppState(); |
|
|
|
bulletAppState = new BulletAppState() { |
|
|
|
|
|
|
|
@Override |
|
|
|
|
|
|
|
public void prePhysicsTick(PhysicsSpace space, float tpf) { |
|
|
|
|
|
|
|
// Apply radial gravity near the planet, downward gravity elsewhere.
|
|
|
|
|
|
|
|
checkPlanetGravity(); |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
}; |
|
|
|
stateManager.attach(bulletAppState); |
|
|
|
stateManager.attach(bulletAppState); |
|
|
|
bulletAppState.setDebugEnabled(true); |
|
|
|
bulletAppState.setDebugEnabled(true); |
|
|
|
|
|
|
|
|
|
|
@ -123,9 +135,6 @@ public class TestBetterCharacter extends SimpleApplication implements ActionList |
|
|
|
|
|
|
|
|
|
|
|
@Override |
|
|
|
@Override |
|
|
|
public void simpleUpdate(float tpf) { |
|
|
|
public void simpleUpdate(float tpf) { |
|
|
|
// Apply planet gravity to character if close enough (see below)
|
|
|
|
|
|
|
|
checkPlanetGravity(); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// Get current forward and left vectors of model by using its rotation
|
|
|
|
// Get current forward and left vectors of model by using its rotation
|
|
|
|
// to rotate the unit vectors
|
|
|
|
// to rotate the unit vectors
|
|
|
|
Vector3f modelForwardDir = characterNode.getWorldRotation().mult(Vector3f.UNIT_Z); |
|
|
|
Vector3f modelForwardDir = characterNode.getWorldRotation().mult(Vector3f.UNIT_Z); |
|
|
|