diff options
Diffstat (limited to '')
-rw-r--r-- | OpenSim/Region/Framework/Scenes/SceneObjectPart.cs | 40 |
1 files changed, 37 insertions, 3 deletions
diff --git a/OpenSim/Region/Framework/Scenes/SceneObjectPart.cs b/OpenSim/Region/Framework/Scenes/SceneObjectPart.cs index 37b5554..ffb86f3 100644 --- a/OpenSim/Region/Framework/Scenes/SceneObjectPart.cs +++ b/OpenSim/Region/Framework/Scenes/SceneObjectPart.cs | |||
@@ -1865,7 +1865,7 @@ namespace OpenSim.Region.Framework.Scenes | |||
1865 | { | 1865 | { |
1866 | if ((!isPhantom || isPhysical || _VolumeDetectActive) && !ParentGroup.IsAttachment | 1866 | if ((!isPhantom || isPhysical || _VolumeDetectActive) && !ParentGroup.IsAttachment |
1867 | && !(Shape.PathCurve == (byte)Extrusion.Flexible)) | 1867 | && !(Shape.PathCurve == (byte)Extrusion.Flexible)) |
1868 | AddToPhysics(isPhysical, isPhantom, building, true); | 1868 | AddToPhysics(isPhysical, isPhantom, building, isPhysical); |
1869 | else | 1869 | else |
1870 | PhysActor = null; // just to be sure | 1870 | PhysActor = null; // just to be sure |
1871 | } | 1871 | } |
@@ -2311,7 +2311,7 @@ namespace OpenSim.Region.Framework.Scenes | |||
2311 | */ | 2311 | */ |
2312 | } | 2312 | } |
2313 | 2313 | ||
2314 | public float GetMass() | 2314 | public float GetMass() |
2315 | { | 2315 | { |
2316 | PhysicsActor pa = PhysActor; | 2316 | PhysicsActor pa = PhysActor; |
2317 | 2317 | ||
@@ -2321,6 +2321,40 @@ namespace OpenSim.Region.Framework.Scenes | |||
2321 | return 0; | 2321 | return 0; |
2322 | } | 2322 | } |
2323 | 2323 | ||
2324 | public Vector3 GetCenterOfMass() | ||
2325 | { | ||
2326 | if (ParentGroup.RootPart == this) | ||
2327 | { | ||
2328 | if (ParentGroup.IsDeleted) | ||
2329 | return AbsolutePosition; | ||
2330 | return ParentGroup.GetCenterOfMass(); | ||
2331 | } | ||
2332 | |||
2333 | PhysicsActor pa = PhysActor; | ||
2334 | |||
2335 | if (pa != null) | ||
2336 | { | ||
2337 | Vector3 tmp = pa.CenterOfMass; | ||
2338 | return tmp; | ||
2339 | } | ||
2340 | else | ||
2341 | return AbsolutePosition; | ||
2342 | } | ||
2343 | |||
2344 | public Vector3 GetPartCenterOfMass() | ||
2345 | { | ||
2346 | PhysicsActor pa = PhysActor; | ||
2347 | |||
2348 | if (pa != null) | ||
2349 | { | ||
2350 | Vector3 tmp = pa.CenterOfMass; | ||
2351 | return tmp; | ||
2352 | } | ||
2353 | else | ||
2354 | return AbsolutePosition; | ||
2355 | } | ||
2356 | |||
2357 | |||
2324 | public Vector3 GetForce() | 2358 | public Vector3 GetForce() |
2325 | { | 2359 | { |
2326 | return Force; | 2360 | return Force; |
@@ -4804,7 +4838,7 @@ namespace OpenSim.Region.Framework.Scenes | |||
4804 | { | 4838 | { |
4805 | Velocity = velocity; | 4839 | Velocity = velocity; |
4806 | AngularVelocity = rotationalVelocity; | 4840 | AngularVelocity = rotationalVelocity; |
4807 | pa.Velocity = velocity; | 4841 | // pa.Velocity = velocity; |
4808 | pa.RotationalVelocity = rotationalVelocity; | 4842 | pa.RotationalVelocity = rotationalVelocity; |
4809 | 4843 | ||
4810 | // if not vehicle and root part apply force and torque | 4844 | // if not vehicle and root part apply force and torque |