I’ve decided to give up on shared linkage and use the c++_static STL. That’s what jme3-bullet-native-android uses, so it ought to work for Minie as well.
I’ll send you a new commit hash as soon as it’s ready.
Edit: Here you go …
cd Minie
git checkout -b test3 108be4bf
./gradlew clean build
test on emulators for each of the 4 supported ABIs (armeabi-v7a, arm64-v8a, x86, and x86_64)
test on real devices (any to which you have access)
port an existing application from jme3-bullet-native-android to Minie
simple tests directed at the major features:
rigid-bodies (dynamic, static, kinematic)
ghost objects
vehicles and characters
physics debug visualization
various collision shapes
physics tick/collision listeners
raycast and sweep tests
physics joints
ragdolls
V-HACD
soft bodies
multibodies
Edit: The answer is “Yes, please continue testing.” Let me know when you’re satisfied, or if you find any anomalies. I hope to publish the new release on Sunday, but there’s no hard deadline.
removeAll(rootNode) only works if all your collision objects are in physics controls currently added to the scene. It won’t remove any objects you created directly (using new PhysicsRigidBody(...), for instance). Nor will it remove any physics controls that aren’t in the scene graph. And in Minie, it won’t remove any physics joints.
You can always instantiate a PhysicsSpace directly, using new PhysicsSpace(...)—though that gives up all the conveniences of BulletAppState.
Or you can simply create a new BulletAppState and attach it to the AppStateManager.
Edit: note that jme3-bullet (and all past releases of Minie) use per-thread data to keep track of physics spaces, implicitly assuming that there’s never more than one PhysicsSpace for a given thread. Minie v1.6 will remove that gotcha.
I’m unsure what you were doing here. If you applied custom debug materials, then perhaps wireframe materials would work better. If you’re using the default debug materials, then perhaps Heart’s wireframe shaders need fixes for Android.
Apparently there’s some incompatibility in the wireframe material or its shaders. To help me diagnose this, please dump the main ViewPort by triggering a
new Dumper().setDumpMatParam(true).dump(viewPort);
at some point after first update (based on a timer or a touch event, perhaps). That will write the dump to standard output. I’d like to see the output.
Thank you. That gives me a clearer idea of the issue.
For debug materials, jme3-bullet uses “Unshaded.j3md” with setWireframe(true), whereas Minie uses “wireframe.j3md”, which contains
Technique {
RenderState {
Wireframe On
}
I expected that to have the same visual effect, and on desktop it does, but apparently not on Android. I’ve committed a quick-and-dirty workaround for you to test. Please rebuild MInie using the latest commit:
cd Minie
git checkout -b test4 56a1ca62
./gradlew clean build