aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/OpenSim/Region/ClientStack
diff options
context:
space:
mode:
Diffstat (limited to 'OpenSim/Region/ClientStack')
-rw-r--r--OpenSim/Region/ClientStack/Linden/UDP/LLClientView.cs156
1 files changed, 143 insertions, 13 deletions
diff --git a/OpenSim/Region/ClientStack/Linden/UDP/LLClientView.cs b/OpenSim/Region/ClientStack/Linden/UDP/LLClientView.cs
index 051c4fa..7d51323 100644
--- a/OpenSim/Region/ClientStack/Linden/UDP/LLClientView.cs
+++ b/OpenSim/Region/ClientStack/Linden/UDP/LLClientView.cs
@@ -125,6 +125,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP
125 public event RequestObjectPropertiesFamily OnRequestObjectPropertiesFamily; 125 public event RequestObjectPropertiesFamily OnRequestObjectPropertiesFamily;
126 public event UpdatePrimFlags OnUpdatePrimFlags; 126 public event UpdatePrimFlags OnUpdatePrimFlags;
127 public event UpdatePrimTexture OnUpdatePrimTexture; 127 public event UpdatePrimTexture OnUpdatePrimTexture;
128 public event ClientChangeObject onClientChangeObject;
128 public event UpdateVector OnUpdatePrimGroupPosition; 129 public event UpdateVector OnUpdatePrimGroupPosition;
129 public event UpdateVector OnUpdatePrimSinglePosition; 130 public event UpdateVector OnUpdatePrimSinglePosition;
130 public event UpdatePrimRotation OnUpdatePrimGroupRotation; 131 public event UpdatePrimRotation OnUpdatePrimGroupRotation;
@@ -11517,22 +11518,151 @@ namespace OpenSim.Region.ClientStack.LindenUDP
11517// parts[j].IgnoreUndoUpdate = true; 11518// parts[j].IgnoreUndoUpdate = true;
11518// } 11519// }
11519 11520
11520 UpdatePrimGroupRotation handlerUpdatePrimGroupRotation; 11521// UpdatePrimGroupRotation handlerUpdatePrimGroupRotation;
11521 UpdateVector handlerUpdatePrimGroupScale; 11522// UpdateVector handlerUpdatePrimGroupScale;
11522 11523
11523 Quaternion arot; 11524 ClientChangeObject updatehandler = onClientChangeObject;
11524 Vector3 ascale; 11525
11525 Vector3 apos; 11526 if (updatehandler != null)
11526/*ubit from ll JIRA: 11527 {
11527 * 0x01 position 11528 ObjectChangeData udata = new ObjectChangeData();
11528 * 0x02 rotation 11529
11529 * 0x04 scale 11530 /*ubit from ll JIRA:
11531 * 0x01 position
11532 * 0x02 rotation
11533 * 0x04 scale
11530 11534
11531 * 0x08 LINK_SET 11535 * 0x08 LINK_SET
11532 * 0x10 UNIFORM for scale 11536 * 0x10 UNIFORM for scale
11533 */ 11537 */
11538
11539 // translate to internal changes
11540 // not all cases .. just the ones older code did
11541
11542 switch (block.Type)
11543 {
11544 case 1: //change position sp
11545 udata.position = new Vector3(block.Data, 0);
11546
11547 udata.what = ObjectChangeWhat.primP;
11548 updatehandler(localId, udata, this);
11549 break;
11550
11551 case 2: // rotation sp
11552 udata.rotation = new Quaternion(block.Data, 0, true);
11553
11554 udata.what = ObjectChangeWhat.primR;
11555 updatehandler(localId, udata, this);
11556 break;
11557
11558 case 3: // position plus rotation
11559 udata.position = new Vector3(block.Data, 0);
11560 udata.rotation = new Quaternion(block.Data, 12, true);
11561
11562 udata.what = ObjectChangeWhat.primPR;
11563 updatehandler(localId, udata, this);
11564
11565 break;
11566
11567 case 4: // scale sp
11568 udata.scale = new Vector3(block.Data, 0);
11569 udata.what = ObjectChangeWhat.primS;
11570
11571 updatehandler(localId, udata, this);
11572 break;
11573
11574 case 0x14: // uniform scale sp
11575 udata.scale = new Vector3(block.Data, 0);
11576
11577 udata.what = ObjectChangeWhat.primUS;
11578 updatehandler(localId, udata, this);
11579 break;
11580
11581 case 5: // scale and position sp
11582 udata.position = new Vector3(block.Data, 0);
11583 udata.scale = new Vector3(block.Data, 12);
11584
11585 udata.what = ObjectChangeWhat.primPS;
11586 updatehandler(localId, udata, this);
11587 break;
11588
11589 case 0x15: //uniform scale and position
11590 udata.position = new Vector3(block.Data, 0);
11591 udata.scale = new Vector3(block.Data, 12);
11592
11593 udata.what = ObjectChangeWhat.primPUS;
11594 updatehandler(localId, udata, this);
11595 break;
11534 11596
11597 // now group related (bit 4)
11598 case 9: //( 8 + 1 )group position
11599 udata.position = new Vector3(block.Data, 0);
11535 11600
11601 udata.what = ObjectChangeWhat.groupP;
11602 updatehandler(localId, udata, this);
11603 break;
11604
11605 case 0x0A: // (8 + 2) group rotation
11606 udata.rotation = new Quaternion(block.Data, 0, true);
11607
11608 udata.what = ObjectChangeWhat.groupR;
11609 updatehandler(localId, udata, this);
11610 break;
11611
11612 case 0x0B: //( 8 + 2 + 1) group rotation and position
11613 udata.position = new Vector3(block.Data, 0);
11614 udata.rotation = new Quaternion(block.Data, 12, true);
11615
11616 udata.what = ObjectChangeWhat.groupPR;
11617 updatehandler(localId, udata, this);
11618 break;
11619
11620 case 0x0C: // (8 + 4) group scale
11621 // only afects root prim and only sent by viewer editor object tab scaling
11622 // mouse edition only allows uniform scaling
11623 // SL MAY CHANGE THIS in viewers
11624
11625 udata.scale = new Vector3(block.Data, 0);
11626
11627 // udata.what = ObjectChangeWhat.groupS;
11628 udata.what = ObjectChangeWhat.primS; // to conform to current SL
11629 updatehandler(localId, udata, this);
11630
11631 break;
11632
11633 case 0x0D: //(8 + 4 + 1) group scale and position
11634 // exception as above
11635
11636 udata.position = new Vector3(block.Data, 0);
11637 udata.scale = new Vector3(block.Data, 12);
11638
11639 // udata.what = ObjectChangeWhat.groupPS;
11640 udata.what = ObjectChangeWhat.primPS; // to conform to current SL
11641 updatehandler(localId, udata, this);
11642 break;
11643
11644 case 0x1C: // (0x10 + 8 + 4 ) group scale UNIFORM
11645 udata.scale = new Vector3(block.Data, 0);
11646
11647 udata.what = ObjectChangeWhat.groupUS;
11648 updatehandler(localId, udata, this);
11649 break;
11650
11651 case 0x1D: // (UNIFORM + GROUP + SCALE + POS)
11652 udata.position = new Vector3(block.Data, 0);
11653 udata.scale = new Vector3(block.Data, 12);
11654
11655 udata.what = ObjectChangeWhat.groupPUS;
11656 updatehandler(localId, udata, this);
11657 break;
11658
11659 default:
11660 m_log.Debug("[CLIENT]: MultipleObjUpdate recieved an unknown packet type: " + (block.Type));
11661 break;
11662 }
11663 }
11664
11665/*
11536 switch (block.Type) 11666 switch (block.Type)
11537 { 11667 {
11538 case 1: //change position sp 11668 case 1: //change position sp
@@ -11788,7 +11918,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP
11788 m_log.Debug("[CLIENT]: MultipleObjUpdate recieved an unknown packet type: " + (block.Type)); 11918 m_log.Debug("[CLIENT]: MultipleObjUpdate recieved an unknown packet type: " + (block.Type));
11789 break; 11919 break;
11790 } 11920 }
11791 11921*/
11792// for (int j = 0; j < parts.Length; j++) 11922// for (int j = 0; j < parts.Length; j++)
11793// parts[j].IgnoreUndoUpdate = false; 11923// parts[j].IgnoreUndoUpdate = false;
11794 11924