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