From 907918e68e9fb0deb0cea2fa9219ceb76dd41ae1 Mon Sep 17 00:00:00 2001 From: Dalien Talbot Date: Sun, 9 Sep 2007 17:32:03 +0000 Subject: Little green men (aka dots on minimap). Thanks to bushing for pointing out that it is done by CoarseLocationUpdatePacket. --- OpenSim/Framework/General/Interfaces/IClientAPI.cs | 1 + OpenSim/Framework/General/NullClientAPI.cs | 1 + OpenSim/Region/ClientStack/ClientView.API.cs | 21 ++++++++++++ OpenSim/Region/Environment/Scenes/ScenePresence.cs | 38 ++++++++++++++++++++++ .../Region/Examples/SimpleApp/MyNpcCharacter.cs | 1 + 5 files changed, 62 insertions(+) (limited to 'OpenSim') diff --git a/OpenSim/Framework/General/Interfaces/IClientAPI.cs b/OpenSim/Framework/General/Interfaces/IClientAPI.cs index 981c5dd..545e3a8 100644 --- a/OpenSim/Framework/General/Interfaces/IClientAPI.cs +++ b/OpenSim/Framework/General/Interfaces/IClientAPI.cs @@ -216,6 +216,7 @@ namespace OpenSim.Framework.Interfaces void SendAvatarData(ulong regionHandle, string firstName, string lastName, LLUUID avatarID, uint avatarLocalID, LLVector3 Pos, byte[] textureEntry); void SendAvatarTerseUpdate(ulong regionHandle, ushort timeDilation, uint localID, LLVector3 position, LLVector3 velocity, LLQuaternion rotation); + void SendCoarseLocationUpdate(List CoarseLocations); void AttachObject(uint localID, LLQuaternion rotation, byte attachPoint); void SendPrimitiveToClient(ulong regionHandle, ushort timeDilation, uint localID, PrimitiveBaseShape primShape, LLVector3 pos, uint flags, LLUUID objectID, LLUUID ownerID, string text, uint parentID, byte[] particleSystem, LLQuaternion rotation); diff --git a/OpenSim/Framework/General/NullClientAPI.cs b/OpenSim/Framework/General/NullClientAPI.cs index b236cea..ab89323 100644 --- a/OpenSim/Framework/General/NullClientAPI.cs +++ b/OpenSim/Framework/General/NullClientAPI.cs @@ -137,6 +137,7 @@ namespace OpenSim.Framework public virtual void SendAvatarData(ulong regionHandle, string firstName, string lastName, LLUUID avatarID, uint avatarLocalID, LLVector3 Pos, byte[] textureEntry){} public virtual void SendAvatarTerseUpdate(ulong regionHandle, ushort timeDilation, uint localID, LLVector3 position, LLVector3 velocity, LLQuaternion rotation){} + public virtual void SendCoarseLocationUpdate(List CoarseLocations) { } public virtual void AttachObject(uint localID, LLQuaternion rotation, byte attachPoint){} public virtual void SendPrimitiveToClient(ulong regionHandle, ushort timeDilation, uint localID, PrimitiveBaseShape primShape, LLVector3 pos, uint flags, LLUUID objectID, LLUUID ownerID, string text, uint parentID, byte[] particleSystem, LLQuaternion rotation){} diff --git a/OpenSim/Region/ClientStack/ClientView.API.cs b/OpenSim/Region/ClientStack/ClientView.API.cs index c5a2284..43eb95a 100644 --- a/OpenSim/Region/ClientStack/ClientView.API.cs +++ b/OpenSim/Region/ClientStack/ClientView.API.cs @@ -941,6 +941,27 @@ namespace OpenSim.Region.ClientStack this.OutPacket(terse); } + public void SendCoarseLocationUpdate(List CoarseLocations) + { + CoarseLocationUpdatePacket loc = new CoarseLocationUpdatePacket(); + int total = CoarseLocations.Count; + CoarseLocationUpdatePacket.IndexBlock ib = + new CoarseLocationUpdatePacket.IndexBlock(); + loc.Location = new CoarseLocationUpdatePacket.LocationBlock[total]; + for(int i=0; i CoarseLocations = new List(); + List avatars = this.m_scene.RequestAvatarList(); + for (int i = 0; i < avatars.Count; i++) + { + if (avatars[i] != this) { + CoarseLocations.Add(avatars[i].AbsolutePosition); + } + } + this.ControllingClient.SendCoarseLocationUpdate(CoarseLocations); + } + + public void CoarseLocationChange(ScenePresence avatar) + { + newCoarseLocations = true; + } + + private void NotifyMyCoarseLocationChange() + { + List avatars = this.m_scene.RequestAvatarList(); + for (int i = 0; i < avatars.Count; i++) { + if (avatars[i] != this) { + avatars[i].CoarseLocationChange(this); + } + } + + } + + /// /// /// @@ -638,6 +675,7 @@ namespace OpenSim.Region.Environment.Scenes if (OnSignificantClientMovement != null) { OnSignificantClientMovement(this.ControllingClient); + NotifyMyCoarseLocationChange(); } } } diff --git a/OpenSim/Region/Examples/SimpleApp/MyNpcCharacter.cs b/OpenSim/Region/Examples/SimpleApp/MyNpcCharacter.cs index 7e1f5c1..7053c84 100644 --- a/OpenSim/Region/Examples/SimpleApp/MyNpcCharacter.cs +++ b/OpenSim/Region/Examples/SimpleApp/MyNpcCharacter.cs @@ -154,6 +154,7 @@ namespace SimpleApp public virtual void SendAvatarData(ulong regionHandle, string firstName, string lastName, LLUUID avatarID, uint avatarLocalID, LLVector3 Pos, byte[] textureEntry) { } public virtual void SendAvatarTerseUpdate(ulong regionHandle, ushort timeDilation, uint localID, LLVector3 position, LLVector3 velocity, LLQuaternion rotation) { } + public virtual void SendCoarseLocationUpdate(List CoarseLocations) { } public virtual void AttachObject(uint localID, LLQuaternion rotation, byte attachPoint) { } -- cgit v1.1