Aurora.ScriptEngine.AuroraDotNetEngine.APIs.LSL_Api.llSetStatus C# (CSharp) Method

llSetStatus() public method

public llSetStatus ( int status, int value ) : void
status int
value int
return void
        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);
            }
        }
LSL_Api