public void RegionAction(CommActionCode cac, Object p1, Object p2, Object p3, Object p4) { try { switch (cac) { case CommActionCode.RegionStateChange: // m_log.Log(LogLevel.DCOMMDETAIL, "RegionAction: RegionStateChange"); // NOTE that this goes straight to the status update routine ((RegionContextBase)p1).Update((World.UpdateCodes)p2); break; case CommActionCode.OnObjectDataBlockUpdated: // m_log.Log(LogLevel.DCOMMDETAIL, "RegionAction: OnObjectDataBlockUpdated"); Objects_ObjectDataBlockUpdate(p1, (OMV.ObjectDataBlockUpdateEventArgs)p2); break; case CommActionCode.OnObjectUpdated: // m_log.Log(LogLevel.DCOMMDETAIL, "RegionAction: OnObjectUpdated"); // Objects_OnObjectUpdated((OMV.Simulator)p1, (OMV.ObjectUpdate)p2, (ulong)p3, (ushort)p4); Objects_ObjectUpdate(p1, (OMV.PrimEventArgs)p2); break; case CommActionCode.TerseObjectUpdate: // m_log.Log(LogLevel.DCOMMDETAIL, "RegionAction: TerseObjectUpdate"); Objects_TerseObjectUpdate(p1, (OMV.TerseObjectUpdateEventArgs)p2); break; case CommActionCode.OnAttachmentUpdate: // m_log.Log(LogLevel.DCOMMDETAIL, "RegionAction: OnAttachmentUpdated"); Objects_AttachmentUpdate(p1, (OMV.PrimEventArgs)p2); break; case CommActionCode.KillObject: // m_log.Log(LogLevel.DCOMMDETAIL, "RegionAction: KillObject"); Objects_KillObject(p1, (OMV.KillObjectEventArgs)p2); break; case CommActionCode.OnAvatarUpdate: // m_log.Log(LogLevel.DCOMMDETAIL, "RegionAction: AvatarUpdate"); Objects_AvatarUpdate(p1, (OMV.AvatarUpdateEventArgs)p2); break; case CommActionCode.OnAvatarAppearance: // m_log.Log(LogLevel.DCOMMDETAIL, "RegionAction: AvatarAppearance"); Avatars_AvatarAppearance(p1, (OMV.AvatarAppearanceEventArgs)p2); break; default: break; } } catch (Exception e) { m_log.Log(LogLevel.DCOMMDETAIL, "RegionAction: FAILURE PROCESSING {0}: {1}", cac, e); } }
public ParamBlock(OMV.Simulator psim, CommActionCode pcac, Object pp1, Object pp2, Object pp3, Object pp4) { sim = psim; cac = pcac; p1 = pp1; p2 = pp2; p3 = pp3; p4 = pp4; }
/// <summary> /// Check to see if this action can happen now or has to be queued for later. /// </summary> /// <param name="rcontext"></param> /// <param name="cac"></param> /// <param name="p1"></param> /// <param name="p2"></param> /// <param name="p3"></param> /// <param name="p4"></param> /// <returns>true if the action was queued, false if the action should be done</returns> private bool QueueTilOnline(OMV.Simulator sim, CommActionCode cac, Object p1, Object p2, Object p3, Object p4) { bool ret = false; lock (m_waitTilOnline) { RegionContextBase rcontext = FindRegion(sim); if (rcontext != null && rcontext.State.isOnline) { // not queuing until later ret = false; } else { ParamBlock pb = new ParamBlock(sim, cac, p1, p2, p3, p4); m_waitTilOnline.Add(pb); // return that we queued the action ret = true; } } return ret; }
private bool QueueTilOnline(OMV.Simulator sim, CommActionCode cac, Object p1, Object p2, Object p3) { return QueueTilOnline(sim, cac, p1, p2, p3, null); }
/// <summary> /// Queue the operation to be done later. This is used for waiting for the parent of /// a prim. The type of queuing done makes it wait for a default delay before trying /// the operation so this, in theory, waits for the parent. /// </summary> /// <param name="sim"></param> /// <param name="cac"></param> /// <param name="p1"></param> /// <param name="p2"></param> /// <param name="p3"></param> /// <param name="p4"></param> private void QueueTilLater(OMV.Simulator sim, CommActionCode cac, Object p1, Object p2, Object p3, Object p4) { // m_log.Log(LogLevel.DCOMMDETAIL, "QueueTilLater: c={0}", cac); Object[] parms = { sim, cac, p1, p2, p3, p4 }; m_waitTilLater.DoLaterInitialDelay(QueueTilLaterDoIt, parms); return; }
private void QueueTilLater(OMV.Simulator sim, CommActionCode cac, Object p1, Object p2, Object p3) { QueueTilLater(sim, cac, p1, p2, p3, null); }