LLVOVolume::lineSegmentIntersect crashfix. http://hg.secondlife.com/mesh-development/changeset/741175a108d1
This commit is contained in:
@@ -2414,7 +2414,7 @@ bool LLVolume::unpackVolumeFaces(std::istream& is, S32 size)
|
|||||||
LLSD mdl;
|
LLSD mdl;
|
||||||
if (!unzip_llsd(mdl, is, size))
|
if (!unzip_llsd(mdl, is, size))
|
||||||
{
|
{
|
||||||
llwarns << "not a valid mesh asset!" << llendl;
|
LL_DEBUGS("MeshStreaming") << "Failed to unzip LLSD blob for LoD, will probably fetch from sim again." << llendl;
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -2740,9 +2740,10 @@ void LLVolume::cacheOptimize()
|
|||||||
|
|
||||||
S32 LLVolume::getNumFaces() const
|
S32 LLVolume::getNumFaces() const
|
||||||
{
|
{
|
||||||
return (S32)mProfilep->mFaces.size();
|
return mIsMeshAssetLoaded ? getNumVolumeFaces() : (S32)mProfilep->mFaces.size();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void LLVolume::createVolumeFaces()
|
void LLVolume::createVolumeFaces()
|
||||||
{
|
{
|
||||||
LLMemType m1(LLMemType::MTYPE_VOLUME);
|
LLMemType m1(LLMemType::MTYPE_VOLUME);
|
||||||
|
|||||||
@@ -1440,11 +1440,16 @@ BOOL LLVOVolume::updateGeometry(LLDrawable *drawable)
|
|||||||
compiled = TRUE;
|
compiled = TRUE;
|
||||||
sNumLODChanges += new_num_faces ;
|
sNumLODChanges += new_num_faces ;
|
||||||
|
|
||||||
|
if((S32)getNumTEs() != getVolume()->getNumFaces())
|
||||||
|
{
|
||||||
|
setNumTEs(getVolume()->getNumFaces()); //mesh loading may change number of faces.
|
||||||
|
}
|
||||||
|
|
||||||
drawable->setState(LLDrawable::REBUILD_VOLUME); // for face->genVolumeTriangles()
|
drawable->setState(LLDrawable::REBUILD_VOLUME); // for face->genVolumeTriangles()
|
||||||
|
|
||||||
{
|
{
|
||||||
LLFastTimer t(LLFastTimer::FTM_GEN_TRIANGLES);
|
LLFastTimer t(LLFastTimer::FTM_GEN_TRIANGLES);
|
||||||
if (new_num_faces != old_num_faces)
|
if (new_num_faces != old_num_faces || mNumFaces != (S32)getNumTEs())
|
||||||
{
|
{
|
||||||
regenFaces();
|
regenFaces();
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user