public void llSetStatus(int status, int value)
{
if (!ScriptProtection.CheckThreatLevel(ThreatLevel.None, "LSL", m_host, "LSL", m_itemID)) return;
int statusrotationaxis = 0;
if ((status & ScriptBaseClass.STATUS_PHYSICS) == ScriptBaseClass.STATUS_PHYSICS)
{
if (value != 0)
{
ISceneEntity group = m_host.ParentEntity;
if (group == null)
return;
#if (!ISWIN)
bool allow = true;
foreach (ISceneChildEntity part in group.ChildrenEntities())
{
IOpenRegionSettingsModule WSModule = group.Scene.RequestModuleInterface<IOpenRegionSettingsModule>();
if (WSModule != null && WSModule.MaximumPhysPrimScale != -1)
{
Vector3 tmp = part.Scale;
if (tmp.X > WSModule.MaximumPhysPrimScale ||
tmp.Y > WSModule.MaximumPhysPrimScale ||
tmp.Z > WSModule.MaximumPhysPrimScale)
{
allow = false;
break;
}
}
}
#else
bool allow = !(from part in @group.ChildrenEntities()
let WSModule = @group.Scene.RequestModuleInterface<IOpenRegionSettingsModule>()
where WSModule != null && WSModule.MaximumPhysPrimScale != -1
let tmp = part.Scale
where
tmp.X > WSModule.MaximumPhysPrimScale || tmp.Y > WSModule.MaximumPhysPrimScale ||
tmp.Z > WSModule.MaximumPhysPrimScale
select WSModule).Any();
#endif
if (!allow)
return;
((SceneObjectGroup)m_host.ParentEntity).ScriptSetPhysicsStatus(true);
}
else
{
((SceneObjectGroup)m_host.ParentEntity).ScriptSetPhysicsStatus(false);
}
}
if ((status & ScriptBaseClass.STATUS_PHANTOM) == ScriptBaseClass.STATUS_PHANTOM)
{
m_host.ScriptSetPhantomStatus(value != 0);
}
if ((status & ScriptBaseClass.STATUS_CAST_SHADOWS) == ScriptBaseClass.STATUS_CAST_SHADOWS)
{
m_host.AddFlag(PrimFlags.CastShadows);
}
if ((status & ScriptBaseClass.STATUS_ROTATE_X) == ScriptBaseClass.STATUS_ROTATE_X)
{
statusrotationaxis |= ScriptBaseClass.STATUS_ROTATE_X;
}
if ((status & ScriptBaseClass.STATUS_ROTATE_Y) == ScriptBaseClass.STATUS_ROTATE_Y)
{
statusrotationaxis |= ScriptBaseClass.STATUS_ROTATE_Y;
}
if ((status & ScriptBaseClass.STATUS_ROTATE_Z) == ScriptBaseClass.STATUS_ROTATE_Z)
{
statusrotationaxis |= ScriptBaseClass.STATUS_ROTATE_Z;
}
if ((status & ScriptBaseClass.STATUS_BLOCK_GRAB) == ScriptBaseClass.STATUS_BLOCK_GRAB)
{
m_host.SetBlockGrab(value != 0, false);
}
if ((status & ScriptBaseClass.STATUS_BLOCK_GRAB_OBJECT) == ScriptBaseClass.STATUS_BLOCK_GRAB_OBJECT)
{
m_host.SetBlockGrab(value != 0, true);
}
if ((status & ScriptBaseClass.STATUS_DIE_AT_EDGE) == ScriptBaseClass.STATUS_DIE_AT_EDGE)
{
m_host.SetDieAtEdge(value != 0);
}
if ((status & ScriptBaseClass.STATUS_RETURN_AT_EDGE) == ScriptBaseClass.STATUS_RETURN_AT_EDGE)
{
m_host.SetReturnAtEdge(value != 0);
}
if ((status & ScriptBaseClass.STATUS_SANDBOX) == ScriptBaseClass.STATUS_SANDBOX)
{
m_host.SetStatusSandbox(value != 0);
}
if (statusrotationaxis != 0)
{
m_host.SetAxisRotation(statusrotationaxis, value);
}
}