diff options
When a user logs off , the server now tells the other clients to kill that avatar. (So no more half dead avatars messing up the landscape.)
Diffstat (limited to 'src/OpenSimClient.cs')
-rw-r--r-- | src/OpenSimClient.cs | 8 |
1 files changed, 8 insertions, 0 deletions
diff --git a/src/OpenSimClient.cs b/src/OpenSimClient.cs index eb190e9..50d8c78 100644 --- a/src/OpenSimClient.cs +++ b/src/OpenSimClient.cs | |||
@@ -178,6 +178,14 @@ namespace OpenSim | |||
178 | break; | 178 | break; |
179 | case PacketType.LogoutRequest: | 179 | case PacketType.LogoutRequest: |
180 | ServerConsole.MainConsole.Instance.WriteLine("OpenSimClient.cs:ProcessInPacket() - Got a logout request"); | 180 | ServerConsole.MainConsole.Instance.WriteLine("OpenSimClient.cs:ProcessInPacket() - Got a logout request"); |
181 | //tell all clients to kill our object | ||
182 | KillObjectPacket kill = new KillObjectPacket(); | ||
183 | kill.ObjectData = new KillObjectPacket.ObjectDataBlock[1]; | ||
184 | kill.ObjectData[0] = new KillObjectPacket.ObjectDataBlock(); | ||
185 | kill.ObjectData[0].ID = this.ClientAvatar.localid; | ||
186 | foreach(OpenSimClient client in OpenSim_Main.sim.ClientThreads.Values) { | ||
187 | client.OutPacket(kill); | ||
188 | } | ||
181 | OpenSim_Main.gridServers.GridServer.LogoutSession(this.SessionID, this.AgentID, this.CircuitCode); | 189 | OpenSim_Main.gridServers.GridServer.LogoutSession(this.SessionID, this.AgentID, this.CircuitCode); |
182 | lock(OpenSim_Main.local_world.Entities) { | 190 | lock(OpenSim_Main.local_world.Entities) { |
183 | OpenSim_Main.local_world.Entities.Remove(this.AgentID); | 191 | OpenSim_Main.local_world.Entities.Remove(this.AgentID); |