diff options
Diffstat (limited to 'OpenSim/Region/ScriptEngine/Shared/Api/Implementation/Plugins/SensorRepeat.cs')
-rw-r--r-- | OpenSim/Region/ScriptEngine/Shared/Api/Implementation/Plugins/SensorRepeat.cs | 9 |
1 files changed, 7 insertions, 2 deletions
diff --git a/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/Plugins/SensorRepeat.cs b/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/Plugins/SensorRepeat.cs index 5c1bdff..83da204 100644 --- a/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/Plugins/SensorRepeat.cs +++ b/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/Plugins/SensorRepeat.cs | |||
@@ -210,7 +210,7 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api.Plugins | |||
210 | // Is the sensor type is AGENT and not SCRIPTED then include agents | 210 | // Is the sensor type is AGENT and not SCRIPTED then include agents |
211 | if ((ts.type & (AGENT | AGENT_BY_USERNAME | NPC)) != 0 && (ts.type & SCRIPTED) == 0) | 211 | if ((ts.type & (AGENT | AGENT_BY_USERNAME | NPC)) != 0 && (ts.type & SCRIPTED) == 0) |
212 | { | 212 | { |
213 | sensedEntities.AddRange(doAgentSensor(ts)); | 213 | sensedEntities.AddRange(doAgentSensor(ts)); |
214 | } | 214 | } |
215 | 215 | ||
216 | // If SCRIPTED or PASSIVE or ACTIVE check objects | 216 | // If SCRIPTED or PASSIVE or ACTIVE check objects |
@@ -307,13 +307,15 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api.Plugins | |||
307 | float dy; | 307 | float dy; |
308 | float dz; | 308 | float dz; |
309 | 309 | ||
310 | Quaternion q = SensePoint.RotationOffset; | 310 | // Quaternion q = SensePoint.RotationOffset; |
311 | Quaternion q = SensePoint.GetWorldRotation(); // non-attached prim Sensor *always* uses World rotation! | ||
311 | if (SensePoint.ParentGroup.IsAttachment) | 312 | if (SensePoint.ParentGroup.IsAttachment) |
312 | { | 313 | { |
313 | // In attachments, the sensor cone always orients with the | 314 | // In attachments, the sensor cone always orients with the |
314 | // avatar rotation. This may include a nonzero elevation if | 315 | // avatar rotation. This may include a nonzero elevation if |
315 | // in mouselook. | 316 | // in mouselook. |
316 | ScenePresence avatar = m_CmdManager.m_ScriptEngine.World.GetScenePresence(SensePoint.ParentGroup.AttachedAvatar); | 317 | ScenePresence avatar = m_CmdManager.m_ScriptEngine.World.GetScenePresence(SensePoint.ParentGroup.AttachedAvatar); |
318 | fromRegionPos = avatar.AbsolutePosition; | ||
317 | q = avatar.Rotation; | 319 | q = avatar.Rotation; |
318 | } | 320 | } |
319 | LSL_Types.Quaternion r = new LSL_Types.Quaternion(q.X, q.Y, q.Z, q.W); | 321 | LSL_Types.Quaternion r = new LSL_Types.Quaternion(q.X, q.Y, q.Z, q.W); |
@@ -436,6 +438,9 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api.Plugins | |||
436 | // avatar rotation. This may include a nonzero elevation if | 438 | // avatar rotation. This may include a nonzero elevation if |
437 | // in mouselook. | 439 | // in mouselook. |
438 | ScenePresence avatar = m_CmdManager.m_ScriptEngine.World.GetScenePresence(SensePoint.ParentGroup.AttachedAvatar); | 440 | ScenePresence avatar = m_CmdManager.m_ScriptEngine.World.GetScenePresence(SensePoint.ParentGroup.AttachedAvatar); |
441 | if (avatar == null) | ||
442 | return sensedEntities; | ||
443 | fromRegionPos = avatar.AbsolutePosition; | ||
439 | q = avatar.Rotation; | 444 | q = avatar.Rotation; |
440 | } | 445 | } |
441 | 446 | ||