fix turning off phanton always decreasing number of physical parts

avinationmerge
UbitUmarov 2012-06-21 19:05:36 +01:00
parent 909572ed86
commit c8f7cd60cd
1 changed files with 28 additions and 28 deletions

View File

@ -4496,7 +4496,8 @@ namespace OpenSim.Region.Framework.Scenes
{ {
if (pa != null) if (pa != null)
{ {
ParentGroup.Scene.RemovePhysicalPrim(1); if(wasUsingPhysics)
ParentGroup.Scene.RemovePhysicalPrim(1);
RemoveFromPhysics(); RemoveFromPhysics();
} }
@ -4513,38 +4514,37 @@ namespace OpenSim.Region.Framework.Scenes
{ {
AddToPhysics(UsePhysics, SetPhantom, building, false); AddToPhysics(UsePhysics, SetPhantom, building, false);
pa = PhysActor; pa = PhysActor;
/* /*
if (pa != null) if (pa != null)
{ {
if ( if (
// ((AggregateScriptEvents & scriptEvents.collision) != 0) || // ((AggregateScriptEvents & scriptEvents.collision) != 0) ||
// ((AggregateScriptEvents & scriptEvents.collision_end) != 0) || // ((AggregateScriptEvents & scriptEvents.collision_end) != 0) ||
// ((AggregateScriptEvents & scriptEvents.collision_start) != 0) || // ((AggregateScriptEvents & scriptEvents.collision_start) != 0) ||
// ((AggregateScriptEvents & scriptEvents.land_collision_start) != 0) || // ((AggregateScriptEvents & scriptEvents.land_collision_start) != 0) ||
// ((AggregateScriptEvents & scriptEvents.land_collision) != 0) || // ((AggregateScriptEvents & scriptEvents.land_collision) != 0) ||
// ((AggregateScriptEvents & scriptEvents.land_collision_end) != 0) || // ((AggregateScriptEvents & scriptEvents.land_collision_end) != 0) ||
((AggregateScriptEvents & PhysicsNeededSubsEvents) != 0) || ((AggregateScriptEvents & PhysicsNeededSubsEvents) != 0) ||
((ParentGroup.RootPart.AggregateScriptEvents & PhysicsNeededSubsEvents) != 0) || ((ParentGroup.RootPart.AggregateScriptEvents & PhysicsNeededSubsEvents) != 0) ||
(CollisionSound != UUID.Zero) (CollisionSound != UUID.Zero)
) )
{ {
pa.OnCollisionUpdate += PhysicsCollision; pa.OnCollisionUpdate += PhysicsCollision;
pa.SubscribeEvents(1000); pa.SubscribeEvents(1000);
} }
} }
*/ */
} }
else // it already has a physical representation else // it already has a physical representation
{ {
DoPhysicsPropertyUpdate(UsePhysics, false); // Update physical status. DoPhysicsPropertyUpdate(UsePhysics, false); // Update physical status.
/* moved into DoPhysicsPropertyUpdate /* moved into DoPhysicsPropertyUpdate
if(VolumeDetectActive) if(VolumeDetectActive)
pa.SetVolumeDetect(1); pa.SetVolumeDetect(1);
else else
pa.SetVolumeDetect(0); pa.SetVolumeDetect(0);
*/ */
if (pa.Building != building) if (pa.Building != building)
pa.Building = building; pa.Building = building;