diff options
| -rw-r--r-- | indra/newview/llviewerobject.cpp | 22 | ||||
| -rw-r--r-- | indra/newview/llviewerobject.h | 1 | 
2 files changed, 20 insertions, 3 deletions
| diff --git a/indra/newview/llviewerobject.cpp b/indra/newview/llviewerobject.cpp index 628a787b9d..d21d6f7027 100644 --- a/indra/newview/llviewerobject.cpp +++ b/indra/newview/llviewerobject.cpp @@ -1271,7 +1271,7 @@ U32 LLViewerObject::processUpdateMessage(LLMessageSystem *mesgsys,  				LL_INFOS() << "Full:" << getID() << LL_ENDL;  #endif  				//clear cost and linkset cost -				mCostStale = true; +				setObjectCostStale();  				if (isSelected())  				{  					gFloaterTools->dirty(); @@ -1827,7 +1827,7 @@ U32 LLViewerObject::processUpdateMessage(LLMessageSystem *mesgsys,  #ifdef DEBUG_UPDATE_TYPE  				LL_INFOS() << "CompFull:" << getID() << LL_ENDL;  #endif -				mCostStale = true; +				setObjectCostStale();  				if (isSelected())  				{ @@ -3781,6 +3781,16 @@ void LLViewerObject::setScale(const LLVector3 &scale, BOOL damped)  	}  } +void LLViewerObject::setObjectCostStale() +{ +	mCostStale = true; +    // *NOTE: This is harmlessly redundant for Blinn-Phong material updates, as +    // the root prim currently gets set stale anyway due to other property +    // updates. But it is needed for GLTF material ID updates. +    // -Cosmic,2023-06-27 +    getRootEdit()->mCostStale = true; +} +  void LLViewerObject::setObjectCost(F32 cost)  {  	mObjectCost = cost; @@ -6798,7 +6808,7 @@ void LLViewerObject::setPhysicsShapeType(U8 type)  	if (type != mPhysicsShapeType)  	{  	mPhysicsShapeType = type; -	mCostStale = true; +	setObjectCostStale();  }  } @@ -7305,6 +7315,12 @@ void LLViewerObject::setRenderMaterialID(S32 te_in, const LLUUID& id, bool updat              LLGLTFMaterialList::queueApply(this, te, id);          }      } + +    if (!update_server) +    { +        // Land impact may have changed +        setObjectCostStale(); +    }  }  void LLViewerObject::setRenderMaterialIDs(const LLUUID& id) diff --git a/indra/newview/llviewerobject.h b/indra/newview/llviewerobject.h index bf82c43cd3..3665c64965 100644 --- a/indra/newview/llviewerobject.h +++ b/indra/newview/llviewerobject.h @@ -637,6 +637,7 @@ public:  	std::vector<LLVector3> mUnselectedChildrenPositions ;  private: +    void setObjectCostStale();      bool isAssetInInventory(LLViewerInventoryItem* item);  	ExtraParameter* createNewParameterEntry(U16 param_type); | 
