diff options
Diffstat (limited to 'indra/newview/llestateinfomodel.h')
-rw-r--r-- | indra/newview/llestateinfomodel.h | 137 |
1 files changed, 91 insertions, 46 deletions
diff --git a/indra/newview/llestateinfomodel.h b/indra/newview/llestateinfomodel.h index d6f00c573c..85f9f91d86 100644 --- a/indra/newview/llestateinfomodel.h +++ b/indra/newview/llestateinfomodel.h @@ -32,7 +32,10 @@ class LLMessageSystem; #include "llsingleton.h" #include "llcoros.h" #include "lleventcoro.h" +#include "lldispatcher.h" +#include "llregionflags.h" +class LLViewerRegion; /** * Contains estate info, notifies interested parties of its changes. */ @@ -42,68 +45,110 @@ class LLEstateInfoModel : public LLSingleton<LLEstateInfoModel> LOG_CLASS(LLEstateInfoModel); public: - typedef boost::signals2::signal<void()> update_signal_t; - boost::signals2::connection setUpdateCallback(const update_signal_t::slot_type& cb); /// the model has been externally updated - boost::signals2::connection setCommitCallback(const update_signal_t::slot_type& cb); /// our changes have been applied + typedef std::vector<std::string> strings_t; + typedef boost::signals2::signal<void()> update_signal_t; + typedef boost::signals2::signal<void(U32)> update_flaged_signal_t; + typedef boost::signals2::connection connection_t; - void sendEstateInfo(); /// send estate info to the simulator + connection_t setUpdateCallback(const update_signal_t::slot_type& cb); /// the model has been externally updated + connection_t setUpdateAccessCallback(const update_flaged_signal_t::slot_type& cb); + connection_t setUpdateExperienceCallback(const update_signal_t::slot_type& cb); + connection_t setCommitCallback(const update_signal_t::slot_type& cb); /// our changes have been applied + + void setRegion(LLViewerRegion* region); + void clearRegion(); + void sendEstateInfo(); /// send estate info to the simulator // getters - bool getUseFixedSun() const; - bool getIsExternallyVisible() const; - bool getAllowDirectTeleport() const; - bool getDenyAnonymous() const; - bool getDenyAgeUnverified() const; - bool getAllowVoiceChat() const; - bool getAllowAccessOverride() const; - bool getAllowEnvironmentOverride() const; - - const std::string& getName() const { return mName; } - const LLUUID& getOwnerID() const { return mOwnerID; } - U32 getID() const { return mID; } - F32 getSunHour() const { return getUseFixedSun() ? mSunHour : 0.f; } + bool getUseFixedSun() const { return getFlag(REGION_FLAGS_SUN_FIXED); } + bool getIsExternallyVisible() const { return getFlag(REGION_FLAGS_EXTERNALLY_VISIBLE); } + bool getAllowDirectTeleport() const { return getFlag(REGION_FLAGS_ALLOW_DIRECT_TELEPORT); } + bool getDenyAnonymous() const { return getFlag(REGION_FLAGS_DENY_ANONYMOUS); } + bool getDenyAgeUnverified() const { return getFlag(REGION_FLAGS_DENY_AGEUNVERIFIED); } + bool getAllowVoiceChat() const { return getFlag(REGION_FLAGS_ALLOW_VOICE); } + bool getAllowAccessOverride() const { return getFlag(REGION_FLAGS_ALLOW_ACCESS_OVERRIDE); } + bool getAllowEnvironmentOverride() const { return getFlag(REGION_FLAGS_ALLOW_ENVIRONMENT_OVERRIDE); } + + const std::string& getName() const { return mName; } + const LLUUID& getOwnerID() const { return mOwnerID; } + U32 getID() const { return mID; } + F32 getSunHour() const { return getUseFixedSun() ? mSunHour : 0.f; } // setters - void setUseFixedSun(bool val); - void setIsExternallyVisible(bool val); - void setAllowDirectTeleport(bool val); - void setDenyAnonymous(bool val); - void setDenyAgeUnverified(bool val); - void setAllowVoiceChat(bool val); - void setAllowAccessOverride(bool val); - void setAllowEnvironmentOverride(bool val); + void setUseFixedSun(bool val) { setFlag(REGION_FLAGS_SUN_FIXED, val); } + void setIsExternallyVisible(bool val) { setFlag(REGION_FLAGS_EXTERNALLY_VISIBLE, val); } + void setAllowDirectTeleport(bool val) { setFlag(REGION_FLAGS_ALLOW_DIRECT_TELEPORT, val); } + void setDenyAnonymous(bool val) { setFlag(REGION_FLAGS_DENY_ANONYMOUS, val); } + void setDenyAgeUnverified(bool val) { setFlag(REGION_FLAGS_DENY_AGEUNVERIFIED, val); } + void setAllowVoiceChat(bool val) { setFlag(REGION_FLAGS_ALLOW_VOICE, val); } + void setAllowAccessOverride(bool val) { setFlag(REGION_FLAGS_ALLOW_ACCESS_OVERRIDE, val); } + void setAllowEnvironmentOverride(bool val) { setFlag(REGION_FLAGS_ALLOW_ENVIRONMENT_OVERRIDE, val); } - void setSunHour(F32 sun_hour) { mSunHour = sun_hour; } + void setSunHour(F32 sun_hour) { mSunHour = sun_hour; } -protected: - typedef std::vector<std::string> strings_t; + const uuid_set_t & getAllowedAgents() const { return mAllowedAgents; } + const uuid_set_t & getAllowedGroups() const { return mAllowedGroups; } + const uuid_set_t & getBannedAgents() const { return mBannedAgents; } + const uuid_set_t & getEstateManagers() const { return mEstateManagers; } + + const uuid_set_t & getAllowedExperiences() const { return mExperienceAllowed; } + const uuid_set_t & getTrustedExperiences() const { return mExperienceTrusted; } + const uuid_set_t & getBlockedExperiences() const { return mExperienceBlocked; } + + void sendEstateOwnerMessage(const std::string& request, const strings_t& strings); + + //--------------------------------------------------------------------- + /// refresh model with data from the incoming server message + void updateEstateInfo(const strings_t& strings); + void updateAccessInfo(const strings_t& strings); + void updateExperienceInfo(const strings_t& strings); + + const LLUUID & getLastInvoice() { return mRequestInvoice; } + const LLUUID & nextInvoice() { mRequestInvoice.generate(); return mRequestInvoice; } - friend class LLDispatchEstateUpdateInfo; +protected: - /// refresh model with data from the incoming server message - void update(const strings_t& strings); + void notifyCommit(); - void notifyCommit(); + virtual void initSingleton() override; private: - bool commitEstateInfoCaps(); - void commitEstateInfoDataserver(); - inline bool getFlag(U64 flag) const; - inline void setFlag(U64 flag, bool val); - U64 getFlags() const { return mFlags; } - std::string getInfoDump(); + bool commitEstateInfoCaps(); + void commitEstateInfoDataserver(); + inline bool getFlag(U64 flag) const; + inline void setFlag(U64 flag, bool val); + U64 getFlags() const { return mFlags; } + std::string getInfoDump(); // estate info - std::string mName; /// estate name - LLUUID mOwnerID; /// estate owner id - U32 mID; /// estate id - U64 mFlags; /// estate flags - F32 mSunHour; /// estate sun hour + std::string mName; /// estate name + LLUUID mOwnerID; /// estate owner id + U32 mID; /// estate id + U64 mFlags; /// estate flags + F32 mSunHour; /// estate sun hour + + uuid_set_t mAllowedAgents; + uuid_set_t mAllowedGroups; + uuid_set_t mBannedAgents; + uuid_set_t mEstateManagers; + + uuid_set_t mExperienceAllowed; + uuid_set_t mExperienceTrusted; + uuid_set_t mExperienceBlocked; + + update_signal_t mUpdateSignal; /// emitted when we receive update from sim + update_flaged_signal_t mUpdateAccess; + update_signal_t mUpdateExperience; + update_signal_t mCommitSignal; /// emitted when our update gets applied to sim + + LLDispatcher mDispatch; + LLUUID mRequestInvoice; + LLViewerRegion* mRegion; + + void commitEstateInfoCapsCoro(std::string url); - update_signal_t mUpdateSignal; /// emitted when we receive update from sim - update_signal_t mCommitSignal; /// emitted when our update gets applied to sim + static void processEstateOwnerRequest(LLMessageSystem* msg, void**); - void commitEstateInfoCapsCoro(std::string url); }; inline bool LLEstateInfoModel::getFlag(U64 flag) const |