diff options
Diffstat (limited to '')
-rwxr-xr-x | OpenSim/Region/PhysicsModules/BulletS/BSConstraint6Dof.cs (renamed from OpenSim/Region/Physics/BulletSPlugin/BSConstraint6Dof.cs) | 39 |
1 files changed, 34 insertions, 5 deletions
diff --git a/OpenSim/Region/Physics/BulletSPlugin/BSConstraint6Dof.cs b/OpenSim/Region/PhysicsModules/BulletS/BSConstraint6Dof.cs index ecb1b32..4bcde2b 100755 --- a/OpenSim/Region/Physics/BulletSPlugin/BSConstraint6Dof.cs +++ b/OpenSim/Region/PhysicsModules/BulletS/BSConstraint6Dof.cs | |||
@@ -29,15 +29,22 @@ using System.Collections.Generic; | |||
29 | using System.Text; | 29 | using System.Text; |
30 | using OpenMetaverse; | 30 | using OpenMetaverse; |
31 | 31 | ||
32 | namespace OpenSim.Region.Physics.BulletSPlugin | 32 | namespace OpenSim.Region.PhysicsModule.BulletS |
33 | { | 33 | { |
34 | 34 | ||
35 | public sealed class BSConstraint6Dof : BSConstraint | 35 | public class BSConstraint6Dof : BSConstraint |
36 | { | 36 | { |
37 | private static string LogHeader = "[BULLETSIM 6DOF CONSTRAINT]"; | 37 | private static string LogHeader = "[BULLETSIM 6DOF CONSTRAINT]"; |
38 | 38 | ||
39 | public override ConstraintType Type { get { return ConstraintType.D6_CONSTRAINT_TYPE; } } | 39 | public override ConstraintType Type { get { return ConstraintType.D6_CONSTRAINT_TYPE; } } |
40 | 40 | ||
41 | public BSConstraint6Dof(BulletWorld world, BulletBody obj1, BulletBody obj2) :base(world) | ||
42 | { | ||
43 | m_body1 = obj1; | ||
44 | m_body2 = obj2; | ||
45 | m_enabled = false; | ||
46 | } | ||
47 | |||
41 | // Create a btGeneric6DofConstraint | 48 | // Create a btGeneric6DofConstraint |
42 | public BSConstraint6Dof(BulletWorld world, BulletBody obj1, BulletBody obj2, | 49 | public BSConstraint6Dof(BulletWorld world, BulletBody obj1, BulletBody obj2, |
43 | Vector3 frame1, Quaternion frame1rot, | 50 | Vector3 frame1, Quaternion frame1rot, |
@@ -52,11 +59,14 @@ public sealed class BSConstraint6Dof : BSConstraint | |||
52 | frame2, frame2rot, | 59 | frame2, frame2rot, |
53 | useLinearReferenceFrameA, disableCollisionsBetweenLinkedBodies); | 60 | useLinearReferenceFrameA, disableCollisionsBetweenLinkedBodies); |
54 | m_enabled = true; | 61 | m_enabled = true; |
55 | world.physicsScene.DetailLog("{0},BS6DofConstraint,createFrame,wID={1}, rID={2}, rBody={3}, cID={4}, cBody={5}", | 62 | PhysicsScene.DetailLog("{0},BS6DofConstraint,create,wID={1}, rID={2}, rBody={3}, cID={4}, cBody={5}", |
56 | BSScene.DetailLogZero, world.worldID, | 63 | m_body1.ID, world.worldID, |
57 | obj1.ID, obj1.AddrString, obj2.ID, obj2.AddrString); | 64 | obj1.ID, obj1.AddrString, obj2.ID, obj2.AddrString); |
65 | PhysicsScene.DetailLog("{0},BS6DofConstraint,create, f1Loc={1},f1Rot={2},f2Loc={3},f2Rot={4},usefA={5},disCol={6}", | ||
66 | m_body1.ID, frame1, frame1rot, frame2, frame2rot, useLinearReferenceFrameA, disableCollisionsBetweenLinkedBodies); | ||
58 | } | 67 | } |
59 | 68 | ||
69 | // 6 Dof constraint based on a midpoint between the two constrained bodies | ||
60 | public BSConstraint6Dof(BulletWorld world, BulletBody obj1, BulletBody obj2, | 70 | public BSConstraint6Dof(BulletWorld world, BulletBody obj1, BulletBody obj2, |
61 | Vector3 joinPoint, | 71 | Vector3 joinPoint, |
62 | bool useLinearReferenceFrameA, bool disableCollisionsBetweenLinkedBodies) | 72 | bool useLinearReferenceFrameA, bool disableCollisionsBetweenLinkedBodies) |
@@ -78,9 +88,11 @@ public sealed class BSConstraint6Dof : BSConstraint | |||
78 | m_constraint = PhysicsScene.PE.Create6DofConstraintToPoint(m_world, m_body1, m_body2, | 88 | m_constraint = PhysicsScene.PE.Create6DofConstraintToPoint(m_world, m_body1, m_body2, |
79 | joinPoint, | 89 | joinPoint, |
80 | useLinearReferenceFrameA, disableCollisionsBetweenLinkedBodies); | 90 | useLinearReferenceFrameA, disableCollisionsBetweenLinkedBodies); |
91 | |||
81 | PhysicsScene.DetailLog("{0},BS6DofConstraint,createMidPoint,wID={1}, csrt={2}, rID={3}, rBody={4}, cID={5}, cBody={6}", | 92 | PhysicsScene.DetailLog("{0},BS6DofConstraint,createMidPoint,wID={1}, csrt={2}, rID={3}, rBody={4}, cID={5}, cBody={6}", |
82 | BSScene.DetailLogZero, world.worldID, m_constraint.AddrString, | 93 | m_body1.ID, world.worldID, m_constraint.AddrString, |
83 | obj1.ID, obj1.AddrString, obj2.ID, obj2.AddrString); | 94 | obj1.ID, obj1.AddrString, obj2.ID, obj2.AddrString); |
95 | |||
84 | if (!m_constraint.HasPhysicalConstraint) | 96 | if (!m_constraint.HasPhysicalConstraint) |
85 | { | 97 | { |
86 | world.physicsScene.Logger.ErrorFormat("{0} Failed creation of 6Dof constraint. rootID={1}, childID={2}", | 98 | world.physicsScene.Logger.ErrorFormat("{0} Failed creation of 6Dof constraint. rootID={1}, childID={2}", |
@@ -94,6 +106,23 @@ public sealed class BSConstraint6Dof : BSConstraint | |||
94 | } | 106 | } |
95 | } | 107 | } |
96 | 108 | ||
109 | // A 6 Dof constraint that is fixed in the world and constrained to a on-the-fly created static object | ||
110 | public BSConstraint6Dof(BulletWorld world, BulletBody obj1, Vector3 frameInBloc, Quaternion frameInBrot, | ||
111 | bool useLinearReferenceFrameB, bool disableCollisionsBetweenLinkedBodies) | ||
112 | : base(world) | ||
113 | { | ||
114 | m_body1 = obj1; | ||
115 | m_body2 = obj1; // Look out for confusion down the road | ||
116 | m_constraint = PhysicsScene.PE.Create6DofConstraintFixed(m_world, m_body1, | ||
117 | frameInBloc, frameInBrot, | ||
118 | useLinearReferenceFrameB, disableCollisionsBetweenLinkedBodies); | ||
119 | m_enabled = true; | ||
120 | PhysicsScene.DetailLog("{0},BS6DofConstraint,createFixed,wID={1},rID={2},rBody={3}", | ||
121 | m_body1.ID, world.worldID, obj1.ID, obj1.AddrString); | ||
122 | PhysicsScene.DetailLog("{0},BS6DofConstraint,createFixed, fBLoc={1},fBRot={2},usefA={3},disCol={4}", | ||
123 | m_body1.ID, frameInBloc, frameInBrot, useLinearReferenceFrameB, disableCollisionsBetweenLinkedBodies); | ||
124 | } | ||
125 | |||
97 | public bool SetFrames(Vector3 frameA, Quaternion frameArot, Vector3 frameB, Quaternion frameBrot) | 126 | public bool SetFrames(Vector3 frameA, Quaternion frameArot, Vector3 frameB, Quaternion frameBrot) |
98 | { | 127 | { |
99 | bool ret = false; | 128 | bool ret = false; |