aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/OpenSim
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LSL_Api.cs29
1 files changed, 14 insertions, 15 deletions
diff --git a/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LSL_Api.cs b/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LSL_Api.cs
index 25f1958..c90f015 100644
--- a/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LSL_Api.cs
+++ b/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/LSL_Api.cs
@@ -221,8 +221,6 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api
221 protected float m_primSafetyCoeffX = 2.414214f; 221 protected float m_primSafetyCoeffX = 2.414214f;
222 protected float m_primSafetyCoeffY = 2.414214f; 222 protected float m_primSafetyCoeffY = 2.414214f;
223 protected float m_primSafetyCoeffZ = 1.618034f; 223 protected float m_primSafetyCoeffZ = 1.618034f;
224 protected bool m_useCastRayV2 = false;
225 protected int RC_USE_V2 = 512;
226 protected float m_floatToleranceInCastRay = 0.000001f; 224 protected float m_floatToleranceInCastRay = 0.000001f;
227 protected float m_floatTolerance2InCastRay = 0.0001f; 225 protected float m_floatTolerance2InCastRay = 0.0001f;
228 protected int m_maxHitsInCastRay = 16; 226 protected int m_maxHitsInCastRay = 16;
@@ -231,6 +229,7 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api
231 protected bool m_detectExitsInCastRay = false; 229 protected bool m_detectExitsInCastRay = false;
232 protected bool m_filterPartsInCastRay = false; 230 protected bool m_filterPartsInCastRay = false;
233 protected bool m_doAttachmentsInCastRay = false; 231 protected bool m_doAttachmentsInCastRay = false;
232 protected bool m_useCastRayV1 = true;
234 233
235 //An array of HTTP/1.1 headers that are not allowed to be used 234 //An array of HTTP/1.1 headers that are not allowed to be used
236 //as custom headers by llHTTPRequest. 235 //as custom headers by llHTTPRequest.
@@ -337,8 +336,6 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api
337 m_primSafetyCoeffX = lslConfig.GetFloat("PrimBoundingBoxSafetyCoefficientX", m_primSafetyCoeffX); 336 m_primSafetyCoeffX = lslConfig.GetFloat("PrimBoundingBoxSafetyCoefficientX", m_primSafetyCoeffX);
338 m_primSafetyCoeffY = lslConfig.GetFloat("PrimBoundingBoxSafetyCoefficientY", m_primSafetyCoeffY); 337 m_primSafetyCoeffY = lslConfig.GetFloat("PrimBoundingBoxSafetyCoefficientY", m_primSafetyCoeffY);
339 m_primSafetyCoeffZ = lslConfig.GetFloat("PrimBoundingBoxSafetyCoefficientZ", m_primSafetyCoeffZ); 338 m_primSafetyCoeffZ = lslConfig.GetFloat("PrimBoundingBoxSafetyCoefficientZ", m_primSafetyCoeffZ);
340 m_useCastRayV2 = lslConfig.GetBoolean("UseLlCastRayV2", m_useCastRayV2);
341 RC_USE_V2 = lslConfig.GetInt("RC_USE_V2", RC_USE_V2);
342 m_floatToleranceInCastRay = lslConfig.GetFloat("FloatToleranceInLlCastRay", m_floatToleranceInCastRay); 339 m_floatToleranceInCastRay = lslConfig.GetFloat("FloatToleranceInLlCastRay", m_floatToleranceInCastRay);
343 m_floatTolerance2InCastRay = lslConfig.GetFloat("FloatTolerance2InLlCastRay", m_floatTolerance2InCastRay); 340 m_floatTolerance2InCastRay = lslConfig.GetFloat("FloatTolerance2InLlCastRay", m_floatTolerance2InCastRay);
344 m_maxHitsInCastRay = lslConfig.GetInt("MaxHitsInLlCastRay", m_maxHitsInCastRay); 341 m_maxHitsInCastRay = lslConfig.GetInt("MaxHitsInLlCastRay", m_maxHitsInCastRay);
@@ -347,6 +344,7 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api
347 m_detectExitsInCastRay = lslConfig.GetBoolean("DetectExitHitsInLlCastRay", m_detectExitsInCastRay); 344 m_detectExitsInCastRay = lslConfig.GetBoolean("DetectExitHitsInLlCastRay", m_detectExitsInCastRay);
348 m_filterPartsInCastRay = lslConfig.GetBoolean("FilterPartsInLlCastRay", m_filterPartsInCastRay); 345 m_filterPartsInCastRay = lslConfig.GetBoolean("FilterPartsInLlCastRay", m_filterPartsInCastRay);
349 m_doAttachmentsInCastRay = lslConfig.GetBoolean("DoAttachmentsInLlCastRay", m_doAttachmentsInCastRay); 346 m_doAttachmentsInCastRay = lslConfig.GetBoolean("DoAttachmentsInLlCastRay", m_doAttachmentsInCastRay);
347 m_useCastRayV1 = lslConfig.GetBoolean("UseLlCastRayV1", m_useCastRayV1);
350 } 348 }
351 349
352 IConfig smtpConfig = seConfigSource.Configs["SMTP"]; 350 IConfig smtpConfig = seConfigSource.Configs["SMTP"];
@@ -13813,7 +13811,7 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api
13813 return contacts[0]; 13811 return contacts[0];
13814 } 13812 }
13815 13813
13816 public LSL_List llCastRay(LSL_Vector start, LSL_Vector end, LSL_List options) 13814 public LSL_List llCastRayV1(LSL_Vector start, LSL_Vector end, LSL_List options)
13817 { 13815 {
13818 LSL_List list = new LSL_List(); 13816 LSL_List list = new LSL_List();
13819 13817
@@ -13842,10 +13840,6 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api
13842 rejectTypes = options.GetLSLIntegerItem(i + 1); 13840 rejectTypes = options.GetLSLIntegerItem(i + 1);
13843 } 13841 }
13844 13842
13845 // Use llCastRay v2 if configured or requested
13846 if (m_useCastRayV2 || (dataFlags & RC_USE_V2) == RC_USE_V2)
13847 return llCastRayV2(start, end, options);
13848
13849 if (count > 16) 13843 if (count > 16)
13850 count = 16; 13844 count = 16;
13851 13845
@@ -14009,20 +14003,25 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api
14009 } 14003 }
14010 14004
14011 /// <summary> 14005 /// <summary>
14012 /// Implementation of llCastRay similar to SL 2015-04-21. 14006 /// Full implementation of llCastRay similar to SL 2015-04-21.
14013 /// http://wiki.secondlife.com/wiki/LlCastRay 14007 /// http://wiki.secondlife.com/wiki/LlCastRay
14014 /// Uses pure geometry, bounding shapes, meshing and no physics 14008 /// Uses pure geometry, bounding shapes, meshing and no physics
14015 /// for prims, sculpts, meshes, avatars and terrain. 14009 /// for prims, sculpts, meshes, avatars and terrain.
14016 /// Implements all flags, reject types and data flags. 14010 /// Implements all flags, reject types and data flags.
14017 /// Can handle both objects/groups and prims/parts, by config. 14011 /// Can handle both objects/groups and prims/parts, by config.
14012 /// May give poor results with multi-part meshes where "root"
14013 /// part doesn't dominate, owing to "guessed" bounding boxes.
14018 /// May sometimes be inaccurate owing to calculation precision 14014 /// May sometimes be inaccurate owing to calculation precision
14019 /// and a bug in libopenmetaverse PrimMesher. 14015 /// and a bug in libopenmetaverse PrimMesher.
14020 /// </summary> 14016 /// </summary>
14021 public LSL_List llCastRayV2(LSL_Vector start, LSL_Vector end, LSL_List options) 14017 public LSL_List llCastRay(LSL_Vector start, LSL_Vector end, LSL_List options)
14022 { 14018 {
14019 // Use llCastRay v1 if configured
14020 if (m_useCastRayV1)
14021 return llCastRayV1(start, end, options);
14022
14023 // Initialize 14023 // Initialize
14024 // Keep AddScriptLPS commented while called from llCastRay 14024 m_host.AddScriptLPS(1);
14025 // m_host.AddScriptLPS(1);
14026 List<RayHit> rayHits = new List<RayHit>(); 14025 List<RayHit> rayHits = new List<RayHit>();
14027 LSL_List result = new LSL_List(); 14026 LSL_List result = new LSL_List();
14028 float tol = m_floatToleranceInCastRay; 14027 float tol = m_floatToleranceInCastRay;
@@ -14058,10 +14057,10 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api
14058 Vector3 ray = end - start; 14057 Vector3 ray = end - start;
14059 float rayLength = ray.Length(); 14058 float rayLength = ray.Length();
14060 14059
14061 // Try to get a mesher and return failure if none, degenerate ray, or max 0 hits 14060 // Try to get a mesher and return failure if none or degenerate ray
14062 IRendering primMesher = null; 14061 IRendering primMesher = null;
14063 List<string> renderers = RenderingLoader.ListRenderers(Util.ExecutingDirectory()); 14062 List<string> renderers = RenderingLoader.ListRenderers(Util.ExecutingDirectory());
14064 if (renderers.Count < 1 || rayLength < tol || m_maxHitsInCastRay < 1) 14063 if (renderers.Count < 1 || rayLength < tol)
14065 { 14064 {
14066 result.Add(new LSL_Integer(ScriptBaseClass.RCERR_UNKNOWN)); 14065 result.Add(new LSL_Integer(ScriptBaseClass.RCERR_UNKNOWN));
14067 return result; 14066 return result;