SL-17372 Fix viewer crashing when switching models
mDefaultPhysicsShapeP could reference a dead model if scene changesmeow-7.2.2
parent
08cf926d3b
commit
e0c604c5f6
|
|
@ -440,13 +440,13 @@ void LLModelPreview::rebuildUploadData()
|
|||
// That's ok, but might not what they wanted. Use default_physics_shape if found.
|
||||
std::ostringstream out;
|
||||
out << "No physics model specified for " << instance.mLabel;
|
||||
if (mDefaultPhysicsShapeP)
|
||||
if (mDefaultPhysicsShapeP.notNull())
|
||||
{
|
||||
out << " - using: " << DEFAULT_PHYSICS_MESH_NAME;
|
||||
lod_model = mDefaultPhysicsShapeP;
|
||||
}
|
||||
LL_WARNS() << out.str() << LL_ENDL;
|
||||
LLFloaterModelPreview::addStringToLog(out, !mDefaultPhysicsShapeP); // Flash log tab if no default.
|
||||
LLFloaterModelPreview::addStringToLog(out, mDefaultPhysicsShapeP.isNull()); // Flash log tab if no default.
|
||||
}
|
||||
|
||||
if (lod_model)
|
||||
|
|
@ -1076,8 +1076,9 @@ void LLModelPreview::loadModelCallback(S32 loaded_lod)
|
|||
if (loaded_lod == LLModel::LOD_PHYSICS)
|
||||
{ // Explicitly loading physics. See if there is a default mesh.
|
||||
LLMatrix4 ignored_transform; // Each mesh that uses this will supply their own.
|
||||
mDefaultPhysicsShapeP = nullptr;
|
||||
FindModel(mScene[loaded_lod], DEFAULT_PHYSICS_MESH_NAME + getLodSuffix(loaded_lod), mDefaultPhysicsShapeP, ignored_transform);
|
||||
LLModel* out_model = nullptr;
|
||||
FindModel(mScene[loaded_lod], DEFAULT_PHYSICS_MESH_NAME + getLodSuffix(loaded_lod), out_model, ignored_transform);
|
||||
mDefaultPhysicsShapeP = out_model;
|
||||
mWarnOfUnmatchedPhyicsMeshes = true;
|
||||
}
|
||||
BOOL legacyMatching = gSavedSettings.getBOOL("ImporterLegacyMatching");
|
||||
|
|
|
|||
|
|
@ -240,7 +240,7 @@ private:
|
|||
/// It is set only when the user chooses a physics shape file that contains a mesh with a name that matches DEFAULT_PHYSICS_MESH_NAME.
|
||||
/// It is reset when such a name is not found, and when resetting the modelpreview.
|
||||
/// Not read unless mWarnOfUnmatchedPhyicsMeshes is true.
|
||||
LLModel* mDefaultPhysicsShapeP{};
|
||||
LLPointer<LLModel> mDefaultPhysicsShapeP;
|
||||
|
||||
typedef enum
|
||||
{
|
||||
|
|
|
|||
Loading…
Reference in New Issue