private void AddAllObjects() { client.Network.CurrentSim.ObjectsPrimitives.ForEach( new Action<Primitive>( delegate(Primitive prim) { if (prim.ParentID == 0) //root prims only { ObjectsListItem item = new ObjectsListItem(prim, client, lbxPrims); listItems.Add(prim.LocalID, item); item.PropertiesReceived += new EventHandler(item_PropertiesReceived); item.RequestProperties(); } } )); }
private void SearchFor(string text) { RemoveObjectEvents(); lbxPrims.BeginUpdate(); lbxPrims.Items.Clear(); listItems.Clear(); string query = text.ToLower(); List<Primitive> results = client.Network.CurrentSim.ObjectsPrimitives.FindAll( new Predicate<Primitive>(delegate(Primitive prim) { //evil comparison of death! return (prim.ParentID == 0 && prim.PropertiesFamily.Name != null) && (prim.PropertiesFamily.Name.ToLower().Contains(query) || prim.PropertiesFamily.Description.ToLower().Contains(query)); })); lock (listItems) { foreach (Primitive prim in results) { ObjectsListItem item = new ObjectsListItem(prim, client, lbxPrims); listItems.Add(prim.LocalID, item); lbxPrims.Items.Add(item); } } lbxPrims.EndUpdate(); }
//Separate thread private void Objects_OnNewPrim(Simulator simulator, Primitive prim, ulong regionHandle, ushort timeDilation) { if (prim.ParentID != 0) return; lock (listItems) { if (listItems.ContainsKey(prim.LocalID)) return; BeginInvoke(new MethodInvoker(delegate() { ObjectsListItem item = new ObjectsListItem(prim, client, lbxPrims); listItems.Add(prim.LocalID, item); item.PropertiesReceived += new EventHandler(item_PropertiesReceived); item.RequestProperties(); })); } }