示例#1
0
        public Control(IKeyTableFactory tableFactory, IAsynchQueueFactory queueFactory, IPrimFactory primFactory, IModel model, IConfigSource config)
            : base(tableFactory, queueFactory)
        {
            ControlConfig = config.Configs[CONTROL_CONFIG];
            IConfig commonConfig = config.Configs["Common"];

            if (ControlConfig == null)
            {
                ControlConfig = config.Configs[0];
            }
            if (commonConfig == null)
            {
                commonConfig = config.Configs[0];
            }

            _toggleGlow           = ControlConfig.GetDouble("ToggleGlow", .15);
            _fade                 = ControlConfig.GetDouble("Fade", .8);
            _defaultRecordingName = ControlConfig.Get("DefaultSequenceName", "Sequence");
            _defaultTopologyName  = ControlConfig.Get("DefaultTopologyName", "Topology");
            _multiNumber          = ControlConfig.GetInt("MultiSendNumber", 10);
            _multiSendDelay       = ControlConfig.GetInt("MultiSendDelay", 750);
            _wait                 = commonConfig.GetInt("Wait", 50);

            _factory = primFactory;

            _record      = MakeRecord(ControlConfig, tableFactory, queueFactory, primFactory);
            _topology    = MakeTopology(ControlConfig);
            _permissions = MakePermissions(tableFactory, config);
            _state       = MakeState(tableFactory, config);
            _model       = Record.Make <IModel>(model, false);

            string tableName  = ControlConfig.Get(TABLE_KEY, null);
            int    tableCount = ControlConfig.GetInt(TABLE_COUNT, 1);

            _tables = new List <RoutingTable>();
            if (tableName != null && tableCount > 1)
            {
                for (int i = 1; i <= tableCount; i++)
                {
                    _tables.Add(new RoutingTable(Factory.MakeButton(tableName + i, Permissions), this, Factory));
                }
            }
            else if (tableName != null)
            {
                _tables.Add(new RoutingTable(Factory.MakeButton(tableName, Permissions), this, Factory));
            }
            _tables.Add(new RoutingTable(Factory.MakeButton(ControlConfig.Get(TABLE_HUD_KEY, "TableDisplayHUD"), Permissions), this, Factory));

            Logger.Info("Control started.");
        }
        public LockedPermissions(IPrimFactory factory, IConfigSource config, IPrim host, Control.Impl.Module.Control control)
        {
            _ownerID = UUID.Zero;
            _host = host;
            IConfig controlConfig = config.Configs["Control"];
            double fade = controlConfig.GetDouble("LockFade", control.Fade);
            double glow = controlConfig.GetDouble("LockGlow", control.ToggleGlow);
            _lockWait = controlConfig.GetInt("ControlsLockTimeout", 300000);
            _lockToggle = new Toggle(factory.MakeButton("Lock", new LockPermissions(this)), fade, glow);

            _lockToggle.OnToggledOn += (source, args) => SetCurrentOwner(args.ID, args.Name);
            _lockToggle.OnToggledOff += (source, args) => {
                _ownerID = UUID.Zero;
                _host.Say(_ownerName + " relinquished control of sandbox.");
                JM726.Lib.Static.Util.Wake(this);
            };
            _lockToggle.OnTouched += (source, args) => {
                if (_Locked && !args.AvatarID.Equals(_ownerID))
                    _host.Say("Unable to take control of sandbox. Sandbox is currently locked to '" + _ownerName + "'.");
            };
        }
示例#3
0
        public LockedPermissions(IPrimFactory factory, IConfigSource config, IPrim host, Control.Impl.Module.Control control)
        {
            _ownerID = UUID.Zero;
            _host    = host;
            IConfig controlConfig = config.Configs["Control"];
            double  fade          = controlConfig.GetDouble("LockFade", control.Fade);
            double  glow          = controlConfig.GetDouble("LockGlow", control.ToggleGlow);

            _lockWait   = controlConfig.GetInt("ControlsLockTimeout", 300000);
            _lockToggle = new Toggle(factory.MakeButton("Lock", new LockPermissions(this)), fade, glow);

            _lockToggle.OnToggledOn  += (source, args) => SetCurrentOwner(args.ID, args.Name);
            _lockToggle.OnToggledOff += (source, args) => {
                _ownerID = UUID.Zero;
                _host.Say(_ownerName + " relinquished control of sandbox.");
                JM726.Lib.Static.Util.Wake(this);
            };
            _lockToggle.OnTouched += (source, args) => {
                if (_Locked && !args.AvatarID.Equals(_ownerID))
                {
                    _host.Say("Unable to take control of sandbox. Sandbox is currently locked to '" + _ownerName + "'.");
                }
            };
        }