„Patch/0001-add-os-commands-to-pathfind.patch“ löschen
							parent
							
								
									844267f07f
								
							
						
					
					
						commit
						1f9e72211f
					
				|  | @ -1,139 +0,0 @@ | |||
| From e502bb78dd38482366c3b4675226265bae668bdd Mon Sep 17 00:00:00 2001 | ||||
| From: Christopher <git@clatza.dev> | ||||
| Date: Wed, 10 Jun 2020 09:19:20 +0200 | ||||
| Subject: [PATCH] change pathfinding args | ||||
| 
 | ||||
| ---
 | ||||
|  .../Shared/Api/Implementation/OSSL_Api.cs     | 54 +++++++++++++++++++ | ||||
|  .../Shared/Api/Interface/IOSSL_Api.cs         |  6 ++- | ||||
|  .../Shared/Api/Runtime/OSSL_Stub.cs           | 11 ++++ | ||||
|  3 files changed, 70 insertions(+), 1 deletion(-) | ||||
| 
 | ||||
| diff --git a/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/OSSL_Api.cs b/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/OSSL_Api.cs
 | ||||
| index 5e6271c8a7..008640fe31 100644
 | ||||
| --- a/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/OSSL_Api.cs
 | ||||
| +++ b/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/OSSL_Api.cs
 | ||||
| @@ -42,6 +42,7 @@ using System;
 | ||||
|  using System.Collections; | ||||
|  using System.Collections.Concurrent; | ||||
|  using System.Collections.Generic; | ||||
| +using System.Drawing;
 | ||||
|  using System.Reflection; | ||||
|  using System.Runtime.Remoting.Lifetime; | ||||
|  using System.Text; | ||||
| @@ -756,6 +757,59 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api
 | ||||
|              dm.SendAlertToUser(sp.ControllingClient, msg + "\n", false); | ||||
|          } | ||||
|   | ||||
| +
 | ||||
| +        private bool checkIsPositionBlockedByObjekts(LSL_Vector _source)
 | ||||
| +        {
 | ||||
| +            List<SceneObjectGroup> _objects = World.GetSceneObjectGroups().FindAll(X => X.IsPhantom != true && (int)X.AbsolutePosition.X == (int)_source.x && (int)X.AbsolutePosition.Y == (int)_source.y && (int)X.AbsolutePosition.Z <= (m_host.AbsolutePosition.Z + 30));
 | ||||
| +
 | ||||
| +            if (_objects.Count != 0)
 | ||||
| +                return true;
 | ||||
| +
 | ||||
| +            return false;
 | ||||
| +        }
 | ||||
| +
 | ||||
| +        public LSL_List osGetPathfindingPath(LSL_Vector _source, LSL_Vector _target)
 | ||||
| +        {
 | ||||
| +            LSL_List _returnList = new LSL_List();
 | ||||
| +            Bitmap _map = new Bitmap((int)World.RegionInfo.RegionSizeX, (int)World.RegionInfo.RegionSizeY);
 | ||||
| +
 | ||||
| +            for (int X = 0; X <= World.RegionInfo.RegionSizeX; X++)
 | ||||
| +            {
 | ||||
| +                for (int Y = 0; Y <= World.RegionInfo.RegionSizeY; Y++)
 | ||||
| +                {
 | ||||
| +                    float baseheight = (float)World.Heightmap[X, Y];
 | ||||
| +
 | ||||
| +                    if (baseheight <= World.RegionInfo.RegionSettings.WaterHeight)
 | ||||
| +                        _map.SetPixel(X, Y, Color.Red);
 | ||||
| +
 | ||||
| +                    if (checkIsPositionBlockedByObjekts(new LSL_Vector(X, Y, 0)) == true)
 | ||||
| +                        _map.SetPixel(X, Y, Color.Yellow);
 | ||||
| +                }
 | ||||
| +            }
 | ||||
| +
 | ||||
| +            _map.Save("debug.png");
 | ||||
| +            return _returnList;
 | ||||
| +        }
 | ||||
| +
 | ||||
| +        public LSL_List osGetObjectIDListByName(LSL_List _nameList)
 | ||||
| +        {
 | ||||
| +            LSL_List _returnList = new LSL_List();
 | ||||
| +
 | ||||
| +            foreach (object o in _nameList.Data)
 | ||||
| +            {
 | ||||
| +                if (o.ToString().Length != 0)
 | ||||
| +                {
 | ||||
| +                    foreach (SceneObjectGroup _objectGroup in World.GetSceneObjectGroups())
 | ||||
| +                    {
 | ||||
| +                        if (_objectGroup.Name.Equals(o.ToString()))
 | ||||
| +                            _returnList.Add(_objectGroup.GroupID);
 | ||||
| +                    }
 | ||||
| +                }
 | ||||
| +            }
 | ||||
| +
 | ||||
| +            return _returnList;
 | ||||
| +        }
 | ||||
| +
 | ||||
|          public void osSetRot(UUID target, Quaternion rotation) | ||||
|          { | ||||
|              // if enabled It can be used to destroy | ||||
| diff --git a/OpenSim/Region/ScriptEngine/Shared/Api/Interface/IOSSL_Api.cs b/OpenSim/Region/ScriptEngine/Shared/Api/Interface/IOSSL_Api.cs
 | ||||
| index 9b4a9ca12d..ac5f5bda1e 100644
 | ||||
| --- a/OpenSim/Region/ScriptEngine/Shared/Api/Interface/IOSSL_Api.cs
 | ||||
| +++ b/OpenSim/Region/ScriptEngine/Shared/Api/Interface/IOSSL_Api.cs
 | ||||
| @@ -38,7 +38,7 @@ using LSL_Integer = OpenSim.Region.ScriptEngine.Shared.LSL_Types.LSLInteger;
 | ||||
|  using LSL_Float = OpenSim.Region.ScriptEngine.Shared.LSL_Types.LSLFloat; | ||||
|  using LSL_Rotation = OpenSim.Region.ScriptEngine.Shared.LSL_Types.Quaternion; | ||||
|  using LSL_Key = OpenSim.Region.ScriptEngine.Shared.LSL_Types.LSLString; | ||||
| -
 | ||||
| +using LSL_Vector = OpenSim.Region.ScriptEngine.Shared.LSL_Types.Vector3;
 | ||||
|   | ||||
|  namespace OpenSim.Region.ScriptEngine.Shared.Api.Interfaces | ||||
|  { | ||||
| @@ -134,6 +134,10 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api.Interfaces
 | ||||
|          LSL_Float osTerrainGetHeight(int x, int y); // Deprecated | ||||
|          LSL_Integer osSetTerrainHeight(int x, int y, double val); | ||||
|          LSL_Integer osTerrainSetHeight(int x, int y, double val); //Deprecated | ||||
| +        
 | ||||
| +        LSL_List osGetPathfindingPath(LSL_Vector _source, LSL_Vector _target);
 | ||||
| +        LSL_List osGetObjectIDListByName(LSL_List _nameList);
 | ||||
| +
 | ||||
|          //ApiDesc Send terrain to all agents | ||||
|          void osTerrainFlush(); | ||||
|   | ||||
| diff --git a/OpenSim/Region/ScriptEngine/Shared/Api/Runtime/OSSL_Stub.cs b/OpenSim/Region/ScriptEngine/Shared/Api/Runtime/OSSL_Stub.cs
 | ||||
| index ba5158a2ff..f79c90e2cb 100644
 | ||||
| --- a/OpenSim/Region/ScriptEngine/Shared/Api/Runtime/OSSL_Stub.cs
 | ||||
| +++ b/OpenSim/Region/ScriptEngine/Shared/Api/Runtime/OSSL_Stub.cs
 | ||||
| @@ -44,6 +44,7 @@ using LSL_String = OpenSim.Region.ScriptEngine.Shared.LSL_Types.LSLString;
 | ||||
|  using LSL_Key = OpenSim.Region.ScriptEngine.Shared.LSL_Types.LSLString; | ||||
|  using LSL_Float = OpenSim.Region.ScriptEngine.Shared.LSL_Types.LSLFloat; | ||||
|  using LSL_Integer = OpenSim.Region.ScriptEngine.Shared.LSL_Types.LSLInteger; | ||||
| +using LSL_Vector = OpenSim.Region.ScriptEngine.Shared.LSL_Types.Vector3;
 | ||||
|   | ||||
|  namespace OpenSim.Region.ScriptEngine.Shared.ScriptBase | ||||
|  { | ||||
| @@ -205,6 +206,16 @@ namespace OpenSim.Region.ScriptEngine.Shared.ScriptBase
 | ||||
|              return m_OSSL_Functions.osTerrainSetHeight(x, y, val); | ||||
|          } | ||||
|   | ||||
| +        public LSL_List osGetPathfindingPath(LSL_Vector _source, LSL_Vector _target)
 | ||||
| +        {
 | ||||
| +            return m_OSSL_Functions.osGetPathfindingPath(_source, _target);
 | ||||
| +        }
 | ||||
| +
 | ||||
| +        public LSL_List osGetObjectIDListByName(LSL_List _nameList)
 | ||||
| +        {
 | ||||
| +            return m_OSSL_Functions.osGetObjectIDListByName(_nameList);
 | ||||
| +        }
 | ||||
| +
 | ||||
|          public void osTerrainFlush() | ||||
|          { | ||||
|              m_OSSL_Functions.osTerrainFlush(); | ||||
| -- 
 | ||||
| 2.25.1.windows.1 | ||||
| 
 | ||||
		Loading…
	
		Reference in New Issue