コード例 #1
0
 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);
     }
 }
コード例 #2
0
 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;
 }
コード例 #3
0
 /// <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;
 }
コード例 #4
0
 private bool QueueTilOnline(OMV.Simulator sim, CommActionCode cac, Object p1, Object p2, Object p3)
 {
     return QueueTilOnline(sim, cac, p1, p2, p3, null);
 }
コード例 #5
0
 /// <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;
 }
コード例 #6
0
 private void QueueTilLater(OMV.Simulator sim, CommActionCode cac, Object p1, Object p2, Object p3)
 {
     QueueTilLater(sim, cac, p1, p2, p3, null);
 }