//public override bool OnEffect(string effectType, object t, object p, float duration, UUID id)
        //{
        //    bool noteable = LogEvent(new SimObjectEvent(effectType, SimEventType.EFFECT, SimEventStatus.Once, this, t, p, duration, id));
        //    //todo
        //    if (noteable) WorldSystem.SendNewEvent("on-effect", effectType, this, t, p, duration, id);
        //    return noteable;
        //    //throw new NotImplementedException();
        //}

        public override bool LogEvent(CogbotEvent SE)
        {
            string typeUse = SE.Verb;

            object[] args1_N = SE.GetArgs();
            // does this backwards to the first argument is the most reliavant object
            for (int i = args1_N.Length - 1; i >= 0; i--)
            {
                object o = args1_N[i];
                if (o == this)
                {
                    continue;            //skip self
                }
                if (o is SimObject)
                {
                    KnownSimObjects.Add((SimObject)o);
                }
            }
            _knownTypeUsages.AddTo(SimTypeSystem.CreateTypeUsage(typeUse));
            bool noteable = base.LogEvent(SE);

            if (noteable)
            //if (theAvatar.Name.Contains("rael"))
            {
                //DLRConsole.DebugWriteLine(SE);
            }
            return(noteable);
        }
Example #2
0
        // this pipelike will fire OnEvent to the subscriber list
        public void SendEvent(CogbotEvent simObjectEvent)
        {
            if (!EventsEnabled)
            {
                return;
            }
            if (LastEvent != null && simObjectEvent.SameAs(LastEvent))
            {
                return;
            }
            if (LastEventAW != null && simObjectEvent.SameAs(LastEventAW))
            {
                return;
            }
            LastEvent   = simObjectEvent;
            LastEventAW = simObjectEvent;

            ThreadStart start = () => SendNow(simObjectEvent);

            if (ExecSynchronous)
            {
                start();
                return;
            }
            if (!UseQueue)
            {
                new Thread(start).Start();
            }
            else
            {
                taskQueue.Enqueue(start);
            }
        }
Example #3
0
 void SimEventSubscriber.OnEvent(CogbotEvent evt)
 {
     if (evt.Verb == "On-Execute-Command")
     {
         ExecuteCommand(evt.GetArgs()[0].ToString(), null, WriteLine, CMDFLAGS.NoResult);
     }
 }
Example #4
0
        void SimEventSubscriber.OnEvent(CogbotEvent evt)
        {
            if (!EventsEnabled) return;
            const SimEventType du = SimEventType.DATA_UPDATE;
            if (evt.IsEventType(du)) return;

            if (evt.IsEventType(SimEventType.EFFECT))
            {
                if (evt.Verb == "LookAtType-Idle") return;
                if (evt.Verb == "LookAtType-FreeLook") return;
            }
            String eventName = evt.Verb;
            object[] args = evt.GetArgs();

            String msg = "["+ From.GetName() + ": " + eventName.ToLower()+"]";
            int start = 0;
            if (args.Length > 1)
            {
                if (args[0] is Simulator)
                {
                   // start = 1;
                }
            }
            for (int i = start; i < args.Length; i++)
            {
                msg += " ";
                msg += From.argString(args[i]);
            }
            if (msg.Contains("Transfer failed with status code")) return;
            msg += "";
            
            textForm(msg);
        }
 private void SetPosture(CogbotEvent evt)
 {
     lock (postureLock)
     {
         if (PostureType != null)
         {
             // was the same
             if (PostureType == evt.Verb)
             {
                 return;
             }
             CogbotEvent ending = new ACogbotEvent(evt.Sender,
                                                   SimEventType.Stop | SimEventType.ANIM | SimEventType.REGIONAL,
                                                   PostureType + (IsFlying ? "-Flying" : ""),
                                                   evt.Parameters)
             {
                 Serial = LastPostureEvent.Serial
             };
             LogEvent(ending);
             PostureType = evt.Verb;
             CogbotEvent starting = new ACogbotEvent(evt.Sender,
                                                     SimEventType.Start | SimEventType.ANIM | SimEventType.REGIONAL,
                                                     PostureType + (IsFlying ? "-Flying" : ""),
                                                     evt.Parameters)
             {
                 Serial = evt.Serial
             };
             LogEvent(starting);
         }
         PostureType      = evt.Verb;
         LastPostureEvent = evt;
     }
 }
Example #6
0
 public override void Self_OnMeanCollision(object sender, MeanCollisionEventArgs e)
 {
     if (!MaintainEffects)
     {
         return;
     }
     EventQueue.Enqueue(() =>
     {
         SimObject perpAv, victimAv;
         if (TryGetSimObject(e.Aggressor, out perpAv) &&
             TryGetSimObject(e.Victim, out victimAv))
         {
             // if (victimAv.Name == client.Self.Name)
             //   WriteLine(perpAv.Name + " bumped into $bot like " + type);
             // else if (perpAv.Name == client.Self.Name)
             //   WriteLine("$bot bumped into " + victimAv.Name + " like " + type);
             CogbotEvent newSimObjectEvent = ACogbotEvent.CreateEvent(sender,
                                                                      "MeanCollisionType-" + e.Type, SimEventType.Once | SimEventType.SOCIAL | SimEventType.REGIONAL,
                                                                      ToParameter("primaryObjectMoving", perpAv),
                                                                      ToParameter("objectActedOn", victimAv),
                                                                      ToParameter("initialSpeedOfPrimaryObjectMoving", "MetersPerSecond", e.Magnitude));
             perpAv.LogEvent(newSimObjectEvent);
         }
     });
 }
 void SimEventSubscriber.OnEvent(CogbotEvent evt)
 {
     if (taskInterperter != null && taskInterperter.IsSubscriberOf(evt.Verb))
     {
         object lispCode = lispCodeFromEvent(evt);
         taskQueue.Enqueue(new KeyValuePair <object, CogbotEvent>(lispCode, evt));
     }
 }
Example #8
0
 public void OnEvent(CogbotEvent simObjectEvent)
 {
     if (!EventsEnabled)
     {
         return;
     }
     SendNow(simObjectEvent);
 }
Example #9
0
 public void OnEvent(CogbotEvent evt)
 {
     if (!EventsEnabled || Skipped(evt))
     {
         return;
     }
     Next.OnEvent(evt);
 }
Example #10
0
        /// <summary>Raises the EachSimEvent event</summary>
        /// <param name="e">An EachSimEventEventArgs object containing the
        /// data returned from the data server</param>
        protected virtual void OnEachSimEvent(CogbotEvent e)
        {
            if (e.Verb == "On-Log-Message")
            {
                return;
            }
            if (ExpectConnected == false)
            {
                return;
            }
            EventHandler <EventArgs> handler = m_EachSimEvent;

            if (handler == null)
            {
                return;
            }
            List <Delegate> todo = new List <Delegate>();

            lock (m_EachSimEventLock)
            {
                handler = m_EachSimEvent;
                if (handler == null)
                {
                    return;
                }
                AddTodo(handler.GetInvocationList(), todo);
            }

            object sender = e.Sender ?? this;
            bool   async  = todo.Count > 3;

            foreach (var d in todo)
            {
                var         del  = (EventHandler <EventArgs>)d;
                ThreadStart task = () =>
                {
                    try
                    {
                        del(sender, (EventArgs)e);
                    }
                    catch (Exception ex)
                    {
                        LogException("OnEachSimEvent Worker", ex);
                    }
                };
                if (async)
                {
                    ThreadPool.QueueUserWorkItem(sync => task());
                }
                else
                {
                    task();
                }
            }
        }
Example #11
0
        public void OnEvent(CogbotEvent evt)
        {
            String s = evt.Verb.ToLower();

            if (s.StartsWith("on-chat"))
            {
                return;
            }
            string aimlCall = string.Format("SimEvent {0} {1}", evt.Verb, argsListString(evt.GetArgs()));
            //DLRConsole.DebugWriteLine(aimlCall);
            //Result r = AimlBot.Chat(aimlCall,"EventSystem");
        }
 void SimEventSubscriber.OnEvent(CogbotEvent evt)
 {
     if (!EventsEnabled)
     {
         return;
     }
     if (DisableEventStore)
     {
         return;
     }
     whileClientIsAway.Enqueue(EventToString(evt, parent));
 }
Example #13
0
 private void SendEachSimEvent(object sender, EventArgs e)
 {
     if (!IsQPIDRunning || !EventsEnabled)
     {
         return;
     }
     if (e is CogbotEvent)
     {
         CogbotEvent cbe = (CogbotEvent)e;
         OnEvent(cbe);
         return;
     }
 }
Example #14
0
 public void OnEvent(CogbotEvent evt)
 {
     if (DISABLE_AVRO)
     {
         return;
     }
     EnsureStarted();
     if (evt.IsEventType(SimEventType.DATA_UPDATE))
     {
         return;
     }
     LogEventFromCogbot(evt.Sender, evt);
 }
Example #15
0
        void SimEventSubscriber.OnEvent(CogbotEvent evt)
        {
            if (!EventsEnabled)
            {
                return;
            }
            const SimEventType du = SimEventType.DATA_UPDATE;

            if (evt.IsEventType(du))
            {
                return;
            }

            if (evt.IsEventType(SimEventType.EFFECT))
            {
                if (evt.Verb == "LookAtType-Idle")
                {
                    return;
                }
                if (evt.Verb == "LookAtType-FreeLook")
                {
                    return;
                }
            }
            String eventName = evt.Verb;

            object[] args = evt.GetArgs();

            String msg   = "[" + From.GetName() + ": " + eventName.ToLower() + "]";
            int    start = 0;

            if (args.Length > 1)
            {
                if (args[0] is Simulator)
                {
                    // start = 1;
                }
            }
            for (int i = start; i < args.Length; i++)
            {
                msg += " ";
                msg += From.argString(args[i]);
            }
            if (msg.Contains("Transfer failed with status code"))
            {
                return;
            }
            msg += "";

            textForm(msg);
        }
Example #16
0
        public bool LogEventFromCogbot(object sender, CogbotEvent evt)
        {
            if (DISABLE_AVRO)
            {
                return(true);
            }
            EnsureStarted();
            if (evt.Sender == this)
            {
                return(false);
            }
            if (!IsQPIDRunning)
            {
                return(false);
            }
            if (!cogbotSendersToNotSendToCogbot.Contains(sender))
            {
                cogbotSendersToNotSendToCogbot.Add(sender);
            }
            string ss  = evt.ToEventString();
            var    im  = RK_publisher.CreateTextMessage(ss);
            int    num = 0;

            foreach (var s in evt.Parameters)
            {
                string sKey = s.Key;
                if (!im.Headers.Contains(sKey))
                {
                    num = 0;
                }
                else
                {
                    num++;
                    sKey = sKey + "_" + num;
                    while (im.Headers.Contains(sKey))
                    {
                        num++;
                        sKey = s.Key + "_" + num;
                    }
                }
                im.Headers.SetString(sKey, "" + s.Value);
            }
            im.Headers.SetString("verb", "" + evt.Verb);
            im.Headers.SetBoolean("personal", evt.IsPersonal != null);
            im.Headers.SetString("evstatus", "" + evt.EventStatus);
            im.Timestamp = evt.Time.ToFileTime();
            im.Type      = "" + evt.EventType1;
            RK_publisher.SendMessage(RoboKindEventModule.COGBOT_EVENT_ROUTING_KEY, im);
            return(false);
        }
Example #17
0
        public void SendPersonalEvent(SimEventType type, string eventName, params object[] args)
        {
            if (args.Length > 0)
            {
                if (args[0] is BotClient)
                {
                    args[0] = ((BotClient)args[0]).GetAvatar();
                }
            }
            CogbotEvent evt = botPipeline.CreateEvent(type | SimEventType.PERSONAL, eventName, args);

            evt.AddParam("recipientOfInfo", GetAvatar());
            SendPipelineEvent(evt);
        }
Example #18
0
 private void SendNow(CogbotEvent simObjectEvent)
 {
     foreach (SimEventSubscriber subscriber in GetSubscribers())
     {
         SimEventSubscriber sub = subscriber;
         try
         {
             simObjectEvent.SendTo(sub);
         }
         catch (Exception e)
         {
             DLRConsole.DebugWriteLine(e);
         }
     }
 }
Example #19
0
 public bool LogEventFromRoboKind(object sender, CogbotEvent evt)
 {
     if (DISABLE_AVRO)
     {
         return(false);
     }
     EnsureStarted();
     if (cogbotSendersToNotSendToCogbot.Contains(sender))
     {
         return(false);
     }
     evt.Sender = sender ?? evt.Sender;
     //@todo client.SendPipelineEvent(evt);
     return(true);
 }
        //internal SimObjectEvent CombinesWith(SimObjectEvent SE)
        //{
        //    if (this.Verb == SE.Verb)
        //    {
        //        if (this.EventStatus == SE.EventStatus)
        //        {
        //            return new SimObjectEvent(Verb, this.EventType, this.EventStatus, this.Parameters, SE.Parameters);
        //        }
        //        if (this.EventStatus == SimEventStatus.Start && SE.EventStatus == SimEventStatus.Stop)
        //        {
        //            return new SimObjectEvent(Verb, this.EventType, SimEventStatus.Once, this.Parameters, SE.Parameters);
        //        }
        //        if (this.EventStatus == SimEventStatus.Once && SE.EventStatus == SimEventStatus.Stop)
        //        {
        //            return new SimObjectEvent(Verb, this.EventType, SimEventStatus.Once, this.Parameters, SE.Parameters);
        //        }
        //        if (this.EventStatus == SimEventStatus.Start && SE.EventStatus == SimEventStatus.Once)
        //        {
        //            return new SimObjectEvent(Verb, this.EventType, SimEventStatus.Once, this.Parameters, SE.Parameters);
        //        }
        //    }
        //    return null;
        //}


        public bool SameAs(CogbotEvent SE)
        {
            if (Verb != SE.Verb)
            {
                return(false);
            }
            if (EventType1 != SE.EventType1)
            {
                return(false);
            }
            if (Parameters == null)
            {
                return(SE.Parameters == null);
            }
            if (SE.Parameters == null)
            {
                return(Parameters == null);
            }
            if (Parameters.Length != SE.Parameters.Length)
            {
                return(false);
            }
            NamedParam[] other = SE.Parameters;
            for (int i = 0; i < other.Length; i++)
            {
                NamedParam otheri = other[i];
                if (otheri.Value == null)
                {
                    if (Parameters[i].Value != null)
                    {
                        return(false);
                    }
                    continue;
                }
                if (NonComparable(otheri.GetType()))
                {
                    continue;
                }
                if (!Equals(Parameters[i], otheri))
                {
                    return(false);
                }
            }
            return(true);
        }
        //private delegate bool AnimationTest(ICollection<UUID> thisEvent);

        private void StartOrStopAnimEvent(IDictionary <UUID, int> RemovedThisEvent, IDictionary <UUID, int> AddedThisEvent, string name, IList <CogbotEvent> startStops)
        {
            int         wasStarted = 0;
            int         wasStopped = 0;
            List <UUID> e          = SimAssetStore.MeaningUUIDs(name);

            //  if (e.Count==0) throw new NoSuchElementException(name);
            foreach (UUID list in e)
            {
                if (AddedThisEvent.ContainsKey(list))
                {
                    wasStarted = AddedThisEvent[list];
                    AddedThisEvent.Remove(list);
                }
            }
            foreach (UUID list in e)
            {
                if (RemovedThisEvent.ContainsKey(list))
                {
                    wasStopped = RemovedThisEvent[list];
                    RemovedThisEvent.Remove(list);
                }
            }
            if (wasStarted != 0 && wasStopped != 0)
            {
                return;
            }
            if (wasStarted != 0)
            {
                CogbotEvent simEvent = CreateAEvent(SimEventType.Start, name, SimEventType.ANIM | SimEventType.REGIONAL,
                                                    WorldObjects.ToParameter("doneBy", this),
                                                    WorldObjects.ToParameter("eventOccursAt", GetHeading()));
                simEvent.Serial = wasStarted;
                startStops.Add(simEvent);
            }
            if (wasStopped != 0)
            {
                CogbotEvent simEvent = CreateAEvent(SimEventType.Stop, name, SimEventType.ANIM | SimEventType.REGIONAL,
                                                    WorldObjects.ToParameter("doneBy", this),
                                                    WorldObjects.ToParameter("toLocation", GetHeading()));
                simEvent.Serial = wasStopped;
                startStops.Insert(0, simEvent);
            }
        }
 public void OnEvent(CogbotEvent evt)
 {
     if (!EventsEnabled)
     {
         return;
     }
     try
     {
         if (tcpStreamWriter != null)
         {
             tcpStreamWriter.WriteLine(BotTcpServer.EventToString(evt, Server.parent));
             tcpStreamWriter.Flush();
         }
     }
     catch (IOException e)
     {
         WriteLine("OnEvent: " + e);
         Shutdown();
     }
 }
Example #23
0
        //public override bool OnEffect(string effectType, object t, object p, float duration, UUID id)
        //{
        //    bool noteable = LogEvent(new SimObjectEvent(effectType, SimEventType.EFFECT, SimEventStatus.Once, this, t, p, duration, id));
        //    //todo
        //    if (noteable) WorldSystem.SendNewEvent("on-effect", effectType, this, t, p, duration, id);
        //    return noteable;
        //    //throw new NotImplementedException();
        //}

        public override bool LogEvent(CogbotEvent SE)
        {
            string typeUse = SE.Verb;
            object[] args1_N = SE.GetArgs();
            // does this backwards to the first argument is the most reliavant object
            for (int i = args1_N.Length - 1; i >= 0; i--)
            {
                object o = args1_N[i];
                if (o == this) continue; //skip self
                if (o is SimObject) KnownSimObjects.Add((SimObject)o);
            }
            _knownTypeUsages.AddTo(SimTypeSystem.CreateTypeUsage(typeUse));
            bool noteable = base.LogEvent(SE);
            if (noteable)
            //if (theAvatar.Name.Contains("rael"))
            {
                //DLRConsole.DebugWriteLine(SE);
            }
            return noteable;
        }
Example #24
0
        /// <summary>Raises the EachSimEvent event</summary>
        /// <param name="e">An EachSimEventEventArgs object containing the
        /// data returned from the data server</param>
        protected virtual void OnEachSimEvent(CogbotEvent e)
        {
            if (e.Verb == "On-Log-Message") return;
            if (ExpectConnected == false) return;
            EventHandler<EventArgs> handler = m_EachSimEvent;
            if (handler == null) return;
            List<Delegate> todo = new List<Delegate>();
            lock (m_EachSimEventLock)
            {
                handler = m_EachSimEvent;
                if (handler == null) return;
                AddTodo(handler.GetInvocationList(), todo);
            }

            object sender = e.Sender ?? this;
            bool async = todo.Count > 3;

            foreach (var d in todo)
            {
                var del = (EventHandler<EventArgs>)d;
                ThreadStart task = () =>
                {
                    try
                    {
                        del(sender, (EventArgs) e);
                    }
                    catch (Exception ex)
                    {
                        LogException("OnEachSimEvent Worker", ex);
                    }
                };
                if (async)
                {
                    ThreadPool.QueueUserWorkItem(sync => task());
                }
                else
                {
                    task();
                }
            }
        }
        private CogbotEvent AnimEvent(UUID uuid, SimEventType status, int serial)
        {
            SimAsset a = SimAssetStore.FindOrCreateAsset(uuid, AssetType.Animation);

            string headingString;

            switch (status)
            {
            case SimEventType.Start:
            {
                headingString = "eventOccursAt";
                break;
            }

            case SimEventType.Stop:
            {
                headingString = "toLocation";
                break;
            }

            default:
            {
                headingString = "eventOccursAt";
                break;
            }
            }
            object      m  = a.GetMeaning();
            CogbotEvent oe = CreateAEvent(status, "OnAnim", SimEventType.ANIM | SimEventType.REGIONAL,
                                          WorldObjects.ToParameter("doneBy", this),
                                          WorldObjects.ToParameter("isa", a),
                                          WorldObjects.ToParameter(headingString, GetHeading()));

            oe.Serial = serial;
            if (m != null)
            {
                oe.AddParam("isa", m);
            }
            return(oe);
        }
 public bool LogEventFromCogbot(object sender, CogbotEvent evt)
 {
     if (DISABLE_AVRO) return true;
     EnsureStarted();
     if (evt.Sender == this) return false;
     if (!IsQPIDRunning) return false;
     if (!cogbotSendersToNotSendToCogbot.Contains(sender)) cogbotSendersToNotSendToCogbot.Add(sender);
     string ss = evt.ToEventString();
     var im = RK_publisher.CreateTextMessage(ss);
     int num = 0;
     foreach (var s in evt.Parameters)
     {
         string sKey = s.Key;
         if (!im.Headers.Contains(sKey))
         {
             num = 0;
         }
         else
         {
             num++;
             sKey = sKey + "_" + num;
             while (im.Headers.Contains(sKey))
             {
                 num++;
                 sKey = s.Key + "_" + num;
             }
         }
         im.Headers.SetString(sKey, "" + s.Value);
     }
     im.Headers.SetString("verb", "" + evt.Verb);
     im.Headers.SetBoolean("personal", evt.IsPersonal != null);
     im.Headers.SetString("evstatus", "" + evt.EventStatus);
     im.Timestamp = evt.Time.ToFileTime();
     im.Type = "" + evt.EventType1;
     RK_publisher.SendMessage(RoboKindEventModule.COGBOT_EVENT_ROUTING_KEY, im);
     return false;
 }
 private object lispCodeFromEvent(CogbotEvent evt)
 {
     return(genLispCodeTree("(" + evt.Verb.ToLower() + " " + argsListString(evt.GetArgs()) + ")"));
 }
Example #28
0
        public void SendEffect(Simulator sim, UUID sourceID, UUID targetID, Vector3d targetPos, string effectType, float duration,
                               UUID id, PCode sourceType)
        {
            if (!MaintainEffects)
            {
                return;
            }
            if (sourceID == client.Self.AgentID)
            {
                return;                                  //not sending our own effects
            }
            if (!IsMaster(sim))
            {
                return;
            }
            if (MaintainOnlyMasterEffects && client.MasterKey != UUID.Zero)
            {
                if (!(client.MasterKey == targetID || sourceID == client.MasterKey))
                {
                    return;
                }
            }
            if (id != UUID.Zero)
            {
                // if (EffectsSent.Contains(id)) return;
                // EffectsSent.Add(id);
            }
            object s = sourceID;
            object t = targetID;
            object p = targetPos;

            //if (SkippedEffects.Contains(effectType)) return;
            SimObject source = GetSimObjectFromUUID(sourceID);

            if (source == null)
            {
                if (sourceID != UUID.Zero)
                {
                    source = GetSource(sim, sourceID, source, ref s, sourceType);
                    if (source == null)
                    {
                        return;
                    }
                }
                //  RequestAsset(sourceID, AssetType.Object, true);
            }
            else
            {
                s = source;
            }
            if (source is SimObjectImpl && !(source is SimAvatar))
            {
                Debug("Write source is Object " + source);
            }
            SimObject target = GetSimObjectFromUUID(targetID);

            if (target == null)
            {
                if (targetID != UUID.Zero)
                {
                    target = GetSource(sim, targetID, target, ref t, PCode.None);
                    if (target == null)
                    {
                        return;
                    }
                }
                // RequestAsset(targetID, AssetType.Object, true);
            }
            else
            {
                t = target;
            }
            double    dist;
            SimObject ST = target;

            if (ST == null)
            {
                ST = source;
            }
            if (targetPos.X < 256)
            {
                if (targetPos == Vector3d.Zero)
                {
                    p = SimHeading.UNKNOWN;
                }
                else
                {
                    if (ST != null)
                    {
                        Vector3d STGlobalPosition;
                        if (ST.TryGetGlobalPosition(out STGlobalPosition))
                        {
                            p = (STGlobalPosition + targetPos);
                        }
                        else
                        {
                            p = AsRLocation(sim, targetPos, ST);
                        }
                    }
                    else
                    {
                        p = new Vector3((float)targetPos.X, (float)targetPos.Y, (float)targetPos.Z);
                    }
                }
            }
            else
            {
                SimObject posTarget = GetSimObjectFromVector(targetPos, out dist);
                if (dist < 0.5)
                {
                    p = posTarget;
                    if (targetID == UUID.Zero)
                    {
                        // now we have a target
                        t = posTarget;

                        // todo should we revert back to position?
                        //p = targetPos;
                    }
                }
                else
                {
                    if (targetID == UUID.Zero)
                    {
                        // now we have a target
                        t = targetPos;

                        // todo should we revert back to position?
                        //p = targetPos;
                    }
                }
            }

            EventQueue.Enqueue(() =>
            {
                source = SecondChanceUUID(ref s, source);
                target = SecondChanceUUID(ref t, target);
                //if (source != null) source;
                // WriteLine("ClientManager Avatars_OnLookAt: " + sourceID.ToString() + " to " + targetID.ToString() + " at " + targetID.ToString() + " with type " + lookType.ToString() + " duration " + duration.ToString());
                if (targetID == client.Self.AgentID)
                {
                    // if (lookType == LookAtType.Idle) return;
                    //WriteLine("  (TARGET IS SELF)");
                    client.SendPersonalEvent(SimEventType.EFFECT,
                                             "on-effect-targeted-self",
                                             ToParameter("doneBy", s),
                                             ToParameter("objectActedOn", TheSimAvatar),
                                             ToParameter("eventPartiallyOccursAt", p),
                                             ToParameter("simDuration", duration),
                                             ToParameter("effectType", effectType));
                    // ()/*GetObject*/(sourceID), effectType);
                }
                if (source != null)
                {
                    source.OnEffect(client, effectType, t, p, duration, id);
                }
                else
                {
                    CogbotEvent evt = ACogbotEvent.CreateEvent(client, effectType,
                                                               SimEventType.Once | SimEventType.EFFECT | SimEventType.REGIONAL,
                                                               ToParameter("doneBy", s),
                                                               ToParameter("objectActedOn", t),
                                                               ToParameter(
                                                                   "eventPartiallyOccursAt", p),
                                                               ToParameter("simDuration",
                                                                           duration),
                                                               AsEffectID(id));

                    if (t is SimObject)
                    {
                        ((SimObject)t).AddCanBeTargetOf(2, evt);
                    }
                    RegisterUUID(id, effectType);
                    //TODO
                    if (UseEventSource(s) || UseEventSource(t))
                    {
                        SendPipelineEvent(evt);
                    }
                    //SendNewEvent("on-effect", effectType, s, t, p, duration, AsEffectID(id));
                }
            });
        }
Example #29
0
        //internal SimObjectEvent CombinesWith(SimObjectEvent SE)
        //{
        //    if (this.Verb == SE.Verb)
        //    {
        //        if (this.EventStatus == SE.EventStatus)
        //        {
        //            return new SimObjectEvent(Verb, this.EventType, this.EventStatus, this.Parameters, SE.Parameters);
        //        }
        //        if (this.EventStatus == SimEventStatus.Start && SE.EventStatus == SimEventStatus.Stop)
        //        {
        //            return new SimObjectEvent(Verb, this.EventType, SimEventStatus.Once, this.Parameters, SE.Parameters);
        //        }
        //        if (this.EventStatus == SimEventStatus.Once && SE.EventStatus == SimEventStatus.Stop)
        //        {
        //            return new SimObjectEvent(Verb, this.EventType, SimEventStatus.Once, this.Parameters, SE.Parameters);
        //        }
        //        if (this.EventStatus == SimEventStatus.Start && SE.EventStatus == SimEventStatus.Once)
        //        {
        //            return new SimObjectEvent(Verb, this.EventType, SimEventStatus.Once, this.Parameters, SE.Parameters);
        //        }
        //    }
        //    return null;
        //}


        public bool SameAs(CogbotEvent SE)
        {
            if (Verb != SE.Verb) return false;
            if (EventType1 != SE.EventType1) return false;
            if (Parameters == null) return SE.Parameters == null;
            if (SE.Parameters == null) return Parameters == null;
            if (Parameters.Length != SE.Parameters.Length) return false;
            NamedParam[] other = SE.Parameters;
            for (int i = 0; i < other.Length; i++)
            {
                NamedParam otheri = other[i];
                if (otheri.Value == null)
                {
                    if (Parameters[i].Value != null) return false;
                    continue;
                }
                if (NonComparable(otheri.GetType())) continue;
                if (!Equals(Parameters[i], otheri)) return false;
            }
            return true;
        }
 public override void AddCanBeTargetOf(int argN, CogbotEvent evt)
 {
     base.AddCanBeTargetOf(argN, evt);
 }
Example #31
0
 private void SetPosture(CogbotEvent evt)
 {
     lock (postureLock)
     {
         if (PostureType != null)
         {
             // was the same 
             if (PostureType == evt.Verb) return;
             CogbotEvent ending = new ACogbotEvent(evt.Sender,
                 SimEventType.Stop | SimEventType.ANIM | SimEventType.REGIONAL,
                 PostureType + (IsFlying ? "-Flying" : ""),
                 evt.Parameters) { Serial = LastPostureEvent.Serial };
             LogEvent(ending);
             PostureType = evt.Verb;
             CogbotEvent starting = new ACogbotEvent(evt.Sender,
                                         SimEventType.Start | SimEventType.ANIM | SimEventType.REGIONAL,
                 PostureType + (IsFlying ? "-Flying" : ""),
                 evt.Parameters) { Serial = evt.Serial };
             LogEvent(starting);
         }
         PostureType = evt.Verb;
         LastPostureEvent = evt;
     }
 }
 private object lispCodeFromEvent(CogbotEvent evt)
 {
     return genLispCodeTree("(" + evt.Verb.ToLower() + " " + argsListString(evt.GetArgs()) + ")");
 }
Example #33
0
 public void SendPipelineEvent(CogbotEvent evt)
 {
     OnEachSimEvent(evt);
     botPipeline.SendEvent(evt);
 }
Example #34
0
        // this pipelike will fire OnEvent to the subscriber list 
        public void SendEvent(CogbotEvent simObjectEvent)
        {
            if (!EventsEnabled) return;
            if (LastEvent != null && simObjectEvent.SameAs(LastEvent))
            {
                return;
            }
            if (LastEventAW != null && simObjectEvent.SameAs(LastEventAW))
            {
                return;
            }
            LastEvent = simObjectEvent;
            LastEventAW = simObjectEvent;

            ThreadStart start = () => SendNow(simObjectEvent);

            if (ExecSynchronous)
            {
                start();
                return;
            }
            if (!UseQueue)
            {
                new Thread(start).Start();
            }
            else taskQueue.Enqueue(start);
        }
 public void OnEvent(CogbotEvent evt)
 {
     qpid.OnEvent(evt);
 }
Example #36
0
 private void SendNow(CogbotEvent simObjectEvent)
 {
     foreach (SimEventSubscriber subscriber in GetSubscribers())
     {
         SimEventSubscriber sub = subscriber;
         try
         {
             simObjectEvent.SendTo(sub);
         }
         catch (Exception e)
         {
             DLRConsole.DebugWriteLine(e);
         }
     }
 }
Example #37
0
 static internal string EventToString(CogbotEvent evt, BotClient parent)
 {
     return string.Format("({0} {1})", evt.Verb, parent.argsListString(evt.GetArgs()));
 }
Example #38
0
 void SimEventSubscriber.OnEvent(CogbotEvent evt)
 {
     if (!EventsEnabled) return;
     if (DisableEventStore) return;
     whileClientIsAway.Enqueue(EventToString(evt, parent));
 }
Example #39
0
 public void OnEvent(CogbotEvent evt)
 {
     if (!EventsEnabled) return; 
     try
     {
         if (tcpStreamWriter != null)
         {
             tcpStreamWriter.WriteLine(BotTcpServer.EventToString(evt, Server.parent));
             tcpStreamWriter.Flush();
         }
     }
     catch (IOException e)
     {
         WriteLine("OnEvent: " + e);
         Shutdown();
     }
 }
Example #40
0
 private bool Skipped(CogbotEvent evt)
 {
     return (SkippedVerb(evt.Verb) || SkippedVerb(evt.EventType1.ToString()) || SkippedVerb(evt.EventName));
 }
Example #41
0
 public void SendPipelineEvent(CogbotEvent evt)
 {
     OnEachSimEvent(evt);
     botPipeline.SendEvent(evt);
 }
Example #42
0
 void SimEventSubscriber.OnEvent(CogbotEvent evt)
 {
     if (evt.Verb == "On-Execute-Command")
     {
         ExecuteCommand(evt.GetArgs()[0].ToString(), null, WriteLine, CMDFLAGS.NoResult);
     }
 }
 static internal string EventToString(CogbotEvent evt, BotClient parent)
 {
     return(string.Format("({0} {1})", evt.Verb, parent.argsListString(evt.GetArgs())));
 }
 void SimEventSubscriber.OnEvent(CogbotEvent evt)
 {
     if (taskInterperter != null && taskInterperter.IsSubscriberOf(evt.Verb))
     {
         object lispCode = lispCodeFromEvent(evt);
         taskQueue.Enqueue(new KeyValuePair<object, CogbotEvent>(lispCode, evt));
     }
 }
 public void OnEvent(CogbotEvent evt)
 {
     if (DISABLE_AVRO) return;
     EnsureStarted();
     if (evt.IsEventType(SimEventType.DATA_UPDATE)) return;
     LogEventFromCogbot(evt.Sender, evt);
 }
 public void OnEvent(CogbotEvent evt)
 {
     qpid.OnEvent(evt);
 }
 public bool LogEventFromRoboKind(object sender, CogbotEvent evt)
 {
     if (DISABLE_AVRO) return false;
     EnsureStarted();
     if (cogbotSendersToNotSendToCogbot.Contains(sender))
     {
         return false;
     }
     evt.Sender = sender ?? evt.Sender;
     //@todo client.SendPipelineEvent(evt);
     return true;
 }
Example #48
0
 public override void AddCanBeTargetOf(int argN, CogbotEvent evt)
 {
     base.AddCanBeTargetOf(argN, evt);
 }
Example #49
0
 public CogbotEvent SendPipelineEvent(CogbotEvent param1)
 {
     client.SendPipelineEvent(param1);
     return param1;
 }
Example #50
0
 public CogbotEvent SendPipelineEvent(CogbotEvent param1)
 {
     client.SendPipelineEvent(param1);
     return(param1);
 }
Example #51
0
 private bool Skipped(CogbotEvent evt)
 {
     return(SkippedVerb(evt.Verb) || SkippedVerb(evt.EventType1.ToString()) || SkippedVerb(evt.EventName));
 }
Example #52
0
 public void OnEvent(CogbotEvent evt)
 {
     if (!EventsEnabled || Skipped(evt)) return;
     Next.OnEvent(evt);
 }
Example #53
0
 public void OnEvent(CogbotEvent simObjectEvent)
 {
     if (!EventsEnabled) return;
     SendNow(simObjectEvent);
 }