fix for SH-1808: uploading warthog model triggers LLPhysicsDecomp::doDecompositionSingleHull warnings
SH-1333: [PUBLIC] Simple mesh causing the viewer to crashmaster
commit
a9600e5e0d
|
|
@ -1110,9 +1110,9 @@
|
|||
<key>archive</key>
|
||||
<map>
|
||||
<key>hash</key>
|
||||
<string>6e45ad68506cd1ba49fd35a3201f0478</string>
|
||||
<string>0db10480362168f075c2af0ae302cb74</string>
|
||||
<key>url</key>
|
||||
<string>http://s3-proxy.lindenlab.com/private-builds-secondlife-com/hg/repo/3p-llconvexdecomposition/rev/228821/arch/Darwin/installer/llconvexdecomposition-0.1-darwin-20110504.tar.bz2</string>
|
||||
<string>http://s3-proxy.lindenlab.com/private-builds-secondlife-com/hg/repo/3p-llconvexdecomposition/rev/234943/arch/Darwin/installer/llconvexdecomposition-0.1-darwin-20110707.tar.bz2</string>
|
||||
</map>
|
||||
<key>name</key>
|
||||
<string>darwin</string>
|
||||
|
|
@ -1122,9 +1122,9 @@
|
|||
<key>archive</key>
|
||||
<map>
|
||||
<key>hash</key>
|
||||
<string>00ff5144612c2e261a0811a4503ce3ba</string>
|
||||
<string>f3c667dc159c0537a9122ce6e72e16db</string>
|
||||
<key>url</key>
|
||||
<string>http://s3-proxy.lindenlab.com/private-builds-secondlife-com/hg/repo/3p-llconvexdecomposition/rev/228821/arch/Linux/installer/llconvexdecomposition-0.1-linux-20110504.tar.bz2</string>
|
||||
<string>http://s3-proxy.lindenlab.com/private-builds-secondlife-com/hg/repo/3p-llconvexdecomposition/rev/234943/arch/Linux/installer/llconvexdecomposition-0.1-linux-20110707.tar.bz2</string>
|
||||
</map>
|
||||
<key>name</key>
|
||||
<string>linux</string>
|
||||
|
|
@ -1134,9 +1134,9 @@
|
|||
<key>archive</key>
|
||||
<map>
|
||||
<key>hash</key>
|
||||
<string>a4635dcbbe0915ce023dd41d3b848d4c</string>
|
||||
<string>46cac4d667446bbbc9b5023f2848a5ac</string>
|
||||
<key>url</key>
|
||||
<string>http://s3-proxy.lindenlab.com/private-builds-secondlife-com/hg/repo/3p-llconvexdecomposition/rev/228821/arch/CYGWIN/installer/llconvexdecomposition-0.1-windows-20110504.tar.bz2</string>
|
||||
<string>http://s3-proxy.lindenlab.com/private-builds-secondlife-com/hg/repo/3p-llconvexdecomposition/rev/234943/arch/CYGWIN/installer/llconvexdecomposition-0.1-windows-20110707.tar.bz2</string>
|
||||
</map>
|
||||
<key>name</key>
|
||||
<string>windows</string>
|
||||
|
|
|
|||
|
|
@ -2861,24 +2861,27 @@ S32 LLPhysicsDecomp::llcdCallback(const char* status, S32 p1, S32 p2)
|
|||
return 1;
|
||||
}
|
||||
|
||||
void LLPhysicsDecomp::setMeshData(LLCDMeshData& mesh)
|
||||
void LLPhysicsDecomp::setMeshData(LLCDMeshData& mesh, bool vertex_based)
|
||||
{
|
||||
mesh.mVertexBase = mCurRequest->mPositions[0].mV;
|
||||
mesh.mVertexStrideBytes = 12;
|
||||
mesh.mNumVertices = mCurRequest->mPositions.size();
|
||||
|
||||
mesh.mIndexType = LLCDMeshData::INT_16;
|
||||
mesh.mIndexBase = &(mCurRequest->mIndices[0]);
|
||||
mesh.mIndexStrideBytes = 6;
|
||||
if(!vertex_based)
|
||||
{
|
||||
mesh.mIndexType = LLCDMeshData::INT_16;
|
||||
mesh.mIndexBase = &(mCurRequest->mIndices[0]);
|
||||
mesh.mIndexStrideBytes = 6;
|
||||
|
||||
mesh.mNumTriangles = mCurRequest->mIndices.size()/3;
|
||||
mesh.mNumTriangles = mCurRequest->mIndices.size()/3;
|
||||
}
|
||||
|
||||
if (mesh.mNumTriangles > 0 && mesh.mNumVertices > 2)
|
||||
if ((vertex_based || mesh.mNumTriangles > 0) && mesh.mNumVertices > 2)
|
||||
{
|
||||
LLCDResult ret = LLCD_OK;
|
||||
if (LLConvexDecomposition::getInstance() != NULL)
|
||||
{
|
||||
ret = LLConvexDecomposition::getInstance()->setMeshData(&mesh);
|
||||
ret = LLConvexDecomposition::getInstance()->setMeshData(&mesh, vertex_based);
|
||||
}
|
||||
|
||||
if (ret)
|
||||
|
|
@ -2902,7 +2905,7 @@ void LLPhysicsDecomp::doDecomposition()
|
|||
//load data intoLLCD
|
||||
if (stage == 0)
|
||||
{
|
||||
setMeshData(mesh);
|
||||
setMeshData(mesh, false);
|
||||
}
|
||||
|
||||
//build parameter map
|
||||
|
|
@ -3076,11 +3079,54 @@ void make_box(LLPhysicsDecomp::Request * request)
|
|||
|
||||
void LLPhysicsDecomp::doDecompositionSingleHull()
|
||||
{
|
||||
LLCDMeshData mesh;
|
||||
LLConvexDecomposition* decomp = LLConvexDecomposition::getInstance();
|
||||
|
||||
if (decomp == NULL)
|
||||
{
|
||||
//stub. do nothing.
|
||||
return;
|
||||
}
|
||||
|
||||
setMeshData(mesh);
|
||||
LLCDMeshData mesh;
|
||||
|
||||
#if 1
|
||||
setMeshData(mesh, true);
|
||||
|
||||
LLCDResult ret = decomp->buildSingleHull() ;
|
||||
if(ret)
|
||||
{
|
||||
llwarns << "Could not execute decomposition stage when attempting to create single hull." << llendl;
|
||||
make_box(mCurRequest);
|
||||
}
|
||||
|
||||
mMutex->lock();
|
||||
mCurRequest->mHull.clear();
|
||||
mCurRequest->mHull.resize(1);
|
||||
mCurRequest->mHullMesh.clear();
|
||||
mMutex->unlock();
|
||||
|
||||
std::vector<LLVector3> p;
|
||||
LLCDHull hull;
|
||||
|
||||
// if LLConvexDecomposition is a stub, num_hulls should have been set to 0 above, and we should not reach this code
|
||||
decomp->getSingleHull(&hull);
|
||||
|
||||
const F32* v = hull.mVertexBase;
|
||||
|
||||
for (S32 j = 0; j < hull.mNumVertices; ++j)
|
||||
{
|
||||
LLVector3 vert(v[0], v[1], v[2]);
|
||||
p.push_back(vert);
|
||||
v = (F32*) (((U8*) v) + hull.mVertexStrideBytes);
|
||||
}
|
||||
|
||||
mMutex->lock();
|
||||
mCurRequest->mHull[0] = p;
|
||||
mMutex->unlock();
|
||||
|
||||
|
||||
#else
|
||||
setMeshData(mesh, false);
|
||||
|
||||
//set all parameters to default
|
||||
std::map<std::string, const LLCDParam*> param_map;
|
||||
|
||||
|
|
@ -3089,23 +3135,15 @@ void LLPhysicsDecomp::doDecompositionSingleHull()
|
|||
|
||||
if (!params)
|
||||
{
|
||||
param_count = LLConvexDecomposition::getInstance()->getParameters(¶ms);
|
||||
param_count = decomp->getParameters(¶ms);
|
||||
}
|
||||
|
||||
LLConvexDecomposition* decomp = LLConvexDecomposition::getInstance();
|
||||
|
||||
if (decomp == NULL)
|
||||
{
|
||||
//stub. do nothing.
|
||||
return;
|
||||
}
|
||||
|
||||
for (S32 i = 0; i < param_count; ++i)
|
||||
{
|
||||
decomp->setParam(params[i].mName, params[i].mDefault.mIntOrEnumValue);
|
||||
}
|
||||
|
||||
const S32 STAGE_DECOMPOSE = mStageID["Decompose"];
|
||||
const S32 STAGE_DECOMPOSE = mStageID["Decompose"];
|
||||
const S32 STAGE_SIMPLIFY = mStageID["Simplify"];
|
||||
const S32 DECOMP_PREVIEW = 0;
|
||||
const S32 SIMPLIFY_RETAIN = 0;
|
||||
|
|
@ -3167,7 +3205,7 @@ void LLPhysicsDecomp::doDecompositionSingleHull()
|
|||
}
|
||||
}
|
||||
}
|
||||
|
||||
#endif
|
||||
|
||||
{
|
||||
completeCurrent();
|
||||
|
|
|
|||
|
|
@ -191,7 +191,7 @@ public:
|
|||
static S32 llcdCallback(const char*, S32, S32);
|
||||
void cancel();
|
||||
|
||||
void setMeshData(LLCDMeshData& mesh);
|
||||
void setMeshData(LLCDMeshData& mesh, bool vertex_based);
|
||||
void doDecomposition();
|
||||
void doDecompositionSingleHull();
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue