diff options
Diffstat (limited to 'OpenSim')
4 files changed, 44 insertions, 7 deletions
diff --git a/OpenSim/Region/Environment/Scenes/SceneObjectPart.cs b/OpenSim/Region/Environment/Scenes/SceneObjectPart.cs index 1d719b2..675322a 100644 --- a/OpenSim/Region/Environment/Scenes/SceneObjectPart.cs +++ b/OpenSim/Region/Environment/Scenes/SceneObjectPart.cs | |||
@@ -195,6 +195,12 @@ namespace OpenSim.Region.Environment.Scenes | |||
195 | protected LLUUID m_uuid; | 195 | protected LLUUID m_uuid; |
196 | protected LLVector3 m_velocity; | 196 | protected LLVector3 m_velocity; |
197 | 197 | ||
198 | // TODO: Those have to be changed into persistent properties at some later point, | ||
199 | // or sit-camera on vehicles will break on sim-crossing. | ||
200 | private LLVector3 m_cameraEyeOffset = new LLVector3(0.0f, 0.0f, 0.0f); | ||
201 | private LLVector3 m_cameraAtOffset = new LLVector3(0.0f, 0.0f, 0.0f); | ||
202 | private bool m_forceMouselook = false; | ||
203 | |||
198 | #endregion Fields | 204 | #endregion Fields |
199 | 205 | ||
200 | #region Constructors | 206 | #region Constructors |
@@ -3313,6 +3319,30 @@ namespace OpenSim.Region.Environment.Scenes | |||
3313 | } | 3319 | } |
3314 | } | 3320 | } |
3315 | 3321 | ||
3322 | public void SetCameraAtOffset(LLVector3 v) { | ||
3323 | m_cameraAtOffset = v; | ||
3324 | } | ||
3325 | |||
3326 | public void SetCameraEyeOffset(LLVector3 v) { | ||
3327 | m_cameraEyeOffset = v; | ||
3328 | } | ||
3329 | |||
3330 | public void SetForceMouselook(bool force) { | ||
3331 | m_forceMouselook = force; | ||
3332 | } | ||
3333 | |||
3334 | public LLVector3 GetCameraAtOffset() { | ||
3335 | return m_cameraAtOffset; | ||
3336 | } | ||
3337 | |||
3338 | public LLVector3 GetCameraEyeOffset() { | ||
3339 | return m_cameraEyeOffset; | ||
3340 | } | ||
3341 | |||
3342 | public bool GetForceMouselook() { | ||
3343 | return m_forceMouselook; | ||
3344 | } | ||
3345 | |||
3316 | #endregion Public Methods | 3346 | #endregion Public Methods |
3317 | } | 3347 | } |
3318 | } | 3348 | } |
diff --git a/OpenSim/Region/Environment/Scenes/ScenePresence.cs b/OpenSim/Region/Environment/Scenes/ScenePresence.cs index b24ee8a..221da0e 100644 --- a/OpenSim/Region/Environment/Scenes/ScenePresence.cs +++ b/OpenSim/Region/Environment/Scenes/ScenePresence.cs | |||
@@ -1129,6 +1129,9 @@ namespace OpenSim.Region.Environment.Scenes | |||
1129 | bool autopilot = true; | 1129 | bool autopilot = true; |
1130 | LLVector3 pos = new LLVector3(); | 1130 | LLVector3 pos = new LLVector3(); |
1131 | LLQuaternion sitOrientation = new LLQuaternion(0, 0, 0, 1); | 1131 | LLQuaternion sitOrientation = new LLQuaternion(0, 0, 0, 1); |
1132 | LLVector3 cameraEyeOffset = LLVector3.Zero; | ||
1133 | LLVector3 cameraAtOffset = LLVector3.Zero; | ||
1134 | bool forceMouselook = false; | ||
1132 | 1135 | ||
1133 | //SceneObjectPart part = m_scene.GetSceneObjectPart(targetID); | 1136 | //SceneObjectPart part = m_scene.GetSceneObjectPart(targetID); |
1134 | SceneObjectPart part = FindNextAvailableSitTarget(targetID); | 1137 | SceneObjectPart part = FindNextAvailableSitTarget(targetID); |
@@ -1183,9 +1186,13 @@ namespace OpenSim.Region.Environment.Scenes | |||
1183 | RemoveFromPhysicalScene(); | 1186 | RemoveFromPhysicalScene(); |
1184 | } | 1187 | } |
1185 | } | 1188 | } |
1189 | |||
1190 | cameraAtOffset = part.GetCameraAtOffset(); | ||
1191 | cameraEyeOffset = part.GetCameraEyeOffset(); | ||
1192 | forceMouselook = part.GetForceMouselook(); | ||
1186 | } | 1193 | } |
1187 | 1194 | ||
1188 | ControllingClient.SendSitResponse(targetID, offset, sitOrientation, autopilot, LLVector3.Zero, LLVector3.Zero, false); | 1195 | ControllingClient.SendSitResponse(targetID, offset, sitOrientation, autopilot, cameraAtOffset, cameraEyeOffset, forceMouselook); |
1189 | m_requestedSitTargetUUID = targetID; | 1196 | m_requestedSitTargetUUID = targetID; |
1190 | // This calls HandleAgentSit twice, once from here, and the client calls | 1197 | // This calls HandleAgentSit twice, once from here, and the client calls |
1191 | // HandleAgentSit itself after it gets to the location | 1198 | // HandleAgentSit itself after it gets to the location |
diff --git a/OpenSim/Region/ScriptEngine/Common/LSL_BuiltIn_Commands.cs b/OpenSim/Region/ScriptEngine/Common/LSL_BuiltIn_Commands.cs index 422ff71..30093eb 100644 --- a/OpenSim/Region/ScriptEngine/Common/LSL_BuiltIn_Commands.cs +++ b/OpenSim/Region/ScriptEngine/Common/LSL_BuiltIn_Commands.cs | |||
@@ -4747,13 +4747,13 @@ namespace OpenSim.Region.ScriptEngine.Common | |||
4747 | public void llSetCameraEyeOffset(LSL_Types.Vector3 offset) | 4747 | public void llSetCameraEyeOffset(LSL_Types.Vector3 offset) |
4748 | { | 4748 | { |
4749 | m_host.AddScriptLPS(1); | 4749 | m_host.AddScriptLPS(1); |
4750 | NotImplemented("llSetCameraEyeOffset"); | 4750 | m_host.SetCameraEyeOffset(new LLVector3((float)offset.x, (float)offset.y, (float)offset.z)); |
4751 | } | 4751 | } |
4752 | 4752 | ||
4753 | public void llSetCameraAtOffset(LSL_Types.Vector3 offset) | 4753 | public void llSetCameraAtOffset(LSL_Types.Vector3 offset) |
4754 | { | 4754 | { |
4755 | m_host.AddScriptLPS(1); | 4755 | m_host.AddScriptLPS(1); |
4756 | NotImplemented("llSetCameraAtOffset"); | 4756 | m_host.SetCameraAtOffset(new LLVector3((float)offset.x, (float)offset.y, (float)offset.z)); |
4757 | } | 4757 | } |
4758 | 4758 | ||
4759 | public string llDumpList2String(LSL_Types.list src, string seperator) | 4759 | public string llDumpList2String(LSL_Types.list src, string seperator) |
@@ -6627,7 +6627,7 @@ namespace OpenSim.Region.ScriptEngine.Common | |||
6627 | public void llForceMouselook(int mouselook) | 6627 | public void llForceMouselook(int mouselook) |
6628 | { | 6628 | { |
6629 | m_host.AddScriptLPS(1); | 6629 | m_host.AddScriptLPS(1); |
6630 | NotImplemented("llForceMouselook"); | 6630 | m_host.SetForceMouselook(mouselook != 0); |
6631 | } | 6631 | } |
6632 | 6632 | ||
6633 | public double llGetObjectMass(string id) | 6633 | public double llGetObjectMass(string id) |
diff --git a/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LSL_Api.cs b/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LSL_Api.cs index e5c6ac1..401a5ea 100644 --- a/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LSL_Api.cs +++ b/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LSL_Api.cs | |||
@@ -4609,13 +4609,13 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api | |||
4609 | public void llSetCameraEyeOffset(LSL_Types.Vector3 offset) | 4609 | public void llSetCameraEyeOffset(LSL_Types.Vector3 offset) |
4610 | { | 4610 | { |
4611 | m_host.AddScriptLPS(1); | 4611 | m_host.AddScriptLPS(1); |
4612 | NotImplemented("llSetCameraEyeOffset"); | 4612 | m_host.SetCameraEyeOffset(new LLVector3((float)offset.x, (float)offset.y, (float)offset.z)); |
4613 | } | 4613 | } |
4614 | 4614 | ||
4615 | public void llSetCameraAtOffset(LSL_Types.Vector3 offset) | 4615 | public void llSetCameraAtOffset(LSL_Types.Vector3 offset) |
4616 | { | 4616 | { |
4617 | m_host.AddScriptLPS(1); | 4617 | m_host.AddScriptLPS(1); |
4618 | NotImplemented("llSetCameraAtOffset"); | 4618 | m_host.SetCameraAtOffset(new LLVector3((float)offset.x, (float)offset.y, (float)offset.z)); |
4619 | } | 4619 | } |
4620 | 4620 | ||
4621 | public string llDumpList2String(LSL_Types.list src, string seperator) | 4621 | public string llDumpList2String(LSL_Types.list src, string seperator) |
@@ -6410,7 +6410,7 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api | |||
6410 | public void llForceMouselook(int mouselook) | 6410 | public void llForceMouselook(int mouselook) |
6411 | { | 6411 | { |
6412 | m_host.AddScriptLPS(1); | 6412 | m_host.AddScriptLPS(1); |
6413 | NotImplemented("llForceMouselook"); | 6413 | m_host.SetForceMouselook(mouselook != 0); |
6414 | } | 6414 | } |
6415 | 6415 | ||
6416 | public double llGetObjectMass(string id) | 6416 | public double llGetObjectMass(string id) |