Make camera follow TestClient so it can find objects

This commit is contained in:
Latif Khalifa
2013-02-27 15:11:41 +01:00
parent 61b7c70c65
commit 12f29799ac

View File

@@ -52,6 +52,9 @@ namespace OpenMetaverse.TestClient
Network.RegisterCallback(PacketType.AgentDataUpdate, AgentDataUpdateHandler);
Network.LoginProgress += LoginHandler;
Objects.AvatarUpdate += new EventHandler<AvatarUpdateEventArgs>(Objects_AvatarUpdate);
Objects.TerseObjectUpdate += new EventHandler<TerseObjectUpdateEventArgs>(Objects_TerseObjectUpdate);
Network.SimChanged += new EventHandler<SimChangedEventArgs>(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;