diff --git a/libsecondlife/AgentManager.cs b/libsecondlife/AgentManager.cs index d1ad5d01..cfa055d8 100644 --- a/libsecondlife/AgentManager.cs +++ b/libsecondlife/AgentManager.cs @@ -660,7 +660,7 @@ namespace libsecondlife /// /// A convenience reference to the /// SignaledAnimations collection - public delegate void AnimationsChangedCallback(SafeDictionary agentAnimations); + public delegate void AnimationsChangedCallback(InternalDictionary agentAnimations); /// /// Triggered when an object or avatar forcefully collides with our @@ -716,7 +716,7 @@ namespace libsecondlife /// check the current movement status such as walking, hovering, aiming, /// etc. by checking for system animations in the Animations /// class - public SafeDictionary SignaledAnimations = new SafeDictionary(); + public InternalDictionary SignaledAnimations = new InternalDictionary(); #region Properties @@ -787,7 +787,7 @@ namespace libsecondlife if (sittingOn != 0) { Primitive parent; - if (Client.Network.CurrentSim != null && Client.Network.CurrentSim.Objects.TryGetPrimitive(sittingOn, out parent)) + if(Client.Network.CurrentSim != null && Client.Network.CurrentSim.ObjectsPrimitives.TryGetValue(sittingOn, out parent)) { return parent.Position + relativePosition; } @@ -811,7 +811,7 @@ namespace libsecondlife if (sittingOn != 0) { Primitive parent; - if (Client.Network.CurrentSim != null && Client.Network.CurrentSim.Objects.TryGetPrimitive(sittingOn, out parent)) + if (Client.Network.CurrentSim != null && Client.Network.CurrentSim.ObjectsPrimitives.TryGetValue(sittingOn, out parent)) { return relativeRotation * parent.Rotation; } diff --git a/libsecondlife/SafeDictionary.cs b/libsecondlife/InternalDictionary.cs similarity index 90% rename from libsecondlife/SafeDictionary.cs rename to libsecondlife/InternalDictionary.cs index 27de0c81..f61df9a1 100644 --- a/libsecondlife/SafeDictionary.cs +++ b/libsecondlife/InternalDictionary.cs @@ -29,23 +29,23 @@ using System.Collections.Generic; namespace libsecondlife { - public class SafeDictionary + public class InternalDictionary { internal Dictionary Dictionary; public int Count { get { return Dictionary.Count; } } - public SafeDictionary() + public InternalDictionary() { Dictionary = new Dictionary(); } - public SafeDictionary(IDictionary dictionary) + public InternalDictionary(IDictionary dictionary) { Dictionary = new Dictionary(dictionary); } - public SafeDictionary(int capacity) + public InternalDictionary(int capacity) { Dictionary = new Dictionary(capacity); } diff --git a/libsecondlife/ObjectManager.cs b/libsecondlife/ObjectManager.cs index 59473b6e..63aaeaed 100644 --- a/libsecondlife/ObjectManager.cs +++ b/libsecondlife/ObjectManager.cs @@ -2067,31 +2067,38 @@ namespace libsecondlife { KillObjectPacket kill = (KillObjectPacket)packet; + // Run the for loop multiple times so we only have to lock a total + // of two times. Locking is by far the most expensive operation here + if (Client.Settings.OBJECT_TRACKING) { - for (int i = 0; i < kill.ObjectData.Length; i++) + uint localID; + + lock (simulator.ObjectsPrimitives.Dictionary) { - uint localID = kill.ObjectData[i].ID; - - if (simulator.Objects.Prims.ContainsKey(localID)) + for (int i = 0; i < kill.ObjectData.Length; i++) { - lock (simulator.Objects.Prims) - simulator.Objects.Prims.Remove(localID); - } - if (simulator.Objects.Avatars.ContainsKey(localID)) - { - lock (simulator.Objects.Avatars) - simulator.Objects.Avatars.Remove(localID); - } + localID = kill.ObjectData[i].ID; - FireOnObjectKilled(simulator, localID); + if (simulator.ObjectsPrimitives.Dictionary.ContainsKey(localID)) + simulator.ObjectsPrimitives.Dictionary.Remove(localID); + } + } + + lock (simulator.ObjectsAvatars.Dictionary) + { + for (int i = 0; i < kill.ObjectData.Length; i++) + { + localID = kill.ObjectData[i].ID; + + if (simulator.ObjectsAvatars.Dictionary.ContainsKey(localID)) + simulator.ObjectsAvatars.Dictionary.Remove(localID); + } } } - else - { - for (int i = 0; i < kill.ObjectData.Length; i++) - FireOnObjectKilled(simulator, kill.ObjectData[i].ID); - } + + for (int i = 0; i < kill.ObjectData.Length; i++) + FireOnObjectKilled(simulator, kill.ObjectData[i].ID); } protected void ObjectPropertiesHandler(Packet p, Simulator sim) @@ -2135,15 +2142,15 @@ namespace libsecondlife if (Client.Settings.OBJECT_TRACKING) { - Primitive findPrim = sim.Objects.Find( + Primitive findPrim = sim.ObjectsPrimitives.Find( delegate(Primitive prim) { return prim.ID == props.ObjectID; }); if (findPrim != null) { - lock (sim.Objects.Prims) + lock (sim.ObjectsPrimitives.Dictionary) { - if (sim.Objects.Prims.ContainsKey(findPrim.LocalID)) - sim.Objects.Prims[findPrim.LocalID].Properties = props; + if (sim.ObjectsPrimitives.Dictionary.ContainsKey(findPrim.LocalID)) + sim.ObjectsPrimitives.Dictionary[findPrim.LocalID].Properties = props; } } } @@ -2176,15 +2183,15 @@ namespace libsecondlife if (Client.Settings.OBJECT_TRACKING) { - Primitive findPrim = sim.Objects.Find( + Primitive findPrim = sim.ObjectsPrimitives.Find( delegate(Primitive prim) { return prim.ID == props.ObjectID; }); if (findPrim != null) { - lock (sim.Objects.Prims) + lock (sim.ObjectsPrimitives.Dictionary) { - if (sim.Objects.Prims.ContainsKey(findPrim.LocalID)) - sim.Objects.Prims[findPrim.LocalID].PropertiesFamily = props; + if (sim.ObjectsPrimitives.Dictionary.ContainsKey(findPrim.LocalID)) + sim.ObjectsPrimitives.Dictionary[findPrim.LocalID].PropertiesFamily = props; } } } @@ -2321,7 +2328,7 @@ namespace libsecondlife { Primitive prim; - if (simulator.Objects.Prims.TryGetValue(localID, out prim)) + if (simulator.ObjectsPrimitives.TryGetValue(localID, out prim)) { return prim; } @@ -2330,8 +2337,8 @@ namespace libsecondlife prim = new Primitive(); prim.LocalID = localID; prim.ID = fullID; - lock (simulator.Objects.Prims) - simulator.Objects.Prims[localID] = prim; + lock (simulator.ObjectsPrimitives.Dictionary) + simulator.ObjectsPrimitives.Dictionary[localID] = prim; return prim; } @@ -2348,7 +2355,7 @@ namespace libsecondlife { Avatar avatar; - if (simulator.Objects.Avatars.TryGetValue(localID, out avatar)) + if (simulator.ObjectsAvatars.TryGetValue(localID, out avatar)) { return avatar; } @@ -2357,8 +2364,8 @@ namespace libsecondlife avatar = new Avatar(); avatar.LocalID = localID; avatar.ID = fullID; - lock (simulator.Objects.Avatars) - simulator.Objects.Avatars[localID] = avatar; + lock (simulator.ObjectsAvatars.Dictionary) + simulator.ObjectsAvatars.Dictionary[localID] = avatar; return avatar; } @@ -2386,9 +2393,9 @@ namespace libsecondlife float adjSeconds = seconds * Client.Network.Simulators[i].Stats.Dilation; // Iterate through all of this sims avatars - lock (Client.Network.Simulators[i].Objects.Avatars) + lock (Client.Network.Simulators[i].ObjectsAvatars.Dictionary) { - foreach (Avatar avatar in Client.Network.Simulators[i].Objects.Avatars.Values) + foreach (Avatar avatar in Client.Network.Simulators[i].ObjectsAvatars.Dictionary.Values) { #region Linear Motion // Only do movement interpolation (extrapolation) when there is a non-zero velocity but @@ -2404,9 +2411,9 @@ namespace libsecondlife } // Iterate through all of this sims primitives - lock (Client.Network.Simulators[i].Objects.Prims) + lock (Client.Network.Simulators[i].ObjectsPrimitives.Dictionary) { - foreach (Primitive prim in Client.Network.Simulators[i].Objects.Prims.Values) + foreach (Primitive prim in Client.Network.Simulators[i].ObjectsPrimitives.Dictionary.Values) { if (prim.Joint == Primitive.JointType.Invalid) { diff --git a/libsecondlife/ParcelManager.cs b/libsecondlife/ParcelManager.cs index 742aa6ae..42e6099e 100644 --- a/libsecondlife/ParcelManager.cs +++ b/libsecondlife/ParcelManager.cs @@ -611,7 +611,7 @@ namespace libsecondlife /// Simulator the parcel is in /// Read-only dictionary containing parcel details for the simulator /// 64,64 array containing sim position to localID mapping - public delegate void SimParcelsDownloaded(Simulator simulator, SafeDictionary simParcels, int[,] parcelMap); + public delegate void SimParcelsDownloaded(Simulator simulator, InternalDictionary simParcels, int[,] parcelMap); #endregion Delegates diff --git a/libsecondlife/Simulator.cs b/libsecondlife/Simulator.cs index 2fcab123..947a160f 100644 --- a/libsecondlife/Simulator.cs +++ b/libsecondlife/Simulator.cs @@ -271,7 +271,11 @@ namespace libsecondlife /// Provides access to two thread-safe dictionaries containing /// avatars and primitives found in this simulator - public ObjectTracker Objects = new ObjectTracker(); + //public ObjectTracker Objects = new ObjectTracker(); + + public InternalDictionary ObjectsAvatars = new InternalDictionary(); + + public InternalDictionary ObjectsPrimitives = new InternalDictionary(); /// Used to obtain a lock on the sequence number for packets /// sent to this simulator. Only useful for applications manipulating @@ -286,7 +290,7 @@ namespace libsecondlife /// Provides access to an internal thread-safe dictionary containing parcel /// information found in this simulator /// - public SafeDictionary Parcels = new SafeDictionary(); + public InternalDictionary Parcels = new InternalDictionary(); /// /// Provides access to an internal thread-safe multidimensional array containing a x,y grid mapped diff --git a/libsecondlife/examples/TestClient/Commands/Appearance/AttachmentsCommand.cs b/libsecondlife/examples/TestClient/Commands/Appearance/AttachmentsCommand.cs index d7fce9ab..4ca4d655 100644 --- a/libsecondlife/examples/TestClient/Commands/Appearance/AttachmentsCommand.cs +++ b/libsecondlife/examples/TestClient/Commands/Appearance/AttachmentsCommand.cs @@ -15,7 +15,7 @@ namespace libsecondlife.TestClient public override string Execute(string[] args, LLUUID fromAgentID) { - List attachments = Client.Network.CurrentSim.Objects.FindAll( + List attachments = Client.Network.CurrentSim.ObjectsPrimitives.FindAll( delegate(Primitive prim) { return prim.ParentID == Client.Self.LocalID; } ); diff --git a/libsecondlife/examples/TestClient/Commands/Inventory/DumpOutfitCommand.cs b/libsecondlife/examples/TestClient/Commands/Inventory/DumpOutfitCommand.cs index 251d7525..91a7ea1c 100644 --- a/libsecondlife/examples/TestClient/Commands/Inventory/DumpOutfitCommand.cs +++ b/libsecondlife/examples/TestClient/Commands/Inventory/DumpOutfitCommand.cs @@ -34,7 +34,7 @@ namespace libsecondlife.TestClient { Avatar targetAv; - targetAv = Client.Network.Simulators[i].Objects.Find( + targetAv = Client.Network.Simulators[i].ObjectsAvatars.Find( delegate(Avatar avatar) { return avatar.ID == target; diff --git a/libsecondlife/examples/TestClient/Commands/Inventory/ObjectInventoryCommand.cs b/libsecondlife/examples/TestClient/Commands/Inventory/ObjectInventoryCommand.cs index e4e4aecf..bd4ec6c7 100644 --- a/libsecondlife/examples/TestClient/Commands/Inventory/ObjectInventoryCommand.cs +++ b/libsecondlife/examples/TestClient/Commands/Inventory/ObjectInventoryCommand.cs @@ -22,7 +22,7 @@ namespace libsecondlife.TestClient if (!LLUUID.TryParse(args[0], out objectID)) return "Usage: objectinventory [objectID]"; - Primitive found = Client.Network.CurrentSim.Objects.Find(delegate(Primitive prim) { return prim.ID == objectID; }); + Primitive found = Client.Network.CurrentSim.ObjectsPrimitives.Find(delegate(Primitive prim) { return prim.ID == objectID; }); if (found != null) objectLocalID = found.LocalID; else diff --git a/libsecondlife/examples/TestClient/Commands/Movement/FollowCommand.cs b/libsecondlife/examples/TestClient/Commands/Movement/FollowCommand.cs index a2454349..b37def05 100644 --- a/libsecondlife/examples/TestClient/Commands/Movement/FollowCommand.cs +++ b/libsecondlife/examples/TestClient/Commands/Movement/FollowCommand.cs @@ -48,7 +48,7 @@ namespace libsecondlife.TestClient { for (int i = 0; i < Client.Network.Simulators.Count; i++) { - Avatar target = Client.Network.Simulators[i].Objects.Find( + Avatar target = Client.Network.Simulators[i].ObjectsAvatars.Find( delegate(Avatar avatar) { return avatar.Name == name; @@ -74,7 +74,7 @@ namespace libsecondlife.TestClient { for (int i = 0; i < Client.Network.Simulators.Count; i++) { - Avatar target = Client.Network.Simulators[i].Objects.Find( + Avatar target = Client.Network.Simulators[i].ObjectsAvatars.Find( delegate(Avatar avatar) { return avatar.ID == id; @@ -103,7 +103,7 @@ namespace libsecondlife.TestClient { Avatar targetAv; - if (Client.Network.Simulators[i].Objects.TryGetAvatar(targetLocalID, out targetAv)) + if (Client.Network.Simulators[i].ObjectsAvatars.TryGetValue(targetLocalID, out targetAv)) { float distance = 0.0f; diff --git a/libsecondlife/examples/TestClient/Commands/Movement/SitCommand.cs b/libsecondlife/examples/TestClient/Commands/Movement/SitCommand.cs index cc9b0548..b1b0392b 100644 --- a/libsecondlife/examples/TestClient/Commands/Movement/SitCommand.cs +++ b/libsecondlife/examples/TestClient/Commands/Movement/SitCommand.cs @@ -19,7 +19,7 @@ namespace libsecondlife.TestClient Primitive closest = null; double closestDistance = Double.MaxValue; - Client.Network.CurrentSim.Objects.ForEach( + Client.Network.CurrentSim.ObjectsPrimitives.ForEach( delegate(Primitive prim) { float distance = LLVector3.Dist(Client.Self.SimPosition, prim.Position); diff --git a/libsecondlife/examples/TestClient/Commands/Movement/SitOnCommand.cs b/libsecondlife/examples/TestClient/Commands/Movement/SitOnCommand.cs index 3ef0e26b..ac1e4c74 100644 --- a/libsecondlife/examples/TestClient/Commands/Movement/SitOnCommand.cs +++ b/libsecondlife/examples/TestClient/Commands/Movement/SitOnCommand.cs @@ -23,7 +23,7 @@ namespace libsecondlife.TestClient if (LLUUID.TryParse(args[0], out target)) { - Primitive targetPrim = Client.Network.CurrentSim.Objects.Find( + Primitive targetPrim = Client.Network.CurrentSim.ObjectsPrimitives.Find( delegate(Primitive prim) { return prim.ID == target; @@ -42,4 +42,4 @@ namespace libsecondlife.TestClient return "Couldn't find a prim to sit on with UUID " + args[0]; } } -} \ No newline at end of file +} diff --git a/libsecondlife/examples/TestClient/Commands/Prims/ChangePermsCommand.cs b/libsecondlife/examples/TestClient/Commands/Prims/ChangePermsCommand.cs index aa2c5b43..189a8986 100644 --- a/libsecondlife/examples/TestClient/Commands/Prims/ChangePermsCommand.cs +++ b/libsecondlife/examples/TestClient/Commands/Prims/ChangePermsCommand.cs @@ -61,7 +61,7 @@ namespace libsecondlife.TestClient Client.DebugLog("Using PermissionMask: " + Perms.ToString()); // Find the requested prim - rootPrim = Client.Network.CurrentSim.Objects.Find(delegate(Primitive prim) { return prim.ID == rootID; }); + rootPrim = Client.Network.CurrentSim.ObjectsPrimitives.Find(delegate(Primitive prim) { return prim.ID == rootID; }); if (rootPrim == null) return "Cannot find requested prim " + rootID.ToString(); else @@ -70,14 +70,14 @@ namespace libsecondlife.TestClient if (rootPrim.ParentID != 0) { // This is not actually a root prim, find the root - if (!Client.Network.CurrentSim.Objects.TryGetPrimitive(rootPrim.ParentID, out rootPrim)) + if (!Client.Network.CurrentSim.ObjectsPrimitives.TryGetValue(rootPrim.ParentID, out rootPrim)) return "Cannot find root prim for requested object"; else Client.DebugLog("Set root prim to " + rootPrim.ID.ToString()); } // Find all of the child objects linked to this root - childPrims = Client.Network.CurrentSim.Objects.FindAll(delegate(Primitive prim) { return prim.ParentID == rootPrim.LocalID; }); + childPrims = Client.Network.CurrentSim.ObjectsPrimitives.FindAll(delegate(Primitive prim) { return prim.ParentID == rootPrim.LocalID; }); // Build a dictionary of primitives for referencing later Objects[rootPrim.ID] = rootPrim; diff --git a/libsecondlife/examples/TestClient/Commands/Prims/ExportCommand.cs b/libsecondlife/examples/TestClient/Commands/Prims/ExportCommand.cs index 58abbb9f..db7ea112 100644 --- a/libsecondlife/examples/TestClient/Commands/Prims/ExportCommand.cs +++ b/libsecondlife/examples/TestClient/Commands/Prims/ExportCommand.cs @@ -50,7 +50,7 @@ namespace libsecondlife.TestClient Primitive exportPrim; - exportPrim = Client.Network.CurrentSim.Objects.Find( + exportPrim = Client.Network.CurrentSim.ObjectsPrimitives.Find( delegate(Primitive prim) { return prim.ID == id; } ); @@ -81,7 +81,7 @@ namespace libsecondlife.TestClient } } - List prims = Client.Network.CurrentSim.Objects.FindAll( + List prims = Client.Network.CurrentSim.ObjectsPrimitives.FindAll( delegate(Primitive prim) { return (prim.LocalID == localid || prim.ParentID == localid); @@ -92,21 +92,38 @@ namespace libsecondlife.TestClient if (!complete) { - Console.WriteLine("Warning: Unable to retrieve full properties for:"); + Client.Log("Warning: Unable to retrieve full properties for:", Helpers.LogLevel.Warning); foreach (LLUUID uuid in PrimsWaiting.Keys) - Console.WriteLine(uuid); + Client.Log(uuid.ToString(), Helpers.LogLevel.Warning); } string output = LLSDParser.SerializeXmlString(Helpers.PrimListToLLSD(prims)); try { File.WriteAllText(file, output); } catch (Exception e) { return e.Message; } - return "Exported " + prims.Count + " prims to " + file; + Client.Log("Exported " + prims.Count + " prims to " + file, Helpers.LogLevel.Info); + + // Create a list of all of the textures to download + Dictionary textures = new Dictionary(); + for (int i = 0; i < prims.Count; i++) + { + Primitive prim = prims[i]; + + textures[prim.Textures.DefaultTexture.TextureID] = prim.Textures.DefaultTexture.TextureID; + + for (int j = 0; j < prim.Textures.FaceTextures.Length; j++) + { + if (prim.Textures.FaceTextures[j] != null) + textures[prim.Textures.FaceTextures[j].TextureID] = prim.Textures.FaceTextures[j].TextureID; + } + } + + return "Exported complete"; } else { return "Couldn't find UUID " + id.ToString() + " in the " + - Client.Network.CurrentSim.Objects.PrimCount + + Client.Network.CurrentSim.ObjectsPrimitives.Count + "objects currently indexed in the current simulator"; } } diff --git a/libsecondlife/examples/TestClient/Commands/Prims/ExportParticlesCommand.cs b/libsecondlife/examples/TestClient/Commands/Prims/ExportParticlesCommand.cs index 953f78e0..3625e009 100644 --- a/libsecondlife/examples/TestClient/Commands/Prims/ExportParticlesCommand.cs +++ b/libsecondlife/examples/TestClient/Commands/Prims/ExportParticlesCommand.cs @@ -27,7 +27,7 @@ namespace libsecondlife.TestClient { for (int i = 0; i < Client.Network.Simulators.Count; i++) { - Primitive exportPrim = Client.Network.Simulators[i].Objects.Find( + Primitive exportPrim = Client.Network.Simulators[i].ObjectsPrimitives.Find( delegate(Primitive prim) { return prim.ID == id; diff --git a/libsecondlife/examples/TestClient/Commands/Prims/FindObjectsCommand.cs b/libsecondlife/examples/TestClient/Commands/Prims/FindObjectsCommand.cs index 76db6de9..2ee73da4 100644 --- a/libsecondlife/examples/TestClient/Commands/Prims/FindObjectsCommand.cs +++ b/libsecondlife/examples/TestClient/Commands/Prims/FindObjectsCommand.cs @@ -33,7 +33,7 @@ namespace libsecondlife.TestClient LLVector3 location = Client.Self.SimPosition; // *** find all objects in radius *** - List prims = Client.Network.CurrentSim.Objects.FindAll( + List prims = Client.Network.CurrentSim.ObjectsPrimitives.FindAll( delegate(Primitive prim) { LLVector3 pos = prim.Position; return ((prim.ParentID == 0) && (pos != LLVector3.Zero) && (LLVector3.Dist(pos, location) < radius)); diff --git a/libsecondlife/examples/TestClient/Commands/Prims/FindTextureCommand.cs b/libsecondlife/examples/TestClient/Commands/Prims/FindTextureCommand.cs index 1e285d18..6d0e5530 100644 --- a/libsecondlife/examples/TestClient/Commands/Prims/FindTextureCommand.cs +++ b/libsecondlife/examples/TestClient/Commands/Prims/FindTextureCommand.cs @@ -23,7 +23,7 @@ namespace libsecondlife.TestClient if (Int32.TryParse(args[0], out faceIndex) && LLUUID.TryParse(args[1], out textureID)) { - Client.Network.CurrentSim.Objects.ForEach( + Client.Network.CurrentSim.ObjectsPrimitives.ForEach( delegate(Primitive prim) { if (prim.Textures != null && prim.Textures.FaceTextures[faceIndex] != null) diff --git a/libsecondlife/examples/TestClient/Commands/Prims/PrimCountCommand.cs b/libsecondlife/examples/TestClient/Commands/Prims/PrimCountCommand.cs index 9633d7b5..b4c4615b 100644 --- a/libsecondlife/examples/TestClient/Commands/Prims/PrimCountCommand.cs +++ b/libsecondlife/examples/TestClient/Commands/Prims/PrimCountCommand.cs @@ -19,8 +19,8 @@ namespace libsecondlife.TestClient { for (int i = 0; i < Client.Network.Simulators.Count; i++) { - int avcount = Client.Network.Simulators[i].Objects.AvatarCount; - int primcount = Client.Network.Simulators[i].Objects.PrimCount; + int avcount = Client.Network.Simulators[i].ObjectsAvatars.Count; + int primcount = Client.Network.Simulators[i].ObjectsPrimitives.Count; Console.WriteLine("{0} (Avatars: {1} Primitives: {2})", Client.Network.Simulators[i].Name, avcount, primcount); diff --git a/libsecondlife/examples/TestClient/Commands/Prims/PrimInfoCommand.cs b/libsecondlife/examples/TestClient/Commands/Prims/PrimInfoCommand.cs index 1620851d..d2510553 100644 --- a/libsecondlife/examples/TestClient/Commands/Prims/PrimInfoCommand.cs +++ b/libsecondlife/examples/TestClient/Commands/Prims/PrimInfoCommand.cs @@ -20,7 +20,7 @@ namespace libsecondlife.TestClient if (LLUUID.TryParse(args[0], out primID)) { - Primitive target = Client.Network.CurrentSim.Objects.Find( + Primitive target = Client.Network.CurrentSim.ObjectsPrimitives.Find( delegate(Primitive prim) { return prim.ID == primID; } ); diff --git a/libsecondlife/examples/TestClient/Commands/Prims/PrimRegexCommand.cs b/libsecondlife/examples/TestClient/Commands/Prims/PrimRegexCommand.cs index 6dd33edb..e0793562 100644 --- a/libsecondlife/examples/TestClient/Commands/Prims/PrimRegexCommand.cs +++ b/libsecondlife/examples/TestClient/Commands/Prims/PrimRegexCommand.cs @@ -30,8 +30,8 @@ namespace libsecondlife.TestClient Regex regexPrimName = new Regex(predicatPrim.ToLower()); // Print result - Client.Log(string.Format("Searching prim for [{0}] ({1} prims loaded in simulator)\n", predicatPrim, Client.Network.CurrentSim.Objects.PrimCount), Helpers.LogLevel.Info); - Client.Network.CurrentSim.Objects.ForEach( + Client.Log(string.Format("Searching prim for [{0}] ({1} prims loaded in simulator)\n", predicatPrim, Client.Network.CurrentSim.ObjectsPrimitives.Count), Helpers.LogLevel.Info); + Client.Network.CurrentSim.ObjectsPrimitives.ForEach( delegate(Primitive prim) { if (prim.Text != null && regexPrimName.IsMatch(prim.Text.ToLower())) diff --git a/libsecondlife/examples/TestClient/Commands/System/SetMasterKeyCommand.cs b/libsecondlife/examples/TestClient/Commands/System/SetMasterKeyCommand.cs index 117b9dd9..f721d41a 100644 --- a/libsecondlife/examples/TestClient/Commands/System/SetMasterKeyCommand.cs +++ b/libsecondlife/examples/TestClient/Commands/System/SetMasterKeyCommand.cs @@ -24,7 +24,7 @@ namespace libsecondlife.TestClient { for (int i = 0; i < Client.Network.Simulators.Count; i++) { - Avatar master = Client.Network.Simulators[i].Objects.Find( + Avatar master = Client.Network.Simulators[i].ObjectsAvatars.Find( delegate(Avatar avatar) { return avatar.ID == Client.MasterKey; diff --git a/libsecondlife/examples/TestClient/Commands/TouchCommand.cs b/libsecondlife/examples/TestClient/Commands/TouchCommand.cs index cdd9e095..1c60e721 100644 --- a/libsecondlife/examples/TestClient/Commands/TouchCommand.cs +++ b/libsecondlife/examples/TestClient/Commands/TouchCommand.cs @@ -23,7 +23,7 @@ namespace libsecondlife.TestClient if (LLUUID.TryParse(args[0], out target)) { - Primitive targetPrim = Client.Network.CurrentSim.Objects.Find( + Primitive targetPrim = Client.Network.CurrentSim.ObjectsPrimitives.Find( delegate(Primitive prim) { return prim.ID == target; @@ -40,4 +40,4 @@ namespace libsecondlife.TestClient return "Couldn't find a prim to touch with UUID " + args[0]; } } -} \ No newline at end of file +} diff --git a/libsecondlife/examples/TestClient/Commands/WhoCommand.cs b/libsecondlife/examples/TestClient/Commands/WhoCommand.cs index 7ba4a013..8b08e4d0 100644 --- a/libsecondlife/examples/TestClient/Commands/WhoCommand.cs +++ b/libsecondlife/examples/TestClient/Commands/WhoCommand.cs @@ -22,7 +22,7 @@ namespace libsecondlife.TestClient { for (int i = 0; i < Client.Network.Simulators.Count; i++) { - Client.Network.Simulators[i].Objects.ForEach( + Client.Network.Simulators[i].ObjectsAvatars.ForEach( delegate(Avatar av) { result.AppendLine(); diff --git a/libsecondlife/libsecondlife.csproj b/libsecondlife/libsecondlife.csproj index 9fcf547b..db39929d 100644 --- a/libsecondlife/libsecondlife.csproj +++ b/libsecondlife/libsecondlife.csproj @@ -157,7 +157,7 @@ Code - + Code @@ -183,4 +183,4 @@ xcopy "$(ProjectDir)\Resources\*.*" "$(OutDir)libsl_data" /i /d /y - \ No newline at end of file +