diff --git a/OpenSim/Framework/LandData.cs b/OpenSim/Framework/LandData.cs index bf2ecf2e82..fc02f33fdf 100644 --- a/OpenSim/Framework/LandData.cs +++ b/OpenSim/Framework/LandData.cs @@ -49,8 +49,8 @@ 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(); private int _area = 0; @@ -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; + + /// + /// Traffic count of parcel + /// + [XmlIgnore] + public float Dwell + { + get + { + return _dwell; + } + set + { + _dwell = value; + } + } /// /// Whether to obscure parcel media URL /// [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 /// [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 /// [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 /// [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 /// [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 /// [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 /// [XmlIgnore] - public Vector3 AABBMin { - get { + public Vector3 AABBMin + { + get + { return _AABBMin; } - set { + set + { _AABBMin = value; } } @@ -191,11 +229,14 @@ namespace OpenSim.Framework /// /// Area in meters^2 the parcel contains /// - public int Area { - get { + public int Area + { + get + { return _area; } - set { + set + { _area = value; } } @@ -203,11 +244,14 @@ namespace OpenSim.Framework /// /// ID of auction (3rd Party Integration) when parcel is being auctioned /// - public uint AuctionID { - get { + public uint AuctionID + { + get + { return _auctionID; } - set { + set + { _auctionID = value; } } @@ -215,11 +259,14 @@ namespace OpenSim.Framework /// /// UUID of authorized buyer of parcel. This is UUID.Zero if anyone can buy it. /// - public UUID AuthBuyerID { - get { + public UUID AuthBuyerID + { + get + { return _authBuyerID; } - set { + set + { _authBuyerID = value; } } @@ -227,11 +274,14 @@ namespace OpenSim.Framework /// /// Category of parcel. Used for classifying the parcel in classified listings /// - public ParcelCategory Category { - get { + public ParcelCategory Category + { + get + { return _category; } - set { + set + { _category = value; } } @@ -239,11 +289,14 @@ namespace OpenSim.Framework /// /// Date that the current owner purchased or claimed the parcel /// - public int ClaimDate { - get { + public int ClaimDate + { + get + { return _claimDate; } - set { + set + { _claimDate = value; } } @@ -251,11 +304,14 @@ namespace OpenSim.Framework /// /// The last price that the parcel was sold at /// - public int ClaimPrice { - get { + public int ClaimPrice + { + get + { return _claimPrice; } - set { + set + { _claimPrice = value; } } @@ -263,11 +319,14 @@ namespace OpenSim.Framework /// /// Global ID for the parcel. (3rd Party Integration) /// - public UUID GlobalID { - get { + public UUID GlobalID + { + get + { return _globalID; } - set { + set + { _globalID = value; } } @@ -275,11 +334,14 @@ namespace OpenSim.Framework /// /// Unique ID of the Group that owns /// - public UUID GroupID { - get { + public UUID GroupID + { + get + { return _groupID; } - set { + set + { _groupID = value; } } @@ -287,11 +349,14 @@ namespace OpenSim.Framework /// /// Returns true if the Land Parcel is owned by a group /// - public bool IsGroupOwned { - get { + public bool IsGroupOwned + { + get + { return _isGroupOwned; } - set { + set + { _isGroupOwned = value; } } @@ -299,11 +364,14 @@ namespace OpenSim.Framework /// /// jp2 data for the image representative of the parcel in the parcel dialog /// - public byte[] Bitmap { - get { + public byte[] Bitmap + { + get + { return _bitmap; } - set { + set + { _bitmap = value; } } @@ -311,11 +379,14 @@ namespace OpenSim.Framework /// /// Parcel Description /// - public string Description { - get { + public string Description + { + get + { return _description; } - set { + set + { _description = value; } } @@ -323,11 +394,14 @@ namespace OpenSim.Framework /// /// Parcel settings. Access flags, Fly, NoPush, Voice, Scripts allowed, etc. ParcelFlags /// - 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 /// - public byte LandingType { - get { + public byte LandingType + { + get + { return _landingType; } - set { + set + { _landingType = value; } } @@ -348,11 +425,14 @@ namespace OpenSim.Framework /// /// Parcel Name /// - public string Name { - get { + public string Name + { + get + { return _name; } - set { + set + { _name = value; } } @@ -360,11 +440,14 @@ namespace OpenSim.Framework /// /// Status of Parcel, Leased, Abandoned, For Sale /// - public ParcelStatus Status { - get { + public ParcelStatus Status + { + get + { return _status; } - set { + set + { _status = value; } } @@ -372,11 +455,14 @@ namespace OpenSim.Framework /// /// Internal ID of the parcel. Sometimes the client will try to use this value /// - public int LocalID { - get { + public int LocalID + { + get + { return _localID; } - set { + set + { _localID = value; } } @@ -384,11 +470,14 @@ namespace OpenSim.Framework /// /// Determines if we scale the media based on the surface it's on /// - public byte MediaAutoScale { - get { + public byte MediaAutoScale + { + get + { return _mediaAutoScale; } - set { + set + { _mediaAutoScale = value; } } @@ -396,11 +485,14 @@ namespace OpenSim.Framework /// /// Texture Guid to replace with the output of the media stream /// - public UUID MediaID { - get { + public UUID MediaID + { + get + { return _mediaID; } - set { + set + { _mediaID = value; } } @@ -408,11 +500,14 @@ namespace OpenSim.Framework /// /// URL to the media file to display /// - public string MediaURL { - get { + public string MediaURL + { + get + { return _mediaURL; } - set { + set + { _mediaURL = value; } } @@ -432,11 +527,14 @@ namespace OpenSim.Framework /// /// URL to the shoutcast music stream to play on the parcel /// - 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 /// - public UUID OwnerID { - get { + public UUID OwnerID + { + get + { return _ownerID; } - set { + set + { _ownerID = value; } } @@ -457,11 +558,14 @@ namespace OpenSim.Framework /// /// List of access data for the parcel. User data, some bitflags, and a time /// - public List ParcelAccessList { - get { + public List ParcelAccessList + { + get + { return _parcelAccessList; } - set { + set + { _parcelAccessList = value; } } @@ -469,11 +573,14 @@ namespace OpenSim.Framework /// /// How long in hours a Pass to the parcel is given /// - public float PassHours { - get { + public float PassHours + { + get + { return _passHours; } - set { + set + { _passHours = value; } } @@ -481,11 +588,14 @@ namespace OpenSim.Framework /// /// Price to purchase a Pass to a restricted parcel /// - public int PassPrice { - get { + public int PassPrice + { + get + { return _passPrice; } - set { + set + { _passPrice = value; } } @@ -493,11 +603,14 @@ namespace OpenSim.Framework /// /// When the parcel is being sold, this is the price to purchase the parcel /// - 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 /// [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 /// [XmlIgnore] - public int SimwidePrims { - get { + public int SimwidePrims + { + get + { return _simwidePrims; } - set { + set + { _simwidePrims = value; } } @@ -531,11 +650,14 @@ namespace OpenSim.Framework /// /// ID of the snapshot used in the client parcel dialog of the parcel /// - 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 /// - 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 /// - 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. /// - public int OtherCleanTime { - get { + public int OtherCleanTime + { + get + { return _otherCleanTime; } - set { + set + { _otherCleanTime = value; } } @@ -582,11 +713,14 @@ namespace OpenSim.Framework /// /// parcel media description /// - 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) diff --git a/OpenSim/Region/CoreModules/World/Land/LandManagementModule.cs b/OpenSim/Region/CoreModules/World/Land/LandManagementModule.cs index 8b7406d7db..95edf6239e 100644 --- a/OpenSim/Region/CoreModules/World/Land/LandManagementModule.cs +++ b/OpenSim/Region/CoreModules/World/Land/LandManagementModule.cs @@ -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