From e8acf1cca92592fea38208dbfe4137555431434d Mon Sep 17 00:00:00 2001
From: Adam Frisby
Date: Mon, 9 Jul 2007 15:29:39 +0000
Subject: * Begun work on Primitive Duplication. Not hooked up yet, but
theoretically could be done so. In practice, more work needs to be done.
---
OpenSim/Region/Environment/Scenes/Scene.cs | 21 +++++++++++++++++++--
1 file changed, 19 insertions(+), 2 deletions(-)
(limited to 'OpenSim/Region/Environment/Scenes/Scene.cs')
diff --git a/OpenSim/Region/Environment/Scenes/Scene.cs b/OpenSim/Region/Environment/Scenes/Scene.cs
index fdf3cc8..1798cba 100644
--- a/OpenSim/Region/Environment/Scenes/Scene.cs
+++ b/OpenSim/Region/Environment/Scenes/Scene.cs
@@ -57,6 +57,7 @@ namespace OpenSim.Region.Environment.Scenes
private float timeStep = 0.1f;
private Random Rand = new Random();
private uint _primCount = 702000;
+ private System.Threading.Mutex _primAllocateMutex = new Mutex(false);
private int storageCount;
private Mutex updateLock;
@@ -397,6 +398,22 @@ namespace OpenSim.Region.Environment.Scenes
}
///
+ /// Returns a new unallocated primitive ID
+ ///
+ /// A brand new primitive ID
+ public uint PrimIDAllocate()
+ {
+ uint myID;
+
+ _primAllocateMutex.WaitOne();
+ ++_primCount;
+ myID = _primCount;
+ _primAllocateMutex.ReleaseMutex();
+
+ return myID;
+ }
+
+ ///
///
///
///
@@ -415,9 +432,8 @@ namespace OpenSim.Region.Environment.Scenes
{
try
{
- SceneObject sceneOb = new SceneObject(m_regionHandle, this, addPacket, ownerID, this._primCount);
+ SceneObject sceneOb = new SceneObject(m_regionHandle, this, addPacket, ownerID, this.PrimIDAllocate());
this.Entities.Add(sceneOb.rootUUID, sceneOb);
- this._primCount++;
// Trigger event for listeners
// eventManager.TriggerOnNewPrimitive(prim);
@@ -468,6 +484,7 @@ namespace OpenSim.Region.Environment.Scenes
client.OnObjectDescription += this.PrimDescription;
client.OnObjectName += this.PrimName;
client.OnLinkObjects += this.LinkObjects;
+ client.OnObjectDuplicate += this.DuplicateObject;
/* remoteClient.OnParcelPropertiesRequest += new ParcelPropertiesRequest(parcelManager.handleParcelPropertiesRequest);
remoteClient.OnParcelDivideRequest += new ParcelDivideRequest(parcelManager.handleParcelDivideRequest);
--
cgit v1.1