aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/OpenSim/Region/Framework/Scenes/SceneObjectPart.cs
diff options
context:
space:
mode:
Diffstat (limited to 'OpenSim/Region/Framework/Scenes/SceneObjectPart.cs')
-rw-r--r--OpenSim/Region/Framework/Scenes/SceneObjectPart.cs48
1 files changed, 21 insertions, 27 deletions
diff --git a/OpenSim/Region/Framework/Scenes/SceneObjectPart.cs b/OpenSim/Region/Framework/Scenes/SceneObjectPart.cs
index 822d54f..2659a69 100644
--- a/OpenSim/Region/Framework/Scenes/SceneObjectPart.cs
+++ b/OpenSim/Region/Framework/Scenes/SceneObjectPart.cs
@@ -4411,9 +4411,7 @@ namespace OpenSim.Region.Framework.Scenes
4411 if (ParentGroup.Scene == null) 4411 if (ParentGroup.Scene == null)
4412 return; 4412 return;
4413 4413
4414 PhysicsActor pa = PhysActor; 4414 if (PhysActor == null)
4415
4416 if (pa == null)
4417 { 4415 {
4418 // It's not phantom anymore. So make sure the physics engine get's knowledge of it 4416 // It's not phantom anymore. So make sure the physics engine get's knowledge of it
4419 PhysActor = m_parentGroup.Scene.PhysicsScene.AddPrimShape( 4417 PhysActor = m_parentGroup.Scene.PhysicsScene.AddPrimShape(
@@ -4425,38 +4423,34 @@ namespace OpenSim.Region.Framework.Scenes
4425 UsePhysics, 4423 UsePhysics,
4426 m_localId); 4424 m_localId);
4427 4425
4428 pa = PhysActor; 4426 PhysActor.SetMaterial(Material);
4429 if (pa != null) 4427 DoPhysicsPropertyUpdate(UsePhysics, true);
4430 {
4431 PhysActor.SetMaterial(Material);
4432 DoPhysicsPropertyUpdate(UsePhysics, true);
4433 4428
4434 if (!m_parentGroup.IsDeleted) 4429 if (!m_parentGroup.IsDeleted)
4430 {
4431 if (LocalId == m_parentGroup.RootPart.LocalId)
4435 { 4432 {
4436 if (LocalId == m_parentGroup.RootPart.LocalId) 4433 m_parentGroup.CheckSculptAndLoad();
4437 {
4438 m_parentGroup.CheckSculptAndLoad();
4439 }
4440 } 4434 }
4435 }
4441 4436
4442 if ( 4437 if (
4443 ((AggregateScriptEvents & scriptEvents.collision) != 0) || 4438 ((AggregateScriptEvents & scriptEvents.collision) != 0) ||
4444 ((AggregateScriptEvents & scriptEvents.collision_end) != 0) || 4439 ((AggregateScriptEvents & scriptEvents.collision_end) != 0) ||
4445 ((AggregateScriptEvents & scriptEvents.collision_start) != 0) || 4440 ((AggregateScriptEvents & scriptEvents.collision_start) != 0) ||
4446 ((AggregateScriptEvents & scriptEvents.land_collision_start) != 0) || 4441 ((AggregateScriptEvents & scriptEvents.land_collision_start) != 0) ||
4447 ((AggregateScriptEvents & scriptEvents.land_collision) != 0) || 4442 ((AggregateScriptEvents & scriptEvents.land_collision) != 0) ||
4448 ((AggregateScriptEvents & scriptEvents.land_collision_end) != 0) || 4443 ((AggregateScriptEvents & scriptEvents.land_collision_end) != 0) ||
4449 (CollisionSound != UUID.Zero) 4444 (CollisionSound != UUID.Zero)
4450 ) 4445 )
4451 { 4446 {
4452 PhysActor.OnCollisionUpdate += PhysicsCollision; 4447 PhysActor.OnCollisionUpdate += PhysicsCollision;
4453 PhysActor.SubscribeEvents(1000); 4448 PhysActor.SubscribeEvents(1000);
4454 }
4455 } 4449 }
4456 } 4450 }
4457 else // it already has a physical representation 4451 else // it already has a physical representation
4458 { 4452 {
4459 pa.IsPhysical = UsePhysics; 4453 PhysActor.IsPhysical = UsePhysics;
4460 4454
4461 DoPhysicsPropertyUpdate(UsePhysics, false); // Update physical status. If it's phantom this will remove the prim 4455 DoPhysicsPropertyUpdate(UsePhysics, false); // Update physical status. If it's phantom this will remove the prim
4462 4456