public TouchButton(MRMPrimFactory factory, string name, IPermissions permissions)
        {
            _name = name;
            _factory = factory;
            _listeners = new List<EntityTouchedDelegate>();
            _permissions = permissions;

            factory.OnButtonRegistered += (id, registeredName) => {
                if (registeredName.Equals(name))
                    RegisterPrim(factory.GetIObject(id));
            };
            if (factory.ButtonPrims.ContainsKey(name)) {
                IEnumerable<UUID> objects = factory.ButtonPrims[Name].ToArray();
                foreach (var obj in objects.Select<UUID, IObject>(id => factory.GetIObject(id)))
                    RegisterPrim(obj);
            }
        }
        public TouchButton(MRMPrimFactory factory, string name, IPermissions permissions, params UUID[] ids)
        {
            _name = name;
            _factory = factory;
            _listeners = new List<EntityTouchedDelegate>();
            _permissions = permissions;

            foreach (var obj in ids.Select<UUID, IObject>(id => factory.GetIObject(id)))
                RegisterPrim(obj);
        }
        public TouchButton(MRMPrimFactory factory, string name, IPermissions permissions, params UUID[] ids)
        {
            _name        = name;
            _factory     = factory;
            _listeners   = new List <EntityTouchedDelegate>();
            _permissions = permissions;

            foreach (var obj in ids.Select <UUID, IObject>(id => factory.GetIObject(id)))
            {
                RegisterPrim(obj);
            }
        }
        public TouchButton(MRMPrimFactory factory, string name, IPermissions permissions)
        {
            _name        = name;
            _factory     = factory;
            _listeners   = new List <EntityTouchedDelegate>();
            _permissions = permissions;

            factory.OnButtonRegistered += (id, registeredName) => {
                if (registeredName.Equals(name))
                {
                    RegisterPrim(factory.GetIObject(id));
                }
            };
            if (factory.ButtonPrims.ContainsKey(name))
            {
                IEnumerable <UUID> objects = factory.ButtonPrims[Name].ToArray();
                foreach (var obj in objects.Select <UUID, IObject>(id => factory.GetIObject(id)))
                {
                    RegisterPrim(obj);
                }
            }
        }