public void ScheduleUpdate(ObjectUpdateInfo info) { foreach (Circuit circ in m_Circuits.Values) { var acirc = circ as AgentCircuit; acirc?.ScheduleUpdate(info); } }
public override void ScheduleUpdate(ObjectUpdateInfo info, UUID fromSceneID) { AgentCircuit circuit; if (Circuits.TryGetValue(fromSceneID, out circuit)) { circuit.ScheduleUpdate(info); } }
public void ScheduleUpdate(ObjectUpdateInfo objinfo, bool isPhysicsOrigin = false) { foreach (IAgent a in Agents) { a.ScheduleUpdate(objinfo, ID); } foreach (ISceneListener l in SceneListeners) { if (isPhysicsOrigin && l.IgnorePhysicsLocationUpdates) { continue; } l.ScheduleUpdate(objinfo, ID); } }
protected override void OnUpdate(ObjectUpdateInfo info) { if (info.IsKilled) { m_Primitives.Remove(info.ID); m_Objects.Remove(info.ID); } else { m_Objects.Remove(info.ID); m_Primitives[info.ID] = GenerateUpdateObjectPart(info.Part); m_Objects[info.ID] = GenerateUpdateObjectGroup(info.Part.ObjectGroup); foreach (ObjectPartInventoryItem item in info.Part.Inventory.Values) { OnUpdate(item.UpdateInfo); } } }
protected override void OnUpdate(ObjectUpdateInfo info) { if (info.IsKilled) { if (info.Part.ObjectGroup.RootPart == info.Part) { m_GroupUpdates.Remove(info.ID); m_GroupDeletions[info.ID] = true; } m_PrimUpdates.Remove(info.ID); m_PrimDeletions[info.ID] = true; } else { bool havePrimSerial = m_PrimSerials.Contains(info.ID); if (havePrimSerial && m_PrimSerials[info.ID] == info.Part.SerialNumber) { /* ignore update */ } else { if (!havePrimSerial) { foreach (ObjectPartInventoryItem item in info.Part.Inventory.Values) { ObjectInventoryUpdateInfo invinfo = item.UpdateInfo; m_PrimItemUpdates[new PrimKey(invinfo)] = invinfo; } } if (info.Part.ObjectGroup.RootPart != info.Part) { m_GroupDeletions[info.ID] = true; } Dictionary <string, object> data = GenerateUpdateObjectPart(info.Part); data["RegionID"] = m_RegionID; m_PrimDeletions.Remove(info.ID); m_PrimUpdates[info.ID] = data; ObjectGroup grp = info.Part.ObjectGroup; m_GroupDeletions.Remove(grp.ID); m_GroupUpdates[grp.ID] = GenerateUpdateObjectGroup(grp); } } }
public abstract void ScheduleUpdate(ObjectUpdateInfo info, UUID fromSceneID);
public override void ScheduleUpdate(ObjectUpdateInfo info, UUID fromSceneID) { /* ignored */ }
public ForceObjectUpdateInfo(ObjectUpdateInfo updateInfo) : base(updateInfo.Part) { }
public void ScheduleUpdate(ObjectUpdateInfo info, UUID fromSceneID) { m_StorageMainRequestQueue.Enqueue(info); }
private void StorageMainThread() { Thread.CurrentThread.Name = "Storage Main Thread: " + m_RegionID.ToString(); OnStart(); int nummessagespending = 0; m_Log.InfoFormat("Object storage thread for region {0} started", m_RegionID); while (!m_StopStorageThread || m_StorageMainRequestQueue.Count != 0 || HasPendingData) { IUpdateInfo req; try { req = m_StorageMainRequestQueue.Dequeue(1000); } catch { try { OnIdle(); nummessagespending = 0; } catch (Exception e) { m_Log.Error("Exception encountered at OnIdle", e); } continue; } if (nummessagespending > 2000) { try { OnIdle(); nummessagespending = 0; } catch (Exception e) { m_Log.Error("Exception encountered at OnIdle", e); } } ObjectUpdateInfo oInfo = req as ObjectUpdateInfo; if (oInfo != null) { try { OnUpdate(oInfo); ++nummessagespending; } catch (Exception e) { m_Log.Error("Inventory item storage encountered exception at " + m_RegionID.ToString(), e); } continue; } ObjectInventoryUpdateInfo iInfo = req as ObjectInventoryUpdateInfo; if (iInfo != null) { try { OnUpdate(iInfo); ++nummessagespending; } catch (Exception e) { m_Log.Error("Inventory storage encountered exception at " + m_RegionID.ToString(), e); } } } try { OnIdle(); } catch (Exception e) { m_Log.Error("OnIdle threw an exception after leaving loop", e); } OnStop(); }
protected abstract void OnUpdate(ObjectUpdateInfo info);