diff --git a/Programs/examples/TestClient/TestClient.cs b/Programs/examples/TestClient/TestClient.cs index 395315ec..4223e662 100644 --- a/Programs/examples/TestClient/TestClient.cs +++ b/Programs/examples/TestClient/TestClient.cs @@ -52,6 +52,9 @@ namespace OpenMetaverse.TestClient Network.RegisterCallback(PacketType.AgentDataUpdate, AgentDataUpdateHandler); Network.LoginProgress += LoginHandler; + Objects.AvatarUpdate += new EventHandler(Objects_AvatarUpdate); + Objects.TerseObjectUpdate += new EventHandler(Objects_TerseObjectUpdate); + Network.SimChanged += new EventHandler(Network_SimChanged); Self.IM += Self_IM; Groups.GroupMembersReply += GroupMembersHandler; Inventory.InventoryObjectOffered += Inventory_OnInventoryObjectReceived; @@ -64,6 +67,42 @@ namespace OpenMetaverse.TestClient updateTimer.Start(); } + void Objects_TerseObjectUpdate(object sender, TerseObjectUpdateEventArgs e) + { + if (e.Prim.LocalID == Self.LocalID) + { + SetDefaultCamera(); + } + } + + void Objects_AvatarUpdate(object sender, AvatarUpdateEventArgs e) + { + if (e.Avatar.LocalID == Self.LocalID) + { + SetDefaultCamera(); + } + } + + void Network_SimChanged(object sender, SimChangedEventArgs e) + { + OpenMetaverse.Packets.AgentFOVPacket msg = new OpenMetaverse.Packets.AgentFOVPacket(); + msg.AgentData.AgentID = Self.AgentID; + msg.AgentData.SessionID = Self.SessionID; + msg.AgentData.CircuitCode = Network.CircuitCode; + msg.FOVBlock.GenCounter = 0; + msg.FOVBlock.VerticalAngle = Utils.TWO_PI; + Network.SendPacket(msg); + } + + public void SetDefaultCamera() + { + Self.Movement.Camera.LookAt( + Self.SimPosition + new Vector3(-5, 0, 0) * Self.Movement.BodyRotation, + Self.SimPosition + ); + } + + void Self_IM(object sender, InstantMessageEventArgs e) { bool groupIM = e.IM.GroupIM && GroupMembers != null && GroupMembers.ContainsKey(e.IM.FromAgentID) ? true : false;