aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/OpenSim/Region/Environment
diff options
context:
space:
mode:
Diffstat (limited to 'OpenSim/Region/Environment')
-rw-r--r--OpenSim/Region/Environment/Scenes/EntityBase.cs2
-rw-r--r--OpenSim/Region/Environment/Scenes/Primitive.cs130
-rw-r--r--OpenSim/Region/Environment/Scenes/Scene.PacketHandlers.cs82
-rw-r--r--OpenSim/Region/Environment/Scenes/Scene.cs17
-rw-r--r--OpenSim/Region/Environment/Scenes/SceneObject.cs24
-rw-r--r--OpenSim/Region/Environment/Scenes/ScenePresence.cs1
6 files changed, 229 insertions, 27 deletions
diff --git a/OpenSim/Region/Environment/Scenes/EntityBase.cs b/OpenSim/Region/Environment/Scenes/EntityBase.cs
index a8eb9ce..2874ae2 100644
--- a/OpenSim/Region/Environment/Scenes/EntityBase.cs
+++ b/OpenSim/Region/Environment/Scenes/EntityBase.cs
@@ -55,7 +55,7 @@ namespace OpenSim.Region.Environment.Scenes
55 } 55 }
56 } 56 }
57 57
58 public Quaternion _rotation; 58 public Quaternion _rotation = new Quaternion(0,0,1,0);
59 59
60 public virtual Quaternion rotation 60 public virtual Quaternion rotation
61 { 61 {
diff --git a/OpenSim/Region/Environment/Scenes/Primitive.cs b/OpenSim/Region/Environment/Scenes/Primitive.cs
index a767bd2..803bd28 100644
--- a/OpenSim/Region/Environment/Scenes/Primitive.cs
+++ b/OpenSim/Region/Environment/Scenes/Primitive.cs
@@ -42,7 +42,7 @@ namespace OpenSim.Region.Environment.Scenes
42 private PrimitiveBaseShape m_Shape; 42 private PrimitiveBaseShape m_Shape;
43 43
44 public SceneObject m_RootParent; 44 public SceneObject m_RootParent;
45 public bool isRootPrim; 45 public bool isRootPrim;
46 public EntityBase m_Parent; 46 public EntityBase m_Parent;
47 47
48 public override LLVector3 Pos 48 public override LLVector3 Pos
@@ -60,7 +60,11 @@ namespace OpenSim.Region.Environment.Scenes
60 } 60 }
61 set 61 set
62 { 62 {
63 this.m_pos = m_Parent.Pos - value; //should we being subtracting the parent position 63 if (isRootPrim)
64 {
65 m_Parent.Pos = value;
66 }
67 this.m_pos = value - m_Parent.Pos;
64 } 68 }
65 69
66 } 70 }
@@ -77,7 +81,19 @@ namespace OpenSim.Region.Environment.Scenes
77 } 81 }
78 } 82 }
79 83
80 public Primitive(ulong regionHandle, Scene world, ObjectAddPacket addPacket, LLUUID ownerID, uint localID, bool isRoot, EntityBase parent , SceneObject rootObject) 84 public LLVector3 Scale
85 {
86 set
87 {
88 this.m_Shape.Scale = value;
89 }
90 get
91 {
92 return this.m_Shape.Scale;
93 }
94 }
95
96 public Primitive(ulong regionHandle, Scene world, ObjectAddPacket addPacket, LLUUID ownerID, uint localID, bool isRoot, EntityBase parent, SceneObject rootObject)
81 { 97 {
82 m_regionHandle = regionHandle; 98 m_regionHandle = regionHandle;
83 m_world = world; 99 m_world = world;
@@ -86,12 +102,13 @@ namespace OpenSim.Region.Environment.Scenes
86 this.isRootPrim = isRoot; 102 this.isRootPrim = isRoot;
87 this.m_RootParent = rootObject; 103 this.m_RootParent = rootObject;
88 this.CreateFromPacket(addPacket, ownerID, localID); 104 this.CreateFromPacket(addPacket, ownerID, localID);
105 this.rotation = Axiom.MathLib.Quaternion.Identity;
89 } 106 }
90 107
91 /// <summary> 108 /// <summary>
92 /// 109 ///
93 /// </summary> 110 /// </summary>
94 public override void update() 111 public override void update()
95 { 112 {
96 if (this.updateFlag == 1) // is a new prim just been created/reloaded or has major changes 113 if (this.updateFlag == 1) // is a new prim just been created/reloaded or has major changes
97 { 114 {
@@ -104,7 +121,10 @@ namespace OpenSim.Region.Environment.Scenes
104 this.updateFlag = 0; 121 this.updateFlag = 0;
105 } 122 }
106 123
107 base.update(); 124 foreach (EntityBase child in children)
125 {
126 child.update();
127 }
108 } 128 }
109 129
110 /// <summary> 130 /// <summary>
@@ -150,9 +170,13 @@ namespace OpenSim.Region.Environment.Scenes
150 this.updateFlag = 1; 170 this.updateFlag = 1;
151 } 171 }
152 172
173 /// <summary>
174 ///
175 /// </summary>
176 /// <param name="linkObject"></param>
153 public void AddNewChildren(SceneObject linkObject) 177 public void AddNewChildren(SceneObject linkObject)
154 { 178 {
155 // Console.WriteLine("linking new prims " + linkObject.rootLocalID + " to me (" + this.LocalId + ")"); 179 // Console.WriteLine("linking new prims " + linkObject.rootLocalID + " to me (" + this.LocalId + ")");
156 //TODO check permissions 180 //TODO check permissions
157 this.children.Add(linkObject.rootPrimitive); 181 this.children.Add(linkObject.rootPrimitive);
158 linkObject.rootPrimitive.SetNewParent(this, this.m_RootParent); 182 linkObject.rootPrimitive.SetNewParent(this, this.m_RootParent);
@@ -161,30 +185,73 @@ namespace OpenSim.Region.Environment.Scenes
161 linkObject.DeleteAllChildren(); 185 linkObject.DeleteAllChildren();
162 } 186 }
163 187
188 /// <summary>
189 ///
190 /// </summary>
191 /// <param name="newParent"></param>
192 /// <param name="rootParent"></param>
164 public void SetNewParent(Primitive newParent, SceneObject rootParent) 193 public void SetNewParent(Primitive newParent, SceneObject rootParent)
165 { 194 {
166 LLVector3 oldPos = new LLVector3(this.Pos.X, this.Pos.Y, this.Pos.Z); 195 LLVector3 oldPos = new LLVector3(this.Pos.X, this.Pos.Y, this.Pos.Z);
167 //Console.WriteLine("have a new parent and my old position is " + this.Pos.X + " , " + this.Pos.Y + " , " + this.Pos.Z);
168 this.isRootPrim = false; 196 this.isRootPrim = false;
169 this.m_Parent = newParent; 197 this.m_Parent = newParent;
170 this.ParentID = newParent.LocalId; 198 this.ParentID = newParent.LocalId;
171 this.SetRootParent(rootParent); 199 this.SetRootParent(rootParent);
172 // Console.WriteLine("have a new parent and its position is " + this.m_Parent.Pos.X + " , " + this.m_Parent.Pos.Y + " , " + this.m_Parent.Pos.Z);
173 this.Pos = oldPos; 200 this.Pos = oldPos;
174 // Console.WriteLine("have a new parent so my new offset position is " + this.Pos.X + " , " + this.Pos.Y + " , " + this.Pos.Z); 201 Axiom.MathLib.Vector3 axPos = new Axiom.MathLib.Vector3(this.m_pos.X, m_pos.Y, m_pos.Z);
202 axPos = this.m_Parent.rotation.Inverse() * axPos;
203 this.m_pos = new LLVector3(axPos.x, axPos.y, axPos.z);
204 this.rotation = this.rotation * this.m_Parent.rotation.Inverse();
175 this.updateFlag = 1; 205 this.updateFlag = 1;
176 206
177 } 207 }
178 208
209 /// <summary>
210 ///
211 /// </summary>
212 /// <param name="newRoot"></param>
179 public void SetRootParent(SceneObject newRoot) 213 public void SetRootParent(SceneObject newRoot)
180 { 214 {
181 this.m_RootParent = newRoot; 215 this.m_RootParent = newRoot;
216 this.m_RootParent.AddChildToList(this);
182 foreach (Primitive child in children) 217 foreach (Primitive child in children)
183 { 218 {
184 child.SetRootParent(newRoot); 219 child.SetRootParent(newRoot);
185 } 220 }
186 } 221 }
187 222
223 public void AddOffsetToChildren(LLVector3 offset)
224 {
225 foreach (Primitive prim in this.children)
226 {
227 prim.m_pos += offset;
228 prim.updateFlag = 2;
229 }
230 }
231
232 #region Resizing/Scale
233 public void ResizeGoup(LLVector3 scale)
234 {
235 LLVector3 offset = (scale - this.m_Shape.Scale);
236 offset.X /= 2;
237 offset.Y /= 2;
238 offset.Z /= 2;
239 if (this.isRootPrim)
240 {
241 this.m_Parent.Pos += offset;
242 }
243 else
244 {
245 this.m_pos += offset;
246 }
247
248 this.AddOffsetToChildren(new LLVector3(-offset.X, -offset.Y, -offset.Z));
249 this.m_Shape.Scale = scale;
250
251 this.updateFlag = 1;
252 }
253 #endregion
254
188 /// <summary> 255 /// <summary>
189 /// 256 ///
190 /// </summary> 257 /// </summary>
@@ -192,14 +259,47 @@ namespace OpenSim.Region.Environment.Scenes
192 public void UpdatePosition(LLVector3 pos) 259 public void UpdatePosition(LLVector3 pos)
193 { 260 {
194 LLVector3 newPos = new LLVector3(pos.X, pos.Y, pos.Z); 261 LLVector3 newPos = new LLVector3(pos.X, pos.Y, pos.Z);
195 if (this.isRootPrim) 262
196 {
197 this.m_Parent.Pos = newPos;
198 }
199 this.Pos = newPos; 263 this.Pos = newPos;
200 this.updateFlag = 2; 264 this.updateFlag = 2;
201 } 265 }
202 266
267 public void UpdateRotation(LLQuaternion rot)
268 {
269 this.rotation = new Axiom.MathLib.Quaternion(rot.W, rot.X, rot.Y, rot.Z);
270 this.updateFlag = 2;
271 }
272
273 public void UpdateGroupMouseRotation(LLVector3 pos, LLQuaternion rot)
274 {
275 this.rotation = new Axiom.MathLib.Quaternion(rot.W, rot.X, rot.Y, rot.Z);
276 this.Pos = pos;
277 this.updateFlag = 2;
278 }
279
280 public void UpdateShape(ObjectShapePacket.ObjectDataBlock shapeBlock)
281 {
282 this.m_Shape.PathBegin = shapeBlock.PathBegin;
283 this.m_Shape.PathEnd = shapeBlock.PathEnd;
284 this.m_Shape.PathScaleX = shapeBlock.PathScaleX;
285 this.m_Shape.PathScaleY = shapeBlock.PathScaleY;
286 this.m_Shape.PathShearX = shapeBlock.PathShearX;
287 this.m_Shape.PathShearY = shapeBlock.PathShearY;
288 this.m_Shape.PathSkew = shapeBlock.PathSkew;
289 this.m_Shape.ProfileBegin = shapeBlock.ProfileBegin;
290 this.m_Shape.ProfileEnd = shapeBlock.ProfileEnd;
291 this.m_Shape.PathCurve = shapeBlock.PathCurve;
292 this.m_Shape.ProfileCurve = shapeBlock.ProfileCurve;
293 this.m_Shape.ProfileHollow = shapeBlock.ProfileHollow;
294 this.m_Shape.PathRadiusOffset = shapeBlock.PathRadiusOffset;
295 this.m_Shape.PathRevolutions = shapeBlock.PathRevolutions;
296 this.m_Shape.PathTaperX = shapeBlock.PathTaperX;
297 this.m_Shape.PathTaperY = shapeBlock.PathTaperY;
298 this.m_Shape.PathTwist = shapeBlock.PathTwist;
299 this.m_Shape.PathTwistBegin = shapeBlock.PathTwistBegin;
300 this.updateFlag = 1;
301 }
302
203 #region Client Update Methods 303 #region Client Update Methods
204 304
205 /// <summary> 305 /// <summary>
@@ -226,8 +326,10 @@ namespace OpenSim.Region.Environment.Scenes
226 { 326 {
227 LLVector3 lPos; 327 LLVector3 lPos;
228 lPos = this.Pos; 328 lPos = this.Pos;
329 LLQuaternion lRot;
330 lRot = new LLQuaternion(this.rotation.x, this.rotation.y, this.rotation.z, this.rotation.w);
229 331
230 remoteClient.SendPrimitiveToClient(this.m_regionHandle, 64096, this.LocalId, this.m_Shape, lPos, new LLUUID("00000000-0000-0000-9999-000000000005"), this.flags, this.uuid, this.OwnerID, this.Text, this.ParentID); 332 remoteClient.SendPrimitiveToClient(this.m_regionHandle, 64096, this.LocalId, this.m_Shape, lPos, lRot, new LLUUID("00000000-0000-0000-9999-000000000005"), this.flags, this.uuid, this.OwnerID, this.Text, this.ParentID);
231 } 333 }
232 334
233 /// <summary> 335 /// <summary>
diff --git a/OpenSim/Region/Environment/Scenes/Scene.PacketHandlers.cs b/OpenSim/Region/Environment/Scenes/Scene.PacketHandlers.cs
index 669039f..0927903 100644
--- a/OpenSim/Region/Environment/Scenes/Scene.PacketHandlers.cs
+++ b/OpenSim/Region/Environment/Scenes/Scene.PacketHandlers.cs
@@ -233,7 +233,19 @@ namespace OpenSim.Region.Environment.Scenes
233 /// <param name="shapeBlock"></param> 233 /// <param name="shapeBlock"></param>
234 public void UpdatePrimShape(uint primLocalID, ObjectShapePacket.ObjectDataBlock shapeBlock) 234 public void UpdatePrimShape(uint primLocalID, ObjectShapePacket.ObjectDataBlock shapeBlock)
235 { 235 {
236 236 Primitive prim = null;
237 foreach (EntityBase ent in Entities.Values)
238 {
239 if (ent is SceneObject)
240 {
241 prim = ((SceneObject)ent).HasChildPrim(primLocalID);
242 if (prim != null)
243 {
244 prim.UpdateShape(shapeBlock);
245 break;
246 }
247 }
248 }
237 } 249 }
238 250
239 /// <summary> 251 /// <summary>
@@ -263,7 +275,7 @@ namespace OpenSim.Region.Environment.Scenes
263 /// <param name="description"></param> 275 /// <param name="description"></param>
264 public void PrimDescription(uint primLocalID, string description) 276 public void PrimDescription(uint primLocalID, string description)
265 { 277 {
266 Primitive prim = null; 278 Primitive prim = null;
267 foreach (EntityBase ent in Entities.Values) 279 foreach (EntityBase ent in Entities.Values)
268 { 280 {
269 if (ent is SceneObject) 281 if (ent is SceneObject)
@@ -271,7 +283,7 @@ namespace OpenSim.Region.Environment.Scenes
271 prim = ((SceneObject)ent).HasChildPrim(primLocalID); 283 prim = ((SceneObject)ent).HasChildPrim(primLocalID);
272 if (prim != null) 284 if (prim != null)
273 { 285 {
274 prim.Description = description; 286 prim.Description = description;
275 break; 287 break;
276 } 288 }
277 } 289 }
@@ -341,12 +353,41 @@ namespace OpenSim.Region.Environment.Scenes
341 /// <param name="remoteClient"></param> 353 /// <param name="remoteClient"></param>
342 public void UpdatePrimPosition(uint localID, LLVector3 pos, IClientAPI remoteClient) 354 public void UpdatePrimPosition(uint localID, LLVector3 pos, IClientAPI remoteClient)
343 { 355 {
344 foreach (Entity ent in Entities.Values) 356 Primitive prim = null;
357 foreach (EntityBase ent in Entities.Values)
345 { 358 {
346 if (ent.LocalId == localID) 359 if (ent is SceneObject)
347 { 360 {
348 ((PrimitiveOld)ent).UpdatePosition(pos); 361 prim = ((SceneObject)ent).HasChildPrim(localID);
349 break; 362 if (prim != null)
363 {
364 prim.UpdatePosition(pos);
365 break;
366 }
367 }
368 }
369 }
370
371 /// <summary>
372 ///
373 /// </summary>
374 /// <param name="localID"></param>
375 /// <param name="pos"></param>
376 /// <param name="rot"></param>
377 /// <param name="remoteClient"></param>
378 public void UpdatePrimRotation(uint localID, LLVector3 pos, LLQuaternion rot, IClientAPI remoteClient)
379 {
380 Primitive prim = null;
381 foreach (EntityBase ent in Entities.Values)
382 {
383 if (ent is SceneObject)
384 {
385 prim = ((SceneObject)ent).HasChildPrim(localID);
386 if (prim != null)
387 {
388 prim.UpdateGroupMouseRotation( pos, rot);
389 break;
390 }
350 } 391 }
351 } 392 }
352 } 393 }
@@ -359,7 +400,19 @@ namespace OpenSim.Region.Environment.Scenes
359 /// <param name="remoteClient"></param> 400 /// <param name="remoteClient"></param>
360 public void UpdatePrimRotation(uint localID, LLQuaternion rot, IClientAPI remoteClient) 401 public void UpdatePrimRotation(uint localID, LLQuaternion rot, IClientAPI remoteClient)
361 { 402 {
362 403 Primitive prim = null;
404 foreach (EntityBase ent in Entities.Values)
405 {
406 if (ent is SceneObject)
407 {
408 prim = ((SceneObject)ent).HasChildPrim(localID);
409 if (prim != null)
410 {
411 prim.UpdateRotation(rot);
412 break;
413 }
414 }
415 }
363 } 416 }
364 417
365 /// <summary> 418 /// <summary>
@@ -370,6 +423,19 @@ namespace OpenSim.Region.Environment.Scenes
370 /// <param name="remoteClient"></param> 423 /// <param name="remoteClient"></param>
371 public void UpdatePrimScale(uint localID, LLVector3 scale, IClientAPI remoteClient) 424 public void UpdatePrimScale(uint localID, LLVector3 scale, IClientAPI remoteClient)
372 { 425 {
426 Primitive prim = null;
427 foreach (EntityBase ent in Entities.Values)
428 {
429 if (ent is SceneObject)
430 {
431 prim = ((SceneObject)ent).HasChildPrim(localID);
432 if (prim != null)
433 {
434 prim.ResizeGoup(scale);
435 break;
436 }
437 }
438 }
373 } 439 }
374 440
375 /// <summary> 441 /// <summary>
diff --git a/OpenSim/Region/Environment/Scenes/Scene.cs b/OpenSim/Region/Environment/Scenes/Scene.cs
index d13b3ab..838d722 100644
--- a/OpenSim/Region/Environment/Scenes/Scene.cs
+++ b/OpenSim/Region/Environment/Scenes/Scene.cs
@@ -452,7 +452,11 @@ namespace OpenSim.Region.Environment.Scenes
452 client.OnChatFromViewer += this.SimChat; 452 client.OnChatFromViewer += this.SimChat;
453 client.OnRequestWearables += this.InformClientOfNeighbours; 453 client.OnRequestWearables += this.InformClientOfNeighbours;
454 client.OnAddPrim += this.AddNewPrim; 454 client.OnAddPrim += this.AddNewPrim;
455 //client.OnUpdatePrimPosition += this.UpdatePrimPosition; 455 client.OnUpdatePrimPosition += this.UpdatePrimPosition;
456 client.OnUpdatePrimRotation += this.UpdatePrimRotation;
457 client.OnUpdatePrimGroupRotation += this.UpdatePrimRotation;
458 client.OnUpdatePrimScale += this.UpdatePrimScale;
459 client.OnUpdatePrimShape += this.UpdatePrimShape;
456 client.OnRequestMapBlocks += this.RequestMapBlocks; 460 client.OnRequestMapBlocks += this.RequestMapBlocks;
457 client.OnTeleportLocationRequest += this.RequestTeleportLocation; 461 client.OnTeleportLocationRequest += this.RequestTeleportLocation;
458 client.OnObjectSelect += this.SelectPrim; 462 client.OnObjectSelect += this.SelectPrim;
@@ -596,6 +600,17 @@ namespace OpenSim.Region.Environment.Scenes
596 return false; 600 return false;
597 } 601 }
598 602
603 public void SendAllSceneObjectsToClient(IClientAPI client)
604 {
605 foreach (EntityBase ent in Entities.Values)
606 {
607 if (ent is SceneObject)
608 {
609 ((SceneObject)ent).SendAllChildPrimsToClient(client);
610 }
611 }
612 }
613
599 #region RegionCommsHost 614 #region RegionCommsHost
600 615
601 /// <summary> 616 /// <summary>
diff --git a/OpenSim/Region/Environment/Scenes/SceneObject.cs b/OpenSim/Region/Environment/Scenes/SceneObject.cs
index 04ed408..3d97a06 100644
--- a/OpenSim/Region/Environment/Scenes/SceneObject.cs
+++ b/OpenSim/Region/Environment/Scenes/SceneObject.cs
@@ -63,6 +63,7 @@ namespace OpenSim.Region.Environment.Scenes
63 return this.LocalId; 63 return this.LocalId;
64 } 64 }
65 } 65 }
66
66 /// <summary> 67 /// <summary>
67 /// 68 ///
68 /// </summary> 69 /// </summary>
@@ -72,8 +73,8 @@ namespace OpenSim.Region.Environment.Scenes
72 m_world = world; 73 m_world = world;
73 this.Pos = addPacket.ObjectData.RayEnd; 74 this.Pos = addPacket.ObjectData.RayEnd;
74 this.CreateRootFromPacket(addPacket, ownerID, localID); 75 this.CreateRootFromPacket(addPacket, ownerID, localID);
75
76 } 76 }
77
77 /// <summary> 78 /// <summary>
78 /// 79 ///
79 /// </summary> 80 /// </summary>
@@ -115,6 +116,13 @@ namespace OpenSim.Region.Environment.Scenes
115 this.rootPrimitive.AddNewChildren(primObject); 116 this.rootPrimitive.AddNewChildren(primObject);
116 } 117 }
117 118
119 public void AddChildToList(Primitive prim)
120 {
121 if (!this.ChildPrimitives.ContainsKey(prim.uuid))
122 {
123 this.ChildPrimitives.Add(prim.uuid, prim);
124 }
125 }
118 /// <summary> 126 /// <summary>
119 /// 127 ///
120 /// </summary> 128 /// </summary>
@@ -130,10 +138,15 @@ namespace OpenSim.Region.Environment.Scenes
130 return null; 138 return null;
131 } 139 }
132 140
141 /// <summary>
142 ///
143 /// </summary>
144 /// <param name="localID"></param>
145 /// <returns></returns>
133 public Primitive HasChildPrim(uint localID) 146 public Primitive HasChildPrim(uint localID)
134 { 147 {
135 Primitive returnPrim = null; 148 Primitive returnPrim = null;
136 foreach (Primitive prim in this.children) 149 foreach (Primitive prim in this.ChildPrimitives.Values)
137 { 150 {
138 if (prim.LocalId == localID) 151 if (prim.LocalId == localID)
139 { 152 {
@@ -144,6 +157,11 @@ namespace OpenSim.Region.Environment.Scenes
144 return returnPrim; 157 return returnPrim;
145 } 158 }
146 159
160 public void SendAllChildPrimsToClient(IClientAPI client)
161 {
162 this.rootPrimitive.SendFullUpdateForAllChildren(client);
163 }
164
147 /// <summary> 165 /// <summary>
148 /// 166 ///
149 /// </summary> 167 /// </summary>
@@ -160,7 +178,7 @@ namespace OpenSim.Region.Environment.Scenes
160 /// <param name="remoteClient"></param> 178 /// <param name="remoteClient"></param>
161 public void GrapMovement(LLVector3 offset, LLVector3 pos, IClientAPI remoteClient) 179 public void GrapMovement(LLVector3 offset, LLVector3 pos, IClientAPI remoteClient)
162 { 180 {
163 this.Pos = pos; 181 //this.Pos = pos;
164 this.rootPrimitive.Pos = pos; 182 this.rootPrimitive.Pos = pos;
165 this.rootPrimitive.SendTerseUpdateForAllChildren(remoteClient); 183 this.rootPrimitive.SendTerseUpdateForAllChildren(remoteClient);
166 } 184 }
diff --git a/OpenSim/Region/Environment/Scenes/ScenePresence.cs b/OpenSim/Region/Environment/Scenes/ScenePresence.cs
index dcca848..98fa2ed 100644
--- a/OpenSim/Region/Environment/Scenes/ScenePresence.cs
+++ b/OpenSim/Region/Environment/Scenes/ScenePresence.cs
@@ -384,6 +384,7 @@ namespace OpenSim.Region.Environment.Scenes
384 public void SendOurAppearance(IClientAPI OurClient) 384 public void SendOurAppearance(IClientAPI OurClient)
385 { 385 {
386 this.ControllingClient.SendWearables(this.Wearables); 386 this.ControllingClient.SendWearables(this.Wearables);
387 this.m_world.SendAllSceneObjectsToClient(this.ControllingClient);
387 } 388 }
388 389
389 /// <summary> 390 /// <summary>