public void aggregateScriptEvents()
{
PrimFlags objectflagupdate = (PrimFlags) RootPart.GetEffectiveObjectFlags();
scriptEvents aggregateScriptEvents = 0;
foreach (SceneObjectPart part in m_partsList.Where(part => part != null))
{
if (part != RootPart)
part.Flags = objectflagupdate;
aggregateScriptEvents |= part.AggregateScriptEvents;
}
m_scriptListens_atTarget = ((aggregateScriptEvents & scriptEvents.at_target) != 0);
m_scriptListens_notAtTarget = ((aggregateScriptEvents & scriptEvents.not_at_target) != 0);
if (!m_scriptListens_atTarget && !m_scriptListens_notAtTarget)
{
lock (m_targets)
m_targets.Clear();
RemoveGroupTarget(this);
}
m_scriptListens_atRotTarget = ((aggregateScriptEvents & scriptEvents.at_rot_target) != 0);
m_scriptListens_notAtRotTarget = ((aggregateScriptEvents & scriptEvents.not_at_rot_target) != 0);
if (!m_scriptListens_atRotTarget && !m_scriptListens_notAtRotTarget)
{
lock (m_rotTargets)
m_rotTargets.Clear();
RemoveGroupTarget(this);
}
ScheduleGroupUpdate(PrimUpdateFlags.PrimFlags);
}