diff --git a/OpenMetaverse/ObjectManager.cs b/OpenMetaverse/ObjectManager.cs
index 5cd983d0..e9f8e261 100644
--- a/OpenMetaverse/ObjectManager.cs
+++ b/OpenMetaverse/ObjectManager.cs
@@ -478,6 +478,49 @@ namespace OpenMetaverse
Client.Network.SendPacket(select, simulator);
}
+ ///
+ /// Sets an object's sale information
+ ///
+ ///
+ ///
+ ///
+ public void SetObjectSaleInfo(uint localID, SaleType saleType, int price)
+ {
+ ObjectSaleInfoPacket sale = new ObjectSaleInfoPacket();
+ sale.AgentData.AgentID = Client.Self.AgentID;
+ sale.AgentData.SessionID = Client.Self.SessionID;
+ sale.ObjectData = new ObjectSaleInfoPacket.ObjectDataBlock[1];
+ sale.ObjectData[0] = new ObjectSaleInfoPacket.ObjectDataBlock();
+ sale.ObjectData[0].LocalID = localID;
+ sale.ObjectData[0].SalePrice = price;
+ sale.ObjectData[0].SaleType = (byte)saleType;
+
+ Client.Network.SendPacket(sale);
+ }
+
+ ///
+ /// Sets sale info for multiple objects
+ ///
+ ///
+ ///
+ ///
+ public void SetObjectSaleInfo(List localIDs, SaleType saleType, int price)
+ {
+ ObjectSaleInfoPacket sale = new ObjectSaleInfoPacket();
+ sale.AgentData.AgentID = Client.Self.AgentID;
+ sale.AgentData.SessionID = Client.Self.SessionID;
+ sale.ObjectData = new ObjectSaleInfoPacket.ObjectDataBlock[localIDs.Count];
+ for (int i = 0; i < localIDs.Count; i++)
+ {
+ sale.ObjectData[i] = new ObjectSaleInfoPacket.ObjectDataBlock();
+ sale.ObjectData[i].LocalID = localIDs[i];
+ sale.ObjectData[i].SalePrice = price;
+ sale.ObjectData[i].SaleType = (byte)saleType;
+ }
+
+ Client.Network.SendPacket(sale);
+ }
+
///
/// Deselect an object
///
@@ -2124,16 +2167,16 @@ namespace OpenMetaverse
}
}
}
+
+ //Do the actual removing outside of the loops but still inside the lock.
+ //This safely prevents the collection from being modified during a loop.
+ foreach (uint removeID in removeAvatars)
+ simulator.ObjectsAvatars.Dictionary.Remove(removeID);
}
}
- //Do the actual removing outside of the loops but still inside the lock.
- //This safely prevents the collection from being modified during a loop.
- foreach (uint removeID in removeAvatars)
- simulator.ObjectsAvatars.Remove(removeID);
-
foreach (uint removeID in removePrims)
- simulator.ObjectsPrimitives.Remove(removeID);
+ simulator.ObjectsPrimitives.Dictionary.Remove(removeID);
}
}
diff --git a/OpenMetaverse/Simulator.cs b/OpenMetaverse/Simulator.cs
index 5db9930a..a0757fbb 100644
--- a/OpenMetaverse/Simulator.cs
+++ b/OpenMetaverse/Simulator.cs
@@ -636,7 +636,7 @@ namespace OpenMetaverse
///
/// Sends a packet directly to the simulator without queuing
///
- /// Packet to be sent
+ /// Packet to be sent
public void SendPacketUnqueued(NetworkManager.OutgoingPacket outgoingPacket)
{
Packet packet = outgoingPacket.Packet;