Merge branch 'DRTVWR-503-maint' of https://bitbucket.org/lindenlab/viewer
commit
a879e86b8e
|
|
@ -839,6 +839,7 @@ Khyota Wulluf
|
|||
Kimar Coba
|
||||
Kithrak Kirkorian
|
||||
Kitty Barnett
|
||||
BUG-228665
|
||||
VWR-19699
|
||||
STORM-288
|
||||
STORM-799
|
||||
|
|
|
|||
|
|
@ -1112,8 +1112,6 @@ BOOL LLTextBase::handleMouseDown(S32 x, S32 y, MASK mask)
|
|||
line_start = it->mDocIndexStart;
|
||||
}
|
||||
line_end = it->mDocIndexEnd;
|
||||
|
||||
// <FS:Ansariel> FIRE-29545: Backspace not working after triple-click selecting last line
|
||||
line_end = llclamp(line_end, 0, getLength());
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -2061,41 +2061,7 @@ void LLInventoryFavoriteItemsPanel::updateFavoritesRootFolder()
|
|||
}
|
||||
/************************************************************************/
|
||||
/* Asset Pre-Filtered Inventory Panel related class */
|
||||
/* Exchanges filter's flexibility for speed of generation and */
|
||||
/* improved performance */
|
||||
/************************************************************************/
|
||||
class LLAssetFilteredInventoryPanel : public LLInventoryPanel
|
||||
{
|
||||
public:
|
||||
struct Params
|
||||
: public LLInitParam::Block<Params, LLInventoryPanel::Params>
|
||||
{
|
||||
Mandatory<std::string> filter_asset_type;
|
||||
|
||||
Params() : filter_asset_type("filter_asset_type") {}
|
||||
};
|
||||
|
||||
void initFromParams(const Params& p);
|
||||
protected:
|
||||
LLAssetFilteredInventoryPanel(const Params& p) : LLInventoryPanel(p) {}
|
||||
friend class LLUICtrlFactory;
|
||||
public:
|
||||
~LLAssetFilteredInventoryPanel() {}
|
||||
|
||||
/*virtual*/ BOOL handleDragAndDrop(S32 x, S32 y, MASK mask, BOOL drop,
|
||||
EDragAndDropType cargo_type,
|
||||
void* cargo_data,
|
||||
EAcceptance* accept,
|
||||
std::string& tooltip_msg) override;
|
||||
|
||||
protected:
|
||||
/*virtual*/ LLFolderViewItem* buildNewViews(const LLUUID& id) override;
|
||||
/*virtual*/ void itemChanged(const LLUUID& item_id, U32 mask, const LLInventoryObject* model_item) override;
|
||||
|
||||
private:
|
||||
LLAssetType::EType mAssetType;
|
||||
};
|
||||
|
||||
|
||||
void LLAssetFilteredInventoryPanel::initFromParams(const Params& p)
|
||||
{
|
||||
|
|
|
|||
|
|
@ -369,4 +369,43 @@ protected:
|
|||
boost::function<void(const std::deque<LLFolderViewItem*>& items, BOOL user_action)> mSelectionCallback;
|
||||
friend class LLUICtrlFactory;
|
||||
};
|
||||
|
||||
/************************************************************************/
|
||||
/* Asset Pre-Filtered Inventory Panel related class */
|
||||
/* Exchanges filter's flexibility for speed of generation and */
|
||||
/* improved performance */
|
||||
/************************************************************************/
|
||||
|
||||
class LLAssetFilteredInventoryPanel : public LLInventoryPanel
|
||||
{
|
||||
public:
|
||||
struct Params
|
||||
: public LLInitParam::Block<Params, LLInventoryPanel::Params>
|
||||
{
|
||||
Mandatory<std::string> filter_asset_type;
|
||||
|
||||
Params() : filter_asset_type("filter_asset_type") {}
|
||||
};
|
||||
|
||||
void initFromParams(const Params& p);
|
||||
protected:
|
||||
LLAssetFilteredInventoryPanel(const Params& p) : LLInventoryPanel(p) {}
|
||||
friend class LLUICtrlFactory;
|
||||
public:
|
||||
~LLAssetFilteredInventoryPanel() {}
|
||||
|
||||
/*virtual*/ BOOL handleDragAndDrop(S32 x, S32 y, MASK mask, BOOL drop,
|
||||
EDragAndDropType cargo_type,
|
||||
void* cargo_data,
|
||||
EAcceptance* accept,
|
||||
std::string& tooltip_msg) override;
|
||||
|
||||
protected:
|
||||
/*virtual*/ LLFolderViewItem* buildNewViews(const LLUUID& id) override;
|
||||
/*virtual*/ void itemChanged(const LLUUID& item_id, U32 mask, const LLInventoryObject* model_item) override;
|
||||
|
||||
private:
|
||||
LLAssetType::EType mAssetType;
|
||||
};
|
||||
|
||||
#endif // LL_LLINVENTORYPANEL_H
|
||||
|
|
|
|||
|
|
@ -44,9 +44,8 @@ static LLDefaultChildRegistry::Register<LLPlacesInventoryPanel> r("places_invent
|
|||
static LLPlacesInventoryBridgeBuilder PLACES_INVENTORY_BUILDER; // <ND/> const makes GCC >= 4.6 very angry about not user defined default ctor.
|
||||
|
||||
LLPlacesInventoryPanel::LLPlacesInventoryPanel(const Params& p) :
|
||||
LLInventoryPanel(p),
|
||||
LLAssetFilteredInventoryPanel(p),
|
||||
mSavedFolderState(NULL)
|
||||
|
||||
{
|
||||
mInvFVBridgeBuilder = &PLACES_INVENTORY_BUILDER;
|
||||
mSavedFolderState = new LLSaveFolderState();
|
||||
|
|
|
|||
|
|
@ -32,14 +32,16 @@
|
|||
class LLLandmarksPanel;
|
||||
class LLFolderView;
|
||||
|
||||
class LLPlacesInventoryPanel : public LLInventoryPanel
|
||||
class LLPlacesInventoryPanel : public LLAssetFilteredInventoryPanel
|
||||
{
|
||||
public:
|
||||
struct Params
|
||||
: public LLInitParam::Block<Params, LLInventoryPanel::Params>
|
||||
: public LLInitParam::Block<Params, LLAssetFilteredInventoryPanel::Params>
|
||||
{
|
||||
Params()
|
||||
{}
|
||||
{
|
||||
filter_asset_type = "landmark";
|
||||
}
|
||||
};
|
||||
|
||||
LLPlacesInventoryPanel(const Params& p);
|
||||
|
|
|
|||
|
|
@ -4546,16 +4546,15 @@ void LLVOAvatar::updateFootstepSounds()
|
|||
}
|
||||
|
||||
//------------------------------------------------------------------------
|
||||
// computeUpdatePeriodAndVisibility()
|
||||
// computeUpdatePeriod()
|
||||
// Factored out from updateCharacter()
|
||||
// Set new value for mUpdatePeriod based on distance and various other factors.
|
||||
// Returs true if character needs an update
|
||||
//------------------------------------------------------------------------
|
||||
BOOL LLVOAvatar::computeUpdatePeriodAndVisibility()
|
||||
void LLVOAvatar::computeUpdatePeriod()
|
||||
{
|
||||
bool visually_muted = isVisuallyMuted();
|
||||
BOOL is_visible = isVisible(); // includes drawable check
|
||||
if ( is_visible
|
||||
if (mDrawable.notNull()
|
||||
&& isVisible()
|
||||
&& (!isSelf() || visually_muted)
|
||||
&& !isUIAvatar()
|
||||
// <FS:Ansariel> Fix LL impostor hacking; Adjust update period for muted avatars if using no impostors
|
||||
|
|
@ -4604,12 +4603,10 @@ BOOL LLVOAvatar::computeUpdatePeriodAndVisibility()
|
|||
//nearby avatars, update the impostors more frequently.
|
||||
mUpdatePeriod = 4;
|
||||
}
|
||||
return (LLDrawable::getCurrentFrame() + mID.mData[0]) % mUpdatePeriod == 0 ? TRUE : FALSE;
|
||||
}
|
||||
else
|
||||
{
|
||||
mUpdatePeriod = 1;
|
||||
return is_visible;
|
||||
}
|
||||
|
||||
}
|
||||
|
|
@ -4994,16 +4991,17 @@ BOOL LLVOAvatar::updateCharacter(LLAgent &agent)
|
|||
// The rest should only be done occasionally for far away avatars.
|
||||
// Set mUpdatePeriod and visible based on distance and other criteria.
|
||||
//--------------------------------------------------------------------
|
||||
visible = computeUpdatePeriodAndVisibility();
|
||||
computeUpdatePeriod();
|
||||
bool needs_update = (LLDrawable::getCurrentFrame()+mID.mData[0])%mUpdatePeriod == 0;
|
||||
|
||||
//--------------------------------------------------------------------
|
||||
// Early out if not visible and not self
|
||||
// Early out if does not need update and not self
|
||||
// don't early out for your own avatar, as we rely on your animations playing reliably
|
||||
// for example, the "turn around" animation when entering customize avatar needs to trigger
|
||||
// even when your avatar is offscreen
|
||||
//--------------------------------------------------------------------
|
||||
// <FS:Ansariel> Fix impostered animation speed based on a fix by Henri Beauchamp
|
||||
//if (!visible && !isSelf())
|
||||
//if (!needs_update && !isSelf())
|
||||
//{
|
||||
// updateMotions(LLCharacter::HIDDEN_UPDATE);
|
||||
// return FALSE;
|
||||
|
|
@ -5020,7 +5018,7 @@ BOOL LLVOAvatar::updateCharacter(LLAgent &agent)
|
|||
// This was originally done in updateTimeStep(), but since that is globally disabled for now, we do it here
|
||||
mMotionController.setUpdateFactor(mUpdatePeriod);
|
||||
|
||||
if (!visible && !isSelf())
|
||||
if (!needs_update && !isSelf())
|
||||
{
|
||||
updateMotions(LLCharacter::HIDDEN_UPDATE);
|
||||
return FALSE;
|
||||
|
|
@ -5064,7 +5062,11 @@ BOOL LLVOAvatar::updateCharacter(LLAgent &agent)
|
|||
mSpeed = speed;
|
||||
|
||||
// update animations
|
||||
if (mSpecialRenderMode == 1) // Animation Preview
|
||||
if (!visible)
|
||||
{
|
||||
updateMotions(LLCharacter::HIDDEN_UPDATE);
|
||||
}
|
||||
else if (mSpecialRenderMode == 1) // Animation Preview
|
||||
{
|
||||
updateMotions(LLCharacter::FORCE_UPDATE);
|
||||
}
|
||||
|
|
@ -5098,10 +5100,13 @@ BOOL LLVOAvatar::updateCharacter(LLAgent &agent)
|
|||
// Update child joints as needed.
|
||||
mRoot->updateWorldMatrixChildren();
|
||||
|
||||
// System avatar mesh vertices need to be reskinned.
|
||||
mNeedsSkin = TRUE;
|
||||
if (visible)
|
||||
{
|
||||
// System avatar mesh vertices need to be reskinned.
|
||||
mNeedsSkin = TRUE;
|
||||
}
|
||||
|
||||
return TRUE;
|
||||
return visible;
|
||||
}
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
|
|
|
|||
|
|
@ -269,7 +269,7 @@ public:
|
|||
virtual void updateDebugText();
|
||||
virtual BOOL updateCharacter(LLAgent &agent);
|
||||
void updateFootstepSounds();
|
||||
BOOL computeUpdatePeriodAndVisibility();
|
||||
void computeUpdatePeriod();
|
||||
void updateOrientation(LLAgent &agent, F32 speed, F32 delta_time);
|
||||
void updateTimeStep();
|
||||
void updateRootPositionAndRotation(LLAgent &agent, F32 speed, bool was_sit_ground_constrained);
|
||||
|
|
|
|||
Loading…
Reference in New Issue