tell scripts about positions changes after they are actually changed

avinationmerge
UbitUmarov 2014-07-22 14:50:17 +01:00
parent 5269511339
commit cf132430ae
1 changed files with 18 additions and 10 deletions

View File

@ -687,22 +687,30 @@ namespace OpenSim.Region.Framework.Scenes
}
}
// Restuff the new GroupPosition into each SOP of the linkset.
// This has the affect of resetting and tainting the physics actors.
SceneObjectPart[] parts = m_parts.GetArray();
bool triggerScriptEvent = m_rootPart.GroupPosition != val;
if (m_dupeInProgress)
if (m_dupeInProgress || IsDeleted)
triggerScriptEvent = false;
m_rootPart.GroupPosition = val;
if (triggerScriptEvent)
m_rootPart.TriggerScriptChangedEvent(Changed.POSITION);
// Restuff the new GroupPosition into each child SOP of the linkset.
// this is needed because physics may not have linksets but just loose SOPs in world
SceneObjectPart[] parts = m_parts.GetArray();
foreach (SceneObjectPart part in parts)
{
if (part == m_rootPart)
continue;
part.GroupPosition = val;
if (triggerScriptEvent)
if (part != m_rootPart)
part.GroupPosition = val;
}
// now that position is changed tell it to scripts
if (triggerScriptEvent)
{
foreach (SceneObjectPart part in parts)
{
part.TriggerScriptChangedEvent(Changed.POSITION);
}
}
/*