aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/OpenSim/Region/Framework/Scenes/ScenePresence.cs
diff options
context:
space:
mode:
Diffstat (limited to 'OpenSim/Region/Framework/Scenes/ScenePresence.cs')
-rw-r--r--OpenSim/Region/Framework/Scenes/ScenePresence.cs36
1 files changed, 21 insertions, 15 deletions
diff --git a/OpenSim/Region/Framework/Scenes/ScenePresence.cs b/OpenSim/Region/Framework/Scenes/ScenePresence.cs
index e677cfd..cebd108 100644
--- a/OpenSim/Region/Framework/Scenes/ScenePresence.cs
+++ b/OpenSim/Region/Framework/Scenes/ScenePresence.cs
@@ -171,7 +171,7 @@ namespace OpenSim.Region.Framework.Scenes
171 protected RegionInfo m_regionInfo; 171 protected RegionInfo m_regionInfo;
172 protected ulong crossingFromRegion; 172 protected ulong crossingFromRegion;
173 173
174 private readonly Vector3[] Dir_Vectors = new Vector3[9]; 174 private readonly Vector3[] Dir_Vectors = new Vector3[11];
175 private bool m_isNudging = false; 175 private bool m_isNudging = false;
176 176
177 // Position of agent's camera in world (region cordinates) 177 // Position of agent's camera in world (region cordinates)
@@ -241,6 +241,8 @@ namespace OpenSim.Region.Framework.Scenes
241 DIR_CONTROL_FLAG_DOWN = AgentManager.ControlFlags.AGENT_CONTROL_UP_NEG, 241 DIR_CONTROL_FLAG_DOWN = AgentManager.ControlFlags.AGENT_CONTROL_UP_NEG,
242 DIR_CONTROL_FLAG_FORWARD_NUDGE = AgentManager.ControlFlags.AGENT_CONTROL_NUDGE_AT_POS, 242 DIR_CONTROL_FLAG_FORWARD_NUDGE = AgentManager.ControlFlags.AGENT_CONTROL_NUDGE_AT_POS,
243 DIR_CONTROL_FLAG_BACK_NUDGE = AgentManager.ControlFlags.AGENT_CONTROL_NUDGE_AT_NEG, 243 DIR_CONTROL_FLAG_BACK_NUDGE = AgentManager.ControlFlags.AGENT_CONTROL_NUDGE_AT_NEG,
244 DIR_CONTROL_FLAG_LEFT_NUDGE = AgentManager.ControlFlags.AGENT_CONTROL_NUDGE_LEFT_POS,
245 DIR_CONTROL_FLAG_RIGHT_NUDGE = AgentManager.ControlFlags.AGENT_CONTROL_NUDGE_LEFT_NEG,
244 DIR_CONTROL_FLAG_DOWN_NUDGE = AgentManager.ControlFlags.AGENT_CONTROL_NUDGE_UP_NEG 246 DIR_CONTROL_FLAG_DOWN_NUDGE = AgentManager.ControlFlags.AGENT_CONTROL_NUDGE_UP_NEG
245 } 247 }
246 248
@@ -725,12 +727,14 @@ namespace OpenSim.Region.Framework.Scenes
725 Dir_Vectors[5] = -Vector3.UnitZ; //DOWN 727 Dir_Vectors[5] = -Vector3.UnitZ; //DOWN
726 Dir_Vectors[6] = new Vector3(0.5f, 0f, 0f); //FORWARD_NUDGE 728 Dir_Vectors[6] = new Vector3(0.5f, 0f, 0f); //FORWARD_NUDGE
727 Dir_Vectors[7] = new Vector3(-0.5f, 0f, 0f); //BACK_NUDGE 729 Dir_Vectors[7] = new Vector3(-0.5f, 0f, 0f); //BACK_NUDGE
728 Dir_Vectors[8] = new Vector3(0f, 0f, -0.5f); //DOWN_Nudge 730 Dir_Vectors[8] = new Vector3(0f, 0.5f, 0f); //LEFT_NUDGE
731 Dir_Vectors[9] = new Vector3(0f, -0.5f, 0f); //RIGHT_NUDGE
732 Dir_Vectors[10] = new Vector3(0f, 0f, -0.5f); //DOWN_Nudge
729 } 733 }
730 734
731 private Vector3[] GetWalkDirectionVectors() 735 private Vector3[] GetWalkDirectionVectors()
732 { 736 {
733 Vector3[] vector = new Vector3[9]; 737 Vector3[] vector = new Vector3[11];
734 vector[0] = new Vector3(m_CameraUpAxis.Z, 0f, -m_CameraAtAxis.Z); //FORWARD 738 vector[0] = new Vector3(m_CameraUpAxis.Z, 0f, -m_CameraAtAxis.Z); //FORWARD
735 vector[1] = new Vector3(-m_CameraUpAxis.Z, 0f, m_CameraAtAxis.Z); //BACK 739 vector[1] = new Vector3(-m_CameraUpAxis.Z, 0f, m_CameraAtAxis.Z); //BACK
736 vector[2] = Vector3.UnitY; //LEFT 740 vector[2] = Vector3.UnitY; //LEFT
@@ -739,13 +743,15 @@ namespace OpenSim.Region.Framework.Scenes
739 vector[5] = new Vector3(-m_CameraAtAxis.Z, 0f, -m_CameraUpAxis.Z); //DOWN 743 vector[5] = new Vector3(-m_CameraAtAxis.Z, 0f, -m_CameraUpAxis.Z); //DOWN
740 vector[6] = new Vector3(m_CameraUpAxis.Z, 0f, -m_CameraAtAxis.Z); //FORWARD_NUDGE 744 vector[6] = new Vector3(m_CameraUpAxis.Z, 0f, -m_CameraAtAxis.Z); //FORWARD_NUDGE
741 vector[7] = new Vector3(-m_CameraUpAxis.Z, 0f, m_CameraAtAxis.Z); //BACK_NUDGE 745 vector[7] = new Vector3(-m_CameraUpAxis.Z, 0f, m_CameraAtAxis.Z); //BACK_NUDGE
742 vector[8] = new Vector3(-m_CameraAtAxis.Z, 0f, -m_CameraUpAxis.Z); //DOWN_Nudge 746 vector[8] = Vector3.UnitY; //LEFT_NUDGE
747 vector[9] = -Vector3.UnitY; //RIGHT_NUDGE
748 vector[10] = new Vector3(-m_CameraAtAxis.Z, 0f, -m_CameraUpAxis.Z); //DOWN_NUDGE
743 return vector; 749 return vector;
744 } 750 }
745 751
746 private bool[] GetDirectionIsNudge() 752 private bool[] GetDirectionIsNudge()
747 { 753 {
748 bool[] isNudge = new bool[9]; 754 bool[] isNudge = new bool[11];
749 isNudge[0] = false; //FORWARD 755 isNudge[0] = false; //FORWARD
750 isNudge[1] = false; //BACK 756 isNudge[1] = false; //BACK
751 isNudge[2] = false; //LEFT 757 isNudge[2] = false; //LEFT
@@ -754,7 +760,9 @@ namespace OpenSim.Region.Framework.Scenes
754 isNudge[5] = false; //DOWN 760 isNudge[5] = false; //DOWN
755 isNudge[6] = true; //FORWARD_NUDGE 761 isNudge[6] = true; //FORWARD_NUDGE
756 isNudge[7] = true; //BACK_NUDGE 762 isNudge[7] = true; //BACK_NUDGE
757 isNudge[8] = true; //DOWN_Nudge 763 isNudge[8] = true; //LEFT_NUDGE
764 isNudge[9] = true; //RIGHT_NUDGE
765 isNudge[10] = true; //DOWN_Nudge
758 return isNudge; 766 return isNudge;
759 } 767 }
760 768
@@ -1618,21 +1626,19 @@ namespace OpenSim.Region.Framework.Scenes
1618 SceneObjectPart part = m_scene.GetSceneObjectPart(m_parentID); 1626 SceneObjectPart part = m_scene.GetSceneObjectPart(m_parentID);
1619 if (part != null) 1627 if (part != null)
1620 { 1628 {
1629 part.TaskInventory.LockItemsForRead(true);
1621 TaskInventoryDictionary taskIDict = part.TaskInventory; 1630 TaskInventoryDictionary taskIDict = part.TaskInventory;
1622 if (taskIDict != null) 1631 if (taskIDict != null)
1623 { 1632 {
1624 lock (taskIDict) 1633 foreach (UUID taskID in taskIDict.Keys)
1625 { 1634 {
1626 foreach (UUID taskID in taskIDict.Keys) 1635 UnRegisterControlEventsToScript(LocalId, taskID);
1627 { 1636 taskIDict[taskID].PermsMask &= ~(
1628 UnRegisterControlEventsToScript(LocalId, taskID); 1637 2048 | //PERMISSION_CONTROL_CAMERA
1629 taskIDict[taskID].PermsMask &= ~( 1638 4); // PERMISSION_TAKE_CONTROLS
1630 2048 | //PERMISSION_CONTROL_CAMERA
1631 4); // PERMISSION_TAKE_CONTROLS
1632 }
1633 } 1639 }
1634
1635 } 1640 }
1641 part.TaskInventory.LockItemsForRead(false);
1636 // Reset sit target. 1642 // Reset sit target.
1637 if (part.GetAvatarOnSitTarget() == UUID) 1643 if (part.GetAvatarOnSitTarget() == UUID)
1638 part.SetAvatarOnSitTarget(UUID.Zero); 1644 part.SetAvatarOnSitTarget(UUID.Zero);