From 57f4646563d6757f65ddc00ca38975c352d76de7 Mon Sep 17 00:00:00 2001
From: Normand Briere <nbriere@noware.ca>
Date: Fri, 27 Sep 2019 20:06:14 -0400
Subject: [PATCH] Wireframe, box mode, and ragdoll zoffset.

---
 CameraPane.java   |    4 +
 PhysicsNode.java  |   53 +++++++++++++++-----------
 Object3D.java     |    3 +
 RagDoll.java      |   39 +++++++++----------
 GenericJoint.java |   13 ++++--
 5 files changed, 63 insertions(+), 49 deletions(-)

diff --git a/CameraPane.java b/CameraPane.java
index d075633..02b265d 100644
--- a/CameraPane.java
+++ b/CameraPane.java
@@ -17161,7 +17161,7 @@
             return;
         }
 
-        if (WIREFRAME)
+        //if (WIREFRAME)
             gl.glPolygonMode(gl.GL_FRONT_AND_BACK, gl.GL_FILL);
         
         gl.glDisable(gl.GL_CULL_FACE);
@@ -17261,6 +17261,8 @@
 
         if (WIREFRAME)
             gl.glPolygonMode(gl.GL_FRONT_AND_BACK, gl.GL_LINE);
+        else
+            gl.glPolygonMode(gl.GL_FRONT_AND_BACK, gl.GL_FILL);
     }
 
     private void DrawChecker(GL gl)
diff --git a/GenericJoint.java b/GenericJoint.java
index 67a201d..3724371 100644
--- a/GenericJoint.java
+++ b/GenericJoint.java
@@ -178,7 +178,8 @@
     public void spawnRagdoll(boolean walk) // random)
     {
         // KIDS4
-        RagDoll ragDoll = new RagDoll(null, new Vector3f(0f, 0f, 0f), 0.45f/2, walk); // Math.random() > 0.5/*true*/); // true);
+        RagDoll ragDoll = new RagDoll(null, new Vector3f(0f, 0f, 0f), 0.45f/2, walk, myzoffset = zoffset); // Math.random() > 0.5/*true*/); // true);
+        zoffset += 0.1f;
         ragdolls.add(ragDoll);
         
         bRep = null;
@@ -278,6 +279,8 @@
 //    
     ObjectArrayList<Transform> initialmatrices;
 
+    float myzoffset;
+    
     void Reset()
     {
 //        int numObjects = dynamicsWorld.getNumCollisionObjects();
@@ -310,10 +313,12 @@
             walkdefined = true;
         }
         
-        ragdolls.get(0).init(/*staticdynamicsWorld,*/ new Vector3f(0f, 0f, 0f), ragdolls.get(0).scale, walk);
+        ragdolls.get(0).init(/*staticdynamicsWorld,*/ new Vector3f(0f, 0f, 0f), ragdolls.get(0).scale, walk, myzoffset);
         
         bRep = null;
     }
+    
+    static float zoffset = 0;
     
     void DrawNode(iCameraPane display, Object3D /*Composite*/ root, boolean selected) // ??
     {
@@ -487,7 +492,7 @@
                 
                 tc.getFrameOffsetB(trans);
                         
-                if (false) // c == 2) // DEBUG
+                if (c == 8) // DEBUG
                 {
                 gl.glDisable(gl.GL_LIGHTING);
                 
@@ -516,7 +521,7 @@
 
                     gl.glPopMatrix();
 
-                    tc.getFrameOffsetB(trans);
+                    //tc.getFrameOffsetB(trans);
 
                     gl.glColor3f(0, 1, 0);
 
diff --git a/Object3D.java b/Object3D.java
index 8077ac5..10bff2f 100644
--- a/Object3D.java
+++ b/Object3D.java
@@ -6276,7 +6276,8 @@
             bRep.displaylist = 0;
         }
    //     usecalllists &= !(parent instanceof RandomNode);
-   //     usecalllists = false;
+        if (CameraPane.BOXMODE) // Too dynamic
+            usecalllists = false;
 
         if (display.DrawMode() == display.SHADOW)
             //GetBRep() != null)
diff --git a/PhysicsNode.java b/PhysicsNode.java
index e3b6fc9..423ac33 100644
--- a/PhysicsNode.java
+++ b/PhysicsNode.java
@@ -140,6 +140,8 @@
 //                initPhysics();
 //            
 //            assert(dynamicsWorld == staticdynamicsWorld);
+        if (groundTransform != null) // marche pas
+            groundTransform.origin.set(0f, -floor - 10, 0f);
             
             GetDynamics().stepSimulation(ms / 1000000.f);
         }
@@ -159,10 +161,14 @@
 
 //        if (transientDynamicsWorld == null)
 //            initPhysics();
-            
+
+        groundTransform.origin.set(0f, -floor - 10, 0f);
+        
         GetDynamics().stepSimulation(ms / 1000000.f);
     }
     
+    transient Transform groundTransform;
+            
     public void initPhysics()
     {
         //if (dynamicsWorld != null) // && staticdynamicsWorld == null)
@@ -201,34 +207,35 @@
         // Setup a big ground box
 //        {
             CollisionShape groundShape = new BoxShape(new Vector3f(boxsize, 10f, boxsize));
-            Transform groundTransform = new Transform();
-            groundTransform.setIdentity();
-            groundTransform.origin.set(0f, -floor - 10, 0f);
-            localCreateRigidBody(0f, groundTransform, groundShape);
+            Transform transform = new Transform();
+            transform.setIdentity();
+            transform.origin.set(0f, -floor - 10, 0f);
+            localCreateRigidBody(0f, transform, groundShape);
+            
+            groundTransform = transform;
+            groundShape = new BoxShape(new Vector3f(boxsize, boxsize, boxsize));
+            transform = new Transform();
+            transform.setIdentity();
+            transform.origin.set(0f, boxsize/2, -boxsize-1);
+            localCreateRigidBody(0f, transform, groundShape);
             
             groundShape = new BoxShape(new Vector3f(boxsize, boxsize, boxsize));
-            groundTransform = new Transform();
-            groundTransform.setIdentity();
-            groundTransform.origin.set(0f, boxsize/2, -boxsize-1);
-            localCreateRigidBody(0f, groundTransform, groundShape);
+            transform = new Transform();
+            transform.setIdentity();
+            transform.origin.set(-boxsize-1, boxsize/2, 0f);
+            localCreateRigidBody(0f, transform, groundShape);
             
             groundShape = new BoxShape(new Vector3f(boxsize, boxsize, boxsize));
-            groundTransform = new Transform();
-            groundTransform.setIdentity();
-            groundTransform.origin.set(-boxsize-1, boxsize/2, 0f);
-            localCreateRigidBody(0f, groundTransform, groundShape);
+            transform = new Transform();
+            transform.setIdentity();
+            transform.origin.set(boxsize+1, boxsize/2, 0f);
+            localCreateRigidBody(0f, transform, groundShape);
             
             groundShape = new BoxShape(new Vector3f(boxsize, boxsize, boxsize));
-            groundTransform = new Transform();
-            groundTransform.setIdentity();
-            groundTransform.origin.set(boxsize+1, boxsize/2, 0f);
-            localCreateRigidBody(0f, groundTransform, groundShape);
-            
-            groundShape = new BoxShape(new Vector3f(boxsize, boxsize, boxsize));
-            groundTransform = new Transform();
-            groundTransform.setIdentity();
-            groundTransform.origin.set(0f, boxsize/2, boxsize+1);
-            localCreateRigidBody(0f, groundTransform, groundShape);
+            transform = new Transform();
+            transform.setIdentity();
+            transform.origin.set(0f, boxsize/2, boxsize+1);
+            localCreateRigidBody(0f, transform, groundShape);
             
             transientDynamicsWorld.setGravity(new Vector3f(0.075f, -gravity, wind));
             
diff --git a/RagDoll.java b/RagDoll.java
index e22ffb2..a2de06b 100644
--- a/RagDoll.java
+++ b/RagDoll.java
@@ -130,17 +130,17 @@
 	RigidBody/*Serial*/[] bodies = new RigidBody/*Serial*/[BodyPart.BODYPART_COUNT.ordinal()];
 	TypedConstraint[] joints = new TypedConstraint[JointType.JOINT_COUNT.ordinal()];
 
-	public RagDoll(DynamicsWorld ownerWorld, Vector3f positionOffset)
+	public RagDoll(DynamicsWorld ownerWorld, Vector3f positionOffset, float zoffset)
         {
-		this(ownerWorld, positionOffset, 1.0f, false);
+		this(ownerWorld, positionOffset, 1.0f, false, zoffset);
 	}
 
-	public RagDoll(DynamicsWorld ownerWorld, Vector3f positionOffset, float scale_ragdoll, boolean walk)
+	public RagDoll(DynamicsWorld ownerWorld, Vector3f positionOffset, float scale_ragdoll, boolean walk, float zoffset)
         {
-            init(/*ownerWorld,*/ positionOffset, scale_ragdoll, walk);
+            init(/*ownerWorld,*/ positionOffset, scale_ragdoll, walk, zoffset);
         }
         
-	public void init(/*DynamicsWorld ownerWorld,*/ Vector3f positionOffset, float scale_ragdoll, boolean walk)
+	public void init(/*DynamicsWorld ownerWorld,*/ Vector3f positionOffset, float scale_ragdoll, boolean walk, float zoffset)
         {
             scale = scale_ragdoll;
             
@@ -210,7 +210,7 @@
 		transform.setIdentity();
 		if ((body = bodies[BodyPart.BODYPART_SPINE.ordinal()]) == null)
                     body = bodies[BodyPart.BODYPART_SPINE.ordinal()] = localCreateRigidBody(1f, 10, transform, shapes[BodyPart.BODYPART_SPINE.ordinal()]);
-		transform.origin.set(0f, scale_ragdoll * 1.2f, 0f);
+		transform.origin.set(0f, scale_ragdoll * 1.2f, zoffset);
 		tmpTrans.mul(offset, transform);
 		body.worldTransform.set(tmpTrans);
                 body.getMotionState().setWorldTransform(tmpTrans);
@@ -229,7 +229,7 @@
 		transform.setIdentity();
                 if ((body = bodies[BodyPart.BODYPART_LEFT_LOWER_LEG.ordinal()]) == null)
                     body = bodies[BodyPart.BODYPART_LEFT_LOWER_LEG.ordinal()] = localCreateRigidBody(massfeet, poisefeet, transform, shapes[BodyPart.BODYPART_LEFT_LOWER_LEG.ordinal()]);
-		transform.origin.set(-0.09f * scale_ragdoll, 0.275f * scale_ragdoll, 0f);
+		transform.origin.set(-0.09f * scale_ragdoll, 0.275f * scale_ragdoll, zoffset);
 		MatrixUtil.setEulerZYX(transform.basis, 0, 0, BulletGlobals.SIMD_PI);
 		tmpTrans.mul(offset, transform);
 		body.worldTransform.set(tmpTrans);
@@ -237,11 +237,10 @@
                 //body.getMotionState().setStartTransform(tmpTrans);
                 ((cRigidBody)body).anchor.set(tmpTrans.origin);
                 
-
 		transform.setIdentity();
 		if ((body = bodies[BodyPart.BODYPART_RIGHT_LOWER_LEG.ordinal()]) == null)
                     body = bodies[BodyPart.BODYPART_RIGHT_LOWER_LEG.ordinal()] = localCreateRigidBody(massfeet, poisefeet, transform, shapes[BodyPart.BODYPART_RIGHT_LOWER_LEG.ordinal()]);
-		transform.origin.set(0.09f * scale_ragdoll, 0.275f * scale_ragdoll, 0f);
+		transform.origin.set(0.09f * scale_ragdoll, 0.275f * scale_ragdoll, zoffset);
 		MatrixUtil.setEulerZYX(transform.basis, 0, 0, BulletGlobals.SIMD_PI);
 		tmpTrans.mul(offset, transform);
 		body.worldTransform.set(tmpTrans);
@@ -254,7 +253,7 @@
 		transform.setIdentity();
 		if ((body = bodies[BodyPart.BODYPART_LEFT_FOOT.ordinal()]) == null)
                     body = bodies[BodyPart.BODYPART_LEFT_FOOT.ordinal()] = localCreateRigidBody(massfeet, poisefeet, transform, shapes[BodyPart.BODYPART_LEFT_FOOT.ordinal()]);
-		transform.origin.set(-0.09f * scale_ragdoll, 0.075f * scale_ragdoll, 0.0125f);
+		transform.origin.set(-0.09f * scale_ragdoll, 0.075f * scale_ragdoll, 0.0125f + zoffset);
 		MatrixUtil.setEulerZYX(transform.basis, BulletGlobals.SIMD_PI/2, 0,BulletGlobals.SIMD_PI); // BulletGlobals.SIMD_PI, 0);
 		tmpTrans.mul(offset, transform);
 		body.worldTransform.set(tmpTrans);
@@ -264,7 +263,7 @@
 		transform.setIdentity();
 		if ((body = bodies[BodyPart.BODYPART_RIGHT_FOOT.ordinal()]) == null)
                     body = bodies[BodyPart.BODYPART_RIGHT_FOOT.ordinal()] = localCreateRigidBody(massfeet, poisefeet, transform, shapes[BodyPart.BODYPART_RIGHT_FOOT.ordinal()]);
-		transform.origin.set(0.09f * scale_ragdoll, 0.075f * scale_ragdoll, 0.0125f);
+		transform.origin.set(0.09f * scale_ragdoll, 0.075f * scale_ragdoll, 0.0125f + zoffset);
 		MatrixUtil.setEulerZYX(transform.basis, BulletGlobals.SIMD_PI/2, 0,BulletGlobals.SIMD_PI); // BulletGlobals.SIMD_PI, 0);
 		tmpTrans.mul(offset, transform);
 		body.worldTransform.set(tmpTrans);
@@ -274,7 +273,7 @@
 		transform.setIdentity();
 		if ((body = bodies[BodyPart.BODYPART_PELVIS.ordinal()]) == null)
                     body = bodies[BodyPart.BODYPART_PELVIS.ordinal()] = localCreateRigidBody(1f, 0, transform, shapes[BodyPart.BODYPART_PELVIS.ordinal()]);
-		transform.origin.set(scale_ragdoll * 0.f, scale_ragdoll * 0.95f, 0f);
+		transform.origin.set(scale_ragdoll * 0.f, scale_ragdoll * 0.95f, zoffset);
 		tmpTrans.mul(offset, transform);
 		body.worldTransform.set(tmpTrans);
                 body.getMotionState().setWorldTransform(tmpTrans);
@@ -283,7 +282,7 @@
 		transform.setIdentity();
 		if ((body = bodies[BodyPart.BODYPART_HEAD.ordinal()]) == null)
                     body = bodies[BodyPart.BODYPART_HEAD.ordinal()] = localCreateRigidBody(1f, 0, transform, shapes[BodyPart.BODYPART_HEAD.ordinal()]);
-		transform.origin.set(0f, scale_ragdoll * 1.55f, 0); // depth/2);
+		transform.origin.set(0f, scale_ragdoll * 1.55f, zoffset); // depth/2);
 		tmpTrans.mul(offset, transform);
 		body.worldTransform.set(tmpTrans);
                 body.getMotionState().setWorldTransform(tmpTrans);
@@ -292,7 +291,7 @@
 		transform.setIdentity();
 		if ((body = bodies[BodyPart.BODYPART_LEFT_UPPER_LEG.ordinal()]) == null)
                     body = bodies[BodyPart.BODYPART_LEFT_UPPER_LEG.ordinal()] = localCreateRigidBody(1f, 0, transform, shapes[BodyPart.BODYPART_LEFT_UPPER_LEG.ordinal()]);
-		transform.origin.set(-0.09f * scale_ragdoll, 0.65f * scale_ragdoll, 0f);
+		transform.origin.set(-0.09f * scale_ragdoll, 0.65f * scale_ragdoll, zoffset);
 		MatrixUtil.setEulerZYX(transform.basis, 0, 0, BulletGlobals.SIMD_PI);
 		tmpTrans.mul(offset, transform);
 		body.worldTransform.set(tmpTrans);
@@ -302,7 +301,7 @@
 		transform.setIdentity();
 		if ((body = bodies[BodyPart.BODYPART_RIGHT_UPPER_LEG.ordinal()]) == null)
                     body = bodies[BodyPart.BODYPART_RIGHT_UPPER_LEG.ordinal()] = localCreateRigidBody(1f, 0, transform, shapes[BodyPart.BODYPART_RIGHT_UPPER_LEG.ordinal()]);
-		transform.origin.set(0.09f * scale_ragdoll, 0.65f * scale_ragdoll, 0f);
+		transform.origin.set(0.09f * scale_ragdoll, 0.65f * scale_ragdoll, zoffset);
 		MatrixUtil.setEulerZYX(transform.basis, 0, 0, BulletGlobals.SIMD_PI);
 		tmpTrans.mul(offset, transform);
 		body.worldTransform.set(tmpTrans);
@@ -312,7 +311,7 @@
 		transform.setIdentity();
 		if ((body = bodies[BodyPart.BODYPART_LEFT_UPPER_ARM.ordinal()]) == null)
                     body = bodies[BodyPart.BODYPART_LEFT_UPPER_ARM.ordinal()] = localCreateRigidBody(1f, 0, transform, shapes[BodyPart.BODYPART_LEFT_UPPER_ARM.ordinal()]);
-		transform.origin.set(-(upperarmlength/2 + upperarmdist) * scale_ragdoll, 1.325f * scale_ragdoll, depth);
+		transform.origin.set(-(upperarmlength/2 + upperarmdist) * scale_ragdoll, 1.325f * scale_ragdoll, depth + zoffset);
 		MatrixUtil.setEulerZYX(transform.basis, 0, 0, BulletGlobals.SIMD_HALF_PI);
 		tmpTrans.mul(offset, transform);
 		body.worldTransform.set(tmpTrans);
@@ -322,7 +321,7 @@
 		transform.setIdentity();
 		if ((body = bodies[BodyPart.BODYPART_LEFT_LOWER_ARM.ordinal()]) == null)
                     body = bodies[BodyPart.BODYPART_LEFT_LOWER_ARM.ordinal()] = localCreateRigidBody(1f, 0, transform, shapes[BodyPart.BODYPART_LEFT_LOWER_ARM.ordinal()]);
-		transform.origin.set(-(lowerarmlength/2 + upperarmlength + upperarmdist) * scale_ragdoll, 1.325f * scale_ragdoll, depth);
+		transform.origin.set(-(lowerarmlength/2 + upperarmlength + upperarmdist) * scale_ragdoll, 1.325f * scale_ragdoll, depth + zoffset);
 		MatrixUtil.setEulerZYX(transform.basis, 0, 0, BulletGlobals.SIMD_HALF_PI);
 		tmpTrans.mul(offset, transform);
 		body.worldTransform.set(tmpTrans);
@@ -342,7 +341,7 @@
 		transform.setIdentity();
 		if ((body = bodies[BodyPart.BODYPART_RIGHT_UPPER_ARM.ordinal()]) == null)
                     body = bodies[BodyPart.BODYPART_RIGHT_UPPER_ARM.ordinal()] = localCreateRigidBody(1f, 0, transform, shapes[BodyPart.BODYPART_RIGHT_UPPER_ARM.ordinal()]);
-		transform.origin.set((upperarmlength/2 + upperarmdist) * scale_ragdoll, 1.325f * scale_ragdoll, depth);
+		transform.origin.set((upperarmlength/2 + upperarmdist) * scale_ragdoll, 1.325f * scale_ragdoll, depth + zoffset);
 		MatrixUtil.setEulerZYX(transform.basis, 0, 0, -BulletGlobals.SIMD_HALF_PI);
 		tmpTrans.mul(offset, transform);
 		body.worldTransform.set(tmpTrans);
@@ -352,7 +351,7 @@
 		transform.setIdentity();
 		if ((body = bodies[BodyPart.BODYPART_RIGHT_LOWER_ARM.ordinal()]) == null)
                     body = bodies[BodyPart.BODYPART_RIGHT_LOWER_ARM.ordinal()] = localCreateRigidBody(1f, 0, transform, shapes[BodyPart.BODYPART_RIGHT_LOWER_ARM.ordinal()]);
-		transform.origin.set((lowerarmlength/2 + upperarmlength + upperarmdist) * scale_ragdoll, 1.325f * scale_ragdoll, depth);
+		transform.origin.set((lowerarmlength/2 + upperarmlength + upperarmdist) * scale_ragdoll, 1.325f * scale_ragdoll, depth + zoffset);
 		MatrixUtil.setEulerZYX(transform.basis, 0, 0, -BulletGlobals.SIMD_HALF_PI);
 		tmpTrans.mul(offset, transform);
 		body.worldTransform.set(tmpTrans);
@@ -812,7 +811,7 @@
 //                     .push(Tween.to(leftleg, 1, 500).target(100).ease(Quad.INOUT))
 //                     .push(Tween.to(leftleg, 1, 500).target(360).ease(Quad.INOUT))
 //                     .repeat(5, 1)
-//                     .end()
+//                     .end() //??
                      .start(ObjEditor.tweenManager)
                         ;
 	}

--
Gitblit v1.6.2