mirror of
https://github.com/opensim/opensim.git
synced 2026-05-15 03:15:41 +08:00
add llIsLinkGLTFMaterial
This commit is contained in:
@@ -13884,7 +13884,7 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api
|
||||
|
||||
if ((m_item.PermsMask & ScriptBaseClass.PERMISSION_TRACK_CAMERA) == 0)
|
||||
{
|
||||
Error("llGetCameraAspect", "No permissions to track the camera");
|
||||
Error("llGetCameraFOV", "No permissions to track the camera");
|
||||
return LSL_Float.Zero;
|
||||
}
|
||||
|
||||
@@ -19561,6 +19561,54 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api
|
||||
|
||||
return asset.ToString();
|
||||
}
|
||||
|
||||
public LSL_Integer llIsLinkGLTFMaterial(LSL_Integer linknum, LSL_Integer lface)
|
||||
{
|
||||
SceneObjectPart part;
|
||||
if (linknum == ScriptBaseClass.LINK_ROOT)
|
||||
part = m_host.ParentGroup.RootPart;
|
||||
else if (linknum == ScriptBaseClass.LINK_THIS)
|
||||
part = m_host;
|
||||
else
|
||||
part = m_host.ParentGroup.GetLinkNumPart(linknum);
|
||||
if(part is null)
|
||||
return 0;
|
||||
|
||||
if (part.Shape.RenderMaterials is null ||
|
||||
part.Shape.RenderMaterials.entries is null ||
|
||||
part.Shape.RenderMaterials.entries.Length == 0)
|
||||
return 0;
|
||||
|
||||
int face = lface.value;
|
||||
if (face == ScriptBaseClass.ALL_SIDES)
|
||||
{
|
||||
int nsides = GetNumberOfSides(part);
|
||||
bool[] pbr = new bool[nsides];
|
||||
foreach(Primitive.RenderMaterials.RenderMaterialEntry re in part.Shape.RenderMaterials.entries)
|
||||
{
|
||||
if(re.te_index > 0 && re.te_index < pbr.Length && re.id.IsNotZero())
|
||||
pbr[re.te_index] = true;
|
||||
}
|
||||
foreach(bool b in pbr)
|
||||
{
|
||||
if (!b)
|
||||
return 0;
|
||||
}
|
||||
return 1;
|
||||
}
|
||||
|
||||
if (face < 0)
|
||||
return 0;
|
||||
else if (face >= GetNumberOfSides(part))
|
||||
return 0;
|
||||
foreach(Primitive.RenderMaterials.RenderMaterialEntry re in part.Shape.RenderMaterials.entries)
|
||||
{
|
||||
if(re.te_index == face)
|
||||
return re.id.IsZero() ? 0 : 1;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
static string HMAC_SHA224(string key, string message)
|
||||
{
|
||||
const int blockSize = 64;
|
||||
|
||||
@@ -535,5 +535,6 @@ namespace OpenSim.Region.ScriptEngine.Shared.Api.Interfaces
|
||||
LSL_String llHMAC(LSL_String private_key, LSL_String message, LSL_String algo);
|
||||
LSL_String llComputeHash(LSL_String message, LSL_String algo);
|
||||
LSL_String llGetRenderMaterial(LSL_Integer face);
|
||||
LSL_Integer llIsLinkGLTFMaterial(LSL_Integer linknum, LSL_Integer face);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -2887,5 +2887,12 @@ namespace OpenSim.Region.ScriptEngine.Shared.ScriptBase
|
||||
{
|
||||
return m_LSL_Functions.llGetRenderMaterial(face);
|
||||
}
|
||||
|
||||
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
||||
public LSL_Integer llIsLinkGLTFMaterial(LSL_Integer linknum, LSL_Integer face)
|
||||
{
|
||||
return m_LSL_Functions.llIsLinkGLTFMaterial(linknum, face);
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user