Пример #1
0
 public override void SetFromString(string inlist)
 {
     string[] strings = null;
     if (inlist == "<xor></xor>")
     {
         return;
     }
     if (IsORSyntax(inlist))
     {
         inlist  = inlist.Substring(1, inlist.Length - 2);
         strings = inlist.Split(new[] { "|" }, StringSplitOptions.None);
     }
     else
     {
         inlist  = inlist.Replace("<ligt", "<li>");
         strings = inlist.Split(new[] { "<xor><li>", "</li><li>", "</li></xor>" },
                                StringSplitOptions.RemoveEmptyEntries);
     }
     if (strings.Length == 0)
     {
         return;
     }
     foreach (string s in strings)
     {
         var u = (Unifiable)s;
         List.Add(u);
         Flags = u.Flags;
     }
     //best = strings[0];
 }
Пример #2
0
 /// <summary>
 ///
 /// </summary>
 /// <param name="objects"></param>
 private void AddKnowns(IEnumerable <SimObject> objects)
 {
     lock (objects)
     {
         foreach (SimObject obj in objects)
         {
             if (obj != this)
             {
                 if (obj.IsRoot || obj.Affordances.IsTyped)
                 {
                     //lock (KnownSimObjects)
                     if (!KnownSimObjects.Contains(obj))
                     {
                         KnownSimObjects.Add(obj);
                         IList <SimTypeUsage> uses = obj.Affordances.GetTypeUsages();
                         foreach (SimTypeUsage use in uses)
                         {
                             lock (_knownTypeUsages)
                                 if (!_knownTypeUsages.Contains(use))
                                 {
                                     _knownTypeUsages.Add(use);
                                 }
                         }
                     }
                 }
             }
         }
     }
 }
Пример #3
0
 private bool SkippedVerb(string verb)
 {
     KnownSet.Add(verb);
     if (Always.Contains(verb))
     {
         return(false);
     }
     if (Never.Contains(verb))
     {
         return(true);
     }
     return(!DefaultUse);
 }
        public ListAsSet <Abortable> AllTaskQueues()
        {
            ListAsSet <Abortable> all = ClientManager.AllTaskQueues();

            foreach (var tq in TaskQueueHandler.TaskQueueHandlers)
            {
                if (tq.Owner == this)
                {
                    all.Add(tq);
                }
            }
            all.AddRange(botCommandThreads);
            return(all);
        }
Пример #5
0
 static public void RegisterThread(NativeThread systhread)
 {
     if (!AllThreads.Contains(systhread))
     {
         AllThreads.Add(systhread);
     }
     else
     {
     }
     if (ThreadAdded != null)
     {
         ThreadAdded(systhread);
     }
     //AllThreads2Safe.Remove(systhread);
 }
Пример #6
0
        public ListAsSet <SimObject> GetRelations(ICollection re)
        {
            var more = new ListAsSet <SimObject>();

            foreach (var OP in re)
            {
                SimObject O = AsSimObject(OP);
                if (O == null)
                {
                    continue;
                }
                more.Add(O);
                AsPrimitives(more, O.Children);
                SimObject P = O.Parent;
                if (P != O)
                {
                    AsPrimitives(more, P.Children);
                }
            }
            return(more);
        }
Пример #7
0
        public SimObject GetNextInterestingObject()
        {
            SimObject mostInteresting = null;

            if (InterestingObjects.Count < 2)
            {
                InterestingObjects = Actor.GetKnownObjects();
                lock (InterestingObjects) InterestingObjects.Remove(Actor);
            }
            int count = InterestingObjects.Count - 2;

            foreach (BotMentalAspect cAspect in InterestingObjects)
            {
                if (cAspect is SimObject)
                {
                    if (mostInteresting == null)
                    {
                        mostInteresting = (SimObject)cAspect;
                        ///  break;
                    }
                    else
                    {
                        mostInteresting = (SimObject)CompareTwo(mostInteresting, cAspect);
                    }
                    count--;
                    if (count < 0)
                    {
                        break;
                    }
                }
            }
            lock (InterestingObjects)
            {
                InterestingObjects.Remove(mostInteresting);
                InterestingObjects.Add(mostInteresting);
            }
            return(mostInteresting);
        }
 public void EnsureSimulator(Simulator simulator)
 {
     if (simulator == null || simulator.Handle == 0)
     {
         return;
     }
     if (!Monitor.TryEnter(_AllSimulators, 10000))
     {
         WriteLine("Cant lock _AllSimulators");
         return;
     }
     lock (SimMaster)
     {
         if (!SimMaster.ContainsKey(simulator.Handle))
         {
             SimMaster[simulator.Handle] = this;
             MasteringRegions.AddTo(simulator.Handle);
         }
     }
     try
     {
         {
             foreach (Simulator set in _AllSimulators)
             {
                 if (set.Handle == simulator.Handle && set.Client == simulator.Client)
                 {
                     return;
                 }
             }
             _AllSimulators.Add(simulator);
         }
         SimRegion.GetRegion(simulator);
     }
     finally
     {
         Monitor.Exit(_AllSimulators);
     }
 }
Пример #9
0
 public ListAsSet<Abortable> AllTaskQueues()
 {
     var all = new ListAsSet<Abortable>();
     foreach (var tq in TaskQueueHandler.TaskQueueHandlers)
     {
         if (tq.Owner == null) all.Add(tq);
     }
     return all;
 }
        public void Network_OnSimConnectedHook(object sender, SimConnectedEventArgs e)
        {
            Simulator simulator = e.Simulator;

            ///base.Network_OnSimConnected(simulator);
            lock (WorldObjectsMasterLock)
            {
                if (simulator.Handle == 0)
                {
                    Debug("Simulator Handle==0 for " + simulator);
                    return;
                }
                EnsureSimulator(simulator);
                IsConnected = true;
                if (SimRegion.IsMaster(simulator, client.gridClient))
                {
                    Debug("---SIMMASTER---------" + client + " region: " + simulator);
                    SetWorldMaster(true);
                    SimMaster[simulator.Handle] = this;
                    //client.Grid.RequestMapRegion(simulator.Name, GridLayerType.Objects);
                    if (simulator.Name.Length > 0)
                    {
                        client.Grid.RequestMapRegion(simulator.Name, GridLayerType.Terrain);
                    }
                    else
                    {
                        Debug("no sim bname " + simulator);
                    }
                    client.Estate.RequestInfo();
                    //client.Grid.RequestMapRegion(simulator.Name, GridLayerType.LandForSale);
                    //client.Grid.RequestMapItems(simulator.Handle,OpenMetaverse.GridItemType.Classified,GridLayerType.Terrain);
                    MasteringRegions.Add(simulator.Handle);
                    var MaintainSimCollisionsList = WorldPathSystem.MaintainSimCollisionsList;
                    if (simulator == client.Network.CurrentSim)
                    {
                        lock (MaintainSimCollisionsList)
                        {
                            if (!MaintainSimCollisionsList.Contains(simulator.Handle))
                            {
                                MaintainSimCollisionsList.Add(simulator.Handle);
                            }
                        }
                    }
                    //RequestGridInfos(simulator.Handle);
                }
                else
                {
                    Debug("-----NOT SIMMASTER-------" + client + " region: " + simulator);
                    MasteringRegions.Remove(simulator.Handle);
                    if (MasteringRegions.Count == 0)
                    {
                        SetWorldMaster(false);
                        Debug("------UNREGISTERING------" + client);
                    }
                }
            }
            if (simulator == client.Network.CurrentSim)
            {
                StartupPostLoginQueues();
                // new Thread(() => client.Appearance.SetPreviousAppearance(true)).Start();
            }
            //if (simulator == client.Network.CurrentSim) { new Thread(() => { Thread.Sleep(30000); client.Appearance.SetPreviousAppearance(true); }).Start(); }
        }