diff --git a/OpenSim/Region/Environment/Scenes/Scene.cs b/OpenSim/Region/Environment/Scenes/Scene.cs index 417f8178d4..c8714aea6e 100644 --- a/OpenSim/Region/Environment/Scenes/Scene.cs +++ b/OpenSim/Region/Environment/Scenes/Scene.cs @@ -355,7 +355,7 @@ namespace OpenSim.Region.Environment.Scenes /// /// /// - private void CreateTerrainTexture() + public void CreateTerrainTexture() { //create a texture asset of the terrain byte[] data = this.Terrain.exportJpegImage("defaultstripe.png"); @@ -445,6 +445,15 @@ namespace OpenSim.Region.Environment.Scenes /// /// public override void AddNewClient(IClientAPI client, bool child) + { + SubscribeToClientEvents(client); + this.estateManager.sendRegionHandshake(client); + CreateAndAddScenePresence(client); + this.parcelManager.sendParcelOverlay(client); + + } + + protected override void SubscribeToClientEvents(IClientAPI client) { client.OnRegionHandShakeReply += this.SendLayerData; //remoteClient.OnRequestWearables += new GenericCall(this.GetInitialPrims); @@ -475,14 +484,6 @@ namespace OpenSim.Region.Environment.Scenes client.OnParcelJoinRequest += new ParcelJoinRequest(parcelManager.handleParcelJoinRequest); client.OnParcelPropertiesUpdateRequest += new ParcelPropertiesUpdateRequest(parcelManager.handleParcelPropertiesUpdateRequest); client.OnEstateOwnerMessage += new EstateOwnerMessageRequest(estateManager.handleEstateOwnerMessage); - - - this.estateManager.sendRegionHandshake(client); - CreateAndAddScenePresence(client); - - this.parcelManager.sendParcelOverlay(client); - - return; } protected void CreateAndAddScenePresence(IClientAPI client) @@ -772,7 +773,6 @@ namespace OpenSim.Region.Environment.Scenes remoteClient.SendRegionTeleport(regionHandle, 13, reg.ExternalEndPoint, 4, (1 << 4)); } - //remoteClient.SendTeleportCancel(); } } diff --git a/OpenSim/Region/Environment/Scenes/SceneObject.cs b/OpenSim/Region/Environment/Scenes/SceneObject.cs index c586e9b1ef..e979186557 100644 --- a/OpenSim/Region/Environment/Scenes/SceneObject.cs +++ b/OpenSim/Region/Environment/Scenes/SceneObject.cs @@ -115,13 +115,12 @@ namespace OpenSim.Region.Environment.Scenes { SceneObject dupe = new SceneObject(); + dupe.m_world = this.m_world; + dupe.m_regionHandle = this.m_regionHandle; Primitive newRoot = this.rootPrimitive.Copy((EntityBase)dupe, dupe); - - foreach (EntityBase child in this.children) - { - EntityBase newChild = child.Copy(); - dupe.children.Add(newChild); - } + dupe.rootPrimitive = newRoot; + dupe.rootPrimitive.Pos =( this.Pos + new LLVector3(0,0,1)); + dupe.Rotation = this.Rotation; return dupe; }