* Did a bit of estate work. Added some fields to EstateSettings.xml for estate managers.
* You can put UUIDs in those fields to give other users some ability to help manage a sim you own. * Also started decoding the EstateOwnerMessage packet convolutions.afrisby
							parent
							
								
									4b4ee98070
								
							
						
					
					
						commit
						3a83be1721
					
				| 
						 | 
				
			
			@ -487,6 +487,204 @@ namespace OpenSim.Framework
 | 
			
		|||
            }
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        private LLUUID m_estateManager0;
 | 
			
		||||
        private LLUUID m_estateManager1;
 | 
			
		||||
        private LLUUID m_estateManager2;
 | 
			
		||||
        private LLUUID m_estateManager3;
 | 
			
		||||
        private LLUUID m_estateManager4;
 | 
			
		||||
        private LLUUID m_estateManager5;
 | 
			
		||||
        private LLUUID m_estateManager6;
 | 
			
		||||
        private LLUUID m_estateManager7;
 | 
			
		||||
        private LLUUID m_estateManager8;
 | 
			
		||||
        private LLUUID m_estateManager9;
 | 
			
		||||
 | 
			
		||||
        public LLUUID[] estateManagers
 | 
			
		||||
        {
 | 
			
		||||
            get {
 | 
			
		||||
                // returns a condensed array of LLUUIDs
 | 
			
		||||
                return GetEstateManagers();
 | 
			
		||||
                
 | 
			
		||||
            }
 | 
			
		||||
            set 
 | 
			
		||||
            {
 | 
			
		||||
                // Sets a Condensed array of LLUUIDS
 | 
			
		||||
                int i = 0;
 | 
			
		||||
                for (i = 0; i < value.Length; i++)
 | 
			
		||||
                {
 | 
			
		||||
                    switch (i)
 | 
			
		||||
                    {
 | 
			
		||||
                        case 0:
 | 
			
		||||
                            m_estateManager0 = value[i];
 | 
			
		||||
                            break;
 | 
			
		||||
                        case 1:
 | 
			
		||||
                            m_estateManager1 = value[i];
 | 
			
		||||
                            break;
 | 
			
		||||
                        case 2:
 | 
			
		||||
                            m_estateManager2 = value[i];
 | 
			
		||||
                            break;
 | 
			
		||||
                        case 3:
 | 
			
		||||
                            m_estateManager3 = value[i];
 | 
			
		||||
                            break;
 | 
			
		||||
                        case 4:
 | 
			
		||||
                            m_estateManager4 = value[i];
 | 
			
		||||
                            break;
 | 
			
		||||
                        case 5:
 | 
			
		||||
                            m_estateManager5 = value[i];
 | 
			
		||||
                            break;
 | 
			
		||||
                        case 6:
 | 
			
		||||
                            m_estateManager6 = value[i];
 | 
			
		||||
                            break;
 | 
			
		||||
                        case 7:
 | 
			
		||||
                            m_estateManager7 = value[i];
 | 
			
		||||
                            break;
 | 
			
		||||
                        case 8:
 | 
			
		||||
                            m_estateManager8 = value[i];
 | 
			
		||||
                            break;
 | 
			
		||||
                        case 9:
 | 
			
		||||
                            m_estateManager9 = value[i];
 | 
			
		||||
                            break;
 | 
			
		||||
                    }
 | 
			
		||||
 | 
			
		||||
                }
 | 
			
		||||
                // Clear the rest of them..   as they're no longer valid
 | 
			
		||||
                for (int j = i; j < 10; j++)
 | 
			
		||||
                {
 | 
			
		||||
                    switch (i)
 | 
			
		||||
                    {
 | 
			
		||||
                        case 0:
 | 
			
		||||
                            m_estateManager0 = LLUUID.Zero;
 | 
			
		||||
                            break;
 | 
			
		||||
                        case 1:
 | 
			
		||||
                            m_estateManager1 = LLUUID.Zero;
 | 
			
		||||
                            break;
 | 
			
		||||
                        case 2:
 | 
			
		||||
                            m_estateManager2 = LLUUID.Zero;
 | 
			
		||||
                            break;
 | 
			
		||||
                        case 3:
 | 
			
		||||
                            m_estateManager3 = LLUUID.Zero;
 | 
			
		||||
                            break;
 | 
			
		||||
                        case 4:
 | 
			
		||||
                            m_estateManager4 = LLUUID.Zero;
 | 
			
		||||
                            break;
 | 
			
		||||
                        case 5:
 | 
			
		||||
                            m_estateManager5 = LLUUID.Zero;
 | 
			
		||||
                            break;
 | 
			
		||||
                        case 6:
 | 
			
		||||
                            m_estateManager6 = LLUUID.Zero;
 | 
			
		||||
                            break;
 | 
			
		||||
                        case 7:
 | 
			
		||||
                            m_estateManager7 = LLUUID.Zero;
 | 
			
		||||
                            break;
 | 
			
		||||
                        case 8:
 | 
			
		||||
                            m_estateManager8 = LLUUID.Zero;
 | 
			
		||||
                            break;
 | 
			
		||||
                        case 9:
 | 
			
		||||
                            m_estateManager9 = LLUUID.Zero;
 | 
			
		||||
                            break;
 | 
			
		||||
                    }
 | 
			
		||||
                }
 | 
			
		||||
                for (i = 0; i < 10; i++)
 | 
			
		||||
                {
 | 
			
		||||
                   // Writes out the Estate managers to the XML file.
 | 
			
		||||
                   configMember.forceSetConfigurationOption("estate_manager_" + i, (GetEstateManagerAtPos(i)).ToString());
 | 
			
		||||
 | 
			
		||||
                }
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        
 | 
			
		||||
 | 
			
		||||
        #region EstateManager Get Methods to sort out skipped spots in the XML (suser error)
 | 
			
		||||
 | 
			
		||||
        private LLUUID GetEstateManagerAtPos(int pos)
 | 
			
		||||
        {
 | 
			
		||||
            // This is a helper for writing them out to the xml file
 | 
			
		||||
            switch (pos)
 | 
			
		||||
            {
 | 
			
		||||
                case 0:
 | 
			
		||||
                    return m_estateManager0;
 | 
			
		||||
                    
 | 
			
		||||
                case 1:
 | 
			
		||||
                    return m_estateManager1;
 | 
			
		||||
                    
 | 
			
		||||
                case 2:
 | 
			
		||||
                    return m_estateManager2;
 | 
			
		||||
                    
 | 
			
		||||
                case 3:
 | 
			
		||||
                    return m_estateManager3;
 | 
			
		||||
                    
 | 
			
		||||
                case 4:
 | 
			
		||||
                    return m_estateManager4;
 | 
			
		||||
                    
 | 
			
		||||
                case 5:
 | 
			
		||||
                    return m_estateManager5;
 | 
			
		||||
                    
 | 
			
		||||
                case 6:
 | 
			
		||||
                    return m_estateManager6;
 | 
			
		||||
                    
 | 
			
		||||
                case 7:
 | 
			
		||||
                    return m_estateManager7;
 | 
			
		||||
                    
 | 
			
		||||
                case 8:
 | 
			
		||||
                    return m_estateManager8;
 | 
			
		||||
                    
 | 
			
		||||
                case 9:
 | 
			
		||||
                    return m_estateManager9;
 | 
			
		||||
                    
 | 
			
		||||
                default:
 | 
			
		||||
                    return LLUUID.Zero;
 | 
			
		||||
                    
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
        private LLUUID[] GetEstateManagers()
 | 
			
		||||
        {
 | 
			
		||||
            int numEstateManagers = GetNumberOfEstateManagers();
 | 
			
		||||
            LLUUID[] rEstateManagers = new LLUUID[numEstateManagers];
 | 
			
		||||
 | 
			
		||||
            int pos = 0;
 | 
			
		||||
 | 
			
		||||
            for (int i = 0; i < numEstateManagers; i++)
 | 
			
		||||
            {
 | 
			
		||||
                pos = GetNextEstateManager(pos);
 | 
			
		||||
                
 | 
			
		||||
                rEstateManagers[i] = GetEstateManagerAtPos(pos);
 | 
			
		||||
         
 | 
			
		||||
            }
 | 
			
		||||
            return rEstateManagers;
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        private int GetNextEstateManager(int startpos)
 | 
			
		||||
        {
 | 
			
		||||
            // This is a utility function that skips over estate managers set to LLUUID.Zero
 | 
			
		||||
            int i = startpos;
 | 
			
		||||
            for (i=startpos;i<10;i++) 
 | 
			
		||||
            {
 | 
			
		||||
                if (GetEstateManagerAtPos(i) != LLUUID.Zero) return i;
 | 
			
		||||
            }
 | 
			
		||||
            return i;
 | 
			
		||||
 | 
			
		||||
        }
 | 
			
		||||
        private int GetNumberOfEstateManagers()
 | 
			
		||||
        {
 | 
			
		||||
            // This function returns the number of estate managers set
 | 
			
		||||
            // Regardless of whether there is a skipped spot
 | 
			
		||||
            int numEstateManagers = 0;
 | 
			
		||||
            if (m_estateManager0 != LLUUID.Zero) numEstateManagers++;
 | 
			
		||||
            if (m_estateManager1 != LLUUID.Zero) numEstateManagers++;
 | 
			
		||||
            if (m_estateManager2 != LLUUID.Zero) numEstateManagers++;
 | 
			
		||||
            if (m_estateManager3 != LLUUID.Zero) numEstateManagers++;
 | 
			
		||||
            if (m_estateManager4 != LLUUID.Zero) numEstateManagers++;
 | 
			
		||||
            if (m_estateManager5 != LLUUID.Zero) numEstateManagers++;
 | 
			
		||||
            if (m_estateManager6 != LLUUID.Zero) numEstateManagers++;
 | 
			
		||||
            if (m_estateManager7 != LLUUID.Zero) numEstateManagers++;
 | 
			
		||||
            if (m_estateManager8 != LLUUID.Zero) numEstateManagers++;
 | 
			
		||||
            if (m_estateManager9 != LLUUID.Zero) numEstateManagers++;
 | 
			
		||||
 | 
			
		||||
            return numEstateManagers;
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        #endregion
 | 
			
		||||
        
 | 
			
		||||
        private ConfigurationMember configMember;
 | 
			
		||||
 | 
			
		||||
        public EstateSettings()
 | 
			
		||||
| 
						 | 
				
			
			@ -582,6 +780,28 @@ namespace OpenSim.Framework
 | 
			
		|||
                                                "20.0", true);
 | 
			
		||||
            configMember.addConfigurationOption("terrain_image_id", ConfigurationOption.ConfigurationTypes.TYPE_LLUUID,
 | 
			
		||||
                                                "", "00000000-0000-0000-0000-000000000000", true);
 | 
			
		||||
 | 
			
		||||
            configMember.addConfigurationOption("estate_manager_0", ConfigurationOption.ConfigurationTypes.TYPE_LLUUID,
 | 
			
		||||
                                                "", "00000000-0000-0000-0000-000000000000", true);
 | 
			
		||||
            configMember.addConfigurationOption("estate_manager_1", ConfigurationOption.ConfigurationTypes.TYPE_LLUUID,
 | 
			
		||||
                                                "", "00000000-0000-0000-0000-000000000000", true);
 | 
			
		||||
            configMember.addConfigurationOption("estate_manager_2", ConfigurationOption.ConfigurationTypes.TYPE_LLUUID,
 | 
			
		||||
                                                "", "00000000-0000-0000-0000-000000000000", true);
 | 
			
		||||
            configMember.addConfigurationOption("estate_manager_3", ConfigurationOption.ConfigurationTypes.TYPE_LLUUID,
 | 
			
		||||
                                                "", "00000000-0000-0000-0000-000000000000", true);
 | 
			
		||||
            configMember.addConfigurationOption("estate_manager_4", ConfigurationOption.ConfigurationTypes.TYPE_LLUUID,
 | 
			
		||||
                                                "", "00000000-0000-0000-0000-000000000000", true);
 | 
			
		||||
            configMember.addConfigurationOption("estate_manager_5", ConfigurationOption.ConfigurationTypes.TYPE_LLUUID,
 | 
			
		||||
                                                "", "00000000-0000-0000-0000-000000000000", true);
 | 
			
		||||
            configMember.addConfigurationOption("estate_manager_6", ConfigurationOption.ConfigurationTypes.TYPE_LLUUID,
 | 
			
		||||
                                                "", "00000000-0000-0000-0000-000000000000", true);
 | 
			
		||||
            configMember.addConfigurationOption("estate_manager_7", ConfigurationOption.ConfigurationTypes.TYPE_LLUUID,
 | 
			
		||||
                                                "", "00000000-0000-0000-0000-000000000000", true);
 | 
			
		||||
            configMember.addConfigurationOption("estate_manager_8", ConfigurationOption.ConfigurationTypes.TYPE_LLUUID,
 | 
			
		||||
                                                "", "00000000-0000-0000-0000-000000000000", true);
 | 
			
		||||
            configMember.addConfigurationOption("estate_manager_9", ConfigurationOption.ConfigurationTypes.TYPE_LLUUID,
 | 
			
		||||
                                                "", "00000000-0000-0000-0000-000000000000", true);
 | 
			
		||||
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        public bool handleIncomingConfiguration(string configuration_key, object configuration_result)
 | 
			
		||||
| 
						 | 
				
			
			@ -703,6 +923,38 @@ namespace OpenSim.Framework
 | 
			
		|||
                case "terrain_image_id":
 | 
			
		||||
                    m_terrainImageID = (LLUUID) configuration_result;
 | 
			
		||||
                    break;
 | 
			
		||||
 | 
			
		||||
                case "estate_manager_0":
 | 
			
		||||
                    m_estateManager0 = (LLUUID)configuration_result;
 | 
			
		||||
                    break;
 | 
			
		||||
                case "estate_manager_1":
 | 
			
		||||
                    m_estateManager1 = (LLUUID)configuration_result;
 | 
			
		||||
                    break;
 | 
			
		||||
                case "estate_manager_2":
 | 
			
		||||
                    m_estateManager2 = (LLUUID)configuration_result;
 | 
			
		||||
                    break;
 | 
			
		||||
                case "estate_manager_3":
 | 
			
		||||
                    m_estateManager3 = (LLUUID)configuration_result;
 | 
			
		||||
                    break;
 | 
			
		||||
                case "estate_manager_4":
 | 
			
		||||
                    m_estateManager4 = (LLUUID)configuration_result;
 | 
			
		||||
                    break;
 | 
			
		||||
                case "estate_manager_5":
 | 
			
		||||
                    m_estateManager5 = (LLUUID)configuration_result;
 | 
			
		||||
                    break;
 | 
			
		||||
                case "estate_manager_6":
 | 
			
		||||
                    m_estateManager6 = (LLUUID)configuration_result;
 | 
			
		||||
                    break;
 | 
			
		||||
                case "estate_manager_7":
 | 
			
		||||
                    m_estateManager7 = (LLUUID)configuration_result;
 | 
			
		||||
                    break;
 | 
			
		||||
                case "estate_manager_8":
 | 
			
		||||
                    m_estateManager8 = (LLUUID)configuration_result;
 | 
			
		||||
                    break;
 | 
			
		||||
                case "estate_manager_9":
 | 
			
		||||
                    m_estateManager9 = (LLUUID)configuration_result;
 | 
			
		||||
                    break;
 | 
			
		||||
                
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            return true;
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -44,6 +44,15 @@ namespace OpenSim.Region.Environment
 | 
			
		|||
        private Scene m_scene;
 | 
			
		||||
        private RegionInfo m_regInfo;
 | 
			
		||||
 | 
			
		||||
        public enum EstateAccessCodex : uint
 | 
			
		||||
        {
 | 
			
		||||
            AccessOptions = 17, 
 | 
			
		||||
            AllowedGroups = 18,
 | 
			
		||||
            EstateBans = 20,
 | 
			
		||||
            EstateManagers = 24
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
        public EstateManager(Scene scene, RegionInfo reginfo)
 | 
			
		||||
        {
 | 
			
		||||
            m_scene = scene;
 | 
			
		||||
| 
						 | 
				
			
			@ -146,7 +155,13 @@ namespace OpenSim.Region.Environment
 | 
			
		|||
            switch (Helpers.FieldToUTF8String(packet.MethodData.Method))
 | 
			
		||||
            {
 | 
			
		||||
                case "getinfo":
 | 
			
		||||
                    
 | 
			
		||||
                    
 | 
			
		||||
                    sendRegionInfoPacketToAll();
 | 
			
		||||
                    if (m_scene.PermissionsMngr.GenericEstatePermission(remote_client.AgentId))
 | 
			
		||||
                    {
 | 
			
		||||
                        sendDetailedEstateData(remote_client, packet);
 | 
			
		||||
                    }
 | 
			
		||||
                    break;
 | 
			
		||||
                case "setregioninfo":
 | 
			
		||||
                    if (m_scene.PermissionsMngr.CanEditEstateTerrain(remote_client.AgentId))
 | 
			
		||||
| 
						 | 
				
			
			@ -187,6 +202,69 @@ namespace OpenSim.Region.Environment
 | 
			
		|||
                    MainLog.Instance.Error("EstateOwnerMessage: Unknown method requested\n" + packet.ToString());
 | 
			
		||||
                    break;
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        private void sendDetailedEstateData(IClientAPI remote_client, EstateOwnerMessagePacket packet)
 | 
			
		||||
        {
 | 
			
		||||
            
 | 
			
		||||
            LLUUID invoice = packet.MethodData.Invoice;
 | 
			
		||||
            packet.AgentData.TransactionID = LLUUID.Random();
 | 
			
		||||
            packet.MethodData.Method = Helpers.StringToField("estateupdateinfo");
 | 
			
		||||
            EstateOwnerMessagePacket.ParamListBlock[] returnblock = new EstateOwnerMessagePacket.ParamListBlock[9];
 | 
			
		||||
 | 
			
		||||
            for (int i = 0; i < 9; i++)
 | 
			
		||||
            {
 | 
			
		||||
                returnblock[i] = new EstateOwnerMessagePacket.ParamListBlock();
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            //Sending Estate Settings
 | 
			
		||||
            returnblock[0].Parameter = Helpers.StringToField(m_scene.RegionInfo.MasterAvatarFirstName + m_scene.RegionInfo.MasterAvatarLastName);
 | 
			
		||||
            returnblock[1].Parameter = Helpers.StringToField(m_scene.RegionInfo.MasterAvatarAssignedUUID.ToString());
 | 
			
		||||
            returnblock[2].Parameter = Helpers.IntToBytes((int)m_scene.RegionInfo.EstateSettings.estateID);
 | 
			
		||||
            returnblock[3].Parameter = Helpers.IntToBytes(269516800);
 | 
			
		||||
            returnblock[4].Parameter = Helpers.IntToBytes(0);
 | 
			
		||||
            returnblock[5].Parameter = Helpers.IntToBytes(1);
 | 
			
		||||
            returnblock[6].Parameter = Helpers.StringToField(LLUUID.Random().ToString());
 | 
			
		||||
            returnblock[7].Parameter = Helpers.IntToBytes(1160895077);
 | 
			
		||||
            returnblock[8].Parameter = Helpers.IntToBytes(1);
 | 
			
		||||
            packet.ParamList = returnblock;
 | 
			
		||||
            remote_client.OutPacket(packet, ThrottleOutPacketType.Task);
 | 
			
		||||
 | 
			
		||||
            // Stuck here at the moment  The client sends a bunch of getinfo methods that need to be decoded the hard way
 | 
			
		||||
            //Sending Estate Managers
 | 
			
		||||
            packet = new EstateOwnerMessagePacket();
 | 
			
		||||
            packet.AgentData.TransactionID = LLUUID.Random();
 | 
			
		||||
            packet.AgentData.AgentID=remote_client.AgentId;
 | 
			
		||||
            packet.AgentData.SessionID=remote_client.SessionId;
 | 
			
		||||
            packet.MethodData.Invoice = invoice;
 | 
			
		||||
            packet.MethodData.Method = Helpers.StringToField("setaccess");
 | 
			
		||||
 | 
			
		||||
            LLUUID[] EstateManagers = m_scene.RegionInfo.EstateSettings.estateManagers;
 | 
			
		||||
            
 | 
			
		||||
            returnblock = new EstateOwnerMessagePacket.ParamListBlock[6+EstateManagers.Length];
 | 
			
		||||
            
 | 
			
		||||
            for (int i = 0; i < (6 + EstateManagers.Length); i++)
 | 
			
		||||
            {
 | 
			
		||||
                returnblock[i] = new EstateOwnerMessagePacket.ParamListBlock();
 | 
			
		||||
            }
 | 
			
		||||
            int j=0;
 | 
			
		||||
            returnblock[j].Parameter = Helpers.IntToBytes((int)m_scene.RegionInfo.EstateSettings.estateID); j++;
 | 
			
		||||
            returnblock[j].Parameter = Helpers.IntToBytes((int)EstateAccessCodex.EstateManagers); j++;
 | 
			
		||||
            returnblock[j].Parameter = Helpers.IntToBytes(0); j++;
 | 
			
		||||
            returnblock[j].Parameter = Helpers.IntToBytes(0); j++;
 | 
			
		||||
            returnblock[j].Parameter = Helpers.IntToBytes(0); j++;
 | 
			
		||||
            returnblock[j].Parameter = Helpers.IntToBytes(EstateManagers.Length); j++;
 | 
			
		||||
            for (int i = 0; i < EstateManagers.Length; i++)
 | 
			
		||||
            {
 | 
			
		||||
                returnblock[j].Parameter = Helpers.StringToField(EstateManagers[i].ToString()); j++;
 | 
			
		||||
            }
 | 
			
		||||
            packet.ParamList = returnblock;
 | 
			
		||||
            remote_client.OutPacket(packet, ThrottleOutPacketType.Task);
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
            
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        private void estateSetRegionInfoHandler(EstateOwnerMessagePacket packet)
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -83,13 +83,20 @@ namespace OpenSim.Region.Environment
 | 
			
		|||
            return m_scene.RegionInfo.MasterAvatarAssignedUUID == user;
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        protected virtual bool IsEstateManager(LLUUID user)
 | 
			
		||||
        public virtual bool IsEstateManager(LLUUID user)
 | 
			
		||||
        {
 | 
			
		||||
            if (m_bypassPermissions)
 | 
			
		||||
            {
 | 
			
		||||
                return true;
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            LLUUID[] estatemanagers = m_scene.RegionInfo.EstateSettings.estateManagers;
 | 
			
		||||
            for (int i = 0; i < estatemanagers.Length; i++)
 | 
			
		||||
            {
 | 
			
		||||
                if (estatemanagers[i] == user)
 | 
			
		||||
                    return true;
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            return false;
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -414,7 +421,7 @@ namespace OpenSim.Region.Environment
 | 
			
		|||
 | 
			
		||||
        #region Estate Permissions
 | 
			
		||||
 | 
			
		||||
        protected virtual bool GenericEstatePermission(LLUUID user)
 | 
			
		||||
        public virtual bool GenericEstatePermission(LLUUID user)
 | 
			
		||||
        {
 | 
			
		||||
            // Default: deny
 | 
			
		||||
            bool permission = false;
 | 
			
		||||
| 
						 | 
				
			
			@ -439,8 +446,8 @@ namespace OpenSim.Region.Environment
 | 
			
		|||
        {
 | 
			
		||||
            // Since this is potentially going on a grid...    
 | 
			
		||||
 | 
			
		||||
            //return GenericEstatePermission(AgentId);
 | 
			
		||||
            return m_scene.RegionInfo.MasterAvatarAssignedUUID == user;
 | 
			
		||||
            return GenericEstatePermission(user);
 | 
			
		||||
            //return m_scene.RegionInfo.MasterAvatarAssignedUUID == user;
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        #endregion
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -320,7 +320,14 @@ namespace OpenSim.Region.Environment.Scenes
 | 
			
		|||
 | 
			
		||||
            // TODO: m_animations and m_animationSeqs should always be of the same length.
 | 
			
		||||
            // Move them into an object to (hopefully) avoid threading issues.
 | 
			
		||||
            m_animations.Add(Animations.AnimsLLUUID["STAND"]);
 | 
			
		||||
            try
 | 
			
		||||
            {
 | 
			
		||||
                m_animations.Add(Animations.AnimsLLUUID["STAND"]);
 | 
			
		||||
            }
 | 
			
		||||
            catch (KeyNotFoundException)
 | 
			
		||||
            {
 | 
			
		||||
                MainLog.Instance.Warn("AVATAR", "KeyNotFound Exception playing avatar stand animation");
 | 
			
		||||
            }
 | 
			
		||||
            m_animationSeqs.Add(1);
 | 
			
		||||
 | 
			
		||||
            RegisterToEvents();
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in New Issue