internal void AddType(string anims) { lock (Meanings) { if (!Meanings.Contains(anims)) { anims = string.Intern(anims); Meanings.Add(anims); List <UUID> AMeanings = SimAssetStore.MeaningUUIDs(anims); if (!AMeanings.Contains(AssetID)) { AMeanings.Add(AssetID); } } } }
//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); } }