diff options
author | Charles Krinke | 2007-11-01 03:56:54 +0000 |
---|---|---|
committer | Charles Krinke | 2007-11-01 03:56:54 +0000 |
commit | 8af272b3abdb4ecc64fa7cf46ef0205e4398f01c (patch) | |
tree | 4100dee3fdad35cce23ce4cb645fa443bf7c90da /OpenSim/Region | |
parent | Thank you Melanie for a patch to SceneObjectPart.cs so that on first transmis... (diff) | |
download | opensim-SC-8af272b3abdb4ecc64fa7cf46ef0205e4398f01c.zip opensim-SC-8af272b3abdb4ecc64fa7cf46ef0205e4398f01c.tar.gz opensim-SC-8af272b3abdb4ecc64fa7cf46ef0205e4398f01c.tar.bz2 opensim-SC-8af272b3abdb4ecc64fa7cf46ef0205e4398f01c.tar.xz |
Thank you, Melanie for solving: When receiving an ObjectAdd packet, the Rotation member is silently ignored and the prim is created with 0,0,0,1 rotation. The patch introduces a fix that passes the Rotation parameter from the packet to the object and uses it in the actual object creation.
Diffstat (limited to '')
4 files changed, 22 insertions, 9 deletions
diff --git a/OpenSim/Region/ClientStack/ClientView.ProcessPackets.cs b/OpenSim/Region/ClientStack/ClientView.ProcessPackets.cs index 3b996d5..1e14587 100644 --- a/OpenSim/Region/ClientStack/ClientView.ProcessPackets.cs +++ b/OpenSim/Region/ClientStack/ClientView.ProcessPackets.cs | |||
@@ -243,7 +243,7 @@ namespace OpenSim.Region.ClientStack | |||
243 | { | 243 | { |
244 | ObjectAddPacket addPacket = (ObjectAddPacket) Pack; | 244 | ObjectAddPacket addPacket = (ObjectAddPacket) Pack; |
245 | PrimitiveBaseShape shape = GetShapeFromAddPacket(addPacket); | 245 | PrimitiveBaseShape shape = GetShapeFromAddPacket(addPacket); |
246 | OnAddPrim(AgentId, addPacket.ObjectData.RayEnd, shape); | 246 | OnAddPrim(AgentId, addPacket.ObjectData.RayEnd, addPacket.ObjectData.Rotation, shape); |
247 | } | 247 | } |
248 | break; | 248 | break; |
249 | case PacketType.ObjectShape: | 249 | case PacketType.ObjectShape: |
diff --git a/OpenSim/Region/Environment/Scenes/Scene.cs b/OpenSim/Region/Environment/Scenes/Scene.cs index e37ad59..8da22c4 100644 --- a/OpenSim/Region/Environment/Scenes/Scene.cs +++ b/OpenSim/Region/Environment/Scenes/Scene.cs | |||
@@ -568,12 +568,12 @@ namespace OpenSim.Region.Environment.Scenes | |||
568 | /// </summary> | 568 | /// </summary> |
569 | /// <param name="addPacket"></param> | 569 | /// <param name="addPacket"></param> |
570 | /// <param name="ownerID"></param> | 570 | /// <param name="ownerID"></param> |
571 | public void AddNewPrim(LLUUID ownerID, LLVector3 pos, PrimitiveBaseShape shape) | 571 | public void AddNewPrim(LLUUID ownerID, LLVector3 pos, LLQuaternion rot, PrimitiveBaseShape shape) |
572 | { | 572 | { |
573 | if (PermissionsMngr.CanRezObject(ownerID, pos)) | 573 | if (PermissionsMngr.CanRezObject(ownerID, pos)) |
574 | { | 574 | { |
575 | SceneObjectGroup sceneOb = | 575 | SceneObjectGroup sceneOb = |
576 | new SceneObjectGroup(this, m_regionHandle, ownerID, PrimIDAllocate(), pos, shape); | 576 | new SceneObjectGroup(this, m_regionHandle, ownerID, PrimIDAllocate(), pos, rot, shape); |
577 | AddEntity(sceneOb); | 577 | AddEntity(sceneOb); |
578 | SceneObjectPart rootPart = sceneOb.GetChildPart(sceneOb.UUID); | 578 | SceneObjectPart rootPart = sceneOb.GetChildPart(sceneOb.UUID); |
579 | // if grass or tree, make phantom | 579 | // if grass or tree, make phantom |
@@ -1565,4 +1565,4 @@ namespace OpenSim.Region.Environment.Scenes | |||
1565 | } | 1565 | } |
1566 | } | 1566 | } |
1567 | } | 1567 | } |
1568 | } \ No newline at end of file | 1568 | } |
diff --git a/OpenSim/Region/Environment/Scenes/SceneObjectGroup.cs b/OpenSim/Region/Environment/Scenes/SceneObjectGroup.cs index 2f86d2f..aaa25e7 100644 --- a/OpenSim/Region/Environment/Scenes/SceneObjectGroup.cs +++ b/OpenSim/Region/Environment/Scenes/SceneObjectGroup.cs | |||
@@ -322,7 +322,7 @@ namespace OpenSim.Region.Environment.Scenes | |||
322 | /// | 322 | /// |
323 | /// </summary> | 323 | /// </summary> |
324 | public SceneObjectGroup(Scene scene, ulong regionHandle, LLUUID ownerID, uint localID, LLVector3 pos, | 324 | public SceneObjectGroup(Scene scene, ulong regionHandle, LLUUID ownerID, uint localID, LLVector3 pos, |
325 | PrimitiveBaseShape shape) | 325 | LLQuaternion rot, PrimitiveBaseShape shape) |
326 | { | 326 | { |
327 | m_regionHandle = regionHandle; | 327 | m_regionHandle = regionHandle; |
328 | m_scene = scene; | 328 | m_scene = scene; |
@@ -330,13 +330,21 @@ namespace OpenSim.Region.Environment.Scenes | |||
330 | // this.Pos = pos; | 330 | // this.Pos = pos; |
331 | LLVector3 rootOffset = new LLVector3(0, 0, 0); | 331 | LLVector3 rootOffset = new LLVector3(0, 0, 0); |
332 | SceneObjectPart newPart = | 332 | SceneObjectPart newPart = |
333 | new SceneObjectPart(m_regionHandle, this, ownerID, localID, shape, pos, rootOffset); | 333 | new SceneObjectPart(m_regionHandle, this, ownerID, localID, shape, pos, rot, rootOffset); |
334 | m_parts.Add(newPart.UUID, newPart); | 334 | m_parts.Add(newPart.UUID, newPart); |
335 | SetPartAsRoot(newPart); | 335 | SetPartAsRoot(newPart); |
336 | 336 | ||
337 | AttachToBackup(); | 337 | AttachToBackup(); |
338 | } | 338 | } |
339 | 339 | ||
340 | /// <summary> | ||
341 | /// | ||
342 | /// </summary> | ||
343 | public SceneObjectGroup(Scene scene, ulong regionHandle, LLUUID ownerID, uint localID, LLVector3 pos, | ||
344 | PrimitiveBaseShape shape):this(scene, regionHandle, ownerID, localID, pos, LLQuaternion.Identity, shape) | ||
345 | { | ||
346 | } | ||
347 | |||
340 | #endregion | 348 | #endregion |
341 | 349 | ||
342 | public string ToXmlString() | 350 | public string ToXmlString() |
@@ -1386,4 +1394,4 @@ namespace OpenSim.Region.Environment.Scenes | |||
1386 | Text = text; | 1394 | Text = text; |
1387 | } | 1395 | } |
1388 | } | 1396 | } |
1389 | } \ No newline at end of file | 1397 | } |
diff --git a/OpenSim/Region/Environment/Scenes/SceneObjectPart.cs b/OpenSim/Region/Environment/Scenes/SceneObjectPart.cs index 80723fa..dacac4b 100644 --- a/OpenSim/Region/Environment/Scenes/SceneObjectPart.cs +++ b/OpenSim/Region/Environment/Scenes/SceneObjectPart.cs | |||
@@ -271,6 +271,11 @@ namespace OpenSim.Region.Environment.Scenes | |||
271 | { | 271 | { |
272 | } | 272 | } |
273 | 273 | ||
274 | public SceneObjectPart(ulong regionHandle, SceneObjectGroup parent, LLUUID ownerID, uint localID, | ||
275 | PrimitiveBaseShape shape, LLVector3 groupPosition, LLVector3 offsetPosition):this(regionHandle, parent, ownerID, localID, shape, groupPosition, LLQuaternion.Identity, offsetPosition) | ||
276 | { | ||
277 | } | ||
278 | |||
274 | /// <summary> | 279 | /// <summary> |
275 | /// Create a completely new SceneObjectPart (prim) | 280 | /// Create a completely new SceneObjectPart (prim) |
276 | /// </summary> | 281 | /// </summary> |
@@ -281,7 +286,7 @@ namespace OpenSim.Region.Environment.Scenes | |||
281 | /// <param name="shape"></param> | 286 | /// <param name="shape"></param> |
282 | /// <param name="position"></param> | 287 | /// <param name="position"></param> |
283 | public SceneObjectPart(ulong regionHandle, SceneObjectGroup parent, LLUUID ownerID, uint localID, | 288 | public SceneObjectPart(ulong regionHandle, SceneObjectGroup parent, LLUUID ownerID, uint localID, |
284 | PrimitiveBaseShape shape, LLVector3 groupPosition, LLVector3 offsetPosition) | 289 | PrimitiveBaseShape shape, LLVector3 groupPosition, LLQuaternion rotationOffset, LLVector3 offsetPosition) |
285 | { | 290 | { |
286 | m_name = "Primitive"; | 291 | m_name = "Primitive"; |
287 | m_regionHandle = regionHandle; | 292 | m_regionHandle = regionHandle; |
@@ -297,7 +302,7 @@ namespace OpenSim.Region.Environment.Scenes | |||
297 | 302 | ||
298 | GroupPosition = groupPosition; | 303 | GroupPosition = groupPosition; |
299 | OffsetPosition = offsetPosition; | 304 | OffsetPosition = offsetPosition; |
300 | RotationOffset = LLQuaternion.Identity; | 305 | RotationOffset = rotationOffset; |
301 | Velocity = new LLVector3(0, 0, 0); | 306 | Velocity = new LLVector3(0, 0, 0); |
302 | AngularVelocity = new LLVector3(0, 0, 0); | 307 | AngularVelocity = new LLVector3(0, 0, 0); |
303 | Acceleration = new LLVector3(0, 0, 0); | 308 | Acceleration = new LLVector3(0, 0, 0); |