diff options
Diffstat (limited to 'OpenSim/Region/CoreModules/Communications/Local/LocalInterregionComms.cs')
-rw-r--r-- | OpenSim/Region/CoreModules/Communications/Local/LocalInterregionComms.cs | 15 |
1 files changed, 12 insertions, 3 deletions
diff --git a/OpenSim/Region/CoreModules/Communications/Local/LocalInterregionComms.cs b/OpenSim/Region/CoreModules/Communications/Local/LocalInterregionComms.cs index 48f737e..6e813f4 100644 --- a/OpenSim/Region/CoreModules/Communications/Local/LocalInterregionComms.cs +++ b/OpenSim/Region/CoreModules/Communications/Local/LocalInterregionComms.cs | |||
@@ -204,15 +204,24 @@ namespace OpenSim.Region.CoreModules.Communications.Local | |||
204 | * Object-related communications | 204 | * Object-related communications |
205 | */ | 205 | */ |
206 | 206 | ||
207 | public bool SendCreateObject(ulong regionHandle, ISceneObject sog) | 207 | public bool SendCreateObject(ulong regionHandle, ISceneObject sog, bool isLocalCall) |
208 | { | 208 | { |
209 | foreach (Scene s in m_sceneList) | 209 | foreach (Scene s in m_sceneList) |
210 | { | 210 | { |
211 | if (s.RegionInfo.RegionHandle == regionHandle) | 211 | if (s.RegionInfo.RegionHandle == regionHandle) |
212 | { | 212 | { |
213 | //m_log.Debug("[LOCAL COMMS]: Found region to SendCreateObject"); | 213 | //m_log.Debug("[LOCAL COMMS]: Found region to SendCreateObject"); |
214 | ISceneObject sogClone = sog.CloneForNewScene(); | 214 | if (isLocalCall) |
215 | return s.IncomingCreateObject(sogClone); | 215 | { |
216 | // We need to make a local copy of the object | ||
217 | ISceneObject sogClone = sog.CloneForNewScene(); | ||
218 | return s.IncomingCreateObject(sogClone); | ||
219 | } | ||
220 | else | ||
221 | { | ||
222 | // Use the object as it came through the wire | ||
223 | return s.IncomingCreateObject(sog); | ||
224 | } | ||
216 | } | 225 | } |
217 | } | 226 | } |
218 | return false; | 227 | return false; |