SL-9708
Fix knock-on from fix for SL1505 reflection matrix bug by putting back old code for setting up underwater culling planes. Fix some diffs from viewer-release.meow-7.2.2
parent
4048e28b91
commit
e5a8fb042a
File diff suppressed because it is too large
Load Diff
|
|
@ -74,311 +74,311 @@ class LLVOCachePartition;
|
|||
class LLViewerRegion: public LLCapabilityProvider // implements this interface
|
||||
{
|
||||
public:
|
||||
//MUST MATCH THE ORDER OF DECLARATION IN CONSTRUCTOR
|
||||
//MUST MATCH THE ORDER OF DECLARATION IN CONSTRUCTOR
|
||||
typedef enum
|
||||
{
|
||||
{
|
||||
PARTITION_HUD=0,
|
||||
PARTITION_TERRAIN,
|
||||
PARTITION_VOIDWATER,
|
||||
PARTITION_WATER,
|
||||
PARTITION_TREE,
|
||||
PARTITION_PARTICLE,
|
||||
PARTITION_GRASS,
|
||||
PARTITION_VOLUME,
|
||||
PARTITION_BRIDGE,
|
||||
PARTITION_HUD_PARTICLE,
|
||||
PARTITION_VO_CACHE,
|
||||
PARTITION_NONE,
|
||||
NUM_PARTITIONS
|
||||
} eObjectPartitions;
|
||||
PARTITION_TERRAIN,
|
||||
PARTITION_VOIDWATER,
|
||||
PARTITION_WATER,
|
||||
PARTITION_TREE,
|
||||
PARTITION_PARTICLE,
|
||||
PARTITION_GRASS,
|
||||
PARTITION_VOLUME,
|
||||
PARTITION_BRIDGE,
|
||||
PARTITION_HUD_PARTICLE,
|
||||
PARTITION_VO_CACHE,
|
||||
PARTITION_NONE,
|
||||
NUM_PARTITIONS
|
||||
} eObjectPartitions;
|
||||
|
||||
typedef boost::signals2::signal<void(const LLUUID& region_id)> caps_received_signal_t;
|
||||
typedef boost::signals2::signal<void(const LLUUID& region_id)> caps_received_signal_t;
|
||||
|
||||
LLViewerRegion(const U64 &handle,
|
||||
const LLHost &host,
|
||||
const U32 surface_grid_width,
|
||||
const U32 patch_grid_width,
|
||||
const F32 region_width_meters);
|
||||
~LLViewerRegion();
|
||||
LLViewerRegion(const U64 &handle,
|
||||
const LLHost &host,
|
||||
const U32 surface_grid_width,
|
||||
const U32 patch_grid_width,
|
||||
const F32 region_width_meters);
|
||||
~LLViewerRegion();
|
||||
|
||||
// Call this after you have the region name and handle.
|
||||
void loadObjectCache();
|
||||
void saveObjectCache();
|
||||
// Call this after you have the region name and handle.
|
||||
void loadObjectCache();
|
||||
void saveObjectCache();
|
||||
|
||||
void sendMessage(); // Send the current message to this region's simulator
|
||||
void sendReliableMessage(); // Send the current message to this region's simulator
|
||||
void sendMessage(); // Send the current message to this region's simulator
|
||||
void sendReliableMessage(); // Send the current message to this region's simulator
|
||||
|
||||
void setOriginGlobal(const LLVector3d &origin);
|
||||
//void setAgentOffset(const LLVector3d &offset);
|
||||
void updateRenderMatrix();
|
||||
void setOriginGlobal(const LLVector3d &origin);
|
||||
//void setAgentOffset(const LLVector3d &offset);
|
||||
void updateRenderMatrix();
|
||||
|
||||
void setAllowDamage(BOOL b) { setRegionFlag(REGION_FLAGS_ALLOW_DAMAGE, b); }
|
||||
void setAllowLandmark(BOOL b) { setRegionFlag(REGION_FLAGS_ALLOW_LANDMARK, b); }
|
||||
void setAllowSetHome(BOOL b) { setRegionFlag(REGION_FLAGS_ALLOW_SET_HOME, b); }
|
||||
void setResetHomeOnTeleport(BOOL b) { setRegionFlag(REGION_FLAGS_RESET_HOME_ON_TELEPORT, b); }
|
||||
void setSunFixed(BOOL b) { setRegionFlag(REGION_FLAGS_SUN_FIXED, b); }
|
||||
//void setBlockFly(BOOL b) { setRegionFlag(REGION_FLAGS_BLOCK_FLY, b); } Never used
|
||||
void setAllowDirectTeleport(BOOL b) { setRegionFlag(REGION_FLAGS_ALLOW_DIRECT_TELEPORT, b); }
|
||||
void setAllowDamage(BOOL b) { setRegionFlag(REGION_FLAGS_ALLOW_DAMAGE, b); }
|
||||
void setAllowLandmark(BOOL b) { setRegionFlag(REGION_FLAGS_ALLOW_LANDMARK, b); }
|
||||
void setAllowSetHome(BOOL b) { setRegionFlag(REGION_FLAGS_ALLOW_SET_HOME, b); }
|
||||
void setResetHomeOnTeleport(BOOL b) { setRegionFlag(REGION_FLAGS_RESET_HOME_ON_TELEPORT, b); }
|
||||
void setSunFixed(BOOL b) { setRegionFlag(REGION_FLAGS_SUN_FIXED, b); }
|
||||
//void setBlockFly(BOOL b) { setRegionFlag(REGION_FLAGS_BLOCK_FLY, b); } Never used
|
||||
void setAllowDirectTeleport(BOOL b) { setRegionFlag(REGION_FLAGS_ALLOW_DIRECT_TELEPORT, b); }
|
||||
|
||||
|
||||
inline BOOL getAllowDamage() const;
|
||||
inline BOOL getAllowLandmark() const;
|
||||
inline BOOL getAllowSetHome() const;
|
||||
inline BOOL getResetHomeOnTeleport() const;
|
||||
inline BOOL getSunFixed() const;
|
||||
inline BOOL getBlockFly() const;
|
||||
inline BOOL getAllowDirectTeleport() const;
|
||||
inline BOOL isPrelude() const;
|
||||
inline BOOL getAllowTerraform() const;
|
||||
inline BOOL getRestrictPushObject() const;
|
||||
inline BOOL getReleaseNotesRequested() const;
|
||||
inline BOOL getAllowDamage() const;
|
||||
inline BOOL getAllowLandmark() const;
|
||||
inline BOOL getAllowSetHome() const;
|
||||
inline BOOL getResetHomeOnTeleport() const;
|
||||
inline BOOL getSunFixed() const;
|
||||
inline BOOL getBlockFly() const;
|
||||
inline BOOL getAllowDirectTeleport() const;
|
||||
inline BOOL isPrelude() const;
|
||||
inline BOOL getAllowTerraform() const;
|
||||
inline BOOL getRestrictPushObject() const;
|
||||
inline BOOL getReleaseNotesRequested() const;
|
||||
|
||||
bool isAlive(); // can become false if circuit disconnects
|
||||
bool isAlive(); // can become false if circuit disconnects
|
||||
|
||||
void setWaterHeight(F32 water_level);
|
||||
F32 getWaterHeight() const;
|
||||
void setWaterHeight(F32 water_level);
|
||||
F32 getWaterHeight() const;
|
||||
|
||||
BOOL isVoiceEnabled() const;
|
||||
BOOL isVoiceEnabled() const;
|
||||
|
||||
void setBillableFactor(F32 billable_factor) { mBillableFactor = billable_factor; }
|
||||
F32 getBillableFactor() const { return mBillableFactor; }
|
||||
void setBillableFactor(F32 billable_factor) { mBillableFactor = billable_factor; }
|
||||
F32 getBillableFactor() const { return mBillableFactor; }
|
||||
|
||||
// Maximum number of primitives allowed, regardless of object
|
||||
// bonus factor.
|
||||
U32 getMaxTasks() const { return mMaxTasks; }
|
||||
void setMaxTasks(U32 max_tasks) { mMaxTasks = max_tasks; }
|
||||
// Maximum number of primitives allowed, regardless of object
|
||||
// bonus factor.
|
||||
U32 getMaxTasks() const { return mMaxTasks; }
|
||||
void setMaxTasks(U32 max_tasks) { mMaxTasks = max_tasks; }
|
||||
|
||||
// Draw lines in the dirt showing ownership. Return number of
|
||||
// vertices drawn.
|
||||
S32 renderPropertyLines();
|
||||
// Draw lines in the dirt showing ownership. Return number of
|
||||
// vertices drawn.
|
||||
S32 renderPropertyLines();
|
||||
|
||||
// Call this whenever you change the height data in the region.
|
||||
// (Automatically called by LLSurfacePatch's update routine)
|
||||
void dirtyHeights();
|
||||
// Call this whenever you change the height data in the region.
|
||||
// (Automatically called by LLSurfacePatch's update routine)
|
||||
void dirtyHeights();
|
||||
|
||||
LLViewerParcelOverlay *getParcelOverlay() const
|
||||
LLViewerParcelOverlay *getParcelOverlay() const
|
||||
{ return mParcelOverlay; }
|
||||
|
||||
inline void setRegionFlag(U64 flag, BOOL on);
|
||||
inline BOOL getRegionFlag(U64 flag) const;
|
||||
void setRegionFlags(U64 flags);
|
||||
U64 getRegionFlags() const { return mRegionFlags; }
|
||||
inline void setRegionFlag(U64 flag, BOOL on);
|
||||
inline BOOL getRegionFlag(U64 flag) const;
|
||||
void setRegionFlags(U64 flags);
|
||||
U64 getRegionFlags() const { return mRegionFlags; }
|
||||
|
||||
inline void setRegionProtocol(U64 protocol, BOOL on);
|
||||
BOOL getRegionProtocol(U64 protocol) const;
|
||||
void setRegionProtocols(U64 protocols) { mRegionProtocols = protocols; }
|
||||
U64 getRegionProtocols() const { return mRegionProtocols; }
|
||||
inline void setRegionProtocol(U64 protocol, BOOL on);
|
||||
BOOL getRegionProtocol(U64 protocol) const;
|
||||
void setRegionProtocols(U64 protocols) { mRegionProtocols = protocols; }
|
||||
U64 getRegionProtocols() const { return mRegionProtocols; }
|
||||
|
||||
void setTimeDilation(F32 time_dilation);
|
||||
F32 getTimeDilation() const { return mTimeDilation; }
|
||||
void setTimeDilation(F32 time_dilation);
|
||||
F32 getTimeDilation() const { return mTimeDilation; }
|
||||
|
||||
// Origin height is at zero.
|
||||
const LLVector3d &getOriginGlobal() const;
|
||||
LLVector3 getOriginAgent() const;
|
||||
// Origin height is at zero.
|
||||
const LLVector3d &getOriginGlobal() const;
|
||||
LLVector3 getOriginAgent() const;
|
||||
|
||||
// Center is at the height of the water table.
|
||||
const LLVector3d &getCenterGlobal() const;
|
||||
LLVector3 getCenterAgent() const;
|
||||
// Center is at the height of the water table.
|
||||
const LLVector3d &getCenterGlobal() const;
|
||||
LLVector3 getCenterAgent() const;
|
||||
|
||||
void setRegionNameAndZone(const std::string& name_and_zone);
|
||||
const std::string& getName() const { return mName; }
|
||||
const std::string& getZoning() const { return mZoning; }
|
||||
void setRegionNameAndZone(const std::string& name_and_zone);
|
||||
const std::string& getName() const { return mName; }
|
||||
const std::string& getZoning() const { return mZoning; }
|
||||
|
||||
void setOwner(const LLUUID& owner_id);
|
||||
const LLUUID& getOwner() const;
|
||||
void setOwner(const LLUUID& owner_id);
|
||||
const LLUUID& getOwner() const;
|
||||
|
||||
// Is the current agent on the estate manager list for this region?
|
||||
void setIsEstateManager(BOOL b) { mIsEstateManager = b; }
|
||||
BOOL isEstateManager() const { return mIsEstateManager; }
|
||||
BOOL canManageEstate() const;
|
||||
// Is the current agent on the estate manager list for this region?
|
||||
void setIsEstateManager(BOOL b) { mIsEstateManager = b; }
|
||||
BOOL isEstateManager() const { return mIsEstateManager; }
|
||||
BOOL canManageEstate() const;
|
||||
|
||||
void setSimAccess(U8 sim_access) { mSimAccess = sim_access; }
|
||||
U8 getSimAccess() const { return mSimAccess; }
|
||||
const std::string getSimAccessString() const;
|
||||
void setSimAccess(U8 sim_access) { mSimAccess = sim_access; }
|
||||
U8 getSimAccess() const { return mSimAccess; }
|
||||
const std::string getSimAccessString() const;
|
||||
|
||||
// Homestead-related getters; there are no setters as nobody should be
|
||||
// setting them other than the individual message handler which is a member
|
||||
S32 getSimClassID() const { return mClassID; }
|
||||
S32 getSimCPURatio() const { return mCPURatio; }
|
||||
const std::string& getSimColoName() const { return mColoName; }
|
||||
const std::string& getSimProductSKU() const { return mProductSKU; }
|
||||
std::string getLocalizedSimProductName() const;
|
||||
// Homestead-related getters; there are no setters as nobody should be
|
||||
// setting them other than the individual message handler which is a member
|
||||
S32 getSimClassID() const { return mClassID; }
|
||||
S32 getSimCPURatio() const { return mCPURatio; }
|
||||
const std::string& getSimColoName() const { return mColoName; }
|
||||
const std::string& getSimProductSKU() const { return mProductSKU; }
|
||||
std::string getLocalizedSimProductName() const;
|
||||
|
||||
// Returns "Sandbox", "Expensive", etc.
|
||||
static std::string regionFlagsToString(U64 flags);
|
||||
// Returns "Sandbox", "Expensive", etc.
|
||||
static std::string regionFlagsToString(U64 flags);
|
||||
|
||||
// Returns translated version of "Mature", "PG", "Adult", etc.
|
||||
static std::string accessToString(U8 sim_access);
|
||||
// Returns translated version of "Mature", "PG", "Adult", etc.
|
||||
static std::string accessToString(U8 sim_access);
|
||||
|
||||
// Returns "M", "PG", "A" etc.
|
||||
static std::string accessToShortString(U8 sim_access);
|
||||
static U8 shortStringToAccess(const std::string &sim_access);
|
||||
// Returns "M", "PG", "A" etc.
|
||||
static std::string accessToShortString(U8 sim_access);
|
||||
static U8 shortStringToAccess(const std::string &sim_access);
|
||||
|
||||
// Return access icon name
|
||||
static std::string getAccessIcon(U8 sim_access);
|
||||
// Return access icon name
|
||||
static std::string getAccessIcon(U8 sim_access);
|
||||
|
||||
// helper function which just makes sure all interested parties
|
||||
// can process the message.
|
||||
static void processRegionInfo(LLMessageSystem* msg, void**);
|
||||
// helper function which just makes sure all interested parties
|
||||
// can process the message.
|
||||
static void processRegionInfo(LLMessageSystem* msg, void**);
|
||||
|
||||
//check if the viewer camera is static
|
||||
static BOOL isViewerCameraStatic();
|
||||
static void calcNewObjectCreationThrottle();
|
||||
//check if the viewer camera is static
|
||||
static BOOL isViewerCameraStatic();
|
||||
static void calcNewObjectCreationThrottle();
|
||||
|
||||
void setCacheID(const LLUUID& id);
|
||||
void setCacheID(const LLUUID& id);
|
||||
|
||||
F32 getWidth() const { return mWidth; }
|
||||
F32 getWidth() const { return mWidth; }
|
||||
|
||||
void idleUpdate(F32 max_update_time);
|
||||
void lightIdleUpdate();
|
||||
bool addVisibleGroup(LLViewerOctreeGroup* group);
|
||||
void addVisibleChildCacheEntry(LLVOCacheEntry* parent, LLVOCacheEntry* child);
|
||||
void addActiveCacheEntry(LLVOCacheEntry* entry);
|
||||
void idleUpdate(F32 max_update_time);
|
||||
void lightIdleUpdate();
|
||||
bool addVisibleGroup(LLViewerOctreeGroup* group);
|
||||
void addVisibleChildCacheEntry(LLVOCacheEntry* parent, LLVOCacheEntry* child);
|
||||
void addActiveCacheEntry(LLVOCacheEntry* entry);
|
||||
void removeActiveCacheEntry(LLVOCacheEntry* entry, LLDrawable* drawablep);
|
||||
void killCacheEntry(U32 local_id); //physically delete the cache entry
|
||||
void killCacheEntry(U32 local_id); //physically delete the cache entry
|
||||
|
||||
// Like idleUpdate, but forces everything to complete regardless of
|
||||
// how long it takes.
|
||||
void forceUpdate();
|
||||
// Like idleUpdate, but forces everything to complete regardless of
|
||||
// how long it takes.
|
||||
void forceUpdate();
|
||||
|
||||
void connectNeighbor(LLViewerRegion *neighborp, U32 direction);
|
||||
void connectNeighbor(LLViewerRegion *neighborp, U32 direction);
|
||||
|
||||
void updateNetStats();
|
||||
void updateNetStats();
|
||||
|
||||
U32 getPacketsLost() const;
|
||||
U32 getPacketsLost() const;
|
||||
|
||||
S32 getHttpResponderID() const;
|
||||
S32 getHttpResponderID() const;
|
||||
|
||||
// Get/set named capability URLs for this region.
|
||||
void setSeedCapability(const std::string& url);
|
||||
S32 getNumSeedCapRetries();
|
||||
void setCapability(const std::string& name, const std::string& url);
|
||||
void setCapabilityDebug(const std::string& name, const std::string& url);
|
||||
bool isCapabilityAvailable(const std::string& name) const;
|
||||
// implements LLCapabilityProvider
|
||||
// Get/set named capability URLs for this region.
|
||||
void setSeedCapability(const std::string& url);
|
||||
S32 getNumSeedCapRetries();
|
||||
void setCapability(const std::string& name, const std::string& url);
|
||||
void setCapabilityDebug(const std::string& name, const std::string& url);
|
||||
bool isCapabilityAvailable(const std::string& name) const;
|
||||
// implements LLCapabilityProvider
|
||||
virtual std::string getCapability(const std::string& name) const;
|
||||
std::string getCapabilityDebug(const std::string& name) const;
|
||||
|
||||
|
||||
// has region received its final (not seed) capability list?
|
||||
bool capabilitiesReceived() const;
|
||||
void setCapabilitiesReceived(bool received);
|
||||
boost::signals2::connection setCapabilitiesReceivedCallback(const caps_received_signal_t::slot_type& cb);
|
||||
// has region received its final (not seed) capability list?
|
||||
bool capabilitiesReceived() const;
|
||||
void setCapabilitiesReceived(bool received);
|
||||
boost::signals2::connection setCapabilitiesReceivedCallback(const caps_received_signal_t::slot_type& cb);
|
||||
|
||||
static bool isSpecialCapabilityName(const std::string &name);
|
||||
void logActiveCapabilities() const;
|
||||
static bool isSpecialCapabilityName(const std::string &name);
|
||||
void logActiveCapabilities() const;
|
||||
|
||||
/// implements LLCapabilityProvider
|
||||
/*virtual*/ const LLHost& getHost() const;
|
||||
const U64 &getHandle() const { return mHandle; }
|
||||
/*virtual*/ const LLHost& getHost() const;
|
||||
const U64 &getHandle() const { return mHandle; }
|
||||
|
||||
LLSurface &getLand() const;
|
||||
LLSurface &getLand() const;
|
||||
|
||||
// set and get the region id
|
||||
const LLUUID& getRegionID() const;
|
||||
void setRegionID(const LLUUID& region_id);
|
||||
// set and get the region id
|
||||
const LLUUID& getRegionID() const;
|
||||
void setRegionID(const LLUUID& region_id);
|
||||
|
||||
BOOL pointInRegionGlobal(const LLVector3d &point_global) const;
|
||||
LLVector3 getPosRegionFromGlobal(const LLVector3d &point_global) const;
|
||||
LLVector3 getPosRegionFromAgent(const LLVector3 &agent_pos) const;
|
||||
LLVector3 getPosAgentFromRegion(const LLVector3 ®ion_pos) const;
|
||||
LLVector3d getPosGlobalFromRegion(const LLVector3 &offset) const;
|
||||
BOOL pointInRegionGlobal(const LLVector3d &point_global) const;
|
||||
LLVector3 getPosRegionFromGlobal(const LLVector3d &point_global) const;
|
||||
LLVector3 getPosRegionFromAgent(const LLVector3 &agent_pos) const;
|
||||
LLVector3 getPosAgentFromRegion(const LLVector3 ®ion_pos) const;
|
||||
LLVector3d getPosGlobalFromRegion(const LLVector3 &offset) const;
|
||||
|
||||
LLVLComposition *getComposition() const;
|
||||
F32 getCompositionXY(const S32 x, const S32 y) const;
|
||||
LLVLComposition *getComposition() const;
|
||||
F32 getCompositionXY(const S32 x, const S32 y) const;
|
||||
|
||||
BOOL isOwnedSelf(const LLVector3& pos);
|
||||
BOOL isOwnedSelf(const LLVector3& pos);
|
||||
|
||||
// Owned by a group you belong to? (officer OR member)
|
||||
BOOL isOwnedGroup(const LLVector3& pos);
|
||||
// Owned by a group you belong to? (officer OR member)
|
||||
BOOL isOwnedGroup(const LLVector3& pos);
|
||||
|
||||
// deal with map object updates in the world.
|
||||
void updateCoarseLocations(LLMessageSystem* msg);
|
||||
// deal with map object updates in the world.
|
||||
void updateCoarseLocations(LLMessageSystem* msg);
|
||||
|
||||
F32 getLandHeightRegion(const LLVector3& region_pos);
|
||||
F32 getLandHeightRegion(const LLVector3& region_pos);
|
||||
|
||||
U8 getCentralBakeVersion() { return mCentralBakeVersion; }
|
||||
U8 getCentralBakeVersion() { return mCentralBakeVersion; }
|
||||
|
||||
void getInfo(LLSD& info);
|
||||
void getInfo(LLSD& info);
|
||||
|
||||
bool meshRezEnabled() const;
|
||||
bool meshUploadEnabled() const;
|
||||
bool meshRezEnabled() const;
|
||||
bool meshUploadEnabled() const;
|
||||
|
||||
// has region received its simulator features list? Requires an additional query after caps received.
|
||||
void setSimulatorFeaturesReceived(bool);
|
||||
bool simulatorFeaturesReceived() const;
|
||||
boost::signals2::connection setSimulatorFeaturesReceivedCallback(const caps_received_signal_t::slot_type& cb);
|
||||
// has region received its simulator features list? Requires an additional query after caps received.
|
||||
void setSimulatorFeaturesReceived(bool);
|
||||
bool simulatorFeaturesReceived() const;
|
||||
boost::signals2::connection setSimulatorFeaturesReceivedCallback(const caps_received_signal_t::slot_type& cb);
|
||||
|
||||
void getSimulatorFeatures(LLSD& info) const;
|
||||
void setSimulatorFeatures(const LLSD& info);
|
||||
void setSimulatorFeatures(const LLSD& info);
|
||||
|
||||
|
||||
bool dynamicPathfindingEnabled() const;
|
||||
bool dynamicPathfindingEnabled() const;
|
||||
|
||||
bool avatarHoverHeightEnabled() const;
|
||||
bool avatarHoverHeightEnabled() const;
|
||||
|
||||
typedef enum
|
||||
{
|
||||
CACHE_MISS_TYPE_FULL = 0,
|
||||
CACHE_MISS_TYPE_CRC,
|
||||
CACHE_MISS_TYPE_NONE
|
||||
} eCacheMissType;
|
||||
typedef enum
|
||||
{
|
||||
CACHE_MISS_TYPE_FULL = 0,
|
||||
CACHE_MISS_TYPE_CRC,
|
||||
CACHE_MISS_TYPE_NONE
|
||||
} eCacheMissType;
|
||||
|
||||
typedef enum
|
||||
{
|
||||
CACHE_UPDATE_DUPE = 0,
|
||||
CACHE_UPDATE_CHANGED,
|
||||
CACHE_UPDATE_ADDED,
|
||||
CACHE_UPDATE_REPLACED
|
||||
} eCacheUpdateResult;
|
||||
typedef enum
|
||||
{
|
||||
CACHE_UPDATE_DUPE = 0,
|
||||
CACHE_UPDATE_CHANGED,
|
||||
CACHE_UPDATE_ADDED,
|
||||
CACHE_UPDATE_REPLACED
|
||||
} eCacheUpdateResult;
|
||||
|
||||
// handle a full update message
|
||||
eCacheUpdateResult cacheFullUpdate(LLDataPackerBinaryBuffer &dp, U32 flags);
|
||||
// handle a full update message
|
||||
eCacheUpdateResult cacheFullUpdate(LLDataPackerBinaryBuffer &dp, U32 flags);
|
||||
eCacheUpdateResult cacheFullUpdate(LLViewerObject* objectp, LLDataPackerBinaryBuffer &dp, U32 flags);
|
||||
LLVOCacheEntry* getCacheEntryForOctree(U32 local_id);
|
||||
LLVOCacheEntry* getCacheEntry(U32 local_id, bool valid = true);
|
||||
bool probeCache(U32 local_id, U32 crc, U32 flags, U8 &cache_miss_type);
|
||||
U64 getRegionCacheHitCount() { return mRegionCacheHitCount; }
|
||||
U64 getRegionCacheMissCount() { return mRegionCacheMissCount; }
|
||||
void requestCacheMisses();
|
||||
void addCacheMissFull(const U32 local_id);
|
||||
//update object cache if the object receives a full-update or terse update
|
||||
LLViewerObject* updateCacheEntry(U32 local_id, LLViewerObject* objectp, U32 update_type);
|
||||
void findOrphans(U32 parent_id);
|
||||
void clearCachedVisibleObjects();
|
||||
void dumpCache();
|
||||
LLVOCacheEntry* getCacheEntryForOctree(U32 local_id);
|
||||
LLVOCacheEntry* getCacheEntry(U32 local_id, bool valid = true);
|
||||
bool probeCache(U32 local_id, U32 crc, U32 flags, U8 &cache_miss_type);
|
||||
U64 getRegionCacheHitCount() { return mRegionCacheHitCount; }
|
||||
U64 getRegionCacheMissCount() { return mRegionCacheMissCount; }
|
||||
void requestCacheMisses();
|
||||
void addCacheMissFull(const U32 local_id);
|
||||
//update object cache if the object receives a full-update or terse update
|
||||
LLViewerObject* updateCacheEntry(U32 local_id, LLViewerObject* objectp, U32 update_type);
|
||||
void findOrphans(U32 parent_id);
|
||||
void clearCachedVisibleObjects();
|
||||
void dumpCache();
|
||||
|
||||
void unpackRegionHandshake();
|
||||
void unpackRegionHandshake();
|
||||
|
||||
void calculateCenterGlobal();
|
||||
void calculateCameraDistance();
|
||||
void calculateCenterGlobal();
|
||||
void calculateCameraDistance();
|
||||
|
||||
friend std::ostream& operator<<(std::ostream &s, const LLViewerRegion ®ion);
|
||||
friend std::ostream& operator<<(std::ostream &s, const LLViewerRegion ®ion);
|
||||
/// implements LLCapabilityProvider
|
||||
virtual std::string getDescription() const;
|
||||
std::string getViewerAssetUrl() const { return mViewerAssetUrl; }
|
||||
|
||||
U32 getNumOfVisibleGroups() const;
|
||||
U32 getNumOfActiveCachedObjects() const;
|
||||
LLSpatialPartition* getSpatialPartition(U32 type);
|
||||
LLVOCachePartition* getVOCachePartition();
|
||||
U32 getNumOfVisibleGroups() const;
|
||||
U32 getNumOfActiveCachedObjects() const;
|
||||
LLSpatialPartition* getSpatialPartition(U32 type);
|
||||
LLVOCachePartition* getVOCachePartition();
|
||||
|
||||
bool objectIsReturnable(const LLVector3& pos, const std::vector<LLBBox>& boxes) const;
|
||||
bool objectIsReturnable(const LLVector3& pos, const std::vector<LLBBox>& boxes) const;
|
||||
bool childrenObjectReturnable( const std::vector<LLBBox>& boxes ) const;
|
||||
bool objectsCrossParcel(const std::vector<LLBBox>& boxes) const;
|
||||
bool objectsCrossParcel(const std::vector<LLBBox>& boxes) const;
|
||||
|
||||
void getNeighboringRegions( std::vector<LLViewerRegion*>& uniqueRegions );
|
||||
void getNeighboringRegionsStatus( std::vector<S32>& regions );
|
||||
const LLViewerRegionImpl * getRegionImpl() const { return mImpl; }
|
||||
LLViewerRegionImpl * getRegionImplNC() { return mImpl; }
|
||||
const LLViewerRegionImpl * getRegionImpl() const { return mImpl; }
|
||||
LLViewerRegionImpl * getRegionImplNC() { return mImpl; }
|
||||
|
||||
// implements the materials capability throttle
|
||||
bool materialsCapThrottled() const { return !mMaterialsCapThrottleTimer.hasExpired(); }
|
||||
void resetMaterialsCapThrottle();
|
||||
// implements the materials capability throttle
|
||||
bool materialsCapThrottled() const { return !mMaterialsCapThrottleTimer.hasExpired(); }
|
||||
void resetMaterialsCapThrottle();
|
||||
|
||||
U32 getMaxMaterialsPerTransaction() const;
|
||||
U32 getMaxMaterialsPerTransaction() const;
|
||||
|
||||
void removeFromCreatedList(U32 local_id);
|
||||
void removeFromCreatedList(U32 local_id);
|
||||
void addToCreatedList(U32 local_id);
|
||||
|
||||
BOOL isPaused() const {return mPaused;}
|
||||
|
|
|
|||
|
|
@ -2194,8 +2194,9 @@ bool LLVOVolume::notifyAboutMissingAsset(LLViewerTexture *texture)
|
|||
|
||||
mat->setSpecularID(LLUUID::null);
|
||||
} break;
|
||||
default:
|
||||
break;
|
||||
case LLRender::NUM_TEXTURE_CHANNELS:
|
||||
//nothing to do, make compiler happy
|
||||
break;
|
||||
} //switch
|
||||
} //for
|
||||
|
||||
|
|
|
|||
|
|
@ -9818,18 +9818,25 @@ void LLPipeline::generateWaterReflection(LLCamera& camera_in)
|
|||
|
||||
camera.setOriginAndLookAt(reflect_origin, LLVector3::z_axis, reflect_interest_point);
|
||||
|
||||
F32 to_clip = fabsf(camera_height-water_height);
|
||||
F32 pad = -to_clip*0.05f; //amount to "pad" clip plane by
|
||||
|
||||
//plane params
|
||||
LLVector3 pnorm;
|
||||
F32 pd;
|
||||
|
||||
S32 water_clip = 0;
|
||||
if (!LLViewerCamera::getInstance()->cameraUnderWater())
|
||||
{ //camera is above water, clip plane points up
|
||||
pnorm.setVec(0,0,1);
|
||||
pd = -water_height;
|
||||
plane.setVec(pnorm, -distance_to_water);
|
||||
water_clip = -1;
|
||||
}
|
||||
else
|
||||
{ //camera is below water, clip plane points down
|
||||
pnorm = LLVector3(0,0,-1);
|
||||
pd = water_height;
|
||||
plane.setVec(pnorm, distance_to_water);
|
||||
water_clip = 1;
|
||||
}
|
||||
|
|
@ -10024,7 +10031,7 @@ void LLPipeline::generateWaterReflection(LLCamera& camera_in)
|
|||
{
|
||||
//clip out geometry on the same side of water as the camera
|
||||
mat = get_current_modelview();
|
||||
LLPlane plane(-pnorm, -distance_to_water);
|
||||
LLPlane plane(-pnorm, -(pd+pad));
|
||||
|
||||
LLGLUserClipPlane clip_plane(plane, mat, projection);
|
||||
static LLCullResult result;
|
||||
|
|
@ -10089,7 +10096,7 @@ void LLPipeline::generateWaterReflection(LLCamera& camera_in)
|
|||
gPipeline.popRenderTypeMask();
|
||||
LLDrawPoolWater::sNeedsReflectionUpdate = FALSE;
|
||||
LLDrawPoolWater::sNeedsDistortionUpdate = FALSE;
|
||||
LLPlane npnorm(-pnorm, -distance_to_water);
|
||||
LLPlane npnorm(-pnorm, -pd);
|
||||
LLViewerCamera::getInstance()->setUserClipPlane(npnorm);
|
||||
|
||||
LLGLState::checkStates();
|
||||
|
|
|
|||
Loading…
Reference in New Issue