variations..
parent
5f1cb6542d
commit
114144407b
|
@ -1920,7 +1920,6 @@ namespace OpenSim.Region.Framework.Scenes
|
|||
SendFullUpdateToClient(p.ControllingClient); // resend our data by updates path
|
||||
});
|
||||
}
|
||||
|
||||
sog.RootPart.ParentGroup.CreateScriptInstances(0, false, m_scene.DefaultScriptEngine, GetStateSource());
|
||||
sog.ResumeScripts();
|
||||
}
|
||||
|
@ -3542,14 +3541,12 @@ namespace OpenSim.Region.Framework.Scenes
|
|||
}
|
||||
|
||||
SendOtherAgentsAvatarFullToMe();
|
||||
|
||||
EntityBase[] entities = Scene.Entities.GetEntities();
|
||||
foreach (EntityBase e in entities)
|
||||
{
|
||||
if (e != null && e is SceneObjectGroup)
|
||||
((SceneObjectGroup)e).SendFullUpdateToClient(ControllingClient);
|
||||
}
|
||||
|
||||
});
|
||||
}
|
||||
|
||||
|
@ -4754,32 +4751,6 @@ namespace OpenSim.Region.Framework.Scenes
|
|||
}
|
||||
}
|
||||
|
||||
// send attachments to a client without filters except for huds
|
||||
// for now they are checked in several places down the line...
|
||||
// kills all parts before sending
|
||||
public void SendAttachmentsToAgentNFPK(ScenePresence p)
|
||||
{
|
||||
lock (m_attachments)
|
||||
{
|
||||
List<uint> pk = new List<uint>();
|
||||
foreach (SceneObjectGroup sog in m_attachments)
|
||||
{
|
||||
foreach (SceneObjectPart part in sog.Parts)
|
||||
pk.Add(part.LocalId);
|
||||
}
|
||||
|
||||
p.ControllingClient.SendKillObject(pk);
|
||||
|
||||
foreach (SceneObjectGroup sog in m_attachments)
|
||||
{
|
||||
if (p == this || !sog.HasPrivateAttachmentPoint)
|
||||
sog.SendFullUpdateToClient(p.ControllingClient);
|
||||
}
|
||||
SendFullUpdateToClient(p.ControllingClient); // resend our data by updates path
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
public void SendAttachmentScheduleUpdate(SceneObjectGroup sog)
|
||||
{
|
||||
if (IsChildAgent)
|
||||
|
@ -4796,9 +4767,27 @@ namespace OpenSim.Region.Framework.Scenes
|
|||
|
||||
SceneObjectPart[] parts = sog.Parts;
|
||||
|
||||
SendFullUpdateToClient(p.ControllingClient);
|
||||
|
||||
SceneObjectPart rootpart = sog.RootPart;
|
||||
if (rootpart.UpdateFlag == UpdateRequired.TERSE)
|
||||
{
|
||||
p.ControllingClient.SendEntityUpdate(rootpart,
|
||||
PrimUpdateFlags.Position | PrimUpdateFlags.Rotation | PrimUpdateFlags.Velocity
|
||||
| PrimUpdateFlags.Acceleration | PrimUpdateFlags.AngularVelocity);
|
||||
rootpart.UpdateFlag = 0;
|
||||
}
|
||||
else if (rootpart.UpdateFlag == UpdateRequired.FULL)
|
||||
{
|
||||
p.ControllingClient.SendEntityUpdate(rootpart, PrimUpdateFlags.FullUpdate);
|
||||
rootpart.UpdateFlag = 0;
|
||||
}
|
||||
|
||||
for (int i = 0; i < parts.Length; i++)
|
||||
{
|
||||
SceneObjectPart part = parts[i];
|
||||
if (part == rootpart)
|
||||
continue;
|
||||
if (part.UpdateFlag == UpdateRequired.TERSE)
|
||||
{
|
||||
p.ControllingClient.SendEntityUpdate(part,
|
||||
|
@ -5655,183 +5644,56 @@ namespace OpenSim.Region.Framework.Scenes
|
|||
|
||||
private void parcelGodCheck(UUID currentParcelID, bool isGod)
|
||||
{
|
||||
List<ScenePresence> allpresences = null;
|
||||
List<ScenePresence> allpresences = m_scene.GetScenePresences();
|
||||
|
||||
|
||||
allpresences = m_scene.GetScenePresences();
|
||||
|
||||
if (isGod)
|
||||
foreach (ScenePresence p in allpresences)
|
||||
{
|
||||
List<ScenePresence> viewsToSendme = new List<ScenePresence>();
|
||||
if (p.IsDeleted || p.IsChildAgent || p == this || p.ControllingClient == null || !p.ControllingClient.IsActive)
|
||||
continue;
|
||||
|
||||
foreach (ScenePresence p in allpresences)
|
||||
if (p.ParcelHideThisAvatar && p.currentParcelUUID != currentParcelID)
|
||||
{
|
||||
if (p.IsDeleted || p == this || p.ControllingClient == null || !p.ControllingClient.IsActive)
|
||||
continue;
|
||||
|
||||
if (p.ParcelHideThisAvatar && p.currentParcelUUID != currentParcelID)
|
||||
{
|
||||
viewsToSendme.Add(p); // i see them
|
||||
}
|
||||
}
|
||||
|
||||
if (viewsToSendme.Count > 0)
|
||||
{
|
||||
foreach (ScenePresence p in viewsToSendme)
|
||||
{
|
||||
if (p.IsChildAgent)
|
||||
continue;
|
||||
|
||||
p.SendAvatarDataToAgentNF(this);
|
||||
p.SendAppearanceToAgent(this);
|
||||
if (p.Animator != null)
|
||||
p.Animator.SendAnimPackToClient(ControllingClient);
|
||||
p.SendAttachmentsToAgentNF(this);
|
||||
}
|
||||
if (isGod)
|
||||
p.SendViewTo(this);
|
||||
else
|
||||
p.SendKillTo(this);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
List<ScenePresence> killsToSendme = new List<ScenePresence>();
|
||||
|
||||
foreach (ScenePresence p in allpresences)
|
||||
{
|
||||
if (p.IsDeleted || p == this || p.ControllingClient == null || !p.ControllingClient.IsActive)
|
||||
continue;
|
||||
|
||||
if (p.ParcelHideThisAvatar && p.currentParcelUUID != currentParcelID)
|
||||
{
|
||||
killsToSendme.Add(p);
|
||||
}
|
||||
}
|
||||
|
||||
if (killsToSendme.Count > 0)
|
||||
{
|
||||
foreach (ScenePresence p in killsToSendme)
|
||||
{
|
||||
m_log.Debug("[AVATAR]: killMe: " + Lastname + " " + p.Lastname);
|
||||
try { ControllingClient.SendKillObject(new List<uint> { p.LocalId }); }
|
||||
catch (NullReferenceException) { }
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
private void ParcelLoginCheck(UUID currentParcelID)
|
||||
{
|
||||
List<ScenePresence> killsToSendto = new List<ScenePresence>();
|
||||
List<ScenePresence> killsToSendme = new List<ScenePresence>();
|
||||
List<ScenePresence> viewsToSendto = new List<ScenePresence>();
|
||||
List<ScenePresence> viewsToSendme = new List<ScenePresence>();
|
||||
List<ScenePresence> allpresences = null;
|
||||
|
||||
allpresences = m_scene.GetScenePresences();
|
||||
List<ScenePresence> allpresences = m_scene.GetScenePresences();
|
||||
|
||||
foreach (ScenePresence p in allpresences)
|
||||
{
|
||||
if (p.IsDeleted || p == this || p.ControllingClient == null || !p.ControllingClient.IsActive)
|
||||
continue;
|
||||
|
||||
if (currentParcelID != p.currentParcelUUID)
|
||||
if (currentParcelID != p.currentParcelUUID && p.GodLevel < 200)
|
||||
{
|
||||
if (p.GodLevel < 200)
|
||||
killsToSendto.Add(p);
|
||||
// if (GodLevel < 200 && p.ParcelHideThisAvatar)
|
||||
// killsToSendme.Add(p.LocalId);
|
||||
}
|
||||
else
|
||||
{
|
||||
viewsToSendto.Add(p);
|
||||
viewsToSendme.Add(p);
|
||||
}
|
||||
}
|
||||
allpresences.Clear();
|
||||
|
||||
// send the things
|
||||
// kill main avatar object
|
||||
if (killsToSendto.Count > 0 && PresenceType != PresenceType.Npc)
|
||||
{
|
||||
foreach (ScenePresence p in killsToSendto)
|
||||
{
|
||||
m_log.Debug("[AVATAR]: killTo: " + Lastname + " " + p.Lastname);
|
||||
SendKillTo(p);
|
||||
// try { p.ControllingClient.SendKillObject(new List<uint> { LocalId }); }
|
||||
// catch (NullReferenceException) { }
|
||||
}
|
||||
}
|
||||
|
||||
if (killsToSendme.Count > 0)
|
||||
{
|
||||
m_log.Debug("[AVATAR]: killMe: " + Lastname + " " + killsToSendme.Count.ToString());
|
||||
foreach (ScenePresence p in killsToSendme)
|
||||
{
|
||||
SendKillTo(this);
|
||||
}
|
||||
|
||||
}
|
||||
/*
|
||||
if (viewsToSendto.Count > 0 && PresenceType != PresenceType.Npc)
|
||||
{
|
||||
foreach (ScenePresence p in viewsToSendto)
|
||||
{
|
||||
m_log.Debug("[AVATAR]: viewTo: " + Lastname + " " + p.Lastname);
|
||||
p.ControllingClient.SendAvatarDataImmediate(this);
|
||||
SendAppearanceToAgent(p);
|
||||
SendAttachmentsToClient(p.ControllingClient);
|
||||
if (Animator != null)
|
||||
Animator.SendAnimPackToClient(p.ControllingClient);
|
||||
}
|
||||
}
|
||||
|
||||
if (viewsToSendme.Count > 0)
|
||||
{
|
||||
foreach (ScenePresence p in viewsToSendme)
|
||||
{
|
||||
m_log.Debug("[AVATAR]: viewMe: " + Lastname + "<-" + p.Lastname);
|
||||
if (p.IsChildAgent)
|
||||
continue;
|
||||
ControllingClient.SendAvatarDataImmediate(p);
|
||||
p.SendAppearanceToAgent(this);
|
||||
p.SendAttachmentsToClient(ControllingClient);
|
||||
if (p.Animator != null)
|
||||
p.Animator.SendAnimPackToClient(ControllingClient);
|
||||
}
|
||||
}
|
||||
*/
|
||||
}
|
||||
|
||||
|
||||
public void parcelRegionCross()
|
||||
{
|
||||
if (!ParcelHideThisAvatar || GodLevel >= 200)
|
||||
if (!ParcelHideThisAvatar || IsChildAgent || GodLevel >= 200)
|
||||
return;
|
||||
|
||||
List<ScenePresence> allpresences = null;
|
||||
allpresences = m_scene.GetScenePresences();
|
||||
|
||||
List<ScenePresence> killsToSendme = new List<ScenePresence>();
|
||||
|
||||
foreach (ScenePresence p in allpresences)
|
||||
{
|
||||
if (p.IsDeleted || p == this || p.ControllingClient == null || !p.ControllingClient.IsActive)
|
||||
if (p.IsDeleted || p == this || p.IsChildAgent || p.ControllingClient == null || !p.ControllingClient.IsActive)
|
||||
continue;
|
||||
|
||||
if (p.currentParcelUUID == m_currentParcelUUID)
|
||||
{
|
||||
killsToSendme.Add(p);
|
||||
}
|
||||
}
|
||||
|
||||
if (killsToSendme.Count > 0)
|
||||
{
|
||||
foreach (ScenePresence p in killsToSendme)
|
||||
p.SendKillTo(this);
|
||||
// try
|
||||
// {
|
||||
// ControllingClient.SendKillObject(killsToSendme);
|
||||
// }
|
||||
// catch (NullReferenceException) { }
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -5844,10 +5706,7 @@ namespace OpenSim.Region.Framework.Scenes
|
|||
List<ScenePresence> viewsToSendme = new List<ScenePresence>();
|
||||
List<ScenePresence> allpresences = null;
|
||||
|
||||
if (IsInTransit)
|
||||
return;
|
||||
|
||||
if (IsChildAgent)
|
||||
if (IsInTransit || IsChildAgent)
|
||||
return;
|
||||
|
||||
if (check)
|
||||
|
@ -5973,17 +5832,13 @@ namespace OpenSim.Region.Framework.Scenes
|
|||
}
|
||||
|
||||
// send the things
|
||||
// kill main avatar object
|
||||
if (killsToSendto.Count > 0 && PresenceType != PresenceType.Npc)
|
||||
|
||||
if (killsToSendto.Count > 0)
|
||||
{
|
||||
foreach (ScenePresence p in killsToSendto)
|
||||
{
|
||||
|
||||
m_log.Debug("[AVATAR]: killTo: " + Lastname + " " + p.Lastname);
|
||||
|
||||
SendKillTo(p);
|
||||
// try { p.ControllingClient.SendKillObject(new List<uint> { LocalId }); }
|
||||
// catch (NullReferenceException) { }
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -5992,23 +5847,17 @@ namespace OpenSim.Region.Framework.Scenes
|
|||
m_log.Debug("[AVATAR]: killtoMe: " + Lastname + " " + killsToSendme.Count.ToString());
|
||||
|
||||
foreach (ScenePresence p in killsToSendme)
|
||||
try
|
||||
{
|
||||
m_log.Debug("[AVATAR]: killToMe: " + Lastname + " " + p.Lastname);
|
||||
p.SendKillTo(this);
|
||||
}
|
||||
catch (NullReferenceException) { }
|
||||
|
||||
}
|
||||
|
||||
if (viewsToSendto.Count > 0 && PresenceType != PresenceType.Npc)
|
||||
if (viewsToSendto.Count > 0)
|
||||
{
|
||||
foreach (ScenePresence p in viewsToSendto)
|
||||
{
|
||||
SendAvatarDataToAgentNF(p);
|
||||
SendAppearanceToAgent(p);
|
||||
if (Animator != null)
|
||||
Animator.SendAnimPackToClient(p.ControllingClient);
|
||||
SendAttachmentsToAgentNF(p);
|
||||
SendViewTo(p);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -6019,12 +5868,7 @@ namespace OpenSim.Region.Framework.Scenes
|
|||
if (p.IsChildAgent)
|
||||
continue;
|
||||
// m_log.Debug("[AVATAR]: viewMe: " + Lastname + "<-" + p.Lastname);
|
||||
|
||||
p.SendAvatarDataToAgentNF(this);
|
||||
p.SendAppearanceToAgent(this);
|
||||
if (p.Animator != null)
|
||||
p.Animator.SendAnimPackToClient(ControllingClient);
|
||||
p.SendAttachmentsToAgentNF(this);
|
||||
p.SendViewTo(this);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -6035,5 +5879,14 @@ namespace OpenSim.Region.Framework.Scenes
|
|||
p.ControllingClient.SendPartFullUpdate(sog.RootPart, LocalId + 1);
|
||||
p.ControllingClient.SendKillObject(new List<uint> { LocalId });
|
||||
}
|
||||
|
||||
public void SendViewTo(ScenePresence p)
|
||||
{
|
||||
SendAvatarDataToAgentNF(p);
|
||||
SendAppearanceToAgent(p);
|
||||
if (Animator != null)
|
||||
Animator.SendAnimPackToClient(p.ControllingClient);
|
||||
SendAttachmentsToAgentNF(p);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue