*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
/// </summary>
/// <param name="new_parcel">The parcel being added</param>
public void addParcel(Parcel new_parcel)
public Parcel addParcel(Parcel new_parcel)
{
lastParcelLocalID++;
new_parcel.parcelData.localID = lastParcelLocalID;
@ -144,6 +144,7 @@ namespace OpenSim.Region.Environment
}
parcelList[lastParcelLocalID].forceUpdateParcelInfo();
return new_parcel;
}
/// <summary>
@ -182,6 +183,7 @@ namespace OpenSim.Region.Environment
}
}
removeParcel(slave.parcelData.localID);
master.sendParcelUpdateToAvatarsOverMe();
}
/// <summary>
/// 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].forceUpdateParcelInfo();
//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));
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.userLocation = packet.ParcelData.UserLocation;
parcelData.userLookAt = packet.ParcelData.UserLookAt;
sendParcelUpdateToAvatarsOverMe();
}
}
public void sendParcelUpdateToAvatarsOverMe()
{
List<Avatar> 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));
if (over == this)
if (over.parcelData.localID == this.parcelData.localID)
{
sendParcelProperties(0, false, 0, avatars[i].ControllingClient);
}
}
}
}
#endregion