llparcel.h
上传用户:king477883
上传日期:2021-03-01
资源大小:9553k
文件大小:25k
- /**
- * @file llparcel.h
- *
- * $LicenseInfo:firstyear=2002&license=viewergpl$
- *
- * Copyright (c) 2002-2010, Linden Research, Inc.
- *
- * Second Life Viewer Source Code
- * The source code in this file ("Source Code") is provided by Linden Lab
- * to you under the terms of the GNU General Public License, version 2.0
- * ("GPL"), unless you have obtained a separate licensing agreement
- * ("Other License"), formally executed by you and Linden Lab. Terms of
- * the GPL can be found in doc/GPL-license.txt in this distribution, or
- * online at http://secondlifegrid.net/programs/open_source/licensing/gplv2
- *
- * There are special exceptions to the terms and conditions of the GPL as
- * it is applied to this Source Code. View the full text of the exception
- * in the file doc/FLOSS-exception.txt in this software distribution, or
- * online at
- * http://secondlifegrid.net/programs/open_source/licensing/flossexception
- *
- * By copying, modifying or distributing this software, you acknowledge
- * that you have read and understood your obligations described above,
- * and agree to abide by those obligations.
- *
- * ALL LINDEN LAB SOURCE CODE IS PROVIDED "AS IS." LINDEN LAB MAKES NO
- * WARRANTIES, EXPRESS, IMPLIED OR OTHERWISE, REGARDING ITS ACCURACY,
- * COMPLETENESS OR PERFORMANCE.
- * $/LicenseInfo$
- */
- #ifndef LL_LLPARCEL_H
- #define LL_LLPARCEL_H
- #include <time.h>
- #include <iostream>
- #include "lluuid.h"
- #include "llparcelflags.h"
- #include "llpermissions.h"
- #include "lltimer.h"
- #include "v3math.h"
- // Grid out of which parcels taken is stepped every 4 meters.
- const F32 PARCEL_GRID_STEP_METERS = 4.f;
- // Area of one "square" of parcel
- const S32 PARCEL_UNIT_AREA = 16;
- // Height _above_ground_ that parcel boundary ends
- const F32 PARCEL_HEIGHT = 50.f;
- //Height above ground which parcel boundries exist for explicitly banned avatars
- const F32 BAN_HEIGHT = 768.f;
- // Maximum number of entries in an access list
- const S32 PARCEL_MAX_ACCESS_LIST = 300;
- //Maximum number of entires in an update packet
- //for access/ban lists.
- const F32 PARCEL_MAX_ENTRIES_PER_PACKET = 48.f;
- // Weekly charge for listing a parcel in the directory
- const S32 PARCEL_DIRECTORY_FEE = 30;
- const S32 PARCEL_PASS_PRICE_DEFAULT = 10;
- const F32 PARCEL_PASS_HOURS_DEFAULT = 1.f;
- // Number of "chunks" in which parcel overlay data is sent
- // Chunk 0 = southern rows, entire width
- const S32 PARCEL_OVERLAY_CHUNKS = 4;
- // Bottom three bits are a color index for the land overlay
- const U8 PARCEL_COLOR_MASK = 0x07;
- const U8 PARCEL_PUBLIC = 0x00;
- const U8 PARCEL_OWNED = 0x01;
- const U8 PARCEL_GROUP = 0x02;
- const U8 PARCEL_SELF = 0x03;
- const U8 PARCEL_FOR_SALE = 0x04;
- const U8 PARCEL_AUCTION = 0x05;
- // unused 0x06
- // unused 0x07
- // flag, unused 0x08
- // flag, unused 0x10
- const U8 PARCEL_SOUND_LOCAL = 0x20;
- const U8 PARCEL_WEST_LINE = 0x40; // flag, property line on west edge
- const U8 PARCEL_SOUTH_LINE = 0x80; // flag, property line on south edge
- // Transmission results for parcel properties
- const S32 PARCEL_RESULT_NO_DATA = -1;
- const S32 PARCEL_RESULT_SUCCESS = 0; // got exactly one parcel
- const S32 PARCEL_RESULT_MULTIPLE = 1; // got multiple parcels
- const S32 SELECTED_PARCEL_SEQ_ID = -10000;
- const S32 COLLISION_NOT_IN_GROUP_PARCEL_SEQ_ID = -20000;
- const S32 COLLISION_BANNED_PARCEL_SEQ_ID = -30000;
- const S32 COLLISION_NOT_ON_LIST_PARCEL_SEQ_ID = -40000;
- const S32 HOVERED_PARCEL_SEQ_ID = -50000;
- const U32 RT_NONE = 0x1 << 0;
- const U32 RT_OWNER = 0x1 << 1;
- const U32 RT_GROUP = 0x1 << 2;
- const U32 RT_OTHER = 0x1 << 3;
- const U32 RT_LIST = 0x1 << 4;
- const U32 RT_SELL = 0x1 << 5;
- // Timeouts for parcels
- // default is 21 days * 24h/d * 60m/h * 60s/m *1000000 usec/s = 1814400000000
- const U64 DEFAULT_USEC_CONVERSION_TIMEOUT = U64L(1814400000000);
- // ***** TESTING is 10 minutes
- //const U64 DEFAULT_USEC_CONVERSION_TIMEOUT = U64L(600000000);
- // group is 60 days * 24h/d * 60m/h * 60s/m *1000000 usec/s = 5184000000000
- const U64 GROUP_USEC_CONVERSION_TIMEOUT = U64L(5184000000000);
- // ***** TESTING is 10 minutes
- //const U64 GROUP_USEC_CONVERSION_TIMEOUT = U64L(600000000);
- // default sale timeout is 2 days -> 172800000000
- const U64 DEFAULT_USEC_SALE_TIMEOUT = U64L(172800000000);
- // ***** TESTING is 10 minutes
- //const U64 DEFAULT_USEC_SALE_TIMEOUT = U64L(600000000);
- // more grace period extensions.
- const U64 SEVEN_DAYS_IN_USEC = U64L(604800000000);
- // if more than 100,000s before sale revert, and no extra extension
- // has been given, go ahead and extend it more. That's about 1.2 days.
- const S32 EXTEND_GRACE_IF_MORE_THAN_SEC = 100000;
- class LLMessageSystem;
- class LLSD;
- class LLAccessEntry
- {
- public:
- LLUUID mID; // Agent ID
- S32 mTime; // Time (unix seconds) when entry expires
- U32 mFlags; // Not used - currently should always be zero
- };
- typedef std::map<LLUUID,LLAccessEntry>::iterator access_map_iterator;
- typedef std::map<LLUUID,LLAccessEntry>::const_iterator access_map_const_iterator;
- class LLParcel
- {
- public:
- enum EOwnershipStatus
- {
- OS_LEASED = 0,
- OS_LEASE_PENDING = 1,
- OS_ABANDONED = 2,
- OS_COUNT = 3,
- OS_NONE = -1
- };
- enum ECategory
- {
- C_NONE = 0,
- C_LINDEN,
- C_ADULT,
- C_ARTS, // "arts & culture"
- C_BUSINESS, // was "store"
- C_EDUCATIONAL,
- C_GAMING, // was "game"
- C_HANGOUT, // was "gathering place"
- C_NEWCOMER,
- C_PARK, // "parks & nature"
- C_RESIDENTIAL, // was "homestead"
- C_SHOPPING,
- C_STAGE,
- C_OTHER,
- C_COUNT,
- C_ANY = -1 // only useful in queries
- };
- enum EAction
- {
- A_CREATE = 0,
- A_RELEASE = 1,
- A_ABSORB = 2,
- A_ABSORBED = 3,
- A_DIVIDE = 4,
- A_DIVISION = 5,
- A_ACQUIRE = 6,
- A_RELINQUISH = 7,
- A_CONFIRM = 8,
- A_COUNT = 9,
- A_UNKNOWN = -1
- };
- enum ELandingType
- {
- L_NONE = 0,
- L_LANDING_POINT = 1,
- L_DIRECT = 2
- };
- // CREATORS
- LLParcel();
- LLParcel(
- const LLUUID &owner_id,
- BOOL modify,
- BOOL terraform,
- BOOL damage,
- time_t claim_date,
- S32 claim_price,
- S32 rent_price,
- S32 area,
- S32 sim_object_limit,
- F32 parcel_object_bonus,
- BOOL is_group_owned = FALSE);
- virtual ~LLParcel();
- void init(
- const LLUUID &owner_id,
- BOOL modify,
- BOOL terraform,
- BOOL damage,
- time_t claim_date,
- S32 claim_price,
- S32 rent_price,
- S32 area,
- S32 sim_object_limit,
- F32 parcel_object_bonus,
- BOOL is_group_owned = FALSE);
- // TODO: make an actual copy constructor for this
- void overrideParcelFlags(U32 flags);
- // if you specify an agent id here, the group id will be zeroed
- void overrideOwner(
- const LLUUID& owner_id,
- BOOL is_group_owned = FALSE);
- void overrideSaleTimerExpires(F32 secs_left) { mSaleTimerExpires.setTimerExpirySec(secs_left); }
- // MANIPULATORS
- void generateNewID() { mID.generate(); }
- void setName(const std::string& name);
- void setDesc(const std::string& desc);
- void setMusicURL(const std::string& url);
- void setMediaURL(const std::string& url);
- void setMediaType(const std::string& type);
- void setMediaDesc(const std::string& desc);
- void setMediaID(const LLUUID& id) { mMediaID = id; }
- void setMediaAutoScale ( U8 flagIn ) { mMediaAutoScale = flagIn; }
- void setMediaLoop (U8 loop) { mMediaLoop = loop; }
- void setObscureMedia( U8 flagIn ) { mObscureMedia = flagIn; }
- void setObscureMusic( U8 flagIn ) { mObscureMusic = flagIn; }
- void setMediaWidth(S32 width);
- void setMediaHeight(S32 height);
- void setMediaCurrentURL(const std::string& url);
- void setMediaURLFilterEnable(U8 enable) { mMediaURLFilterEnable = enable; }
- void setMediaURLFilterList(LLSD list);
- void setMediaAllowNavigate(U8 enable) { mMediaAllowNavigate = enable; }
- void setMediaURLTimeout(F32 timeout) { mMediaURLTimeout = timeout; }
- void setMediaPreventCameraZoom(U8 enable) { mMediaPreventCameraZoom = enable; }
- void setMediaURLResetTimer(F32 time);
- virtual void setLocalID(S32 local_id);
- // blow away all the extra crap lurking in parcels, including urls, access lists, etc
- void clearParcel();
- // This value is not persisted out to the parcel file, it is only
- // a per-process blocker for attempts to purchase.
- void setInEscrow(bool in_escrow) { mInEscrow = in_escrow; }
- void setAuthorizedBuyerID(const LLUUID& id) { mAuthBuyerID = id; }
- //void overrideBuyerID(const LLUUID& id) { mBuyerID = id; }
- void setCategory(ECategory category) { mCategory = category; }
- void setSnapshotID(const LLUUID& id) { mSnapshotID = id; }
- void setUserLocation(const LLVector3& pos) { mUserLocation = pos; }
- void setUserLookAt(const LLVector3& rot) { mUserLookAt = rot; }
- void setLandingType(const ELandingType type) { mLandingType = type; }
- void setAuctionID(U32 auction_id) { mAuctionID = auction_id;}
- void setAllParcelFlags(U32 flags);
- void setParcelFlag(U32 flag, BOOL b);
- virtual void setArea(S32 area, S32 sim_object_limit);
- void setDiscountRate(F32 rate);
- void setAllowModify(BOOL b) { setParcelFlag(PF_CREATE_OBJECTS, b); }
- void setAllowGroupModify(BOOL b) { setParcelFlag(PF_CREATE_GROUP_OBJECTS, b); }
- void setAllowAllObjectEntry(BOOL b) { setParcelFlag(PF_ALLOW_ALL_OBJECT_ENTRY, b); }
- void setAllowGroupObjectEntry(BOOL b) { setParcelFlag(PF_ALLOW_GROUP_OBJECT_ENTRY, b); }
- void setAllowTerraform(BOOL b){setParcelFlag(PF_ALLOW_TERRAFORM, b); }
- void setAllowDamage(BOOL b) { setParcelFlag(PF_ALLOW_DAMAGE, b); }
- void setAllowFly(BOOL b) { setParcelFlag(PF_ALLOW_FLY, b); }
- void setAllowLandmark(BOOL b){ setParcelFlag(PF_ALLOW_LANDMARK, b); }
- void setAllowGroupScripts(BOOL b) { setParcelFlag(PF_ALLOW_GROUP_SCRIPTS, b); }
- void setAllowOtherScripts(BOOL b) { setParcelFlag(PF_ALLOW_OTHER_SCRIPTS, b); }
- void setAllowDeedToGroup(BOOL b) { setParcelFlag(PF_ALLOW_DEED_TO_GROUP, b); }
- void setContributeWithDeed(BOOL b) { setParcelFlag(PF_CONTRIBUTE_WITH_DEED, b); }
- void setForSale(BOOL b) { setParcelFlag(PF_FOR_SALE, b); }
- void setSoundOnly(BOOL b) { setParcelFlag(PF_SOUND_LOCAL, b); }
- void setDenyAnonymous(BOOL b) { setParcelFlag(PF_DENY_ANONYMOUS, b); }
- void setDenyAgeUnverified(BOOL b) { setParcelFlag(PF_DENY_AGEUNVERIFIED, b); }
- void setRestrictPushObject(BOOL b) { setParcelFlag(PF_RESTRICT_PUSHOBJECT, b); }
- void setDrawDistance(F32 dist) { mDrawDistance = dist; }
- void setSalePrice(S32 price) { mSalePrice = price; }
- void setGroupID(const LLUUID& id) { mGroupID = id; }
- //void setGroupName(const std::string& s) { mGroupName.assign(s); }
- void setPassPrice(S32 price) { mPassPrice = price; }
- void setPassHours(F32 hours) { mPassHours = hours; }
- // BOOL importStream(std::istream& input_stream);
- BOOL importAccessEntry(std::istream& input_stream, LLAccessEntry* entry);
- BOOL importMediaURLFilter(std::istream& input_stream, std::string& url);
- // BOOL exportStream(std::ostream& output_stream);
- void packMessage(LLMessageSystem* msg);
- void packMessage(LLSD& msg);
- void unpackMessage(LLMessageSystem* msg);
- void packAccessEntries(LLMessageSystem* msg,
- const std::map<LLUUID,LLAccessEntry>& list);
- void unpackAccessEntries(LLMessageSystem* msg,
- std::map<LLUUID,LLAccessEntry>* list);
- void setAABBMin(const LLVector3& min) { mAABBMin = min; }
- void setAABBMax(const LLVector3& max) { mAABBMax = max; }
- // Extend AABB to include rectangle from min to max.
- void extendAABB(const LLVector3& box_min, const LLVector3& box_max);
- void dump();
- // Scans the pass list and removes any items with an expiration
- // time earlier than "now".
- void expirePasses(S32 now);
- // Add to list, suppressing duplicates. Returns TRUE if added.
- BOOL addToAccessList(const LLUUID& agent_id, S32 time);
- BOOL addToBanList(const LLUUID& agent_id, S32 time);
- BOOL removeFromAccessList(const LLUUID& agent_id);
- BOOL removeFromBanList(const LLUUID& agent_id);
- // ACCESSORS
- const LLUUID& getID() const { return mID; }
- const std::string& getName() const { return mName; }
- const std::string& getDesc() const { return mDesc; }
- const std::string& getMusicURL() const { return mMusicURL; }
- const std::string& getMediaURL() const { return mMediaURL; }
- const std::string& getMediaDesc() const { return mMediaDesc; }
- const std::string& getMediaType() const { return mMediaType; }
- const LLUUID& getMediaID() const { return mMediaID; }
- S32 getMediaWidth() const { return mMediaWidth; }
- S32 getMediaHeight() const { return mMediaHeight; }
- U8 getMediaAutoScale() const { return mMediaAutoScale; }
- U8 getMediaLoop() const { return mMediaLoop; }
- const std::string& getMediaCurrentURL() const { return mMediaCurrentURL; }
- U8 getObscureMedia() const { return mObscureMedia; }
- U8 getObscureMusic() const { return mObscureMusic; }
- U8 getMediaURLFilterEnable() const { return mMediaURLFilterEnable; }
- LLSD getMediaURLFilterList() const { return mMediaURLFilterList; }
- U8 getMediaAllowNavigate() const { return mMediaAllowNavigate; }
- F32 getMediaURLTimeout() const { return mMediaURLTimeout; }
- U8 getMediaPreventCameraZoom() const { return mMediaPreventCameraZoom; }
- S32 getLocalID() const { return mLocalID; }
- const LLUUID& getOwnerID() const { return mOwnerID; }
- const LLUUID& getGroupID() const { return mGroupID; }
- S32 getPassPrice() const { return mPassPrice; }
- F32 getPassHours() const { return mPassHours; }
- BOOL getIsGroupOwned() const { return mGroupOwned; }
- U32 getAuctionID() const { return mAuctionID; }
- bool isInEscrow() const { return mInEscrow; }
- BOOL isPublic() const;
- // Region-local user-specified position
- const LLVector3& getUserLocation() const { return mUserLocation; }
- const LLVector3& getUserLookAt() const { return mUserLookAt; }
- ELandingType getLandingType() const { return mLandingType; }
- // User-specified snapshot
- const LLUUID& getSnapshotID() const { return mSnapshotID; }
- // the authorized buyer id is the person who is the only
- // agent/group that has authority to purchase. (ie, ui specified a
- // particular agent could buy the plot).
- const LLUUID& getAuthorizedBuyerID() const { return mAuthBuyerID; }
- // helper function
- BOOL isBuyerAuthorized(const LLUUID& buyer_id) const;
- // The buyer of a plot is set when someone indicates they want to
- // buy the plot, and the system is simply waiting for tier-up
- // approval
- //const LLUUID& getBuyerID() const { return mBuyerID; }
- // functions to deal with ownership status.
- EOwnershipStatus getOwnershipStatus() const { return mStatus; }
- static const std::string& getOwnershipStatusString(EOwnershipStatus status);
- void setOwnershipStatus(EOwnershipStatus status) { mStatus = status; }
- // dealing with parcel category information
- ECategory getCategory() const {return mCategory; }
- static const std::string& getCategoryString(ECategory category);
- static const std::string& getCategoryUIString(ECategory category);
- static ECategory getCategoryFromString(const std::string& string);
- static ECategory getCategoryFromUIString(const std::string& string);
- // functions for parcel action (used for logging)
- static const std::string& getActionString(EAction action);
- // dealing with sales and parcel conversion.
- //
- // the isSaleTimerExpired will trivially return FALSE if there is
- // no sale going on. Pass in the current time in usec which will
- // be used for comparison.
- BOOL isSaleTimerExpired(const U64& time);
- F32 getSaleTimerExpires() { return mSaleTimerExpires.getRemainingTimeF32(); }
- // should the parcel join on complete?
- //U32 getJoinNeighbors() const { return mJoinNeighbors; }
- // need to record a few things with the parcel when a sale
- // starts.
- void startSale(const LLUUID& buyer_id, BOOL is_buyer_group);
- // do the expiration logic, which needs to return values usable in
- // a L$ transaction.
- void expireSale(U32& type, U8& flags, LLUUID& from_id, LLUUID& to_id);
- void completeSale(U32& type, U8& flags, LLUUID& to_id);
- void clearSale();
- BOOL isMediaResetTimerExpired(const U64& time);
- // more accessors
- U32 getParcelFlags() const { return mParcelFlags; }
- BOOL getParcelFlag(U32 flag) const
- { return (mParcelFlags & flag) ? TRUE : FALSE; }
- // objects can be added or modified by anyone (only parcel owner if disabled)
- BOOL getAllowModify() const
- { return (mParcelFlags & PF_CREATE_OBJECTS) ? TRUE : FALSE; }
- // objects can be added or modified by group members
- BOOL getAllowGroupModify() const
- { return (mParcelFlags & PF_CREATE_GROUP_OBJECTS) ? TRUE : FALSE; }
- // the parcel can be deeded to the group
- BOOL getAllowDeedToGroup() const
- { return (mParcelFlags & PF_ALLOW_DEED_TO_GROUP) ? TRUE : FALSE; }
- // Does the owner want to make a contribution along with the deed.
- BOOL getContributeWithDeed() const
- { return (mParcelFlags & PF_CONTRIBUTE_WITH_DEED) ? TRUE : FALSE; }
- // heightfield can be modified
- BOOL getAllowTerraform() const
- { return (mParcelFlags & PF_ALLOW_TERRAFORM) ? TRUE : FALSE; }
- // avatars can be hurt here
- BOOL getAllowDamage() const
- { return (mParcelFlags & PF_ALLOW_DAMAGE) ? TRUE : FALSE; }
- BOOL getAllowFly() const
- { return (mParcelFlags & PF_ALLOW_FLY) ? TRUE : FALSE; }
- // Remove permission restrictions for creating landmarks.
- // We should eventually remove this flag completely.
- BOOL getAllowLandmark() const
- { return TRUE; }
- BOOL getAllowGroupScripts() const
- { return (mParcelFlags & PF_ALLOW_GROUP_SCRIPTS) ? TRUE : FALSE; }
- BOOL getAllowOtherScripts() const
- { return (mParcelFlags & PF_ALLOW_OTHER_SCRIPTS) ? TRUE : FALSE; }
- BOOL getAllowAllObjectEntry() const
- { return (mParcelFlags & PF_ALLOW_ALL_OBJECT_ENTRY) ? TRUE : FALSE; }
- BOOL getAllowGroupObjectEntry() const
- { return (mParcelFlags & PF_ALLOW_GROUP_OBJECT_ENTRY) ? TRUE : FALSE; }
- BOOL getForSale() const
- { return (mParcelFlags & PF_FOR_SALE) ? TRUE : FALSE; }
- BOOL getSoundLocal() const
- { return (mParcelFlags & PF_SOUND_LOCAL) ? TRUE : FALSE; }
- BOOL getParcelFlagAllowVoice() const
- { return (mParcelFlags & PF_ALLOW_VOICE_CHAT) ? TRUE : FALSE; }
- BOOL getParcelFlagUseEstateVoiceChannel() const
- { return (mParcelFlags & PF_USE_ESTATE_VOICE_CHAN) ? TRUE : FALSE; }
- BOOL getAllowPublish() const
- { return (mParcelFlags & PF_ALLOW_PUBLISH) ? TRUE : FALSE; }
- BOOL getMaturePublish() const
- { return (mParcelFlags & PF_MATURE_PUBLISH) ? TRUE : FALSE; }
- BOOL getRestrictPushObject() const
- { return (mParcelFlags & PF_RESTRICT_PUSHOBJECT) ? TRUE : FALSE; }
- BOOL getRegionPushOverride() const
- { return mRegionPushOverride; }
- BOOL getRegionDenyAnonymousOverride() const
- { return mRegionDenyAnonymousOverride; }
- BOOL getRegionDenyAgeUnverifiedOverride() const
- { return mRegionDenyAgeUnverifiedOverride; }
- F32 getDrawDistance() const { return mDrawDistance; }
- S32 getSalePrice() const { return mSalePrice; }
- time_t getClaimDate() const { return mClaimDate; }
- S32 getClaimPricePerMeter() const { return mClaimPricePerMeter; }
- S32 getRentPricePerMeter() const { return mRentPricePerMeter; }
- // Area is NOT automatically calculated. You must calculate it
- // and store it with setArea.
- S32 getArea() const { return mArea; }
- // deprecated 12/11/2003
- //F32 getDiscountRate() const { return mDiscountRate; }
- S32 getClaimPrice() const { return mClaimPricePerMeter * mArea; }
- // Can this agent create objects here?
- BOOL allowModifyBy(const LLUUID &agent_id, const LLUUID &group_id) const;
- // Can this agent change the shape of the land?
- BOOL allowTerraformBy(const LLUUID &agent_id) const;
- // Returns 0 if access is OK, otherwise a BA_ return code above.
- S32 blockAccess(const LLUUID& agent_id,
- const LLUUID& group_id,
- const BOOL is_agent_identified,
- const BOOL is_agent_transacted,
- const BOOL is_agent_ageverified) const;
- // Only checks if the agent is explicitly banned from this parcel
- BOOL isAgentBanned(const LLUUID& agent_id) const;
- static bool isAgentBlockedFromParcel(LLParcel* parcelp,
- const LLUUID& agent_id,
- const std::vector<LLUUID>& group_ids,
- const BOOL is_agent_identified,
- const BOOL is_agent_transacted,
- const BOOL is_agent_ageverified);
- bool operator==(const LLParcel &rhs) const;
- // Calculate rent - area * rent * discount rate
- S32 getTotalRent() const;
- F32 getAdjustedRentPerMeter() const;
- const LLVector3& getAABBMin() const { return mAABBMin; }
- const LLVector3& getAABBMax() const { return mAABBMax; }
- LLVector3 getCenterpoint() const;
- // simwide
- S32 getSimWideMaxPrimCapacity() const { return mSimWideMaxPrimCapacity; }
- S32 getSimWidePrimCount() const { return mSimWidePrimCount; }
- // this parcel only (not simwide)
- S32 getMaxPrimCapacity() const { return mMaxPrimCapacity; } // Does not include prim bonus
- S32 getPrimCount() const { return mOwnerPrimCount + mGroupPrimCount + mOtherPrimCount + mSelectedPrimCount; }
- S32 getOwnerPrimCount() const { return mOwnerPrimCount; }
- S32 getGroupPrimCount() const { return mGroupPrimCount; }
- S32 getOtherPrimCount() const { return mOtherPrimCount; }
- S32 getSelectedPrimCount() const{ return mSelectedPrimCount; }
- S32 getTempPrimCount() const { return mTempPrimCount; }
- F32 getParcelPrimBonus() const { return mParcelPrimBonus; }
- S32 getCleanOtherTime() const { return mCleanOtherTime; }
- void setMaxPrimCapacity(S32 max) { mMaxPrimCapacity = max; } // Does not include prim bonus
- // simwide
- void setSimWideMaxPrimCapacity(S32 current) { mSimWideMaxPrimCapacity = current; }
- void setSimWidePrimCount(S32 current) { mSimWidePrimCount = current; }
- // this parcel only (not simwide)
- void setOwnerPrimCount(S32 current) { mOwnerPrimCount = current; }
- void setGroupPrimCount(S32 current) { mGroupPrimCount = current; }
- void setOtherPrimCount(S32 current) { mOtherPrimCount = current; }
- void setSelectedPrimCount(S32 current) { mSelectedPrimCount = current; }
- void setTempPrimCount(S32 current) { mTempPrimCount = current; }
- void setParcelPrimBonus(F32 bonus) { mParcelPrimBonus = bonus; }
- void setCleanOtherTime(S32 time) { mCleanOtherTime = time; }
- void setRegionPushOverride(BOOL override) {mRegionPushOverride = override; }
- void setRegionDenyAnonymousOverride(BOOL override) { mRegionDenyAnonymousOverride = override; }
- void setRegionDenyAgeUnverifiedOverride(BOOL override) { mRegionDenyAgeUnverifiedOverride = override; }
- // Accessors for parcel sellWithObjects
- void setPreviousOwnerID(LLUUID prev_owner) { mPreviousOwnerID = prev_owner; }
- void setPreviouslyGroupOwned(BOOL b) { mPreviouslyGroupOwned = b; }
- void setSellWithObjects(BOOL b) { setParcelFlag(PF_SELL_PARCEL_OBJECTS, b); }
- LLUUID getPreviousOwnerID() const { return mPreviousOwnerID; }
- BOOL getPreviouslyGroupOwned() const { return mPreviouslyGroupOwned; }
- BOOL getSellWithObjects() const { return (mParcelFlags & PF_SELL_PARCEL_OBJECTS) ? TRUE : FALSE; }
- protected:
- LLUUID mID;
- LLUUID mOwnerID;
- LLUUID mGroupID;
- BOOL mGroupOwned; // TRUE if mOwnerID is a group_id
- LLUUID mPreviousOwnerID;
- BOOL mPreviouslyGroupOwned;
- EOwnershipStatus mStatus;
- ECategory mCategory;
- LLUUID mAuthBuyerID;
- LLUUID mSnapshotID;
- LLVector3 mUserLocation;
- LLVector3 mUserLookAt;
- ELandingType mLandingType;
- LLTimer mSaleTimerExpires;
- LLTimer mMediaResetTimer;
- S32 mGraceExtension;
- // This value is non-zero if there is an auction associated with
- // the parcel.
- U32 mAuctionID;
- // value used to temporarily lock attempts to purchase the parcel.
- bool mInEscrow;
- time_t mClaimDate; // UTC Unix-format time
- S32 mClaimPricePerMeter; // meter squared
- S32 mRentPricePerMeter; // meter squared
- S32 mArea; // meter squared
- F32 mDiscountRate; // 0.0-1.0
- F32 mDrawDistance;
- U32 mParcelFlags;
- S32 mSalePrice; // linden dollars
- std::string mName;
- std::string mDesc;
- std::string mMusicURL;
- std::string mMediaURL;
- std::string mMediaDesc;
- std::string mMediaType;
- S32 mMediaWidth;
- S32 mMediaHeight;
- U8 mMediaAutoScale;
- U8 mMediaLoop;
- std::string mMediaCurrentURL;
- U8 mObscureMedia;
- U8 mObscureMusic;
- LLUUID mMediaID;
- U8 mMediaURLFilterEnable;
- LLSD mMediaURLFilterList;
- U8 mMediaAllowNavigate;
- U8 mMediaPreventCameraZoom;
- F32 mMediaURLTimeout;
- S32 mPassPrice;
- F32 mPassHours;
- LLVector3 mAABBMin;
- LLVector3 mAABBMax;
- S32 mMaxPrimCapacity; // Prims allowed on parcel, does not include prim bonus
- S32 mSimWidePrimCount;
- S32 mSimWideMaxPrimCapacity;
- //S32 mSimWidePrimCorrection;
- S32 mOwnerPrimCount;
- S32 mGroupPrimCount;
- S32 mOtherPrimCount;
- S32 mSelectedPrimCount;
- S32 mTempPrimCount;
- F32 mParcelPrimBonus;
- S32 mCleanOtherTime;
- BOOL mRegionPushOverride;
- BOOL mRegionDenyAnonymousOverride;
- BOOL mRegionDenyAgeUnverifiedOverride;
- public:
- // HACK, make private
- S32 mLocalID;
- LLUUID mBanListTransactionID;
- LLUUID mAccessListTransactionID;
- std::map<LLUUID,LLAccessEntry> mAccessList;
- std::map<LLUUID,LLAccessEntry> mBanList;
- std::map<LLUUID,LLAccessEntry> mTempBanList;
- std::map<LLUUID,LLAccessEntry> mTempAccessList;
- };
- const std::string& ownership_status_to_string(LLParcel::EOwnershipStatus status);
- LLParcel::EOwnershipStatus ownership_string_to_status(const std::string& s);
- LLParcel::ECategory category_string_to_category(const std::string& s);
- const std::string& category_to_string(LLParcel::ECategory category);
- #endif