Fix: invinite loading for Viewer3 : parcelinfo request of traffic-value (implementation of dwell-value in LandData + eventhandler, return always 0); source-formatting of LandData

Signed-off-by: BlueWall <jamesh@bluewallgroup.com>
integration
PixelTomsen 2012-10-19 21:02:54 +02:00 committed by BlueWall
parent 48bc76ae8d
commit 5cbe2da3ba
2 changed files with 272 additions and 125 deletions

View File

@ -49,7 +49,7 @@ namespace OpenSim.Framework
// use only one serializer to give the runtime a chance to
// optimize it (it won't do that if you use a new instance
// every time)
private static XmlSerializer serializer = new XmlSerializer(typeof (LandData));
private static XmlSerializer serializer = new XmlSerializer(typeof(LandData));
private Vector3 _AABBMax = new Vector3();
private Vector3 _AABBMin = new Vector3();
@ -65,11 +65,11 @@ namespace OpenSim.Framework
private byte[] _bitmap = new byte[512];
private string _description = String.Empty;
private uint _flags = (uint) ParcelFlags.AllowFly | (uint) ParcelFlags.AllowLandmark |
(uint) ParcelFlags.AllowAPrimitiveEntry |
(uint) ParcelFlags.AllowDeedToGroup | (uint) ParcelFlags.AllowTerraform |
(uint) ParcelFlags.CreateObjects | (uint) ParcelFlags.AllowOtherScripts |
(uint) ParcelFlags.SoundLocal | (uint) ParcelFlags.AllowVoiceChat;
private uint _flags = (uint)ParcelFlags.AllowFly | (uint)ParcelFlags.AllowLandmark |
(uint)ParcelFlags.AllowAPrimitiveEntry |
(uint)ParcelFlags.AllowDeedToGroup | (uint)ParcelFlags.AllowTerraform |
(uint)ParcelFlags.CreateObjects | (uint)ParcelFlags.AllowOtherScripts |
(uint)ParcelFlags.SoundLocal | (uint)ParcelFlags.AllowVoiceChat;
private byte _landingType = 0;
private string _name = "Your Parcel";
@ -97,16 +97,36 @@ namespace OpenSim.Framework
private bool _mediaLoop = false;
private bool _obscureMusic = false;
private bool _obscureMedia = false;
private float _dwell = 0;
/// <summary>
/// Traffic count of parcel
/// </summary>
[XmlIgnore]
public float Dwell
{
get
{
return _dwell;
}
set
{
_dwell = value;
}
}
/// <summary>
/// Whether to obscure parcel media URL
/// </summary>
[XmlIgnore]
public bool ObscureMedia {
get {
public bool ObscureMedia
{
get
{
return _obscureMedia;
}
set {
set
{
_obscureMedia = value;
}
}
@ -115,11 +135,14 @@ namespace OpenSim.Framework
/// Whether to obscure parcel music URL
/// </summary>
[XmlIgnore]
public bool ObscureMusic {
get {
public bool ObscureMusic
{
get
{
return _obscureMusic;
}
set {
set
{
_obscureMusic = value;
}
}
@ -128,11 +151,14 @@ namespace OpenSim.Framework
/// Whether to loop parcel media
/// </summary>
[XmlIgnore]
public bool MediaLoop {
get {
public bool MediaLoop
{
get
{
return _mediaLoop;
}
set {
set
{
_mediaLoop = value;
}
}
@ -141,11 +167,14 @@ namespace OpenSim.Framework
/// Height of parcel media render
/// </summary>
[XmlIgnore]
public int MediaHeight {
get {
public int MediaHeight
{
get
{
return _mediaHeight;
}
set {
set
{
_mediaHeight = value;
}
}
@ -154,11 +183,14 @@ namespace OpenSim.Framework
/// Width of parcel media render
/// </summary>
[XmlIgnore]
public int MediaWidth {
get {
public int MediaWidth
{
get
{
return _mediaWidth;
}
set {
set
{
_mediaWidth = value;
}
}
@ -167,11 +199,14 @@ namespace OpenSim.Framework
/// Upper corner of the AABB for the parcel
/// </summary>
[XmlIgnore]
public Vector3 AABBMax {
get {
public Vector3 AABBMax
{
get
{
return _AABBMax;
}
set {
set
{
_AABBMax = value;
}
}
@ -179,11 +214,14 @@ namespace OpenSim.Framework
/// Lower corner of the AABB for the parcel
/// </summary>
[XmlIgnore]
public Vector3 AABBMin {
get {
public Vector3 AABBMin
{
get
{
return _AABBMin;
}
set {
set
{
_AABBMin = value;
}
}
@ -191,11 +229,14 @@ namespace OpenSim.Framework
/// <summary>
/// Area in meters^2 the parcel contains
/// </summary>
public int Area {
get {
public int Area
{
get
{
return _area;
}
set {
set
{
_area = value;
}
}
@ -203,11 +244,14 @@ namespace OpenSim.Framework
/// <summary>
/// ID of auction (3rd Party Integration) when parcel is being auctioned
/// </summary>
public uint AuctionID {
get {
public uint AuctionID
{
get
{
return _auctionID;
}
set {
set
{
_auctionID = value;
}
}
@ -215,11 +259,14 @@ namespace OpenSim.Framework
/// <summary>
/// UUID of authorized buyer of parcel. This is UUID.Zero if anyone can buy it.
/// </summary>
public UUID AuthBuyerID {
get {
public UUID AuthBuyerID
{
get
{
return _authBuyerID;
}
set {
set
{
_authBuyerID = value;
}
}
@ -227,11 +274,14 @@ namespace OpenSim.Framework
/// <summary>
/// Category of parcel. Used for classifying the parcel in classified listings
/// </summary>
public ParcelCategory Category {
get {
public ParcelCategory Category
{
get
{
return _category;
}
set {
set
{
_category = value;
}
}
@ -239,11 +289,14 @@ namespace OpenSim.Framework
/// <summary>
/// Date that the current owner purchased or claimed the parcel
/// </summary>
public int ClaimDate {
get {
public int ClaimDate
{
get
{
return _claimDate;
}
set {
set
{
_claimDate = value;
}
}
@ -251,11 +304,14 @@ namespace OpenSim.Framework
/// <summary>
/// The last price that the parcel was sold at
/// </summary>
public int ClaimPrice {
get {
public int ClaimPrice
{
get
{
return _claimPrice;
}
set {
set
{
_claimPrice = value;
}
}
@ -263,11 +319,14 @@ namespace OpenSim.Framework
/// <summary>
/// Global ID for the parcel. (3rd Party Integration)
/// </summary>
public UUID GlobalID {
get {
public UUID GlobalID
{
get
{
return _globalID;
}
set {
set
{
_globalID = value;
}
}
@ -275,11 +334,14 @@ namespace OpenSim.Framework
/// <summary>
/// Unique ID of the Group that owns
/// </summary>
public UUID GroupID {
get {
public UUID GroupID
{
get
{
return _groupID;
}
set {
set
{
_groupID = value;
}
}
@ -287,11 +349,14 @@ namespace OpenSim.Framework
/// <summary>
/// Returns true if the Land Parcel is owned by a group
/// </summary>
public bool IsGroupOwned {
get {
public bool IsGroupOwned
{
get
{
return _isGroupOwned;
}
set {
set
{
_isGroupOwned = value;
}
}
@ -299,11 +364,14 @@ namespace OpenSim.Framework
/// <summary>
/// jp2 data for the image representative of the parcel in the parcel dialog
/// </summary>
public byte[] Bitmap {
get {
public byte[] Bitmap
{
get
{
return _bitmap;
}
set {
set
{
_bitmap = value;
}
}
@ -311,11 +379,14 @@ namespace OpenSim.Framework
/// <summary>
/// Parcel Description
/// </summary>
public string Description {
get {
public string Description
{
get
{
return _description;
}
set {
set
{
_description = value;
}
}
@ -323,11 +394,14 @@ namespace OpenSim.Framework
/// <summary>
/// Parcel settings. Access flags, Fly, NoPush, Voice, Scripts allowed, etc. ParcelFlags
/// </summary>
public uint Flags {
get {
public uint Flags
{
get
{
return _flags;
}
set {
set
{
_flags = value;
}
}
@ -336,11 +410,14 @@ namespace OpenSim.Framework
/// Determines if people are able to teleport where they please on the parcel or if they
/// get constrainted to a specific point on teleport within the parcel
/// </summary>
public byte LandingType {
get {
public byte LandingType
{
get
{
return _landingType;
}
set {
set
{
_landingType = value;
}
}
@ -348,11 +425,14 @@ namespace OpenSim.Framework
/// <summary>
/// Parcel Name
/// </summary>
public string Name {
get {
public string Name
{
get
{
return _name;
}
set {
set
{
_name = value;
}
}
@ -360,11 +440,14 @@ namespace OpenSim.Framework
/// <summary>
/// Status of Parcel, Leased, Abandoned, For Sale
/// </summary>
public ParcelStatus Status {
get {
public ParcelStatus Status
{
get
{
return _status;
}
set {
set
{
_status = value;
}
}
@ -372,11 +455,14 @@ namespace OpenSim.Framework
/// <summary>
/// Internal ID of the parcel. Sometimes the client will try to use this value
/// </summary>
public int LocalID {
get {
public int LocalID
{
get
{
return _localID;
}
set {
set
{
_localID = value;
}
}
@ -384,11 +470,14 @@ namespace OpenSim.Framework
/// <summary>
/// Determines if we scale the media based on the surface it's on
/// </summary>
public byte MediaAutoScale {
get {
public byte MediaAutoScale
{
get
{
return _mediaAutoScale;
}
set {
set
{
_mediaAutoScale = value;
}
}
@ -396,11 +485,14 @@ namespace OpenSim.Framework
/// <summary>
/// Texture Guid to replace with the output of the media stream
/// </summary>
public UUID MediaID {
get {
public UUID MediaID
{
get
{
return _mediaID;
}
set {
set
{
_mediaID = value;
}
}
@ -408,11 +500,14 @@ namespace OpenSim.Framework
/// <summary>
/// URL to the media file to display
/// </summary>
public string MediaURL {
get {
public string MediaURL
{
get
{
return _mediaURL;
}
set {
set
{
_mediaURL = value;
}
}
@ -432,11 +527,14 @@ namespace OpenSim.Framework
/// <summary>
/// URL to the shoutcast music stream to play on the parcel
/// </summary>
public string MusicURL {
get {
public string MusicURL
{
get
{
return _musicURL;
}
set {
set
{
_musicURL = value;
}
}
@ -445,11 +543,14 @@ namespace OpenSim.Framework
/// Owner Avatar or Group of the parcel. Naturally, all land masses must be
/// owned by someone
/// </summary>
public UUID OwnerID {
get {
public UUID OwnerID
{
get
{
return _ownerID;
}
set {
set
{
_ownerID = value;
}
}
@ -457,11 +558,14 @@ namespace OpenSim.Framework
/// <summary>
/// List of access data for the parcel. User data, some bitflags, and a time
/// </summary>
public List<LandAccessEntry> ParcelAccessList {
get {
public List<LandAccessEntry> ParcelAccessList
{
get
{
return _parcelAccessList;
}
set {
set
{
_parcelAccessList = value;
}
}
@ -469,11 +573,14 @@ namespace OpenSim.Framework
/// <summary>
/// How long in hours a Pass to the parcel is given
/// </summary>
public float PassHours {
get {
public float PassHours
{
get
{
return _passHours;
}
set {
set
{
_passHours = value;
}
}
@ -481,11 +588,14 @@ namespace OpenSim.Framework
/// <summary>
/// Price to purchase a Pass to a restricted parcel
/// </summary>
public int PassPrice {
get {
public int PassPrice
{
get
{
return _passPrice;
}
set {
set
{
_passPrice = value;
}
}
@ -493,11 +603,14 @@ namespace OpenSim.Framework
/// <summary>
/// When the parcel is being sold, this is the price to purchase the parcel
/// </summary>
public int SalePrice {
get {
public int SalePrice
{
get
{
return _salePrice;
}
set {
set
{
_salePrice = value;
}
}
@ -506,11 +619,14 @@ namespace OpenSim.Framework
/// Number of meters^2 in the Simulator
/// </summary>
[XmlIgnore]
public int SimwideArea {
get {
public int SimwideArea
{
get
{
return _simwideArea;
}
set {
set
{
_simwideArea = value;
}
}
@ -519,11 +635,14 @@ namespace OpenSim.Framework
/// Number of SceneObjectPart in the Simulator
/// </summary>
[XmlIgnore]
public int SimwidePrims {
get {
public int SimwidePrims
{
get
{
return _simwidePrims;
}
set {
set
{
_simwidePrims = value;
}
}
@ -531,11 +650,14 @@ namespace OpenSim.Framework
/// <summary>
/// ID of the snapshot used in the client parcel dialog of the parcel
/// </summary>
public UUID SnapshotID {
get {
public UUID SnapshotID
{
get
{
return _snapshotID;
}
set {
set
{
_snapshotID = value;
}
}
@ -544,11 +666,14 @@ namespace OpenSim.Framework
/// When teleporting is restricted to a certain point, this is the location
/// that the user will be redirected to
/// </summary>
public Vector3 UserLocation {
get {
public Vector3 UserLocation
{
get
{
return _userLocation;
}
set {
set
{
_userLocation = value;
}
}
@ -557,11 +682,14 @@ namespace OpenSim.Framework
/// When teleporting is restricted to a certain point, this is the rotation
/// that the user will be positioned
/// </summary>
public Vector3 UserLookAt {
get {
public Vector3 UserLookAt
{
get
{
return _userLookAt;
}
set {
set
{
_userLookAt = value;
}
}
@ -570,11 +698,14 @@ namespace OpenSim.Framework
/// Autoreturn number of minutes to return SceneObjectGroup that are owned by someone who doesn't own
/// the parcel and isn't set to the same 'group' as the parcel.
/// </summary>
public int OtherCleanTime {
get {
public int OtherCleanTime
{
get
{
return _otherCleanTime;
}
set {
set
{
_otherCleanTime = value;
}
}
@ -582,11 +713,14 @@ namespace OpenSim.Framework
/// <summary>
/// parcel media description
/// </summary>
public string MediaDescription {
get {
public string MediaDescription
{
get
{
return _mediaDescription;
}
set {
set
{
_mediaDescription = value;
}
}
@ -622,7 +756,7 @@ namespace OpenSim.Framework
landData._mediaURL = _mediaURL;
landData._musicURL = _musicURL;
landData._ownerID = _ownerID;
landData._bitmap = (byte[]) _bitmap.Clone();
landData._bitmap = (byte[])_bitmap.Clone();
landData._description = _description;
landData._flags = _flags;
landData._name = _name;
@ -643,6 +777,7 @@ namespace OpenSim.Framework
landData._obscureMedia = _obscureMedia;
landData._simwideArea = _simwideArea;
landData._simwidePrims = _simwidePrims;
landData._dwell = _dwell;
landData._parcelAccessList.Clear();
foreach (LandAccessEntry entry in _parcelAccessList)

View File

@ -207,6 +207,7 @@ namespace OpenSim.Region.CoreModules.World.Land
client.OnParcelInfoRequest += ClientOnParcelInfoRequest;
client.OnParcelDeedToGroup += ClientOnParcelDeedToGroup;
client.OnPreAgentUpdate += ClientOnPreAgentUpdate;
client.OnParcelDwellRequest += ClientOnParcelDwellRequest;
EntityBase presenceEntity;
if (m_scene.Entities.TryGetValue(client.AgentId, out presenceEntity) && presenceEntity is ScenePresence)
@ -798,6 +799,17 @@ namespace OpenSim.Region.CoreModules.World.Land
}
}
private void ClientOnParcelDwellRequest(int localID, IClientAPI client)
{
ILandObject parcel = null;
lock (m_landList)
{
if (!m_landList.TryGetValue(localID, out parcel))
return;
}
client.SendParcelDwellReply(localID, parcel.LandData.GlobalID, parcel.LandData.Dwell);
}
#endregion
#region Parcel Modification