From c3db66a3f90522a5836a51313aa6af0e4273a2fb Mon Sep 17 00:00:00 2001 From: UbitUmarov Date: Fri, 10 Feb 2023 16:18:37 +0000 Subject: [PATCH] add LSL:key.NullKey, plus cosmetics --- .../Shared/Api/Implementation/OSSL_Api.cs | 234 ++++----- .../Shared/Api/Runtime/OSSL_Stub.cs | 454 ++++++++++-------- .../Region/ScriptEngine/Shared/LSL_Types.cs | 5 +- bin/config-include/osslDefaultEnable.ini | 1 - 4 files changed, 363 insertions(+), 331 deletions(-) diff --git a/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/OSSL_Api.cs b/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/OSSL_Api.cs index 2fd4aae3b2..de5ceca71c 100644 --- a/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/OSSL_Api.cs +++ b/OpenSim/Region/ScriptEngine/Shared/Api/Implementation/OSSL_Api.cs @@ -253,7 +253,7 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api get { return m_ScriptEngine.World; } } - internal void OSSLError(string msg) + internal static void OSSLError(string msg) { throw new ScriptException("OSSL Runtime Error: " + msg); } @@ -294,7 +294,7 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api // Returns if OSSL is enabled. Throws a script exception if OSSL is not allowed.. // for safe funtions always active - public void CheckThreatLevel() + public static void CheckThreatLevel() { if (!m_OSFunctionsEnabled) OSSLError("permission denied. All unsafe OSSL funtions disabled"); // throws @@ -540,10 +540,8 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api delay = (int)(delay * m_ScriptDelayFactor); if (delay < 10) return; - if(m_item != null) + if(m_item is not null) m_ScriptEngine.SleepScript(m_item.ItemID, delay); - else - Thread.Sleep(delay); } public LSL_Integer osSetTerrainHeight(int x, int y, double val) @@ -915,9 +913,7 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api private bool checkAllowAgentTPbyLandOwner(UUID agentId, Vector3 pos) { - UUID hostOwner = m_host.OwnerID; - - if(hostOwner.Equals(agentId)) + if(m_host.OwnerID.Equals(agentId)) return true; if (m_item.PermsGranter.Equals(agentId)) @@ -934,11 +930,11 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api if(landdata is null) return true; - if(landdata.OwnerID.Equals(hostOwner)) + if(landdata.OwnerID.Equals(m_host.OwnerID)) return true; EstateSettings es = World.RegionInfo.EstateSettings; - if(es is not null && es.IsEstateManagerOrOwner(hostOwner)) + if(es is not null && es.IsEstateManagerOrOwner(m_host.OwnerID)) return true; if(!landdata.IsGroupOwned) @@ -1152,15 +1148,14 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api return; ScenePresence presence = World.GetScenePresence(agentID); + if(presence is null) + return; SceneObjectPart part = World.GetSceneObjectPart(targetID); - if (presence != null && - part != null && - part.SitTargetAvatar.IsZero()) + if (part is not null && part.SitTargetAvatar.IsZero()) presence.HandleAgentRequestSit(presence.ControllingClient, - agentID, - targetID, + agentID, targetID, part.SitTargetPosition); } @@ -1188,9 +1183,9 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api if(!UUID.TryParse(agent, out UUID avatarID)) return string.Empty; - if (World.Entities.ContainsKey((UUID)agent) && World.Entities[avatarID] is ScenePresence presence) + ScenePresence target = World.GetScenePresence(avatarID); + if (target is not null) { - ScenePresence target = presence; return target.ControllingClient.RemoteEndPoint.Address.ToString(); } @@ -1450,16 +1445,14 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api { CheckThreatLevel(); - LSL_Vector vec = new(0, 0, 0); IDynamicTextureManager textureManager = World.RequestModuleInterface(); - if (textureManager != null) + if (textureManager is not null) { textureManager.GetDrawStringSize(contentType, text, fontName, fontSize, out double xSize, out double ySize); - vec.x = xSize; - vec.y = ySize; + return new LSL_Vector(xSize, ySize, 0); } - return vec; + return LSL_Vector.Zero; } public void osSetRegionWaterHeight(double height) @@ -1544,7 +1537,7 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api return 86400 * frac; } - private string timeToString(float frac, bool format24) + private static string timeToString(float frac, bool format24) { int h = (int)frac; frac -= h; @@ -1570,11 +1563,7 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api CheckThreatLevel(); if (m_envModule is null) - { - if (format24 != 0) - return "00:00:00"; - return "0:00:00 AM"; - } + return format24 != 0 ? "00:00:00" : "0:00:00 AM"; float frac = 24 * m_envModule.GetRegionDayFractionTime(); return timeToString(frac, format24 != 0); @@ -1584,7 +1573,7 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api { CheckThreatLevel(); - if (m_envModule == null) + if (m_envModule is null) return 0; float frac = m_envModule.GetRegionDayFractionTime(); @@ -1596,11 +1585,7 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api CheckThreatLevel(); if (m_envModule is null) - { - if (format24 != 0) - return "00:00:00"; - return "0:00:00 AM"; - } + return format24 != 0 ? "00:00:00" : "0:00:00 AM"; float frac = 24 * m_envModule.GetRegionDayFractionTime(); @@ -1627,9 +1612,7 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api switch(param) { case "day_length": - if (m_envModule is null) - return 14400; - return m_envModule.GetDayLength(m_host.AbsolutePosition); + return m_envModule is null ? 14400 : m_envModule.GetDayLength(m_host.AbsolutePosition); case "year_length": return 365; case "day_night_offset": @@ -2823,7 +2806,7 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api // have to get the npc module also here to set the default Not Owned INPCModule module = World.RequestModuleInterface(); if(module is null) - return new LSL_Key(ScriptBaseClass.NULL_KEY); + return LSL_Key.NullKey; bool owned = (module.NPCOptionFlags & NPCOptionsFlags.AllowNotOwned) == 0; @@ -2847,14 +2830,14 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api if (!World.Permissions.CanRezObject(1, m_host.OwnerID, new Vector3((float)position.x, (float)position.y, (float)position.z))) { OSSLError("no permission to rez NPC at requested location"); - return new LSL_Key(ScriptBaseClass.NULL_KEY); + return LSL_Key.NullKey; } INPCModule module = World.RequestModuleInterface(); if(module is null) { OSSLError("NPC module not enabled"); - return new LSL_Key(ScriptBaseClass.NULL_KEY); + return LSL_Key.NullKey; } string groupTitle = String.Empty; @@ -2885,7 +2868,7 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api if (member == null) { OSSLError(string.Format("osNpcCreate: the object owner is not member of the object group")); - return new LSL_Key(ScriptBaseClass.NULL_KEY); + return LSL_Key.NullKey; } groupID = m_host.GroupID; @@ -2901,7 +2884,7 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api if((createFlags & NPCOptionsFlags.NoNPCGroup) == 0) { - if (firstname != String.Empty || lastname != String.Empty) + if (!string.IsNullOrEmpty(firstname) || !string.IsNullOrEmpty(lastname)) { if (firstname != "Shown outfit:") groupTitle = "- NPC -"; @@ -2926,7 +2909,7 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api if (appearanceSerialized is null) { OSSLError(string.Format("osNpcCreate: Notecard '{0}' not found.", notecard)); - return new LSL_Key(ScriptBaseClass.NULL_KEY); + return LSL_Key.NullKey; } try @@ -2938,19 +2921,16 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api catch { OSSLError(string.Format("osNpcCreate: Error processing notecard '{0}'", notecard)); - return new LSL_Key(ScriptBaseClass.NULL_KEY); + return LSL_Key.NullKey; } } } - UUID ownerID = UUID.Zero; - if (owned) - ownerID = m_host.OwnerID; UUID x = module.CreateNPC(firstname, lastname, position, UUID.Random(), - ownerID, + owned ? m_host.OwnerID : UUID.Zero, groupTitle, groupID, senseAsAgent, @@ -2990,15 +2970,15 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api if (npcModule is not null) { if (!UUID.TryParse(npc.m_string, out UUID npcId)) - return new LSL_Key(ScriptBaseClass.NULL_KEY); + return LSL_Key.NullKey; if (!npcModule.CheckPermissions(npcId, m_host.OwnerID)) - return new LSL_Key(ScriptBaseClass.NULL_KEY); + return LSL_Key.NullKey; return SaveAppearanceToNotecard(npcId, notecard, NoHUds); } - return new LSL_Key(ScriptBaseClass.NULL_KEY); + return LSL_Key.NullKey; } public void osNpcLoadAppearance(LSL_Key npc, string notecard) @@ -3048,7 +3028,7 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api } } - return new LSL_Key(ScriptBaseClass.NULL_KEY); + return LSL_Key.NullKey; } public LSL_Vector osNpcGetPos(LSL_Key npc) @@ -3059,10 +3039,10 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api if (npcModule is not null) { if (!UUID.TryParse(npc.m_string, out UUID npcId)) - return new LSL_Vector(0, 0, 0); + return LSL_Vector.Zero; if (!npcModule.CheckPermissions(npcId, m_host.OwnerID)) - return new LSL_Vector(0, 0, 0); + return LSL_Vector.Zero; ScenePresence sp = World.GetScenePresence(npcId); @@ -3070,7 +3050,7 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api return new LSL_Vector(sp.AbsolutePosition); } - return Vector3.Zero; + return LSL_Vector.Zero; } public void osNpcMoveTo(LSL_Key npc, LSL_Vector pos) @@ -3121,10 +3101,10 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api if (npcModule is not null) { if (!UUID.TryParse(npc.m_string, out UUID npcId)) - return new LSL_Rotation(Quaternion.Identity); + return LSL_Rotation.Identity; if (!npcModule.CheckPermissions(npcId, m_host.OwnerID)) - return new LSL_Rotation(Quaternion.Identity); + return LSL_Rotation.Identity; ScenePresence sp = World.GetScenePresence(npcId); @@ -3132,7 +3112,7 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api return new LSL_Rotation(sp.GetWorldRotation()); } - return Quaternion.Identity; + return LSL_Rotation.Identity; } public void osNpcSetRot(LSL_Key npc, LSL_Rotation rotation) @@ -3498,7 +3478,7 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api CheckThreatLevel(ThreatLevel.VeryHigh, "osAgentSaveAppearance"); if (!UUID.TryParse(avatarKey, out UUID avatarId)) - return new LSL_Key(ScriptBaseClass.NULL_KEY); + return LSL_Key.NullKey; return SaveAppearanceToNotecard(avatarId, notecard, includeHuds == 0); } @@ -3507,7 +3487,7 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api { ScenePresence sp = World.GetScenePresence(avatarId); if (sp is null || sp.IsChildAgent) - return new LSL_Key(ScriptBaseClass.NULL_KEY); + return LSL_Key.NullKey; return SaveAppearanceToNotecard(sp, notecard, NoHuds); } @@ -3526,10 +3506,7 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api return new LSL_Key(item.AssetID.ToString()); } - else - { - return new LSL_Key(ScriptBaseClass.NULL_KEY); - } + return LSL_Key.NullKey; } /// @@ -3613,7 +3590,7 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api ScriptSleep(1000); - return key.ToString(); + return new LSL_Key(key.ToString()); } /// @@ -3933,7 +3910,7 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api SetProjectionParams(m_host, llprojection, texture, fov, focus, amb); } - private void SetProjectionParams(SceneObjectPart obj, LSL_Integer llprojection, LSL_Key texture, LSL_Float fov, LSL_Float focus, LSL_Float amb) + private static void SetProjectionParams(SceneObjectPart obj, LSL_Integer llprojection, LSL_Key texture, LSL_Float fov, LSL_Float focus, LSL_Float amb) { if(obj is null || obj.IsDeleted || obj.Shape == null) return; @@ -4011,14 +3988,7 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api /// public LSL_String osUnixTimeToTimestamp(LSL_Integer time) { - CheckThreatLevel(ThreatLevel.VeryLow, "osUnixTimeToTimestamp"); - - long baseTicks = 621355968000000000; - long tickResolution = 10000000; - long epochTicks = (time * tickResolution) + baseTicks; - DateTime date = new(epochTicks); - - return date.ToString("yyyy-MM-ddTHH:mm:ss.fffffffZ"); + return new LSL_String(Util.ToDateTime(time.value).ToString("yyyy-MM-ddTHH:mm:ss.fffffffZ")); } /// @@ -4219,7 +4189,7 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api m_LSL_Api?.DetachFromAvatar(); } - private bool listObjToInt(object p, out int i) + private static bool listObjToInt(object p, out int i) { try { @@ -4384,8 +4354,6 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api /// 1 if thing is a valid UUID, 0 otherwise public LSL_Integer osIsUUID(string thing) { - CheckThreatLevel(); - return UUID.TryParse(thing, out _) ? 1 : 0; } @@ -4397,8 +4365,6 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api /// public LSL_Float osMin(double a, double b) { - CheckThreatLevel(); - return Math.Min(a, b); } @@ -4410,8 +4376,6 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api /// public LSL_Float osMax(double a, double b) { - CheckThreatLevel(); - return Math.Max(a, b); } @@ -4421,7 +4385,7 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api UUID rezID = m_host.ParentGroup.RezzerID; if(rezID.IsZero() || m_host.ParentGroup.Scene.GetScenePresence(rezID) is not null) - return new LSL_Key(ScriptBaseClass.NULL_KEY); + return LSL_Key.NullKey; return new LSL_Key(rezID.ToString()); } @@ -4583,7 +4547,8 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api if (m_UrlModule is not null) return m_UrlModule.RequestURL(m_ScriptEngine.ScriptModule, m_host, m_item.ItemID, opts).ToString(); - return ScriptBaseClass.NULL_KEY; + + return LSL_Key.NullKey; } public LSL_Key osRequestSecureURL(LSL_List options) @@ -4600,7 +4565,7 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api if (m_UrlModule != null) return m_UrlModule.RequestSecureURL(m_ScriptEngine.ScriptModule, m_host, m_item.ItemID, opts).ToString(); - return ScriptBaseClass.NULL_KEY; + return LSL_Key.NullKey; } public void osCollisionSound(string impact_sound, double impact_volume) @@ -4714,12 +4679,12 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api // need more checks Vector3 CenterOfMass = new((float)centerOfMass.x, (float)centerOfMass.y, (float)centerOfMass.z); - Vector3 Inertia; float m = (float)mass; - Inertia.X = m * (float)principalInertiaScaled.x; - Inertia.Y = m * (float)principalInertiaScaled.y; - Inertia.Z = m * (float)principalInertiaScaled.z; + Vector3 Inertia = new( + m * (float)principalInertiaScaled.x, + m * (float)principalInertiaScaled.y, + m * (float)principalInertiaScaled.z); Vector4 rot = new((float)lslrot.x, (float)lslrot.y, (float)lslrot.y, (float)lslrot.s); rot.Normalize(); @@ -4752,16 +4717,15 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api // need more checks Vector3 CenterOfMass = new((float)centerOfMass.x, (float)centerOfMass.y, (float)centerOfMass.z); - Vector3 Inertia; float lx = (float)boxSize.x; float ly = (float)boxSize.y; float lz = (float)boxSize.z; float m = (float)mass; float t = m / 12.0f; - Inertia.X = t * (ly*ly + lz*lz); - Inertia.Y = t * (lx*lx + lz*lz); - Inertia.Z = t * (lx*lx + ly*ly); + Vector3 Inertia = new( t * (ly*ly + lz*lz), + t * (lx*lx + lz*lz), + t * (lx*lx + ly*ly)); Vector4 rot = new((float)lslrot.x, (float)lslrot.y, (float)lslrot.z, (float)lslrot.s); rot.Normalize(); @@ -4793,15 +4757,11 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api // need more checks Vector3 CenterOfMass = new((float)centerOfMass.x, (float)centerOfMass.y, (float)centerOfMass.z); - Vector3 Inertia; float r = (float)radius; float m = (float)mass; float t = 0.4f * m * r * r; - Inertia.X = t; - Inertia.Y = t; - Inertia.Z = t; - + Vector3 Inertia = new(t, t, t); sog.SetInertiaData(m, CenterOfMass, Inertia, new Vector4(0f, 0f, 0f,1.0f)); } @@ -4832,18 +4792,16 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api // need more checks Vector3 CenterOfMass = new((float)centerOfMass.x, (float)centerOfMass.y, (float)centerOfMass.z); - Vector3 Inertia; float m = (float)mass; float r = (float)radius; r *= r; - Inertia.Z = 0.5f * m * r; + float t = (float)length; t *= t; t += 3.0f * r; t *= 8.333333e-2f * m; - Inertia.X = t; - Inertia.Y = t; + Vector3 Inertia = new(t, t, 0.5f * m * r); Vector4 rot = new((float)lslrot.x, (float)lslrot.y, (float)lslrot.z, (float)lslrot.s); rot.Normalize(); @@ -4935,9 +4893,7 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api return -1; } - UUID myid = m_host.ParentGroup.UUID; - - return sog.TeleportObject(myid, targetPos, rotation, flags); + return sog.TeleportObject(m_host.ParentGroup.UUID, targetPos, rotation, flags); // a delay here may break vehicles } @@ -4982,17 +4938,14 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api public void osAdjustSoundVolume(LSL_Integer linknum, LSL_Float volume) { SceneObjectPart sop = GetSingleLinkPart(linknum); - if(sop is null) - return; - sop.AdjustSoundGain(volume); + sop?.AdjustSoundGain(volume); } public void osSetSoundRadius(LSL_Integer linknum, LSL_Float radius) { SceneObjectPart sop = GetSingleLinkPart(linknum); - if(sop is null) - return; - sop.SoundRadius = radius; + if(sop is not null) + sop.SoundRadius = radius; } public void osPlaySound(LSL_Integer linknum, LSL_String sound, LSL_Float volume) @@ -5183,13 +5136,13 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api CheckThreatLevel(ThreatLevel.Moderate, "osDetectedCountry"); if (World.UserAccountService is null) - return string.Empty; + return LSL_String.Empty; DetectParams detectedParams = m_ScriptEngine.GetDetectParams(m_item.ItemID, number); if (detectedParams is null) - return string.Empty; + return LSL_String.Empty; UUID key = detectedParams.Key; if (key.IsZero()) - return string.Empty; + return LSL_String.Empty; UserAccount account = World.UserAccountService.GetUserAccount(World.RegionInfo.ScopeID, key); return account.UserCountry; } @@ -5199,19 +5152,19 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api CheckThreatLevel(ThreatLevel.Moderate, "osGetAgentCountry"); if (World.UserAccountService == null) - return string.Empty; + return LSL_String.Empty; if (!UUID.TryParse(id, out UUID key)) - return string.Empty; + return LSL_String.Empty; if (key.IsZero()) - return string.Empty; + return LSL_String.Empty; //if owner is not god, target must be in region, or nearby regions if (!World.Permissions.IsGod(m_host.OwnerID)) { ScenePresence sp = World.GetScenePresence(key); if(sp is null) - return string.Empty; + return LSL_String.Empty; } UserAccount account = World.UserAccountService.GetUserAccount(World.RegionInfo.ScopeID, key); @@ -5223,9 +5176,9 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api CheckThreatLevel(); if (string.IsNullOrEmpty(src)) - return ""; + return LSL_String.Empty; if (offset >= src.Length) - return ""; + return LSL_String.Empty; if (offset <= 0) return src; return src.m_string[(offset.value)..]; @@ -5353,9 +5306,9 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api public LSL_String osStringRemove(LSL_String src, LSL_Integer offset, LSL_Integer count) { if (string.IsNullOrEmpty(src)) - return ""; + return LSL_String.Empty; if (offset >= src.Length) - return ""; + return LSL_String.Empty; if (offset < 0) offset = 0; @@ -5365,7 +5318,7 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api count = src.Length - offset; if (count >= src.Length) - return ""; + return LSL_String.Empty; return src.m_string.Remove(offset, count); @@ -5374,9 +5327,9 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api public LSL_String osStringReplace(LSL_String src, LSL_String oldvalue, LSL_String newvalue) { if (string.IsNullOrEmpty(src)) - return ""; + return LSL_String.Empty; if (string.IsNullOrEmpty(oldvalue)) - return ""; + return LSL_String.Empty; if (string.IsNullOrEmpty(newvalue)) newvalue = null; @@ -5489,28 +5442,29 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api item = m_host.Inventory.GetInventoryItem(itemNameorid); if (item is null) - return ScriptBaseClass.NULL_KEY; + return LSL_String.NullKey; UUID id = item.LastOwnerID; if(id.IsZero()) - id= item.OwnerID; - return id.ToString(); + id = item.OwnerID; + + return new LSL_Key(id.ToString()); } public LSL_Key osGetInventoryItemKey(LSL_String name) { TaskInventoryItem item = m_host.Inventory.GetInventoryItem(name); if (item is null) - return ScriptBaseClass.NULL_KEY; + return LSL_String.NullKey; if ((item.CurrentPermissions & (uint)(PermissionMask.Copy | PermissionMask.Transfer | PermissionMask.Modify)) == (uint)(PermissionMask.Copy | PermissionMask.Transfer | PermissionMask.Modify)) { - return item.ItemID.ToString(); + return new LSL_Key(item.ItemID.ToString()); } - return ScriptBaseClass.NULL_KEY; + return LSL_String.NullKey; } public LSL_String osGetInventoryName(LSL_Key itemId) @@ -5519,7 +5473,7 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api if (UUID.TryParse(itemId, out UUID itemID)) item = m_host.Inventory.GetInventoryItem(itemID); - return (item == null) ? string.Empty : item.Name; + return (item is null) ? LSL_String.Empty : item.Name; } public LSL_String osGetInventoryDesc(LSL_String itemNameorid) @@ -5530,7 +5484,7 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api else item = m_host.Inventory.GetInventoryItem(itemNameorid); - return (item == null) ? string.Empty : item.Description; + return (item == null) ? LSL_String.Empty : item.Description; } public LSL_Key osGetLastChangedEventKey() @@ -5630,19 +5584,25 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api public void osSetLinkSitActiveRange(LSL_Integer linkNumber, LSL_Float v) { + InitLSL(); + if(m_LSL_Api is null) + return; + if (v > 128f) v = 128f; bool changed = false; - InitLSL(); + float fv = (float)v; + List parts = m_LSL_Api.GetLinkParts(linkNumber); for(int i = 0; i < parts.Count; ++i) { SceneObjectPart sop = parts[i]; - float old = sop.SitActiveRange; - sop.SitActiveRange = (float)v; - if (old != (float)v) + if(sop.SitActiveRange != fv) + { + sop.SitActiveRange = fv; changed = true; + } } if (changed) @@ -6016,7 +5976,7 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api return -1; ScenePresence av = World.GetScenePresence(avId); - if (av == null || av.IsDeleted || av.IsChildAgent) + if (av is null || av.IsDeleted || av.IsChildAgent) return 0; return av.IsNPC ? 2 : 1; diff --git a/OpenSim/Region/ScriptEngine/Shared/Api/Runtime/OSSL_Stub.cs b/OpenSim/Region/ScriptEngine/Shared/Api/Runtime/OSSL_Stub.cs index b92ae4bdbf..f97d5320dc 100644 --- a/OpenSim/Region/ScriptEngine/Shared/Api/Runtime/OSSL_Stub.cs +++ b/OpenSim/Region/ScriptEngine/Shared/Api/Runtime/OSSL_Stub.cs @@ -26,12 +26,8 @@ */ using System; -using System.Threading; -using System.Reflection; -using System.Collections; -using System.Collections.Generic; -using OpenSim.Framework; -using OpenSim.Region.Framework.Interfaces; +using System.Runtime.CompilerServices; + using OpenSim.Region.ScriptEngine.Interfaces; using OpenSim.Region.ScriptEngine.Shared.Api.Interfaces; using integer = OpenSim.Region.ScriptEngine.Shared.LSL_Types.LSLInteger; @@ -61,116 +57,139 @@ namespace OpenSim.Region.ScriptEngine.Shared.ScriptBase //Prim = new OSSLPrim(this); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] public void osSetRegionWaterHeight(double height) { m_OSSL_Functions.osSetRegionWaterHeight(height); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] public void osSetRegionSunSettings(bool useEstateSun, bool sunFixed, double sunHour) { m_OSSL_Functions.osSetRegionSunSettings(useEstateSun, sunFixed, sunHour); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] public void osSetEstateSunSettings(bool sunFixed, double sunHour) { m_OSSL_Functions.osSetEstateSunSettings(sunFixed, sunHour); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] public LSL_Float osGetCurrentSunHour() { return m_OSSL_Functions.osGetCurrentSunHour(); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] public LSL_Float osGetSunParam(LSL_String param) { return m_OSSL_Functions.osGetSunParam(param); } // Deprecated + [MethodImpl(MethodImplOptions.AggressiveInlining)] public double osSunGetParam(string param) { return m_OSSL_Functions.osSunGetParam(param); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] public void osSetSunParam(string param, double value) { m_OSSL_Functions.osSetSunParam(param, value); } + // Deprecated + [MethodImpl(MethodImplOptions.AggressiveInlining)] public void osSunSetParam(string param, double value) { m_OSSL_Functions.osSunSetParam(param, value); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] public string osWindActiveModelPluginName() { return m_OSSL_Functions.osWindActiveModelPluginName(); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] public void osSetWindParam(string plugin, string param, LSL_Float value) { m_OSSL_Functions.osSetWindParam(plugin, param, value); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] public LSL_Float osGetWindParam(string plugin, string param) { return m_OSSL_Functions.osGetWindParam(plugin, param); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] public LSL_Integer osGetParcelDwell(vector pos) { return m_OSSL_Functions.osGetParcelDwell(pos); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] public void osParcelJoin(vector pos1, vector pos2) { m_OSSL_Functions.osParcelJoin(pos1,pos2); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] public void osParcelSubdivide(vector pos1, vector pos2) { m_OSSL_Functions.osParcelSubdivide(pos1, pos2); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] public void osSetParcelDetails(vector pos, LSL_List rules) { m_OSSL_Functions.osSetParcelDetails(pos, rules); } // Deprecated + [MethodImpl(MethodImplOptions.AggressiveInlining)] public void osParcelSetDetails(vector pos, LSL_List rules) { m_OSSL_Functions.osParcelSetDetails(pos,rules); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] public string osSetDynamicTextureURL(string dynamicID, string contentType, string url, string extraParams, int timer) { return m_OSSL_Functions.osSetDynamicTextureURL(dynamicID, contentType, url, extraParams, timer); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] public string osSetDynamicTextureData(string dynamicID, string contentType, string data, string extraParams, int timer) { return m_OSSL_Functions.osSetDynamicTextureData(dynamicID, contentType, data, extraParams, timer); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] public string osSetDynamicTextureDataFace(string dynamicID, string contentType, string data, string extraParams, int timer, int face) { return m_OSSL_Functions.osSetDynamicTextureDataFace(dynamicID, contentType, data, extraParams, timer, face); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] public string osSetDynamicTextureURLBlend(string dynamicID, string contentType, string url, string extraParams, int timer, int alpha) { return m_OSSL_Functions.osSetDynamicTextureURLBlend(dynamicID, contentType, url, extraParams, timer, alpha); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] public string osSetDynamicTextureDataBlend(string dynamicID, string contentType, string data, string extraParams, int timer, int alpha) { return m_OSSL_Functions.osSetDynamicTextureDataBlend(dynamicID, contentType, data, extraParams, timer, alpha); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] public string osSetDynamicTextureURLBlendFace(string dynamicID, string contentType, string url, string extraParams, bool blend, int disp, int timer, int alpha, int face) { @@ -178,6 +197,7 @@ namespace OpenSim.Region.ScriptEngine.Shared.ScriptBase blend, disp, timer, alpha, face); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] public string osSetDynamicTextureDataBlendFace(string dynamicID, string contentType, string data, string extraParams, bool blend, int disp, int timer, int alpha, int face) { @@ -185,71 +205,85 @@ namespace OpenSim.Region.ScriptEngine.Shared.ScriptBase blend, disp, timer, alpha, face); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] public LSL_Float osGetTerrainHeight(int x, int y) { return m_OSSL_Functions.osGetTerrainHeight(x, y); } // Deprecated + [MethodImpl(MethodImplOptions.AggressiveInlining)] public LSL_Float osTerrainGetHeight(int x, int y) { return m_OSSL_Functions.osTerrainGetHeight(x, y); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] public LSL_Integer osSetTerrainHeight(int x, int y, double val) { return m_OSSL_Functions.osSetTerrainHeight(x, y, val); } // Deprecated + [MethodImpl(MethodImplOptions.AggressiveInlining)] public LSL_Integer osTerrainSetHeight(int x, int y, double val) { return m_OSSL_Functions.osTerrainSetHeight(x, y, val); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] public void osTerrainFlush() { m_OSSL_Functions.osTerrainFlush(); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] public int osRegionRestart(double seconds) { return m_OSSL_Functions.osRegionRestart(seconds); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] public int osRegionRestart(double seconds, string msg) { return m_OSSL_Functions.osRegionRestart(seconds, msg); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] public void osRegionNotice(string msg) { m_OSSL_Functions.osRegionNotice(msg); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] public void osRegionNotice(LSL_Key agentID, string msg) { m_OSSL_Functions.osRegionNotice(agentID, msg); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] public bool osConsoleCommand(string Command) { return m_OSSL_Functions.osConsoleCommand(Command); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] public void osSetParcelMusicURL(LSL_String url) { m_OSSL_Functions.osSetParcelMusicURL(url); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] public void osSetParcelMediaURL(LSL_String url) { m_OSSL_Functions.osSetParcelMediaURL(url); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] public void osSetParcelSIPAddress(string SIPAddress) { m_OSSL_Functions.osSetParcelSIPAddress(SIPAddress); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] public void osSetPrimFloatOnWater(int floatYN) { m_OSSL_Functions.osSetPrimFloatOnWater(floatYN); @@ -257,46 +291,55 @@ namespace OpenSim.Region.ScriptEngine.Shared.ScriptBase // Teleport Functions + [MethodImpl(MethodImplOptions.AggressiveInlining)] public void osLocalTeleportAgent(LSL_Key agent, vector position, vector velocity, vector lookat, LSL_Integer flags) { m_OSSL_Functions.osLocalTeleportAgent(agent, position, velocity, lookat, flags); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] public void osTeleportAgent(string agent, string regionName, vector position, vector lookat) { m_OSSL_Functions.osTeleportAgent(agent, regionName, position, lookat); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] public void osTeleportAgent(string agent, int regionX, int regionY, vector position, vector lookat) { m_OSSL_Functions.osTeleportAgent(agent, regionX, regionY, position, lookat); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] public void osTeleportAgent(string agent, vector position, vector lookat) { m_OSSL_Functions.osTeleportAgent(agent, position, lookat); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] public void osTeleportOwner(string regionName, vector position, vector lookat) { m_OSSL_Functions.osTeleportOwner(regionName, position, lookat); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] public void osTeleportOwner(int regionX, int regionY, vector position, vector lookat) { m_OSSL_Functions.osTeleportOwner(regionX, regionY, position, lookat); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] public void osTeleportOwner(vector position, vector lookat) { m_OSSL_Functions.osTeleportOwner(position, lookat); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] public LSL_List osGetAgents() { return m_OSSL_Functions.osGetAgents(); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] public string osGetAgentIP(string agent) { return m_OSSL_Functions.osGetAgentIP(agent); @@ -304,11 +347,13 @@ namespace OpenSim.Region.ScriptEngine.Shared.ScriptBase // Animation Functions + [MethodImpl(MethodImplOptions.AggressiveInlining)] public void osAvatarPlayAnimation(LSL_Key avatar, string animation) { m_OSSL_Functions.osAvatarPlayAnimation(avatar, animation); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] public void osAvatarStopAnimation(LSL_Key avatar, string animation) { m_OSSL_Functions.osAvatarStopAnimation(avatar, animation); @@ -316,31 +361,37 @@ namespace OpenSim.Region.ScriptEngine.Shared.ScriptBase #region Attachment commands + [MethodImpl(MethodImplOptions.AggressiveInlining)] public void osForceAttachToAvatar(int attachmentPoint) { m_OSSL_Functions.osForceAttachToAvatar(attachmentPoint); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] public void osForceAttachToAvatarFromInventory(string itemName, int attachmentPoint) { m_OSSL_Functions.osForceAttachToAvatarFromInventory(itemName, attachmentPoint); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] public void osForceAttachToOtherAvatarFromInventory(string rawAvatarId, string itemName, int attachmentPoint) { m_OSSL_Functions.osForceAttachToOtherAvatarFromInventory(rawAvatarId, itemName, attachmentPoint); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] public void osForceDetachFromAvatar() { m_OSSL_Functions.osForceDetachFromAvatar(); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] public LSL_List osGetNumberOfAttachments(LSL_Key avatar, LSL_List attachmentPoints) { return m_OSSL_Functions.osGetNumberOfAttachments(avatar, attachmentPoints); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] public void osMessageAttachments(LSL_Key avatar, string message, LSL_List attachmentPoints, int flags) { m_OSSL_Functions.osMessageAttachments(avatar, message, attachmentPoints, flags); @@ -350,449 +401,537 @@ namespace OpenSim.Region.ScriptEngine.Shared.ScriptBase // Texture Draw functions + [MethodImpl(MethodImplOptions.AggressiveInlining)] public string osMovePen(string drawList, int x, int y) { return m_OSSL_Functions.osMovePen(drawList, x, y); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] public string osDrawLine(string drawList, int startX, int startY, int endX, int endY) { return m_OSSL_Functions.osDrawLine(drawList, startX, startY, endX, endY); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] public string osDrawLine(string drawList, int endX, int endY) { return m_OSSL_Functions.osDrawLine(drawList, endX, endY); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] public string osDrawText(string drawList, string text) { return m_OSSL_Functions.osDrawText(drawList, text); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] public string osDrawEllipse(string drawList, int width, int height) { return m_OSSL_Functions.osDrawEllipse(drawList, width, height); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] public string osDrawFilledEllipse(string drawList, int width, int height) { return m_OSSL_Functions.osDrawFilledEllipse(drawList, width, height); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] public string osDrawRectangle(string drawList, int width, int height) { return m_OSSL_Functions.osDrawRectangle(drawList, width, height); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] public string osDrawFilledRectangle(string drawList, int width, int height) { return m_OSSL_Functions.osDrawFilledRectangle(drawList, width, height); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] public string osDrawPolygon(string drawList, LSL_List x, LSL_List y) { return m_OSSL_Functions.osDrawPolygon(drawList, x, y); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] public string osDrawFilledPolygon(string drawList, LSL_List x, LSL_List y) { return m_OSSL_Functions.osDrawFilledPolygon(drawList, x, y); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] public string osDrawResetTransform(string drawList) { return m_OSSL_Functions.osDrawResetTransform(drawList); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] public string osDrawRotationTransform(string drawList, LSL_Float x) { return m_OSSL_Functions.osDrawRotationTransform(drawList, x); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] public string osDrawScaleTransform(string drawList, LSL_Float x, LSL_Float y) { return m_OSSL_Functions.osDrawScaleTransform(drawList, x, y); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] public string osDrawTranslationTransform(string drawList, LSL_Float x, LSL_Float y) { return m_OSSL_Functions.osDrawTranslationTransform(drawList, x, y); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] public string osSetFontSize(string drawList, int fontSize) { return m_OSSL_Functions.osSetFontSize(drawList, fontSize); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] public string osSetFontName(string drawList, string fontName) { return m_OSSL_Functions.osSetFontName(drawList, fontName); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] public string osSetPenSize(string drawList, int penSize) { return m_OSSL_Functions.osSetPenSize(drawList, penSize); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] public string osSetPenCap(string drawList, string direction, string type) { return m_OSSL_Functions.osSetPenCap(drawList, direction, type); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] public string osSetPenColor(string drawList, string color) { return m_OSSL_Functions.osSetPenColor(drawList, color); } // Deprecated + [MethodImpl(MethodImplOptions.AggressiveInlining)] public string osSetPenColour(string drawList, string colour) { return m_OSSL_Functions.osSetPenColour(drawList, colour); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] public string osDrawImage(string drawList, int width, int height, string imageUrl) { return m_OSSL_Functions.osDrawImage(drawList, width, height, imageUrl); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] public vector osGetDrawStringSize(string contentType, string text, string fontName, int fontSize) { return m_OSSL_Functions.osGetDrawStringSize(contentType, text, fontName, fontSize); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] public string osGetScriptEngineName() { return m_OSSL_Functions.osGetScriptEngineName(); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] public LSL_Integer osCheckODE() { return m_OSSL_Functions.osCheckODE(); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] public string osGetPhysicsEngineType() { return m_OSSL_Functions.osGetPhysicsEngineType(); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] public string osGetPhysicsEngineName() { return m_OSSL_Functions.osGetPhysicsEngineName(); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] public string osGetSimulatorVersion() { return m_OSSL_Functions.osGetSimulatorVersion(); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] public void osMessageObject(key objectUUID,string message) { m_OSSL_Functions.osMessageObject(objectUUID,message); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] public void osMakeNotecard(string notecardName, LSL_String contents) { m_OSSL_Functions.osMakeNotecard(notecardName, contents); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] public void osMakeNotecard(string notecardName, LSL_List contents) { m_OSSL_Functions.osMakeNotecard(notecardName, contents); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] public string osGetNotecardLine(string name, int line) { return m_OSSL_Functions.osGetNotecardLine(name, line); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] public string osGetNotecard(string name) { return m_OSSL_Functions.osGetNotecard(name); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] public int osGetNumberOfNotecardLines(string name) { return m_OSSL_Functions.osGetNumberOfNotecardLines(name); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] public string osAvatarName2Key(string firstname, string lastname) { return m_OSSL_Functions.osAvatarName2Key(firstname, lastname); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] public string osKey2Name(string id) { return m_OSSL_Functions.osKey2Name(id); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] public string osSHA256(string input) { return m_OSSL_Functions.osSHA256(input); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] public string osGetGridNick() { return m_OSSL_Functions.osGetGridNick(); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] public string osGetGridName() { return m_OSSL_Functions.osGetGridName(); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] public string osGetGridLoginURI() { return m_OSSL_Functions.osGetGridLoginURI(); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] public string osGetGridHomeURI() { return m_OSSL_Functions.osGetGridHomeURI(); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] public string osGetGridGatekeeperURI() { return m_OSSL_Functions.osGetGridGatekeeperURI(); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] public string osGetGridCustom(string key) { return m_OSSL_Functions.osGetGridCustom(key); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] public string osGetAvatarHomeURI(string uuid) { return m_OSSL_Functions.osGetAvatarHomeURI(uuid); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] public LSL_String osFormatString(string str, LSL_List strings) { return m_OSSL_Functions.osFormatString(str, strings); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] public LSL_List osMatchString(string src, string pattern, int start) { return m_OSSL_Functions.osMatchString(src, pattern, start); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] public LSL_String osReplaceString(string src, string pattern, string replace, int count, int start) { return m_OSSL_Functions.osReplaceString(src,pattern,replace,count,start); } - // Information about data loaded into the region + [MethodImpl(MethodImplOptions.AggressiveInlining)] public string osLoadedCreationDate() { return m_OSSL_Functions.osLoadedCreationDate(); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] public string osLoadedCreationTime() { return m_OSSL_Functions.osLoadedCreationTime(); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] public string osLoadedCreationID() { return m_OSSL_Functions.osLoadedCreationID(); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] public LSL_List osGetLinkPrimitiveParams(int linknumber, LSL_List rules) { return m_OSSL_Functions.osGetLinkPrimitiveParams(linknumber, rules); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] public void osForceCreateLink(string target, int parent) { m_OSSL_Functions.osForceCreateLink(target, parent); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] public void osForceBreakLink(int linknum) { m_OSSL_Functions.osForceBreakLink(linknum); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] public void osForceBreakAllLinks() { m_OSSL_Functions.osForceBreakAllLinks(); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] public void osDie(LSL_Key objectUUID) { m_OSSL_Functions.osDie(objectUUID); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] public LSL_Integer osIsNpc(LSL_Key npc) { return m_OSSL_Functions.osIsNpc(npc); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] public key osNpcCreate(string user, string name, vector position, key cloneFrom) { return m_OSSL_Functions.osNpcCreate(user, name, position, cloneFrom); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] public key osNpcCreate(string user, string name, vector position, key cloneFrom, int options) { return m_OSSL_Functions.osNpcCreate(user, name, position, cloneFrom, options); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] public key osNpcSaveAppearance(key npc, LSL_String notecard) { return m_OSSL_Functions.osNpcSaveAppearance(npc, notecard); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] public key osNpcSaveAppearance(key npc, LSL_String notecard, LSL_Integer includeHuds) { return m_OSSL_Functions.osNpcSaveAppearance(npc, notecard, includeHuds); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] public void osNpcLoadAppearance(key npc, string notecard) { m_OSSL_Functions.osNpcLoadAppearance(npc, notecard); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] public LSL_Key osNpcGetOwner(LSL_Key npc) { return m_OSSL_Functions.osNpcGetOwner(npc); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] public vector osNpcGetPos(LSL_Key npc) { return m_OSSL_Functions.osNpcGetPos(npc); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] public void osNpcMoveTo(key npc, vector position) { m_OSSL_Functions.osNpcMoveTo(npc, position); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] public void osNpcMoveToTarget(key npc, vector target, int options) { m_OSSL_Functions.osNpcMoveToTarget(npc, target, options); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] public rotation osNpcGetRot(key npc) { return m_OSSL_Functions.osNpcGetRot(npc); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] public void osNpcSetRot(key npc, rotation rot) { m_OSSL_Functions.osNpcSetRot(npc, rot); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] public void osNpcStopMoveToTarget(LSL_Key npc) { m_OSSL_Functions.osNpcStopMoveToTarget(npc); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] public void osNpcSetProfileAbout(LSL_Key npc, string about) { m_OSSL_Functions.osNpcSetProfileAbout(npc, about); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] public void osNpcSetProfileImage(LSL_Key npc, string image) { m_OSSL_Functions.osNpcSetProfileImage(npc, image); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] public void osNpcSay(key npc, string message) { m_OSSL_Functions.osNpcSay(npc, message); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] public void osNpcSay(key npc, int channel, string message) { m_OSSL_Functions.osNpcSay(npc, channel, message); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] public void osNpcSayTo(LSL_Key npc, LSL_Key target, int channel, string msg) { m_OSSL_Functions.osNpcSayTo(npc, target, channel, msg); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] public void osNpcShout(key npc, int channel, string message) { m_OSSL_Functions.osNpcShout(npc, channel, message); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] public void osNpcSit(LSL_Key npc, LSL_Key target, int options) { m_OSSL_Functions.osNpcSit(npc, target, options); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] public void osNpcStand(LSL_Key npc) { m_OSSL_Functions.osNpcStand(npc); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] public void osNpcRemove(key npc) { m_OSSL_Functions.osNpcRemove(npc); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] public void osNpcPlayAnimation(LSL_Key npc, string animation) { m_OSSL_Functions.osNpcPlayAnimation(npc, animation); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] public void osNpcStopAnimation(LSL_Key npc, string animation) { m_OSSL_Functions.osNpcStopAnimation(npc, animation); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] public void osNpcWhisper(key npc, int channel, string message) { m_OSSL_Functions.osNpcWhisper(npc, channel, message); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] public void osNpcTouch(LSL_Key npcLSL_Key, LSL_Key object_key, LSL_Integer link_num) { m_OSSL_Functions.osNpcTouch(npcLSL_Key, object_key, link_num); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] public LSL_Key osOwnerSaveAppearance(LSL_String notecard) { return m_OSSL_Functions.osOwnerSaveAppearance(notecard); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] public LSL_Key osOwnerSaveAppearance(LSL_String notecard, LSL_Integer includeHuds) { return m_OSSL_Functions.osOwnerSaveAppearance(notecard, includeHuds); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] public LSL_Key osAgentSaveAppearance(LSL_Key agentId, LSL_String notecard) { return m_OSSL_Functions.osAgentSaveAppearance(agentId, notecard); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] public LSL_Key osAgentSaveAppearance(LSL_Key agentId, LSL_String notecard, LSL_Integer includeHuds) { return m_OSSL_Functions.osAgentSaveAppearance(agentId, notecard, includeHuds); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] public string osGetGender(LSL_Key rawAvatarId) { return m_OSSL_Functions.osGetGender(rawAvatarId); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] public key osGetMapTexture() { return m_OSSL_Functions.osGetMapTexture(); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] public key osGetRegionMapTexture(string regionNameOrID) { return m_OSSL_Functions.osGetRegionMapTexture(regionNameOrID); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] public LSL_List osGetRegionStats() { return m_OSSL_Functions.osGetRegionStats(); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] public vector osGetRegionSize() { return m_OSSL_Functions.osGetRegionSize(); @@ -803,311 +942,373 @@ namespace OpenSim.Region.ScriptEngine.Shared.ScriptBase /// Amount in bytes - if >= 2GB, returns 2GB. (LSL is not 64-bit aware) /// /// + [MethodImpl(MethodImplOptions.AggressiveInlining)] public LSL_Integer osGetSimulatorMemory() { return m_OSSL_Functions.osGetSimulatorMemory(); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] public LSL_Integer osGetSimulatorMemoryKB() { return m_OSSL_Functions.osGetSimulatorMemoryKB(); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] public void osKickAvatar(string FirstName, string SurName, string alert) { m_OSSL_Functions.osKickAvatar(FirstName, SurName, alert); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] public void osKickAvatar(LSL_Key agentId, string alert) { m_OSSL_Functions.osKickAvatar(agentId, alert); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] public void osSetSpeed(string UUID, LSL_Float SpeedModifier) { m_OSSL_Functions.osSetSpeed(UUID, SpeedModifier); } - + + [MethodImpl(MethodImplOptions.AggressiveInlining)] public void osSetOwnerSpeed(LSL_Float SpeedModifier) { m_OSSL_Functions.osSetOwnerSpeed(SpeedModifier); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] public LSL_Float osGetHealth(key avatar) { return m_OSSL_Functions.osGetHealth(avatar); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] public void osCauseDamage(key avatar, LSL_Float damage) { m_OSSL_Functions.osCauseDamage(avatar, damage); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] public void osCauseHealing(key avatar, LSL_Float healing) { m_OSSL_Functions.osCauseHealing(avatar, healing); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] public void osSetHealth(key avatar, LSL_Float health) { m_OSSL_Functions.osSetHealth(avatar, health); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] public void osSetHealRate(key avatar, LSL_Float health) { m_OSSL_Functions.osSetHealRate(avatar, health); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] public LSL_Float osGetHealRate(key avatar) { return m_OSSL_Functions.osGetHealRate(avatar); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] public void osForceOtherSit(string avatar) { m_OSSL_Functions.osForceOtherSit(avatar); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] public void osForceOtherSit(string avatar, string target) { m_OSSL_Functions.osForceOtherSit(avatar, target); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] public LSL_List osGetPrimitiveParams(LSL_Key prim, LSL_List rules) { return m_OSSL_Functions.osGetPrimitiveParams(prim, rules); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] public void osSetPrimitiveParams(LSL_Key prim, LSL_List rules) { m_OSSL_Functions.osSetPrimitiveParams(prim, rules); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] public void osSetProjectionParams(LSL_Integer projection, LSL_Key texture, double fov, double focus, double amb) { m_OSSL_Functions.osSetProjectionParams(projection, texture, fov, focus, amb); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] public void osSetProjectionParams(LSL_Key prim, LSL_Integer projection, LSL_Key texture, double fov, double focus, double amb) { m_OSSL_Functions.osSetProjectionParams(prim, projection, texture, fov, focus, amb); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] public void osSetProjectionParams(LSL_Integer linknumber, LSL_Integer projection, LSL_Key texture, LSL_Float fov, LSL_Float focus, LSL_Float amb) { m_OSSL_Functions.osSetProjectionParams(linknumber, projection, texture, fov, focus, amb); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] public LSL_List osGetAvatarList() { return m_OSSL_Functions.osGetAvatarList(); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] public LSL_List osGetNPCList() { return m_OSSL_Functions.osGetNPCList(); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] public LSL_String osUnixTimeToTimestamp(LSL_Integer time) { return m_OSSL_Functions.osUnixTimeToTimestamp(time); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] public LSL_Integer osInviteToGroup(LSL_Key agentId) { return m_OSSL_Functions.osInviteToGroup(agentId); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] public LSL_Integer osEjectFromGroup(LSL_Key agentId) { return m_OSSL_Functions.osEjectFromGroup(agentId); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] public void osSetTerrainTexture(int level, LSL_Key texture) { m_OSSL_Functions.osSetTerrainTexture(level, texture); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] public void osSetTerrainTextureHeight(int corner, double low, double high) { m_OSSL_Functions.osSetTerrainTextureHeight(corner, low, high); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] public LSL_Integer osIsUUID(string thing) { return m_OSSL_Functions.osIsUUID(thing); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] public LSL_Float osMin(double a, double b) { return m_OSSL_Functions.osMin(a, b); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] public LSL_Float osMax(double a, double b) { return m_OSSL_Functions.osMax(a, b); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] public LSL_Key osGetRezzingObject() { return m_OSSL_Functions.osGetRezzingObject(); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] public void osSetContentType(LSL_Key id, string type) { m_OSSL_Functions.osSetContentType(id,type); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] public void osDropAttachment() { m_OSSL_Functions.osDropAttachment(); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] public void osForceDropAttachment() { m_OSSL_Functions.osForceDropAttachment(); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] public void osDropAttachmentAt(vector pos, rotation rot) { m_OSSL_Functions.osDropAttachmentAt(pos, rot); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] public void osForceDropAttachmentAt(vector pos, rotation rot) { m_OSSL_Functions.osForceDropAttachmentAt(pos, rot); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] public LSL_Integer osListenRegex(int channelID, string name, string ID, string msg, int regexBitfield) { return m_OSSL_Functions.osListenRegex(channelID, name, ID, msg, regexBitfield); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] public LSL_Integer osRegexIsMatch(string input, string pattern) { return m_OSSL_Functions.osRegexIsMatch(input, pattern); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] public LSL_Key osRequestURL(LSL_List options) { return m_OSSL_Functions.osRequestURL(options); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] public LSL_Key osRequestSecureURL(LSL_List options) { return m_OSSL_Functions.osRequestSecureURL(options); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] public void osCollisionSound(string impact_sound, double impact_volume) { m_OSSL_Functions.osCollisionSound(impact_sound, impact_volume); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] public void osVolumeDetect(int detect) { m_OSSL_Functions.osVolumeDetect(detect); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] public LSL_List osGetInertiaData() { return m_OSSL_Functions.osGetInertiaData(); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] public void osSetInertia(LSL_Float mass, vector centerOfMass, vector principalInertiaScaled, rotation rot) { m_OSSL_Functions.osSetInertia(mass, centerOfMass, principalInertiaScaled, rot); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] public void osSetInertiaAsBox(LSL_Float mass, vector boxSize, vector centerOfMass, rotation rot) { m_OSSL_Functions.osSetInertiaAsBox(mass, boxSize, centerOfMass, rot); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] public void osSetInertiaAsSphere(LSL_Float mass, LSL_Float radius, vector centerOfMass) { m_OSSL_Functions.osSetInertiaAsSphere(mass, radius, centerOfMass); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] public void osSetInertiaAsCylinder(LSL_Float mass, LSL_Float radius, LSL_Float length, vector centerOfMass,rotation lslrot) { m_OSSL_Functions.osSetInertiaAsCylinder( mass, radius, length, centerOfMass, lslrot); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] public void osClearInertia() { m_OSSL_Functions.osClearInertia(); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] public LSL_Integer osTeleportObject(LSL_Key objectUUID, vector targetPos, rotation targetrotation, LSL_Integer flags) { return m_OSSL_Functions.osTeleportObject(objectUUID, targetPos, targetrotation, flags); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] public LSL_Integer osGetLinkNumber(LSL_String name) { return m_OSSL_Functions.osGetLinkNumber(name); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] public LSL_Float osRound(LSL_Float value, LSL_Integer digits) { return m_OSSL_Functions.osRound(value, digits); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] public LSL_Float osVecMagSquare(vector a) { return m_OSSL_Functions.osVecMagSquare(a); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] public LSL_Float osVecDistSquare(vector a, vector b) { return m_OSSL_Functions.osVecDistSquare(a, b); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] public LSL_Float osAngleBetween(vector a, vector b) { return m_OSSL_Functions.osAngleBetween(a, b); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] public void osAdjustSoundVolume(LSL_Integer linknum, LSL_Float volume) { m_OSSL_Functions.osAdjustSoundVolume(linknum, volume); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] public void osSetSoundRadius(LSL_Integer linknum, LSL_Float radius) { m_OSSL_Functions.osSetSoundRadius(linknum, radius); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] public void osPlaySound(LSL_Integer linknum, LSL_String sound, LSL_Float volume) { m_OSSL_Functions.osPlaySound(linknum, sound, volume); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] public void osLoopSound(LSL_Integer linknum, LSL_String sound, LSL_Float volume) { m_OSSL_Functions.osLoopSound(linknum, sound, volume); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] public void osLoopSoundMaster(LSL_Integer linknum, LSL_String sound, LSL_Float volume) { m_OSSL_Functions.osLoopSoundMaster(linknum, sound, volume); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] public void osLoopSoundSlave(LSL_Integer linknum, LSL_String sound, LSL_Float volume) { m_OSSL_Functions.osLoopSoundSlave(linknum, sound, volume); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] public void osPlaySoundSlave(LSL_Integer linknum, LSL_String sound, LSL_Float volume) { m_OSSL_Functions.osPlaySoundSlave(linknum, sound, volume); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] public void osTriggerSound(LSL_Integer linknum, LSL_String sound, LSL_Float volume) { m_OSSL_Functions.osTriggerSound(linknum, sound, volume); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] public void osTriggerSoundLimited(LSL_Integer linknum, LSL_String sound, LSL_Float volume, vector top_north_east, vector bottom_south_west) { @@ -1115,231 +1316,277 @@ namespace OpenSim.Region.ScriptEngine.Shared.ScriptBase top_north_east, bottom_south_west); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] public void osStopSound(LSL_Integer linknum) { m_OSSL_Functions.osStopSound(linknum); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] public void osPreloadSound(LSL_Integer linknum, LSL_String sound) { m_OSSL_Functions.osPreloadSound(linknum, sound); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] public LSL_String osDetectedCountry(LSL_Integer number) { return m_OSSL_Functions.osDetectedCountry(number); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] public LSL_String osGetAgentCountry(LSL_Key agentId) { return m_OSSL_Functions.osGetAgentCountry(agentId); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] public LSL_String osStringSubString(LSL_String src, LSL_Integer offset) { return m_OSSL_Functions.osStringSubString(src, offset); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] public LSL_String osStringSubString(LSL_String src, LSL_Integer offset, LSL_Integer length) { return m_OSSL_Functions.osStringSubString(src, offset, length); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] public LSL_Integer osStringStartsWith(LSL_String src, LSL_String value, LSL_Integer ignorecase) { return m_OSSL_Functions.osStringStartsWith(src, value, ignorecase); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] public LSL_Integer osStringEndsWith(LSL_String src, LSL_String value, LSL_Integer ignorecase) { return m_OSSL_Functions.osStringEndsWith(src, value, ignorecase); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] public LSL_Integer osStringIndexOf(LSL_String src, LSL_String value, LSL_Integer ignorecase) { return m_OSSL_Functions.osStringIndexOf(src, value, ignorecase); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] public LSL_Integer osStringIndexOf(LSL_String src, LSL_String value, LSL_Integer offset, LSL_Integer count, LSL_Integer ignorecase) { return m_OSSL_Functions.osStringIndexOf(src, value, offset, count, ignorecase); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] public LSL_Integer osStringLastIndexOf(LSL_String src, LSL_String value, LSL_Integer ignorecase) { return m_OSSL_Functions.osStringLastIndexOf(src, value, ignorecase); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] public LSL_Integer osStringLastIndexOf(LSL_String src, LSL_String value, LSL_Integer offset, LSL_Integer count, LSL_Integer ignorecase) { return m_OSSL_Functions.osStringLastIndexOf(src, value, offset, count, ignorecase); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] public LSL_String osStringRemove(LSL_String src, LSL_Integer offset, LSL_Integer count) { return m_OSSL_Functions.osStringRemove(src, offset, count); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] public LSL_String osStringReplace(LSL_String src, LSL_String oldvalue, LSL_String newvalue) { return m_OSSL_Functions.osStringReplace(src, oldvalue, newvalue); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] public LSL_Integer osApproxEquals(LSL_Float a, LSL_Float b) { return m_OSSL_Functions.osApproxEquals(a, b); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] public LSL_Integer osApproxEquals(LSL_Float a, LSL_Float b, LSL_Float margin) { return m_OSSL_Functions.osApproxEquals(a, b, margin); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] public LSL_Integer osApproxEquals(vector va, vector vb) { return m_OSSL_Functions.osApproxEquals(va, vb); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] public LSL_Integer osApproxEquals(vector va, vector vb, LSL_Float margin) { return m_OSSL_Functions.osApproxEquals(va, vb, margin); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] public LSL_Integer osApproxEquals(rotation ra, rotation rb) { return m_OSSL_Functions.osApproxEquals(ra, rb); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] public LSL_Integer osApproxEquals(rotation ra, rotation rb, LSL_Float margin) { return m_OSSL_Functions.osApproxEquals(ra, rb, margin); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] public LSL_Key osGetInventoryLastOwner(LSL_String itemNameOrId) { return m_OSSL_Functions.osGetInventoryLastOwner(itemNameOrId); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] public LSL_Key osGetInventoryItemKey(LSL_String name) { return m_OSSL_Functions.osGetInventoryItemKey(name); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] public LSL_String osGetInventoryName(LSL_Key itemId) { return m_OSSL_Functions.osGetInventoryName(itemId); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] public LSL_String osGetInventoryDesc(LSL_String itemNameOrId) { return m_OSSL_Functions.osGetInventoryDesc(itemNameOrId); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] public LSL_Key osGetLastChangedEventKey() { return m_OSSL_Functions.osGetLastChangedEventKey(); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] public LSL_Float osGetPSTWallclock() { return m_OSSL_Functions.osGetPSTWallclock(); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] public rotation osSlerp(rotation a, rotation b, LSL_Float amount) { return m_OSSL_Functions.osSlerp(a, b, amount); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] public vector osSlerp(vector a, vector b, LSL_Float amount) { return m_OSSL_Functions.osSlerp(a, b, amount); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] public void osResetAllScripts(LSL_Integer allLinkSet) { m_OSSL_Functions.osResetAllScripts(allLinkSet); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] public LSL_Integer osIsNotValidNumber(LSL_Float v) { return m_OSSL_Functions.osIsNotValidNumber(v); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] public void osSetSitActiveRange(LSL_Float v) { m_OSSL_Functions.osSetSitActiveRange(v); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] public void osSetLinkSitActiveRange(LSL_Integer linkNumber, LSL_Float v) { m_OSSL_Functions.osSetLinkSitActiveRange(linkNumber, v); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] public LSL_Float osGetSitActiveRange() { return m_OSSL_Functions.osGetSitActiveRange(); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] public LSL_Float osGetLinkSitActiveRange(LSL_Integer linkNumber) { return m_OSSL_Functions.osGetLinkSitActiveRange(linkNumber); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] public void osSetStandTarget(vector v) { m_OSSL_Functions.osSetStandTarget(v); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] public void osSetLinkStandTarget(LSL_Integer linkNumber, vector v) { m_OSSL_Functions.osSetLinkStandTarget(linkNumber, v); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] public vector osGetStandTarget() { return m_OSSL_Functions.osGetStandTarget(); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] public vector osGetLinkStandTarget(LSL_Integer linkNumber) { return m_OSSL_Functions.osGetLinkStandTarget(linkNumber); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] public LSL_Integer osClearObjectAnimations() { return m_OSSL_Functions.osClearObjectAnimations(); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] public LSL_Float osGetApparentTime() { return m_OSSL_Functions.osGetApparentTime(); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] public LSL_String osGetApparentTimeString(LSL_Integer format24) { return m_OSSL_Functions.osGetApparentTimeString(format24); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] public LSL_Float osGetApparentRegionTime() { return m_OSSL_Functions.osGetApparentRegionTime(); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] public LSL_String osGetApparentRegionTimeString(LSL_Integer format24) { return m_OSSL_Functions.osGetApparentRegionTimeString(format24); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] public LSL_Integer osReplaceAgentEnvironment(LSL_Key agentkey, LSL_Integer transition, LSL_String daycycle) { return m_OSSL_Functions.osReplaceAgentEnvironment(agentkey, transition, daycycle); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] public LSL_Integer osReplaceParcelEnvironment(LSL_Integer transition, LSL_String daycycle) { return m_OSSL_Functions.osReplaceParcelEnvironment(transition, daycycle); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] public LSL_Integer osReplaceRegionEnvironment(LSL_Integer transition, LSL_String daycycle, LSL_Float daylen, LSL_Float dayoffset, LSL_Float altitude1, LSL_Float altitude2, LSL_Float altitude3) { @@ -1347,223 +1594,46 @@ namespace OpenSim.Region.ScriptEngine.Shared.ScriptBase dayoffset, altitude1, altitude2, altitude3); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] public LSL_Integer osResetEnvironment(LSL_Integer parcelOrRegion, LSL_Integer transition) { return m_OSSL_Functions.osResetEnvironment(parcelOrRegion, transition); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] public void osParticleSystem(LSL_List rules) { m_OSSL_Functions.osParticleSystem(rules); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] public void osLinkParticleSystem(LSL_Integer linknumber, LSL_List rules) { m_OSSL_Functions.osLinkParticleSystem(linknumber, rules); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] public LSL_Integer osNpcLookAt(LSL_Key npckey, LSL_Integer type, LSL_Key objkey, vector offset) { return m_OSSL_Functions.osNpcLookAt(npckey, type, objkey, offset); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] public LSL_Integer osAvatarType(LSL_Key avkey) { return m_OSSL_Functions.osAvatarType(avkey); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] public LSL_Integer osAvatarType(LSL_String sFirstName, LSL_String sLastName) { return m_OSSL_Functions.osAvatarType(sFirstName, sLastName); } + [MethodImpl(MethodImplOptions.AggressiveInlining)] public void osListSortInPlace(LSL_List src, LSL_Integer stride, LSL_Integer ascending) { m_OSSL_Functions.osListSortInPlace(src, stride, ascending); } - - /* - public OSSLPrim Prim; - - [Serializable] - public class OSSLPrim - { - internal ScriptBaseClass OSSL; - public OSSLPrim(ScriptBaseClass bc) - { - OSSL = bc; - Position = new OSSLPrim_Position(this); - Rotation = new OSSLPrim_Rotation(this); - } - - public OSSLPrim_Position Position; - public OSSLPrim_Rotation Rotation; - private TextStruct _text; - public TextStruct Text - { - get { return _text; } - set - { - _text = value; - OSSL.llSetText(_text.Text, _text.color, _text.alpha); - } - } - - [Serializable] - public struct TextStruct - { - public string Text; - public LSL_Types.Vector3 color; - public double alpha; - } - } - - [Serializable] - public class OSSLPrim_Position - { - private OSSLPrim prim; - private LSL_Types.Vector3 Position; - public OSSLPrim_Position(OSSLPrim _prim) - { - prim = _prim; - } - private void Load() - { - Position = prim.OSSL.llGetPos(); - } - private void Save() - { - if (Position.x < 0) - Position.x = 0; - if (Position.y < 0) - Position.y = 0; - if (Position.z < 0) - Position.z = 0; - if (Position.z > Constants.RegionHeight) - Position.z = Constants.RegionHeight; - prim.OSSL.llSetPos(Position); - } - - public double x - { - get - { - Load(); - return Position.x; - } - set - { - Load(); - Position.x = value; - Save(); - } - } - public double y - { - get - { - Load(); - return Position.y; - } - set - { - Load(); - Position.y = value; - Save(); - } - } - public double z - { - get - { - Load(); - return Position.z; - } - set - { - Load(); - Position.z = value; - Save(); - } - } - } - - [Serializable] - public class OSSLPrim_Rotation - { - private OSSLPrim prim; - private LSL_Types.Quaternion Rotation; - public OSSLPrim_Rotation(OSSLPrim _prim) - { - prim = _prim; - } - private void Load() - { - Rotation = prim.OSSL.llGetRot(); - } - private void Save() - { - prim.OSSL.llSetRot(Rotation); - } - - public double x - { - get - { - Load(); - return Rotation.x; - } - set - { - Load(); - Rotation.x = value; - Save(); - } - } - public double y - { - get - { - Load(); - return Rotation.y; - } - set - { - Load(); - Rotation.y = value; - Save(); - } - } - public double z - { - get - { - Load(); - return Rotation.z; - } - set - { - Load(); - Rotation.z = value; - Save(); - } - } - public double s - { - get - { - Load(); - return Rotation.s; - } - set - { - Load(); - Rotation.s = value; - Save(); - } - } - } - */ - } } diff --git a/OpenSim/Region/ScriptEngine/Shared/LSL_Types.cs b/OpenSim/Region/ScriptEngine/Shared/LSL_Types.cs index d3f2119659..cb0054a448 100644 --- a/OpenSim/Region/ScriptEngine/Shared/LSL_Types.cs +++ b/OpenSim/Region/ScriptEngine/Shared/LSL_Types.cs @@ -1895,6 +1895,7 @@ namespace OpenSim.Region.ScriptEngine.Shared } #endregion + public static readonly key NullKey = new("00000000-0000-0000-0000-000000000000"); } [Serializable] @@ -2059,7 +2060,9 @@ namespace OpenSim.Region.ScriptEngine.Shared #endregion - public static readonly LSLString Empty = new (string.Empty); + public static readonly LSLString Empty = new(string.Empty); + public static readonly LSLString NullKey = new("00000000-0000-0000-0000-000000000000"); + } [Serializable] diff --git a/bin/config-include/osslDefaultEnable.ini b/bin/config-include/osslDefaultEnable.ini index 3ecf3c5e52..bac98335d3 100644 --- a/bin/config-include/osslDefaultEnable.ini +++ b/bin/config-include/osslDefaultEnable.ini @@ -110,7 +110,6 @@ Allow_osSetPrimFloatOnWater = true Allow_osSetWindParam = ${OSSL|osslParcelOG}ESTATE_MANAGER,ESTATE_OWNER Allow_osTerrainFlush = ESTATE_MANAGER,ESTATE_OWNER - Allow_osUnixTimeToTimestamp = true ; ThreatLevel Low Allow_osAvatarName2Key = ${OSSL|osslParcelO}ESTATE_MANAGER,ESTATE_OWNER