diff --git a/OpenMetaverse/NetworkManager.cs b/OpenMetaverse/NetworkManager.cs index bd4fe0c0..3fb89a87 100644 --- a/OpenMetaverse/NetworkManager.cs +++ b/OpenMetaverse/NetworkManager.cs @@ -283,6 +283,7 @@ namespace OpenMetaverse private uint _CircuitCode; private Simulator _CurrentSim = null; private bool connected = false; + internal int pauseSerial; /// /// Default constructor @@ -538,6 +539,32 @@ namespace OpenMetaverse OnLogoutReply -= callback; } + /// + /// Instructs the simulator to stop sending update (and possibly other) packets + /// + public void Pause() + { + AgentPausePacket pause = new AgentPausePacket(); + pause.AgentData.AgentID = Client.Self.AgentID; + pause.AgentData.SessionID = Client.Self.SessionID; + pause.AgentData.SerialNum = (uint)Interlocked.Exchange(ref pauseSerial, pauseSerial + 1); + + Client.Network.SendPacket(pause); + } + + /// + /// Instructs the simulator to resume sending update packets (unpause) + /// + public void Resume() + { + AgentResumePacket resume = new AgentResumePacket(); + resume.AgentData.AgentID = Client.Self.AgentID; + resume.AgentData.SessionID = Client.Self.SessionID; + resume.AgentData.SerialNum = (uint)Interlocked.Exchange(ref pauseSerial, pauseSerial + 1); + + Client.Network.SendPacket(resume); + } + /// /// Initiate the logout process. Check if logout succeeded with the /// OnLogoutReply event, and if this does not fire the