diff --git a/OpenSim/Framework/General/Interfaces/IClientAPI.cs b/OpenSim/Framework/General/Interfaces/IClientAPI.cs
index 4d4a969f8c..edd693e86e 100644
--- a/OpenSim/Framework/General/Interfaces/IClientAPI.cs
+++ b/OpenSim/Framework/General/Interfaces/IClientAPI.cs
@@ -75,6 +75,7 @@ namespace OpenSim.Framework.Interfaces
public delegate void UUIDNameRequest(LLUUID id, IClientAPI remote_client);
+
public interface IClientAPI
{
event ImprovedInstantMessage OnInstantMessage;
@@ -124,7 +125,6 @@ namespace OpenSim.Framework.Interfaces
event ParcelPropertiesUpdateRequest OnParcelPropertiesUpdateRequest;
event EstateOwnerMessageRequest OnEstateOwnerMessage;
-
LLVector3 StartPos
{
get;
diff --git a/OpenSim/Region/ClientStack/ClientView.API.cs b/OpenSim/Region/ClientStack/ClientView.API.cs
index 5be82dd0bd..1c359c2ccb 100644
--- a/OpenSim/Region/ClientStack/ClientView.API.cs
+++ b/OpenSim/Region/ClientStack/ClientView.API.cs
@@ -86,6 +86,8 @@ namespace OpenSim.Region.ClientStack
public event ParcelPropertiesUpdateRequest OnParcelPropertiesUpdateRequest;
public event EstateOwnerMessageRequest OnEstateOwnerMessage;
+
+
///
///
///
diff --git a/OpenSim/Region/ClientStack/ClientView.ProcessPackets.cs b/OpenSim/Region/ClientStack/ClientView.ProcessPackets.cs
index e5249f9892..df2bf348a8 100644
--- a/OpenSim/Region/ClientStack/ClientView.ProcessPackets.cs
+++ b/OpenSim/Region/ClientStack/ClientView.ProcessPackets.cs
@@ -564,6 +564,7 @@ namespace OpenSim.Region.ClientStack
if (OnParcelPropertiesUpdateRequest != null)
{
OnParcelPropertiesUpdateRequest(updatePacket, this);
+
}
break;
#endregion
diff --git a/OpenSim/Region/Environment/ParcelManager.cs b/OpenSim/Region/Environment/ParcelManager.cs
index a1ed9307d5..aca63a0685 100644
--- a/OpenSim/Region/Environment/ParcelManager.cs
+++ b/OpenSim/Region/Environment/ParcelManager.cs
@@ -356,11 +356,11 @@ namespace OpenSim.Region.Environment
//Sale Flag
tempByte = Convert.ToByte(tempByte | PARCEL_TYPE_IS_FOR_SALE);
}
- /*else if (currentParcelBlock.parcelData.ownerID == LLUUID.Zero)
+ else if (currentParcelBlock.parcelData.ownerID == LLUUID.Zero)
{
//Public Flag
tempByte = Convert.ToByte(tempByte | PARCEL_TYPE_PUBLIC);
- }*/
+ }
else
{
//Other Flag
@@ -395,7 +395,6 @@ namespace OpenSim.Region.Environment
packet = new ParcelOverlayPacket();
packet.ParcelData.Data = byteArray;
packet.ParcelData.SequenceID = sequenceID;
- Console.WriteLine("SENT #" + sequenceID);
remote_client.OutPacket((Packet)packet);
sequenceID++;
byteArray = new byte[PARCEL_BLOCKS_PER_PACKET];
@@ -483,6 +482,20 @@ namespace OpenSim.Region.Environment
addParcel(fullSimParcel);
}
+
+
+ public void handleSignificantClientMovement(IClientAPI remote_client)
+ {
+ Avatar clientAvatar = m_world.RequestAvatar(remote_client.AgentId);
+ if (clientAvatar != null)
+ {
+ Parcel over = getParcel(Convert.ToInt32(clientAvatar.Pos.X), Convert.ToInt32(clientAvatar.Pos.Y));
+ if (over != null)
+ {
+ over.sendParcelProperties(0, false, 0, remote_client); //TODO: correctly send the sequence ID!!!
+ }
+ }
+ }
#endregion
}
#endregion
@@ -638,7 +651,6 @@ namespace OpenSim.Region.Environment
parcelData.userLookAt = packet.ParcelData.UserLookAt;
List avatars = m_world.RequestAvatarList();
-
for (int i = 0; i < avatars.Count; i++)
{
Parcel over = m_world.parcelManager.getParcel((int)Math.Round(avatars[i].Pos.X), (int)Math.Round(avatars[i].Pos.Y));
diff --git a/OpenSim/Region/Environment/Scenes/Scene.cs b/OpenSim/Region/Environment/Scenes/Scene.cs
index d526b3c831..4a4b7a09d5 100644
--- a/OpenSim/Region/Environment/Scenes/Scene.cs
+++ b/OpenSim/Region/Environment/Scenes/Scene.cs
@@ -492,7 +492,8 @@ namespace OpenSim.Region.Environment.Scenes
client.OnParcelJoinRequest += new ParcelJoinRequest(parcelManager.handleParcelJoinRequest);
client.OnParcelPropertiesUpdateRequest += new ParcelPropertiesUpdateRequest(parcelManager.handleParcelPropertiesUpdateRequest);
client.OnEstateOwnerMessage += new EstateOwnerMessageRequest(estateManager.handleEstateOwnerMessage);
-
+
+
this.estateManager.sendRegionHandshake(client);
CreateAndAddScenePresence(client);
diff --git a/OpenSim/Region/Environment/Scenes/ScenePresence.cs b/OpenSim/Region/Environment/Scenes/ScenePresence.cs
index 8134276935..037b19dcb2 100644
--- a/OpenSim/Region/Environment/Scenes/ScenePresence.cs
+++ b/OpenSim/Region/Environment/Scenes/ScenePresence.cs
@@ -40,6 +40,9 @@ namespace OpenSim.Region.Environment.Scenes
{
public partial class ScenePresence : Entity
{
+
+
+
public static bool PhysicsEngineFlying = false;
public static AvatarAnimations Animations;
public static byte[] DefaultTexture;
@@ -75,7 +78,10 @@ namespace OpenSim.Region.Environment.Scenes
DIR_CONTROL_FLAG_UP = MainAvatar.ControlFlags.AGENT_CONTROL_UP_POS,
DIR_CONTROL_FLAG_DOWN = MainAvatar.ControlFlags.AGENT_CONTROL_UP_NEG
}
-
+ ///
+ /// Position at which a significant movement was made
+ ///
+ private LLVector3 posLastSignificantMove = new LLVector3();
#region Properties
///
///
@@ -359,7 +365,9 @@ namespace OpenSim.Region.Environment.Scenes
}
}
+ this.CheckForSignificantMovement();
this.CheckForBorderCrossing();
+
}
}
#endregion
@@ -465,6 +473,18 @@ namespace OpenSim.Region.Environment.Scenes
}
#endregion
+ #region Significant Movement Method
+
+ protected void CheckForSignificantMovement()
+ {
+ if (libsecondlife.Helpers.VecDist(this.Pos, this.posLastSignificantMove) > 2.0)
+ {
+ this.posLastSignificantMove = this.Pos;
+ this.m_world.parcelManager.handleSignificantClientMovement(this.ControllingClient);
+
+ }
+ }
+ #endregion
#region Border Crossing Methods
///
///