*Parcel updates are now sent to users over newly subdivided areas and users over parcels being joined to correctly update the viewers

*NOTE: Parcel updates are packets sent to the viewer when they enter a new parcel containing information such as parcel name, media URLS, etc
afrisby
mingchen 2007-07-12 23:57:26 +00:00
parent 506a0e3bf0
commit 486632986c
1 changed files with 19 additions and 12 deletions

View File

@ -123,7 +123,7 @@ namespace OpenSim.Region.Environment
/// Adds a parcel to the stored list and adds them to the parcelIDList to what they own /// Adds a parcel to the stored list and adds them to the parcelIDList to what they own
/// </summary> /// </summary>
/// <param name="new_parcel">The parcel being added</param> /// <param name="new_parcel">The parcel being added</param>
public void addParcel(Parcel new_parcel) public Parcel addParcel(Parcel new_parcel)
{ {
lastParcelLocalID++; lastParcelLocalID++;
new_parcel.parcelData.localID = lastParcelLocalID; new_parcel.parcelData.localID = lastParcelLocalID;
@ -144,6 +144,7 @@ namespace OpenSim.Region.Environment
} }
parcelList[lastParcelLocalID].forceUpdateParcelInfo(); parcelList[lastParcelLocalID].forceUpdateParcelInfo();
return new_parcel;
} }
/// <summary> /// <summary>
@ -182,6 +183,7 @@ namespace OpenSim.Region.Environment
} }
} }
removeParcel(slave.parcelData.localID); removeParcel(slave.parcelData.localID);
master.sendParcelUpdateToAvatarsOverMe();
} }
/// <summary> /// <summary>
/// Get the parcel at the specified point /// Get the parcel at the specified point
@ -260,10 +262,10 @@ namespace OpenSim.Region.Environment
parcelList[startParcelIndex].setParcelBitmap(Parcel.modifyParcelBitmapSquare(startParcel.getParcelBitmap(), start_x, start_y, end_x, end_y, false)); parcelList[startParcelIndex].setParcelBitmap(Parcel.modifyParcelBitmapSquare(startParcel.getParcelBitmap(), start_x, start_y, end_x, end_y, false));
parcelList[startParcelIndex].forceUpdateParcelInfo(); parcelList[startParcelIndex].forceUpdateParcelInfo();
//Now add the new parcel //Now add the new parcel
addParcel(newParcel); Parcel result = addParcel(newParcel);
result.sendParcelUpdateToAvatarsOverMe();
@ -492,7 +494,7 @@ namespace OpenSim.Region.Environment
Parcel over = getParcel(Convert.ToInt32(clientAvatar.Pos.X), Convert.ToInt32(clientAvatar.Pos.Y)); Parcel over = getParcel(Convert.ToInt32(clientAvatar.Pos.X), Convert.ToInt32(clientAvatar.Pos.Y));
if (over != null) if (over != null)
{ {
over.sendParcelProperties(0, false, 0, remote_client); //TODO: correctly send the sequence ID!!! over.sendParcelProperties(0, false, 0, remote_client);
} }
} }
} }
@ -649,18 +651,23 @@ namespace OpenSim.Region.Environment
parcelData.snapshotID = packet.ParcelData.SnapshotID; parcelData.snapshotID = packet.ParcelData.SnapshotID;
parcelData.userLocation = packet.ParcelData.UserLocation; parcelData.userLocation = packet.ParcelData.UserLocation;
parcelData.userLookAt = packet.ParcelData.UserLookAt; parcelData.userLookAt = packet.ParcelData.UserLookAt;
sendParcelUpdateToAvatarsOverMe();
}
}
public void sendParcelUpdateToAvatarsOverMe()
{
List<Avatar> avatars = m_world.RequestAvatarList(); List<Avatar> avatars = m_world.RequestAvatarList();
for (int i = 0; i < avatars.Count; i++) 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)); Parcel over = m_world.parcelManager.getParcel((int)Math.Round(avatars[i].Pos.X), (int)Math.Round(avatars[i].Pos.Y));
if (over == this) if (over.parcelData.localID == this.parcelData.localID)
{ {
sendParcelProperties(0, false, 0, avatars[i].ControllingClient); sendParcelProperties(0, false, 0, avatars[i].ControllingClient);
} }
} }
}
} }
#endregion #endregion