mirror of
https://github.com/opensim/opensim.git
synced 2026-08-04 16:22:50 +08:00
Merge branch 'opensim:master' into master
This commit is contained in:
@@ -13339,6 +13339,45 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api
|
||||
return LSL_Rotation.Identity;
|
||||
}
|
||||
|
||||
public LSL_Float llGetCameraFOV()
|
||||
{
|
||||
if (m_item.PermsGranter.IsZero())
|
||||
return LSL_Float.Zero;
|
||||
|
||||
if ((m_item.PermsMask & ScriptBaseClass.PERMISSION_TRACK_CAMERA) == 0)
|
||||
{
|
||||
Error("llGetCameraAspect", "No permissions to track the camera");
|
||||
return LSL_Float.Zero;
|
||||
}
|
||||
|
||||
ScenePresence presence = World.GetScenePresence(m_item.PermsGranter);
|
||||
if (presence is not null && presence.ControllingClient is not null)
|
||||
{
|
||||
return new LSL_Float(presence.ControllingClient.FOV);
|
||||
}
|
||||
return 1.4f;
|
||||
}
|
||||
|
||||
public LSL_Float llGetCameraAspect()
|
||||
{
|
||||
if (m_item.PermsGranter.IsZero())
|
||||
return 1f;
|
||||
|
||||
if ((m_item.PermsMask & ScriptBaseClass.PERMISSION_TRACK_CAMERA) == 0)
|
||||
{
|
||||
Error("llGetCameraAspect", "No permissions to track the camera");
|
||||
return 1f;
|
||||
}
|
||||
|
||||
ScenePresence presence = World.GetScenePresence(m_item.PermsGranter);
|
||||
if (presence is not null && presence.ControllingClient is not null)
|
||||
{
|
||||
int h = presence.ControllingClient.viewHeight;
|
||||
return new LSL_Float(h > 0 ? (float)presence.ControllingClient.viewWidth / h : 1.0f);
|
||||
}
|
||||
return 1f;
|
||||
}
|
||||
|
||||
public void llSetPrimURL(string url)
|
||||
{
|
||||
Deprecated("llSetPrimURL", "Use llSetPrimMediaParams instead");
|
||||
|
||||
@@ -129,6 +129,8 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api.Interfaces
|
||||
LSL_Integer llGetAttached();
|
||||
LSL_List llGetAttachedList(LSL_Key id);
|
||||
LSL_List llGetBoundingBox(string obj);
|
||||
LSL_Float llGetCameraAspect();
|
||||
LSL_Float llGetCameraFOV();
|
||||
LSL_Vector llGetCameraPos();
|
||||
LSL_Rotation llGetCameraRot();
|
||||
LSL_Vector llGetCenterOfMass();
|
||||
|
||||
@@ -512,6 +512,18 @@ namespace OpenSim.Region.ScriptEngine.Shared.ScriptBase
|
||||
return m_LSL_Functions.llGetBoundingBox(obj);
|
||||
}
|
||||
|
||||
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
||||
public LSL_Float llGetCameraAspect()
|
||||
{
|
||||
return m_LSL_Functions.llGetCameraAspect();
|
||||
}
|
||||
|
||||
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
||||
public LSL_Float llGetCameraFOV()
|
||||
{
|
||||
return m_LSL_Functions.llGetCameraFOV();
|
||||
}
|
||||
|
||||
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
||||
public LSL_Vector llGetCameraPos()
|
||||
{
|
||||
|
||||
@@ -1398,6 +1398,10 @@ namespace OpenSim.Region.ScriptEngine.Shared
|
||||
LSLString r = (LSLString)right;
|
||||
ret = string.CompareOrdinal(lsl.m_string, r.m_string);
|
||||
}
|
||||
else if (left is string ssl)
|
||||
{
|
||||
ret = string.CompareOrdinal(ssl, right as string);
|
||||
}
|
||||
else if (left is LSLFloat fl)
|
||||
{
|
||||
LSLFloat r = (LSLFloat)right;
|
||||
@@ -1418,10 +1422,7 @@ namespace OpenSim.Region.ScriptEngine.Shared
|
||||
return 0;
|
||||
}
|
||||
|
||||
if (ascending)
|
||||
return ret;
|
||||
|
||||
return -ret;
|
||||
return ascending ? ret : -ret;
|
||||
}
|
||||
|
||||
class HomogeneousComparer : IComparer
|
||||
@@ -1449,6 +1450,10 @@ namespace OpenSim.Region.ScriptEngine.Shared
|
||||
LSLString r = (LSLString)right;
|
||||
ret = string.CompareOrdinal(lsl.m_string, r.m_string);
|
||||
}
|
||||
else if (left is string ssl)
|
||||
{
|
||||
ret = string.CompareOrdinal(ssl, right as string);
|
||||
}
|
||||
else if (left is LSLFloat fl)
|
||||
{
|
||||
LSLFloat r = (LSLFloat)right;
|
||||
@@ -1491,6 +1496,10 @@ namespace OpenSim.Region.ScriptEngine.Shared
|
||||
LSLString r = (LSLString)right;
|
||||
return string.CompareOrdinal(lsl.m_string, r.m_string) > 0;
|
||||
}
|
||||
else if (left is string ssl)
|
||||
{
|
||||
return string.CompareOrdinal(ssl, right as string) > 0;
|
||||
}
|
||||
if (left is LSLFloat lf)
|
||||
{
|
||||
LSLFloat r = (LSLFloat)right;
|
||||
@@ -1524,6 +1533,11 @@ namespace OpenSim.Region.ScriptEngine.Shared
|
||||
LSLString r = (LSLString)right;
|
||||
return string.CompareOrdinal(lsl.m_string, r.m_string) < 0;
|
||||
}
|
||||
else if (left is string ssl)
|
||||
{
|
||||
string sr = right as string;
|
||||
return string.CompareOrdinal(ssl, sr) < 0;
|
||||
}
|
||||
if (left is LSLFloat lf)
|
||||
{
|
||||
LSLFloat r = (LSLFloat)right;
|
||||
|
||||
@@ -97,7 +97,7 @@ namespace OpenSim.Region.ScriptEngine.Yengine
|
||||
{
|
||||
Name = "CustomDelegateAssembly"
|
||||
};
|
||||
AssemblyBuilder assemblyBuilder = AssemblyBuilder.DefineDynamicAssembly(assembly, AssemblyBuilderAccess.Run);
|
||||
AssemblyBuilder assemblyBuilder = AssemblyBuilder.DefineDynamicAssembly(assembly, AssemblyBuilderAccess.RunAndCollect);
|
||||
delegateModuleBuilder = assemblyBuilder.DefineDynamicModule("CustomDelegateModule");
|
||||
}
|
||||
|
||||
|
||||
@@ -163,8 +163,7 @@ namespace OpenSim.Region.ScriptEngine.Yengine
|
||||
}
|
||||
finally
|
||||
{
|
||||
if(objectTokens != null)
|
||||
objectTokens.Close();
|
||||
objectTokens?.Close();
|
||||
}
|
||||
|
||||
// We enter all script event handler methods in the ScriptEventHandler table.
|
||||
|
||||
@@ -64,11 +64,8 @@ namespace OpenSim.Region.ScriptEngine.Yengine
|
||||
private static readonly Dictionary<string, Type> string2Type = PopulateS2T();
|
||||
private static readonly Dictionary<Type, string> type2String = PopulateT2S();
|
||||
|
||||
private static readonly MethodInfo monoGetCurrentOffset = typeof(ILGenerator).GetMethod("Mono_GetCurrentOffset",
|
||||
BindingFlags.Static | BindingFlags.Public | BindingFlags.NonPublic, null,
|
||||
new Type[] { typeof(ILGenerator) }, null);
|
||||
|
||||
private static readonly OpCode[] opCodesLdcI4M1P8 = new OpCode[] {
|
||||
private static readonly OpCode[] opCodesLdcI4M1P8 = new OpCode[]
|
||||
{
|
||||
OpCodes.Ldc_I4_M1, OpCodes.Ldc_I4_0, OpCodes.Ldc_I4_1, OpCodes.Ldc_I4_2, OpCodes.Ldc_I4_3,
|
||||
OpCodes.Ldc_I4_4, OpCodes.Ldc_I4_5, OpCodes.Ldc_I4_6, OpCodes.Ldc_I4_7, OpCodes.Ldc_I4_8
|
||||
};
|
||||
@@ -394,11 +391,7 @@ namespace OpenSim.Region.ScriptEngine.Yengine
|
||||
while(true)
|
||||
{
|
||||
// Get IL instruction offset at beginning of instruction.
|
||||
offset = 0;
|
||||
if((ilGen != null) && (monoGetCurrentOffset != null))
|
||||
{
|
||||
offset = (int)monoGetCurrentOffset.Invoke(null, ilGenArg);
|
||||
}
|
||||
offset = ilGen is null ? 0 : ilGen.ILOffset;
|
||||
|
||||
// Read and decode next internal format code from input file (.xmrobj file).
|
||||
ScriptObjWriterCode code = (ScriptObjWriterCode)objReader.ReadByte();
|
||||
|
||||
Reference in New Issue
Block a user