refactor: simplify SOP.AttachedAvatar into SOG.AttachedAvatar
This does a tiny bit to reduce code complexity, memory requirement and the cpu time of pointlessly setting this field to the same value in every SOPbulletsim
parent
5f3ffc195f
commit
15a514fcbc
|
@ -456,7 +456,7 @@ namespace OpenSim.Region.CoreModules.Avatar.Attachments
|
||||||
if (so == null)
|
if (so == null)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
if (so.RootPart.AttachedAvatar != remoteClient.AgentId)
|
if (so.AttachedAvatar != remoteClient.AgentId)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
UUID inventoryID = so.GetFromItemID();
|
UUID inventoryID = so.GetFromItemID();
|
||||||
|
@ -498,7 +498,7 @@ namespace OpenSim.Region.CoreModules.Avatar.Attachments
|
||||||
|
|
||||||
rootPart.FromItemID = UUID.Zero;
|
rootPart.FromItemID = UUID.Zero;
|
||||||
so.AbsolutePosition = sp.AbsolutePosition;
|
so.AbsolutePosition = sp.AbsolutePosition;
|
||||||
so.ForEachPart(part => part.AttachedAvatar = UUID.Zero);
|
so.AttachedAvatar = UUID.Zero;
|
||||||
rootPart.SetParentLocalId(0);
|
rootPart.SetParentLocalId(0);
|
||||||
so.ClearPartAttachmentData();
|
so.ClearPartAttachmentData();
|
||||||
rootPart.ApplyPhysics(rootPart.GetEffectiveObjectFlags(), rootPart.VolumeDetectActive, m_scene.m_physicalPrim);
|
rootPart.ApplyPhysics(rootPart.GetEffectiveObjectFlags(), rootPart.VolumeDetectActive, m_scene.m_physicalPrim);
|
||||||
|
@ -534,11 +534,11 @@ namespace OpenSim.Region.CoreModules.Avatar.Attachments
|
||||||
sp.RemoveAttachment(group);
|
sp.RemoveAttachment(group);
|
||||||
|
|
||||||
// Prepare sog for storage
|
// Prepare sog for storage
|
||||||
|
group.AttachedAvatar = UUID.Zero;
|
||||||
|
|
||||||
group.ForEachPart(
|
group.ForEachPart(
|
||||||
delegate(SceneObjectPart part)
|
delegate(SceneObjectPart part)
|
||||||
{
|
{
|
||||||
part.AttachedAvatar = UUID.Zero;
|
|
||||||
|
|
||||||
// If there are any scripts,
|
// If there are any scripts,
|
||||||
// then always trigger a new object and state persistence in UpdateKnownItem()
|
// then always trigger a new object and state persistence in UpdateKnownItem()
|
||||||
if (part.Inventory.ContainsScripts())
|
if (part.Inventory.ContainsScripts())
|
||||||
|
@ -656,12 +656,7 @@ namespace OpenSim.Region.CoreModules.Avatar.Attachments
|
||||||
m_scene.DeleteFromStorage(so.UUID);
|
m_scene.DeleteFromStorage(so.UUID);
|
||||||
m_scene.EventManager.TriggerParcelPrimCountTainted();
|
m_scene.EventManager.TriggerParcelPrimCountTainted();
|
||||||
|
|
||||||
so.RootPart.AttachedAvatar = avatar.UUID;
|
so.AttachedAvatar = avatar.UUID;
|
||||||
|
|
||||||
//Anakin Lohner bug #3839
|
|
||||||
SceneObjectPart[] parts = so.Parts;
|
|
||||||
for (int i = 0; i < parts.Length; i++)
|
|
||||||
parts[i].AttachedAvatar = avatar.UUID;
|
|
||||||
|
|
||||||
if (so.RootPart.PhysActor != null)
|
if (so.RootPart.PhysActor != null)
|
||||||
{
|
{
|
||||||
|
|
|
@ -116,14 +116,13 @@ namespace OpenSim.Region.Framework.Scenes
|
||||||
return priority;
|
return priority;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
private uint GetPriorityByTime(IClientAPI client, ISceneEntity entity)
|
private uint GetPriorityByTime(IClientAPI client, ISceneEntity entity)
|
||||||
{
|
{
|
||||||
// And anything attached to this avatar gets top priority as well
|
// And anything attached to this avatar gets top priority as well
|
||||||
if (entity is SceneObjectPart)
|
if (entity is SceneObjectPart)
|
||||||
{
|
{
|
||||||
SceneObjectPart sop = (SceneObjectPart)entity;
|
SceneObjectPart sop = (SceneObjectPart)entity;
|
||||||
if (sop.ParentGroup.RootPart.IsAttachment && client.AgentId == sop.ParentGroup.RootPart.AttachedAvatar)
|
if (sop.ParentGroup.RootPart.IsAttachment && client.AgentId == sop.ParentGroup.AttachedAvatar)
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -136,7 +135,7 @@ namespace OpenSim.Region.Framework.Scenes
|
||||||
if (entity is SceneObjectPart)
|
if (entity is SceneObjectPart)
|
||||||
{
|
{
|
||||||
SceneObjectPart sop = (SceneObjectPart)entity;
|
SceneObjectPart sop = (SceneObjectPart)entity;
|
||||||
if (sop.ParentGroup.RootPart.IsAttachment && client.AgentId == sop.ParentGroup.RootPart.AttachedAvatar)
|
if (sop.ParentGroup.RootPart.IsAttachment && client.AgentId == sop.ParentGroup.AttachedAvatar)
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -149,7 +148,7 @@ namespace OpenSim.Region.Framework.Scenes
|
||||||
if (entity is SceneObjectPart)
|
if (entity is SceneObjectPart)
|
||||||
{
|
{
|
||||||
SceneObjectPart sop = (SceneObjectPart)entity;
|
SceneObjectPart sop = (SceneObjectPart)entity;
|
||||||
if (sop.ParentGroup.RootPart.IsAttachment && client.AgentId == sop.ParentGroup.RootPart.AttachedAvatar)
|
if (sop.ParentGroup.RootPart.IsAttachment && client.AgentId == sop.ParentGroup.AttachedAvatar)
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -168,6 +168,14 @@ namespace OpenSim.Region.Framework.Scenes
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// The avatar to which this scene object is attached.
|
||||||
|
/// </summary>
|
||||||
|
/// <remarks>
|
||||||
|
/// If we're not attached to an avatar then this is UUID.Zero
|
||||||
|
/// </remarks>
|
||||||
|
public UUID AttachedAvatar { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Is this scene object phantom?
|
/// Is this scene object phantom?
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
@ -1540,7 +1548,7 @@ namespace OpenSim.Region.Framework.Scenes
|
||||||
{
|
{
|
||||||
if (IsAttachment)
|
if (IsAttachment)
|
||||||
{
|
{
|
||||||
ScenePresence avatar = m_scene.GetScenePresence(rootpart.AttachedAvatar);
|
ScenePresence avatar = m_scene.GetScenePresence(AttachedAvatar);
|
||||||
if (avatar != null)
|
if (avatar != null)
|
||||||
{
|
{
|
||||||
avatar.PushForce(impulse);
|
avatar.PushForce(impulse);
|
||||||
|
@ -1622,7 +1630,7 @@ namespace OpenSim.Region.Framework.Scenes
|
||||||
{
|
{
|
||||||
if (IsAttachment)
|
if (IsAttachment)
|
||||||
{
|
{
|
||||||
ScenePresence avatar = m_scene.GetScenePresence(rootpart.AttachedAvatar);
|
ScenePresence avatar = m_scene.GetScenePresence(AttachedAvatar);
|
||||||
if (avatar != null)
|
if (avatar != null)
|
||||||
{
|
{
|
||||||
avatar.MoveToTarget(target, false);
|
avatar.MoveToTarget(target, false);
|
||||||
|
|
|
@ -221,9 +221,6 @@ namespace OpenSim.Region.Framework.Scenes
|
||||||
public scriptEvents AggregateScriptEvents;
|
public scriptEvents AggregateScriptEvents;
|
||||||
|
|
||||||
|
|
||||||
public UUID AttachedAvatar;
|
|
||||||
|
|
||||||
|
|
||||||
public Vector3 AttachedPos;
|
public Vector3 AttachedPos;
|
||||||
|
|
||||||
|
|
||||||
|
@ -728,7 +725,7 @@ namespace OpenSim.Region.Framework.Scenes
|
||||||
|
|
||||||
if (IsAttachment)
|
if (IsAttachment)
|
||||||
{
|
{
|
||||||
ScenePresence sp = m_parentGroup.Scene.GetScenePresence(AttachedAvatar);
|
ScenePresence sp = m_parentGroup.Scene.GetScenePresence(ParentGroup.AttachedAvatar);
|
||||||
if (sp != null)
|
if (sp != null)
|
||||||
return sp.AbsolutePosition;
|
return sp.AbsolutePosition;
|
||||||
}
|
}
|
||||||
|
|
|
@ -2099,7 +2099,7 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api
|
||||||
{
|
{
|
||||||
if (part.ParentGroup.RootPart.AttachmentPoint != 0)
|
if (part.ParentGroup.RootPart.AttachmentPoint != 0)
|
||||||
{
|
{
|
||||||
ScenePresence avatar = World.GetScenePresence(part.AttachedAvatar);
|
ScenePresence avatar = World.GetScenePresence(part.ParentGroup.AttachedAvatar);
|
||||||
if (avatar != null)
|
if (avatar != null)
|
||||||
{
|
{
|
||||||
if ((avatar.AgentControlFlags & (uint)AgentManager.ControlFlags.AGENT_CONTROL_MOUSELOOK) != 0)
|
if ((avatar.AgentControlFlags & (uint)AgentManager.ControlFlags.AGENT_CONTROL_MOUSELOOK) != 0)
|
||||||
|
@ -2243,7 +2243,7 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api
|
||||||
|
|
||||||
if (m_host.IsAttachment)
|
if (m_host.IsAttachment)
|
||||||
{
|
{
|
||||||
ScenePresence avatar = m_host.ParentGroup.Scene.GetScenePresence(m_host.AttachedAvatar);
|
ScenePresence avatar = m_host.ParentGroup.Scene.GetScenePresence(m_host.ParentGroup.AttachedAvatar);
|
||||||
vel = avatar.Velocity;
|
vel = avatar.Velocity;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
@ -3388,7 +3388,7 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api
|
||||||
|
|
||||||
m_host.AddScriptLPS(1);
|
m_host.AddScriptLPS(1);
|
||||||
|
|
||||||
if (m_host.ParentGroup.IsAttachment && (UUID)agent == m_host.ParentGroup.RootPart.AttachedAvatar)
|
if (m_host.ParentGroup.IsAttachment && (UUID)agent == m_host.ParentGroup.AttachedAvatar)
|
||||||
{
|
{
|
||||||
// When attached, certain permissions are implicit if requested from owner
|
// When attached, certain permissions are implicit if requested from owner
|
||||||
int implicitPerms = ScriptBaseClass.PERMISSION_TAKE_CONTROLS |
|
int implicitPerms = ScriptBaseClass.PERMISSION_TAKE_CONTROLS |
|
||||||
|
@ -7460,7 +7460,7 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api
|
||||||
Quaternion q;
|
Quaternion q;
|
||||||
if (m_host.ParentGroup.RootPart.AttachmentPoint != 0)
|
if (m_host.ParentGroup.RootPart.AttachmentPoint != 0)
|
||||||
{
|
{
|
||||||
ScenePresence avatar = World.GetScenePresence(m_host.AttachedAvatar);
|
ScenePresence avatar = World.GetScenePresence(m_host.ParentGroup.AttachedAvatar);
|
||||||
if (avatar != null)
|
if (avatar != null)
|
||||||
if ((avatar.AgentControlFlags & (uint)AgentManager.ControlFlags.AGENT_CONTROL_MOUSELOOK) != 0)
|
if ((avatar.AgentControlFlags & (uint)AgentManager.ControlFlags.AGENT_CONTROL_MOUSELOOK) != 0)
|
||||||
q = avatar.CameraRotation; // Mouselook
|
q = avatar.CameraRotation; // Mouselook
|
||||||
|
|
|
@ -308,7 +308,7 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api.Plugins
|
||||||
// In attachments, the sensor cone always orients with the
|
// In attachments, the sensor cone always orients with the
|
||||||
// avatar rotation. This may include a nonzero elevation if
|
// avatar rotation. This may include a nonzero elevation if
|
||||||
// in mouselook.
|
// in mouselook.
|
||||||
ScenePresence avatar = m_CmdManager.m_ScriptEngine.World.GetScenePresence(SensePoint.ParentGroup.RootPart.AttachedAvatar);
|
ScenePresence avatar = m_CmdManager.m_ScriptEngine.World.GetScenePresence(SensePoint.ParentGroup.AttachedAvatar);
|
||||||
q = avatar.Rotation;
|
q = avatar.Rotation;
|
||||||
}
|
}
|
||||||
LSL_Types.Quaternion r = new LSL_Types.Quaternion(q.X, q.Y, q.Z, q.W);
|
LSL_Types.Quaternion r = new LSL_Types.Quaternion(q.X, q.Y, q.Z, q.W);
|
||||||
|
@ -428,7 +428,7 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api.Plugins
|
||||||
// In attachments, the sensor cone always orients with the
|
// In attachments, the sensor cone always orients with the
|
||||||
// avatar rotation. This may include a nonzero elevation if
|
// avatar rotation. This may include a nonzero elevation if
|
||||||
// in mouselook.
|
// in mouselook.
|
||||||
ScenePresence avatar = m_CmdManager.m_ScriptEngine.World.GetScenePresence(SensePoint.ParentGroup.RootPart.AttachedAvatar);
|
ScenePresence avatar = m_CmdManager.m_ScriptEngine.World.GetScenePresence(SensePoint.ParentGroup.AttachedAvatar);
|
||||||
q = avatar.Rotation;
|
q = avatar.Rotation;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -233,7 +233,7 @@ namespace OpenSim.Region.ScriptEngine.Shared.Instance
|
||||||
m_MaxScriptQueue = maxScriptQueue;
|
m_MaxScriptQueue = maxScriptQueue;
|
||||||
m_stateSource = stateSource;
|
m_stateSource = stateSource;
|
||||||
m_postOnRez = postOnRez;
|
m_postOnRez = postOnRez;
|
||||||
m_AttachedAvatar = part.AttachedAvatar;
|
m_AttachedAvatar = part.ParentGroup.AttachedAvatar;
|
||||||
m_RegionID = part.ParentGroup.Scene.RegionInfo.RegionID;
|
m_RegionID = part.ParentGroup.Scene.RegionInfo.RegionID;
|
||||||
|
|
||||||
if (part != null)
|
if (part != null)
|
||||||
|
|
Loading…
Reference in New Issue