diff options
Diffstat (limited to '')
7 files changed, 103 insertions, 12 deletions
diff --git a/OpenSim/Region/ClientStack/LindenUDP/LLClientView.cs b/OpenSim/Region/ClientStack/LindenUDP/LLClientView.cs index 3fdb386..a13f6d4 100644 --- a/OpenSim/Region/ClientStack/LindenUDP/LLClientView.cs +++ b/OpenSim/Region/ClientStack/LindenUDP/LLClientView.cs | |||
@@ -267,6 +267,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP | |||
267 | 267 | ||
268 | private UpdateVector handlerUpdatePrimSinglePosition; //OnUpdatePrimSinglePosition; | 268 | private UpdateVector handlerUpdatePrimSinglePosition; //OnUpdatePrimSinglePosition; |
269 | private UpdatePrimSingleRotation handlerUpdatePrimSingleRotation; //OnUpdatePrimSingleRotation; | 269 | private UpdatePrimSingleRotation handlerUpdatePrimSingleRotation; //OnUpdatePrimSingleRotation; |
270 | private UpdatePrimSingleRotationPosition handlerUpdatePrimSingleRotationPosition; //OnUpdatePrimSingleRotation; | ||
270 | private UpdateVector handlerUpdatePrimScale; //OnUpdatePrimScale; | 271 | private UpdateVector handlerUpdatePrimScale; //OnUpdatePrimScale; |
271 | private UpdateVector handlerUpdatePrimGroupScale; //OnUpdateGroupScale; | 272 | private UpdateVector handlerUpdatePrimGroupScale; //OnUpdateGroupScale; |
272 | private UpdateVector handlerUpdateVector; //OnUpdatePrimGroupPosition; | 273 | private UpdateVector handlerUpdateVector; //OnUpdatePrimGroupPosition; |
@@ -1095,6 +1096,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP | |||
1095 | public event UpdateVector OnUpdatePrimSinglePosition; | 1096 | public event UpdateVector OnUpdatePrimSinglePosition; |
1096 | public event UpdatePrimRotation OnUpdatePrimGroupRotation; | 1097 | public event UpdatePrimRotation OnUpdatePrimGroupRotation; |
1097 | public event UpdatePrimSingleRotation OnUpdatePrimSingleRotation; | 1098 | public event UpdatePrimSingleRotation OnUpdatePrimSingleRotation; |
1099 | public event UpdatePrimSingleRotationPosition OnUpdatePrimSingleRotationPosition; | ||
1098 | public event UpdatePrimGroupRotation OnUpdatePrimGroupMouseRotation; | 1100 | public event UpdatePrimGroupRotation OnUpdatePrimGroupMouseRotation; |
1099 | public event UpdateVector OnUpdatePrimScale; | 1101 | public event UpdateVector OnUpdatePrimScale; |
1100 | public event UpdateVector OnUpdatePrimGroupScale; | 1102 | public event UpdateVector OnUpdatePrimGroupScale; |
@@ -4481,18 +4483,20 @@ namespace OpenSim.Region.ClientStack.LindenUDP | |||
4481 | handlerUpdatePrimSingleRotation = OnUpdatePrimSingleRotation; | 4483 | handlerUpdatePrimSingleRotation = OnUpdatePrimSingleRotation; |
4482 | if (handlerUpdatePrimSingleRotation != null) | 4484 | if (handlerUpdatePrimSingleRotation != null) |
4483 | { | 4485 | { |
4484 | //m_log.Debug("new tab rotation is " + rot.X + " , " + rot.Y + " , " + rot.Z + " , " + rot.W); | 4486 | // m_log.Info("new tab rotation is " + rot1.X + " , " + rot1.Y + " , " + rot1.Z + " , " + rot1.W); |
4485 | handlerUpdatePrimSingleRotation(localId, rot1, this); | 4487 | handlerUpdatePrimSingleRotation(localId, rot1, this); |
4486 | } | 4488 | } |
4487 | break; | 4489 | break; |
4488 | case 3: | 4490 | case 3: |
4489 | 4491 | Vector3 rotPos = new Vector3(block.Data, 0); | |
4490 | Quaternion rot2 = new Quaternion(block.Data, 12, true); | 4492 | Quaternion rot2 = new Quaternion(block.Data, 12, true); |
4491 | handlerUpdatePrimSingleRotation = OnUpdatePrimSingleRotation; | 4493 | |
4492 | if (handlerUpdatePrimSingleRotation != null) | 4494 | handlerUpdatePrimSingleRotationPosition = OnUpdatePrimSingleRotationPosition; |
4495 | if (handlerUpdatePrimSingleRotationPosition != null) | ||
4493 | { | 4496 | { |
4494 | //m_log.Debug("new mouse rotation is " + rot.X + " , " + rot.Y + " , " + rot.Z + " , " + rot.W); | 4497 | // m_log.Debug("new mouse rotation position is " + rotPos.X + " , " + rotPos.Y + " , " + rotPos.Z); |
4495 | handlerUpdatePrimSingleRotation(localId, rot2, this); | 4498 | // m_log.Info("new mouse rotation is " + rot2.X + " , " + rot2.Y + " , " + rot2.Z + " , " + rot2.W); |
4499 | handlerUpdatePrimSingleRotationPosition(localId, rot2, rotPos, this); | ||
4496 | } | 4500 | } |
4497 | break; | 4501 | break; |
4498 | case 4: | 4502 | case 4: |
@@ -4541,7 +4545,7 @@ namespace OpenSim.Region.ClientStack.LindenUDP | |||
4541 | handlerUpdatePrimRotation = OnUpdatePrimGroupRotation; | 4545 | handlerUpdatePrimRotation = OnUpdatePrimGroupRotation; |
4542 | if (handlerUpdatePrimRotation != null) | 4546 | if (handlerUpdatePrimRotation != null) |
4543 | { | 4547 | { |
4544 | // Console.WriteLine("new rotation is " + rot.X + " , " + rot.Y + " , " + rot.Z + " , " + rot.W); | 4548 | // Console.WriteLine("new rotation is " + rot3.X + " , " + rot3.Y + " , " + rot3.Z + " , " + rot3.W); |
4545 | handlerUpdatePrimRotation(localId, rot3, this); | 4549 | handlerUpdatePrimRotation(localId, rot3, this); |
4546 | } | 4550 | } |
4547 | break; | 4551 | break; |
@@ -4552,8 +4556,8 @@ namespace OpenSim.Region.ClientStack.LindenUDP | |||
4552 | handlerUpdatePrimGroupRotation = OnUpdatePrimGroupMouseRotation; | 4556 | handlerUpdatePrimGroupRotation = OnUpdatePrimGroupMouseRotation; |
4553 | if (handlerUpdatePrimGroupRotation != null) | 4557 | if (handlerUpdatePrimGroupRotation != null) |
4554 | { | 4558 | { |
4555 | //m_log.Debug("new rotation position is " + pos.X + " , " + pos.Y + " , " + pos.Z); | 4559 | // m_log.Debug("new rotation position is " + pos.X + " , " + pos.Y + " , " + pos.Z); |
4556 | // m_log.Debug("new rotation is " + rot.X + " , " + rot.Y + " , " + rot.Z + " , " + rot.W); | 4560 | // m_log.Debug("new group mouse rotation is " + rot4.X + " , " + rot4.Y + " , " + rot4.Z + " , " + rot4.W); |
4557 | handlerUpdatePrimGroupRotation(localId, pos3, rot4, this); | 4561 | handlerUpdatePrimGroupRotation(localId, pos3, rot4, this); |
4558 | } | 4562 | } |
4559 | break; | 4563 | break; |
diff --git a/OpenSim/Region/Examples/SimpleModule/MyNpcCharacter.cs b/OpenSim/Region/Examples/SimpleModule/MyNpcCharacter.cs index 5e33729..ed38046 100644 --- a/OpenSim/Region/Examples/SimpleModule/MyNpcCharacter.cs +++ b/OpenSim/Region/Examples/SimpleModule/MyNpcCharacter.cs | |||
@@ -117,6 +117,7 @@ namespace OpenSim.Region.Examples.SimpleModule | |||
117 | public event UpdateVector OnUpdatePrimGroupPosition; | 117 | public event UpdateVector OnUpdatePrimGroupPosition; |
118 | public event UpdateVector OnUpdatePrimSinglePosition; | 118 | public event UpdateVector OnUpdatePrimSinglePosition; |
119 | public event UpdatePrimRotation OnUpdatePrimGroupRotation; | 119 | public event UpdatePrimRotation OnUpdatePrimGroupRotation; |
120 | public event UpdatePrimSingleRotationPosition OnUpdatePrimSingleRotationPosition; | ||
120 | public event UpdatePrimSingleRotation OnUpdatePrimSingleRotation; | 121 | public event UpdatePrimSingleRotation OnUpdatePrimSingleRotation; |
121 | public event UpdatePrimGroupRotation OnUpdatePrimGroupMouseRotation; | 122 | public event UpdatePrimGroupRotation OnUpdatePrimGroupMouseRotation; |
122 | public event UpdateVector OnUpdatePrimScale; | 123 | public event UpdateVector OnUpdatePrimScale; |
diff --git a/OpenSim/Region/Framework/Scenes/Scene.cs b/OpenSim/Region/Framework/Scenes/Scene.cs index 81d54e7..63cf9ce 100644 --- a/OpenSim/Region/Framework/Scenes/Scene.cs +++ b/OpenSim/Region/Framework/Scenes/Scene.cs | |||
@@ -1964,6 +1964,7 @@ namespace OpenSim.Region.Framework.Scenes | |||
1964 | client.OnUpdatePrimGroupRotation += m_sceneGraph.UpdatePrimRotation; | 1964 | client.OnUpdatePrimGroupRotation += m_sceneGraph.UpdatePrimRotation; |
1965 | client.OnUpdatePrimGroupMouseRotation += m_sceneGraph.UpdatePrimRotation; | 1965 | client.OnUpdatePrimGroupMouseRotation += m_sceneGraph.UpdatePrimRotation; |
1966 | client.OnUpdatePrimSingleRotation += m_sceneGraph.UpdatePrimSingleRotation; | 1966 | client.OnUpdatePrimSingleRotation += m_sceneGraph.UpdatePrimSingleRotation; |
1967 | client.OnUpdatePrimSingleRotationPosition += m_sceneGraph.UpdatePrimSingleRotationPosition; | ||
1967 | client.OnUpdatePrimScale += m_sceneGraph.UpdatePrimScale; | 1968 | client.OnUpdatePrimScale += m_sceneGraph.UpdatePrimScale; |
1968 | client.OnUpdatePrimGroupScale += m_sceneGraph.UpdatePrimGroupScale; | 1969 | client.OnUpdatePrimGroupScale += m_sceneGraph.UpdatePrimGroupScale; |
1969 | client.OnUpdateExtraParams += m_sceneGraph.UpdateExtraParam; | 1970 | client.OnUpdateExtraParams += m_sceneGraph.UpdateExtraParam; |
diff --git a/OpenSim/Region/Framework/Scenes/SceneGraph.cs b/OpenSim/Region/Framework/Scenes/SceneGraph.cs index 62870d5..3f63481 100644 --- a/OpenSim/Region/Framework/Scenes/SceneGraph.cs +++ b/OpenSim/Region/Framework/Scenes/SceneGraph.cs | |||
@@ -1207,6 +1207,25 @@ namespace OpenSim.Region.Framework.Scenes | |||
1207 | /// <param name="localID"></param> | 1207 | /// <param name="localID"></param> |
1208 | /// <param name="rot"></param> | 1208 | /// <param name="rot"></param> |
1209 | /// <param name="remoteClient"></param> | 1209 | /// <param name="remoteClient"></param> |
1210 | protected internal void UpdatePrimSingleRotationPosition(uint localID, Quaternion rot, Vector3 pos, IClientAPI remoteClient) | ||
1211 | { | ||
1212 | SceneObjectGroup group = GetGroupByPrim(localID); | ||
1213 | if (group != null) | ||
1214 | { | ||
1215 | if (m_parentScene.Permissions.CanMoveObject(group.UUID, remoteClient.AgentId)) | ||
1216 | { | ||
1217 | group.UpdateSingleRotation(rot,pos, localID); | ||
1218 | } | ||
1219 | } | ||
1220 | } | ||
1221 | |||
1222 | |||
1223 | /// <summary> | ||
1224 | /// | ||
1225 | /// </summary> | ||
1226 | /// <param name="localID"></param> | ||
1227 | /// <param name="rot"></param> | ||
1228 | /// <param name="remoteClient"></param> | ||
1210 | protected internal void UpdatePrimRotation(uint localID, Quaternion rot, IClientAPI remoteClient) | 1229 | protected internal void UpdatePrimRotation(uint localID, Quaternion rot, IClientAPI remoteClient) |
1211 | { | 1230 | { |
1212 | SceneObjectGroup group = GetGroupByPrim(localID); | 1231 | SceneObjectGroup group = GetGroupByPrim(localID); |
diff --git a/OpenSim/Region/Framework/Scenes/SceneObjectGroup.cs b/OpenSim/Region/Framework/Scenes/SceneObjectGroup.cs index e987445..00ae504 100644 --- a/OpenSim/Region/Framework/Scenes/SceneObjectGroup.cs +++ b/OpenSim/Region/Framework/Scenes/SceneObjectGroup.cs | |||
@@ -625,6 +625,8 @@ namespace OpenSim.Region.Framework.Scenes | |||
625 | Vector3 backBottomLeft; | 625 | Vector3 backBottomLeft; |
626 | Vector3 backBottomRight; | 626 | Vector3 backBottomRight; |
627 | 627 | ||
628 | // Vector3[] corners = new Vector3[8]; | ||
629 | |||
628 | Vector3 orig = Vector3.Zero; | 630 | Vector3 orig = Vector3.Zero; |
629 | 631 | ||
630 | frontTopLeft.X = orig.X - (part.Scale.X / 2); | 632 | frontTopLeft.X = orig.X - (part.Scale.X / 2); |
@@ -660,6 +662,36 @@ namespace OpenSim.Region.Framework.Scenes | |||
660 | backBottomRight.Y = orig.Y + (part.Scale.Y / 2); | 662 | backBottomRight.Y = orig.Y + (part.Scale.Y / 2); |
661 | backBottomRight.Z = orig.Z - (part.Scale.Z / 2); | 663 | backBottomRight.Z = orig.Z - (part.Scale.Z / 2); |
662 | 664 | ||
665 | //m_log.InfoFormat("pre corner 1 is {0} {1} {2}", frontTopLeft.X, frontTopLeft.Y, frontTopLeft.Z); | ||
666 | //m_log.InfoFormat("pre corner 2 is {0} {1} {2}", frontTopRight.X, frontTopRight.Y, frontTopRight.Z); | ||
667 | //m_log.InfoFormat("pre corner 3 is {0} {1} {2}", frontBottomRight.X, frontBottomRight.Y, frontBottomRight.Z); | ||
668 | //m_log.InfoFormat("pre corner 4 is {0} {1} {2}", frontBottomLeft.X, frontBottomLeft.Y, frontBottomLeft.Z); | ||
669 | //m_log.InfoFormat("pre corner 5 is {0} {1} {2}", backTopLeft.X, backTopLeft.Y, backTopLeft.Z); | ||
670 | //m_log.InfoFormat("pre corner 6 is {0} {1} {2}", backTopRight.X, backTopRight.Y, backTopRight.Z); | ||
671 | //m_log.InfoFormat("pre corner 7 is {0} {1} {2}", backBottomRight.X, backBottomRight.Y, backBottomRight.Z); | ||
672 | //m_log.InfoFormat("pre corner 8 is {0} {1} {2}", backBottomLeft.X, backBottomLeft.Y, backBottomLeft.Z); | ||
673 | |||
674 | //for (int i = 0; i < 8; i++) | ||
675 | //{ | ||
676 | // corners[i] = corners[i] * worldRot; | ||
677 | // corners[i] += offset; | ||
678 | |||
679 | // if (corners[i].X > maxX) | ||
680 | // maxX = corners[i].X; | ||
681 | // if (corners[i].X < minX) | ||
682 | // minX = corners[i].X; | ||
683 | |||
684 | // if (corners[i].Y > maxY) | ||
685 | // maxY = corners[i].Y; | ||
686 | // if (corners[i].Y < minY) | ||
687 | // minY = corners[i].Y; | ||
688 | |||
689 | // if (corners[i].Z > maxZ) | ||
690 | // maxZ = corners[i].Y; | ||
691 | // if (corners[i].Z < minZ) | ||
692 | // minZ = corners[i].Z; | ||
693 | //} | ||
694 | |||
663 | frontTopLeft = frontTopLeft * worldRot; | 695 | frontTopLeft = frontTopLeft * worldRot; |
664 | frontTopRight = frontTopRight * worldRot; | 696 | frontTopRight = frontTopRight * worldRot; |
665 | frontBottomLeft = frontBottomLeft * worldRot; | 697 | frontBottomLeft = frontBottomLeft * worldRot; |
@@ -681,6 +713,15 @@ namespace OpenSim.Region.Framework.Scenes | |||
681 | backTopLeft += offset; | 713 | backTopLeft += offset; |
682 | backTopRight += offset; | 714 | backTopRight += offset; |
683 | 715 | ||
716 | //m_log.InfoFormat("corner 1 is {0} {1} {2}", frontTopLeft.X, frontTopLeft.Y, frontTopLeft.Z); | ||
717 | //m_log.InfoFormat("corner 2 is {0} {1} {2}", frontTopRight.X, frontTopRight.Y, frontTopRight.Z); | ||
718 | //m_log.InfoFormat("corner 3 is {0} {1} {2}", frontBottomRight.X, frontBottomRight.Y, frontBottomRight.Z); | ||
719 | //m_log.InfoFormat("corner 4 is {0} {1} {2}", frontBottomLeft.X, frontBottomLeft.Y, frontBottomLeft.Z); | ||
720 | //m_log.InfoFormat("corner 5 is {0} {1} {2}", backTopLeft.X, backTopLeft.Y, backTopLeft.Z); | ||
721 | //m_log.InfoFormat("corner 6 is {0} {1} {2}", backTopRight.X, backTopRight.Y, backTopRight.Z); | ||
722 | //m_log.InfoFormat("corner 7 is {0} {1} {2}", backBottomRight.X, backBottomRight.Y, backBottomRight.Z); | ||
723 | //m_log.InfoFormat("corner 8 is {0} {1} {2}", backBottomLeft.X, backBottomLeft.Y, backBottomLeft.Z); | ||
724 | |||
684 | if (frontTopRight.X > maxX) | 725 | if (frontTopRight.X > maxX) |
685 | maxX = frontTopRight.X; | 726 | maxX = frontTopRight.X; |
686 | if (frontTopLeft.X > maxX) | 727 | if (frontTopLeft.X > maxX) |
@@ -801,15 +842,15 @@ namespace OpenSim.Region.Framework.Scenes | |||
801 | if (lower > maxZ) | 842 | if (lower > maxZ) |
802 | { | 843 | { |
803 | offsetHeight = lower - (boundingBox.Z / 2); | 844 | offsetHeight = lower - (boundingBox.Z / 2); |
804 | 845 | ||
805 | } | 846 | } |
806 | else if (maxZ > lower) | 847 | else if (maxZ > lower) |
807 | { | 848 | { |
808 | offsetHeight = maxZ - (boundingBox.Z / 2); | 849 | offsetHeight = maxZ - (boundingBox.Z / 2); |
809 | offsetHeight *= -1; | 850 | offsetHeight *= -1; |
810 | } | 851 | } |
811 | 852 | ||
812 | // m_log.InfoFormat("BoundingBox is {0} , {1} , {2} ", boundingBox.X, boundingBox.Y, boundingBox.Z); | 853 | // m_log.InfoFormat("BoundingBox is {0} , {1} , {2} ", boundingBox.X, boundingBox.Y, boundingBox.Z); |
813 | return boundingBox; | 854 | return boundingBox; |
814 | } | 855 | } |
815 | #endregion | 856 | #endregion |
@@ -3017,6 +3058,29 @@ namespace OpenSim.Region.Framework.Scenes | |||
3017 | /// | 3058 | /// |
3018 | /// </summary> | 3059 | /// </summary> |
3019 | /// <param name="rot"></param> | 3060 | /// <param name="rot"></param> |
3061 | /// <param name="localID"></param> | ||
3062 | public void UpdateSingleRotation(Quaternion rot, Vector3 pos, uint localID) | ||
3063 | { | ||
3064 | SceneObjectPart part = GetChildPart(localID); | ||
3065 | if (part != null) | ||
3066 | { | ||
3067 | if (part.UUID == m_rootPart.UUID) | ||
3068 | { | ||
3069 | UpdateRootRotation(rot); | ||
3070 | AbsolutePosition = pos; | ||
3071 | } | ||
3072 | else | ||
3073 | { | ||
3074 | part.UpdateRotation(rot); | ||
3075 | part.OffsetPosition = pos; | ||
3076 | } | ||
3077 | } | ||
3078 | } | ||
3079 | |||
3080 | /// <summary> | ||
3081 | /// | ||
3082 | /// </summary> | ||
3083 | /// <param name="rot"></param> | ||
3020 | private void UpdateRootRotation(Quaternion rot) | 3084 | private void UpdateRootRotation(Quaternion rot) |
3021 | { | 3085 | { |
3022 | Quaternion axRot = rot; | 3086 | Quaternion axRot = rot; |
diff --git a/OpenSim/Region/OptionalModules/Agent/InternetRelayClientView/Server/IRCClientView.cs b/OpenSim/Region/OptionalModules/Agent/InternetRelayClientView/Server/IRCClientView.cs index 8ec1780..776e972 100644 --- a/OpenSim/Region/OptionalModules/Agent/InternetRelayClientView/Server/IRCClientView.cs +++ b/OpenSim/Region/OptionalModules/Agent/InternetRelayClientView/Server/IRCClientView.cs | |||
@@ -699,6 +699,7 @@ namespace OpenSim.Region.OptionalModules.Agent.InternetRelayClientView.Server | |||
699 | public event UpdateVector OnUpdatePrimSinglePosition; | 699 | public event UpdateVector OnUpdatePrimSinglePosition; |
700 | public event UpdatePrimRotation OnUpdatePrimGroupRotation; | 700 | public event UpdatePrimRotation OnUpdatePrimGroupRotation; |
701 | public event UpdatePrimSingleRotation OnUpdatePrimSingleRotation; | 701 | public event UpdatePrimSingleRotation OnUpdatePrimSingleRotation; |
702 | public event UpdatePrimSingleRotationPosition OnUpdatePrimSingleRotationPosition; | ||
702 | public event UpdatePrimGroupRotation OnUpdatePrimGroupMouseRotation; | 703 | public event UpdatePrimGroupRotation OnUpdatePrimGroupMouseRotation; |
703 | public event UpdateVector OnUpdatePrimScale; | 704 | public event UpdateVector OnUpdatePrimScale; |
704 | public event UpdateVector OnUpdatePrimGroupScale; | 705 | public event UpdateVector OnUpdatePrimGroupScale; |
diff --git a/OpenSim/Region/OptionalModules/World/NPC/NPCAvatar.cs b/OpenSim/Region/OptionalModules/World/NPC/NPCAvatar.cs index 228683e..a1ed6ee 100644 --- a/OpenSim/Region/OptionalModules/World/NPC/NPCAvatar.cs +++ b/OpenSim/Region/OptionalModules/World/NPC/NPCAvatar.cs | |||
@@ -223,6 +223,7 @@ namespace OpenSim.Region.OptionalModules.World.NPC | |||
223 | public event UpdateVector OnUpdatePrimGroupPosition; | 223 | public event UpdateVector OnUpdatePrimGroupPosition; |
224 | public event UpdateVector OnUpdatePrimSinglePosition; | 224 | public event UpdateVector OnUpdatePrimSinglePosition; |
225 | public event UpdatePrimRotation OnUpdatePrimGroupRotation; | 225 | public event UpdatePrimRotation OnUpdatePrimGroupRotation; |
226 | public event UpdatePrimSingleRotationPosition OnUpdatePrimSingleRotationPosition; | ||
226 | public event UpdatePrimSingleRotation OnUpdatePrimSingleRotation; | 227 | public event UpdatePrimSingleRotation OnUpdatePrimSingleRotation; |
227 | public event UpdatePrimGroupRotation OnUpdatePrimGroupMouseRotation; | 228 | public event UpdatePrimGroupRotation OnUpdatePrimGroupMouseRotation; |
228 | public event UpdateVector OnUpdatePrimScale; | 229 | public event UpdateVector OnUpdatePrimScale; |