diff options
Diffstat (limited to 'indra/llprimitive')
| -rw-r--r-- | indra/llprimitive/CMakeLists.txt | 4 | ||||
| -rw-r--r-- | indra/llprimitive/llprimitive.cpp | 17 | ||||
| -rw-r--r-- | indra/llprimitive/llprimitive.h | 2 | 
3 files changed, 19 insertions, 4 deletions
| diff --git a/indra/llprimitive/CMakeLists.txt b/indra/llprimitive/CMakeLists.txt index 68a3d54597..af78ed7936 100644 --- a/indra/llprimitive/CMakeLists.txt +++ b/indra/llprimitive/CMakeLists.txt @@ -13,11 +13,14 @@ include_directories(      ${LLMATH_INCLUDE_DIRS}      ${LLMESSAGE_INCLUDE_DIRS}      ${LLXML_INCLUDE_DIRS} +    ${LIBS_PREBUILT_DIR}/include/collada +    ${LIBS_PREBUILT_DIR}/include/collada/1.4      )  set(llprimitive_SOURCE_FILES      llmaterialtable.cpp      llmediaentry.cpp +    llmodel.cpp      llprimitive.cpp      llprimtexturelist.cpp      lltextureanim.cpp @@ -34,6 +37,7 @@ set(llprimitive_HEADER_FILES      legacy_object_types.h      llmaterialtable.h      llmediaentry.h +    llmodel.h      llprimitive.h      llprimtexturelist.h      lltextureanim.h diff --git a/indra/llprimitive/llprimitive.cpp b/indra/llprimitive/llprimitive.cpp index b75d1b0f67..732f5a698b 100644 --- a/indra/llprimitive/llprimitive.cpp +++ b/indra/llprimitive/llprimitive.cpp @@ -744,7 +744,11 @@ BOOL LLPrimitive::setVolume(const LLVolumeParams &volume_params, const S32 detai  		setNumTEs(mVolumep->getNumFaces());  		return TRUE;  	} - +	 +#if 0  +	// #if 0'd out by davep +	// this is a lot of cruft to set texture entry values that just stay the same for LOD switch  +	// or immediately get overridden by an object update message, also crashes occasionally  	U32 old_face_mask = mVolumep->mFaceMask;  	S32 face_bit = 0; @@ -942,6 +946,13 @@ BOOL LLPrimitive::setVolume(const LLVolumeParams &volume_params, const S32 detai  			setTE(te_num, *(old_tes.getTexture(face_mapping[face_bit])));  		}  	} +#else +	// build the new object +	sVolumeManager->unrefVolume(mVolumep); +	mVolumep = volumep;  + +	setNumTEs(mVolumep->getNumFaces()); +#endif  	return TRUE;  } @@ -1084,7 +1095,7 @@ BOOL LLPrimitive::packTEMessage(LLMessageSystem *mesgsys) const  	U8 packed_buffer[MAX_TE_BUFFER];  	U8 *cur_ptr = packed_buffer; -	S32 last_face_index = getNumTEs() - 1; +	S32 last_face_index = llmin((U32) getNumTEs(), MAX_TES) - 1;  	if (last_face_index > -1)  	{ @@ -1365,7 +1376,7 @@ S32 LLPrimitive::unpackTEMessage(LLDataPacker &dp)  		return retval;  	} -	face_count = getNumTEs(); +	face_count = llmin((U32) getNumTEs(), MAX_TES);  	U32 i;  	cur_ptr += unpackTEField(cur_ptr, packed_buffer+size, (U8 *)image_data, 16, face_count, MVT_LLUUID); diff --git a/indra/llprimitive/llprimitive.h b/indra/llprimitive/llprimitive.h index e67d436887..a44b9a6c1f 100644 --- a/indra/llprimitive/llprimitive.h +++ b/indra/llprimitive/llprimitive.h @@ -329,7 +329,7 @@ public:  	const LLVolume *getVolumeConst() const { return mVolumep; }		// HACK for Windoze confusion about ostream operator in LLVolume  	LLVolume *getVolume() const { return mVolumep; }  	virtual BOOL setVolume(const LLVolumeParams &volume_params, const S32 detail, bool unique_volume = false); - +	  	// Modify texture entry properties  	inline BOOL validTE(const U8 te_num) const;  	LLTextureEntry* getTE(const U8 te_num) const; | 
