diff options
Diffstat (limited to 'OpenSim/Region/Framework/Scenes/SceneObjectPart.cs')
-rw-r--r-- | OpenSim/Region/Framework/Scenes/SceneObjectPart.cs | 28 |
1 files changed, 19 insertions, 9 deletions
diff --git a/OpenSim/Region/Framework/Scenes/SceneObjectPart.cs b/OpenSim/Region/Framework/Scenes/SceneObjectPart.cs index 4fa3a68..5b203e9 100644 --- a/OpenSim/Region/Framework/Scenes/SceneObjectPart.cs +++ b/OpenSim/Region/Framework/Scenes/SceneObjectPart.cs | |||
@@ -1810,7 +1810,6 @@ namespace OpenSim.Region.Framework.Scenes | |||
1810 | { | 1810 | { |
1811 | ParentGroup.Scene.jointErrorMessage(joint, "warning: tracked body name not found! joint location will not be updated properly. joint: " + Name); | 1811 | ParentGroup.Scene.jointErrorMessage(joint, "warning: tracked body name not found! joint location will not be updated properly. joint: " + Name); |
1812 | } | 1812 | } |
1813 | |||
1814 | } | 1813 | } |
1815 | else | 1814 | else |
1816 | { | 1815 | { |
@@ -1872,7 +1871,6 @@ namespace OpenSim.Region.Framework.Scenes | |||
1872 | 1871 | ||
1873 | PhysActor.IsPhysical = UsePhysics; | 1872 | PhysActor.IsPhysical = UsePhysics; |
1874 | 1873 | ||
1875 | |||
1876 | // If we're not what we're supposed to be in the physics scene, recreate ourselves. | 1874 | // If we're not what we're supposed to be in the physics scene, recreate ourselves. |
1877 | //m_parentGroup.Scene.PhysicsScene.RemovePrim(PhysActor); | 1875 | //m_parentGroup.Scene.PhysicsScene.RemovePrim(PhysActor); |
1878 | /// that's not wholesome. Had to make Scene public | 1876 | /// that's not wholesome. Had to make Scene public |
@@ -1896,6 +1894,7 @@ namespace OpenSim.Region.Framework.Scenes | |||
1896 | } | 1894 | } |
1897 | } | 1895 | } |
1898 | } | 1896 | } |
1897 | |||
1899 | m_parentGroup.Scene.PhysicsScene.AddPhysicsActorTaint(PhysActor); | 1898 | m_parentGroup.Scene.PhysicsScene.AddPhysicsActorTaint(PhysActor); |
1900 | } | 1899 | } |
1901 | } | 1900 | } |
@@ -2967,14 +2966,17 @@ namespace OpenSim.Region.Framework.Scenes | |||
2967 | //if (texture != null) | 2966 | //if (texture != null) |
2968 | { | 2967 | { |
2969 | if (texture != null) | 2968 | if (texture != null) |
2969 | { | ||
2970 | // m_log.DebugFormat( | ||
2971 | // "[SCENE OBJECT PART]: Setting sculpt data for {0} on SculptTextureCallback()", Name); | ||
2972 | |||
2970 | m_shape.SculptData = texture.Data; | 2973 | m_shape.SculptData = texture.Data; |
2974 | } | ||
2971 | 2975 | ||
2972 | if (PhysActor != null) | 2976 | if (PhysActor != null) |
2973 | { | 2977 | { |
2974 | // Tricks physics engine into thinking we've changed the part shape. | 2978 | // Update the physics actor with the new loaded sculpt data and set the taint signal. |
2975 | PrimitiveBaseShape m_newshape = m_shape.Copy(); | 2979 | PhysActor.Shape = m_shape; |
2976 | PhysActor.Shape = m_newshape; | ||
2977 | m_shape = m_newshape; | ||
2978 | 2980 | ||
2979 | m_parentGroup.Scene.PhysicsScene.AddPhysicsActorTaint(PhysActor); | 2981 | m_parentGroup.Scene.PhysicsScene.AddPhysicsActorTaint(PhysActor); |
2980 | } | 2982 | } |
@@ -3270,11 +3272,14 @@ namespace OpenSim.Region.Framework.Scenes | |||
3270 | { | 3272 | { |
3271 | m_parentGroup.SetAxisRotation(axis, rotate); | 3273 | m_parentGroup.SetAxisRotation(axis, rotate); |
3272 | } | 3274 | } |
3275 | |||
3273 | //Cannot use ScriptBaseClass constants as no referance to it currently. | 3276 | //Cannot use ScriptBaseClass constants as no referance to it currently. |
3274 | if (axis == 2)//STATUS_ROTATE_X | 3277 | if (axis == 2)//STATUS_ROTATE_X |
3275 | STATUS_ROTATE_X = rotate; | 3278 | STATUS_ROTATE_X = rotate; |
3279 | |||
3276 | if (axis == 4)//STATUS_ROTATE_Y | 3280 | if (axis == 4)//STATUS_ROTATE_Y |
3277 | STATUS_ROTATE_Y = rotate; | 3281 | STATUS_ROTATE_Y = rotate; |
3282 | |||
3278 | if (axis == 8)//STATUS_ROTATE_Z | 3283 | if (axis == 8)//STATUS_ROTATE_Z |
3279 | STATUS_ROTATE_Z = rotate; | 3284 | STATUS_ROTATE_Z = rotate; |
3280 | } | 3285 | } |
@@ -4418,6 +4423,7 @@ namespace OpenSim.Region.Framework.Scenes | |||
4418 | RemFlag(PrimFlags.Phantom); | 4423 | RemFlag(PrimFlags.Phantom); |
4419 | 4424 | ||
4420 | PhysicsActor pa = PhysActor; | 4425 | PhysicsActor pa = PhysActor; |
4426 | |||
4421 | if (pa == null) | 4427 | if (pa == null) |
4422 | { | 4428 | { |
4423 | // It's not phantom anymore. So make sure the physics engine get's knowledge of it | 4429 | // It's not phantom anymore. So make sure the physics engine get's knowledge of it |
@@ -4434,6 +4440,7 @@ namespace OpenSim.Region.Framework.Scenes | |||
4434 | if (pa != null) | 4440 | if (pa != null) |
4435 | { | 4441 | { |
4436 | DoPhysicsPropertyUpdate(UsePhysics, true); | 4442 | DoPhysicsPropertyUpdate(UsePhysics, true); |
4443 | |||
4437 | if (m_parentGroup != null) | 4444 | if (m_parentGroup != null) |
4438 | { | 4445 | { |
4439 | if (!m_parentGroup.IsDeleted) | 4446 | if (!m_parentGroup.IsDeleted) |
@@ -4444,6 +4451,7 @@ namespace OpenSim.Region.Framework.Scenes | |||
4444 | } | 4451 | } |
4445 | } | 4452 | } |
4446 | } | 4453 | } |
4454 | |||
4447 | if ( | 4455 | if ( |
4448 | ((AggregateScriptEvents & scriptEvents.collision) != 0) || | 4456 | ((AggregateScriptEvents & scriptEvents.collision) != 0) || |
4449 | ((AggregateScriptEvents & scriptEvents.collision_end) != 0) || | 4457 | ((AggregateScriptEvents & scriptEvents.collision_end) != 0) || |
@@ -4454,8 +4462,8 @@ namespace OpenSim.Region.Framework.Scenes | |||
4454 | (CollisionSound != UUID.Zero) | 4462 | (CollisionSound != UUID.Zero) |
4455 | ) | 4463 | ) |
4456 | { | 4464 | { |
4457 | PhysActor.OnCollisionUpdate += PhysicsCollision; | 4465 | PhysActor.OnCollisionUpdate += PhysicsCollision; |
4458 | PhysActor.SubscribeEvents(1000); | 4466 | PhysActor.SubscribeEvents(1000); |
4459 | } | 4467 | } |
4460 | } | 4468 | } |
4461 | } | 4469 | } |
@@ -4492,13 +4500,15 @@ namespace OpenSim.Region.Framework.Scenes | |||
4492 | } | 4500 | } |
4493 | } | 4501 | } |
4494 | else | 4502 | else |
4495 | { // Remove VolumeDetect in any case. Note, it's safe to call SetVolumeDetect as often as you like | 4503 | { |
4504 | // Remove VolumeDetect in any case. Note, it's safe to call SetVolumeDetect as often as you like | ||
4496 | // (mumbles, well, at least if you have infinte CPU powers :-)) | 4505 | // (mumbles, well, at least if you have infinte CPU powers :-)) |
4497 | PhysicsActor pa = this.PhysActor; | 4506 | PhysicsActor pa = this.PhysActor; |
4498 | if (pa != null) | 4507 | if (pa != null) |
4499 | { | 4508 | { |
4500 | PhysActor.SetVolumeDetect(0); | 4509 | PhysActor.SetVolumeDetect(0); |
4501 | } | 4510 | } |
4511 | |||
4502 | this.VolumeDetectActive = false; | 4512 | this.VolumeDetectActive = false; |
4503 | } | 4513 | } |
4504 | 4514 | ||