diff options
Diffstat (limited to 'OpenSim/Region/Environment/Modules')
-rw-r--r-- | OpenSim/Region/Environment/Modules/FriendsModule.cs | 54 |
1 files changed, 53 insertions, 1 deletions
diff --git a/OpenSim/Region/Environment/Modules/FriendsModule.cs b/OpenSim/Region/Environment/Modules/FriendsModule.cs index 4081a75..e1d3e2a 100644 --- a/OpenSim/Region/Environment/Modules/FriendsModule.cs +++ b/OpenSim/Region/Environment/Modules/FriendsModule.cs | |||
@@ -45,6 +45,8 @@ namespace OpenSim.Region.Environment.Modules | |||
45 | 45 | ||
46 | private List<Scene> m_scene = new List<Scene>(); | 46 | private List<Scene> m_scene = new List<Scene>(); |
47 | 47 | ||
48 | |||
49 | Dictionary<LLUUID, ulong> m_rootAgents = new Dictionary<LLUUID, ulong>(); | ||
48 | Dictionary<LLUUID, LLUUID> m_pendingFriendRequests = new Dictionary<LLUUID, LLUUID>(); | 50 | Dictionary<LLUUID, LLUUID> m_pendingFriendRequests = new Dictionary<LLUUID, LLUUID>(); |
49 | 51 | ||
50 | public void Initialise(Scene scene, IConfigSource config) | 52 | public void Initialise(Scene scene, IConfigSource config) |
@@ -62,6 +64,9 @@ namespace OpenSim.Region.Environment.Modules | |||
62 | scene.EventManager.OnNewClient += OnNewClient; | 64 | scene.EventManager.OnNewClient += OnNewClient; |
63 | scene.EventManager.OnGridInstantMessageToFriendsModule += OnGridInstantMessage; | 65 | scene.EventManager.OnGridInstantMessageToFriendsModule += OnGridInstantMessage; |
64 | scene.EventManager.OnAvatarEnteringNewParcel += AvatarEnteringParcel; | 66 | scene.EventManager.OnAvatarEnteringNewParcel += AvatarEnteringParcel; |
67 | scene.EventManager.OnMakeChildAgent += MakeChildAgent; | ||
68 | scene.EventManager.OnClientClosed += ClientLoggedOut; | ||
69 | |||
65 | 70 | ||
66 | 71 | ||
67 | } | 72 | } |
@@ -86,13 +91,60 @@ namespace OpenSim.Region.Environment.Modules | |||
86 | client.OnTerminateFriendship += OnTerminateFriendship; | 91 | client.OnTerminateFriendship += OnTerminateFriendship; |
87 | 92 | ||
88 | 93 | ||
94 | |||
89 | 95 | ||
90 | 96 | ||
91 | } | 97 | } |
92 | 98 | ||
99 | private void ClientLoggedOut(LLUUID AgentId) | ||
100 | { | ||
101 | lock (m_rootAgents) | ||
102 | { | ||
103 | if (m_rootAgents.ContainsKey(AgentId)) | ||
104 | { | ||
105 | m_rootAgents.Remove(AgentId); | ||
106 | m_log.Info("[FRIEND]: Removing " + AgentId + ". Agent logged out."); | ||
107 | } | ||
108 | } | ||
109 | } | ||
110 | |||
93 | private void AvatarEnteringParcel(ScenePresence avatar, int localLandID, LLUUID regionID) | 111 | private void AvatarEnteringParcel(ScenePresence avatar, int localLandID, LLUUID regionID) |
94 | { | 112 | { |
95 | int i = 0; | 113 | lock (m_rootAgents) |
114 | { | ||
115 | if (m_rootAgents.ContainsKey(avatar.UUID)) | ||
116 | { | ||
117 | if (avatar.RegionHandle != m_rootAgents[avatar.UUID]) | ||
118 | { | ||
119 | m_rootAgents[avatar.UUID] = avatar.RegionHandle; | ||
120 | m_log.Info("[FRIEND]: Claiming " + avatar.Firstname + " " + avatar.Lastname + " in region:" + avatar.RegionHandle + "."); | ||
121 | // Claim User! my user! Mine mine mine! | ||
122 | } | ||
123 | } | ||
124 | else | ||
125 | { | ||
126 | m_rootAgents.Add(avatar.UUID, avatar.RegionHandle); | ||
127 | m_log.Info("[FRIEND]: Claiming " + avatar.Firstname + " " + avatar.Lastname + " in region:" + avatar.RegionHandle + "."); | ||
128 | } | ||
129 | } | ||
130 | //m_log.Info("[FRIEND]: " + avatar.Name + " status:" + (!avatar.IsChildAgent).ToString()); | ||
131 | } | ||
132 | private void MakeChildAgent(ScenePresence avatar) | ||
133 | { | ||
134 | |||
135 | lock (m_rootAgents) | ||
136 | { | ||
137 | if (m_rootAgents.ContainsKey(avatar.UUID)) | ||
138 | { | ||
139 | if (m_rootAgents[avatar.UUID] == avatar.RegionHandle) | ||
140 | { | ||
141 | m_rootAgents.Remove(avatar.UUID); | ||
142 | m_log.Info("[FRIEND]: Removing " + avatar.Firstname + " " + avatar.Lastname + " as a root agent"); | ||
143 | } | ||
144 | |||
145 | } | ||
146 | } | ||
147 | |||
96 | } | 148 | } |
97 | 149 | ||
98 | private void OnInstantMessage(IClientAPI client,LLUUID fromAgentID, | 150 | private void OnInstantMessage(IClientAPI client,LLUUID fromAgentID, |