diff options
author | Dave Parks <davep@lindenlab.com> | 2010-09-28 13:45:42 -0500 |
---|---|---|
committer | Dave Parks <davep@lindenlab.com> | 2010-09-28 13:45:42 -0500 |
commit | 613894c8cca25f9fa86da7056da3594fe8771d46 (patch) | |
tree | 4667e95a7041fe8d2b08209c73a803f8370a01f1 /indra | |
parent | 7c2b9221d6678ea7a04f529efaa2e557abce504d (diff) |
SH-238 Add check boxes to upload skin weights (or not) and/or joint positions (or not).
Remove llfloaterimportcollada
Reviewed by Prep.
Diffstat (limited to 'indra')
-rw-r--r-- | indra/llprimitive/llmodel.cpp | 10 | ||||
-rw-r--r-- | indra/llprimitive/llmodel.h | 4 | ||||
-rw-r--r-- | indra/newview/llassetuploadresponders.cpp | 5 | ||||
-rw-r--r-- | indra/newview/llfloaterimportcollada.cpp | 4 | ||||
-rw-r--r-- | indra/newview/llfloaterimportcollada.h | 4 | ||||
-rw-r--r-- | indra/newview/llfloatermodelpreview.cpp | 114 | ||||
-rw-r--r-- | indra/newview/llfloatermodelpreview.h | 7 | ||||
-rw-r--r-- | indra/newview/llmeshrepository.cpp | 16 | ||||
-rw-r--r-- | indra/newview/llmeshrepository.h | 8 | ||||
-rw-r--r-- | indra/newview/llviewerfloaterreg.cpp | 2 | ||||
-rw-r--r-- | indra/newview/llviewermenufile.cpp | 16 | ||||
-rw-r--r-- | indra/newview/llvovolume.cpp | 4 | ||||
-rw-r--r-- | indra/newview/skins/default/xui/en/floater_model_preview.xml | 19 |
13 files changed, 158 insertions, 55 deletions
diff --git a/indra/llprimitive/llmodel.cpp b/indra/llprimitive/llmodel.cpp index f3f9c29157..b2f80de12a 100644 --- a/indra/llprimitive/llmodel.cpp +++ b/indra/llprimitive/llmodel.cpp @@ -1288,11 +1288,11 @@ LLModel* LLModel::loadModelFromDomMesh(domMesh *mesh) } //static -LLSD LLModel::writeModel(std::string filename, LLModel* physics, LLModel* high, LLModel* medium, LLModel* low, LLModel* impostor, LLModel::physics_shape& decomp, BOOL nowrite) +LLSD LLModel::writeModel(std::string filename, LLModel* physics, LLModel* high, LLModel* medium, LLModel* low, LLModel* impostor, LLModel::physics_shape& decomp, bool upload_skin, bool upload_joints, bool nowrite) { std::ofstream os(filename.c_str(), std::ofstream::out | std::ofstream::binary); - LLSD header = writeModel(os, physics, high, medium, low, impostor, decomp, nowrite); + LLSD header = writeModel(os, physics, high, medium, low, impostor, decomp, upload_skin, upload_joints, nowrite); os.close(); @@ -1300,7 +1300,7 @@ LLSD LLModel::writeModel(std::string filename, LLModel* physics, LLModel* high, } //static -LLSD LLModel::writeModel(std::ostream& ostr, LLModel* physics, LLModel* high, LLModel* medium, LLModel* low, LLModel* impostor, LLModel::physics_shape& decomp, BOOL nowrite) +LLSD LLModel::writeModel(std::ostream& ostr, LLModel* physics, LLModel* high, LLModel* medium, LLModel* low, LLModel* impostor, LLModel::physics_shape& decomp, bool upload_skin, bool upload_joints, bool nowrite) { LLSD mdl; @@ -1313,7 +1313,7 @@ LLSD LLModel::writeModel(std::ostream& ostr, LLModel* physics, LLModel* high, LL physics }; - bool skinning = high && !high->mSkinWeights.empty(); + bool skinning = upload_skin && high && !high->mSkinWeights.empty(); if (skinning) { //write skinning block @@ -1343,7 +1343,7 @@ LLSD LLModel::writeModel(std::ostream& ostr, LLModel* physics, LLModel* high, LL } } - if ( high->mAlternateBindMatrix.size() > 0 ) + if ( upload_joints && high->mAlternateBindMatrix.size() > 0 ) { for (U32 i = 0; i < high->mJointList.size(); ++i) { diff --git a/indra/llprimitive/llmodel.h b/indra/llprimitive/llmodel.h index ff22d39e60..e6696b984f 100644 --- a/indra/llprimitive/llmodel.h +++ b/indra/llprimitive/llmodel.h @@ -60,8 +60,8 @@ public: typedef std::vector<std::vector<LLVector3> > physics_shape; LLModel(LLVolumeParams& params, F32 detail); - static LLSD writeModel(std::string filename, LLModel* physics, LLModel* high, LLModel* medium, LLModel* low, LLModel* imposotr, LLModel::physics_shape& physics_shape, BOOL nowrite = FALSE); - static LLSD writeModel(std::ostream& ostr, LLModel* physics, LLModel* high, LLModel* medium, LLModel* low, LLModel* imposotr, LLModel::physics_shape& physics_shape, BOOL nowrite = FALSE); + static LLSD writeModel(std::string filename, LLModel* physics, LLModel* high, LLModel* medium, LLModel* low, LLModel* imposotr, LLModel::physics_shape& physics_shape, bool upload_skin, bool upload_joints, bool nowrite = FALSE); + static LLSD writeModel(std::ostream& ostr, LLModel* physics, LLModel* high, LLModel* medium, LLModel* low, LLModel* imposotr, LLModel::physics_shape& physics_shape, bool upload_skin, bool upload_joints, bool nowrite = FALSE); static LLSD writeModelToStream(std::ostream& ostr, LLSD& mdl, BOOL nowrite = FALSE); static LLModel* loadModelFromAsset(std::string filename, S32 lod); static LLModel* loadModelFromDae(std::string filename); diff --git a/indra/newview/llassetuploadresponders.cpp b/indra/newview/llassetuploadresponders.cpp index d44fb84f14..6c571c8edf 100644 --- a/indra/newview/llassetuploadresponders.cpp +++ b/indra/newview/llassetuploadresponders.cpp @@ -42,7 +42,6 @@ #include "llinventorydefines.h" #include "llinventoryobserver.h" #include "llinventorypanel.h" -#include "llfloaterimportcollada.h" #include "llpermissionsflags.h" #include "llpreviewnotecard.h" #include "llpreviewscript.h" @@ -334,7 +333,7 @@ void LLNewAgentInventoryResponder::uploadFailure(const LLSD& content) { LLAssetUploadResponder::uploadFailure(content); - LLImportColladaAssetCache::getInstance()->assetUploaded(mVFileID, content["new_asset"], FALSE); + //LLImportColladaAssetCache::getInstance()->assetUploaded(mVFileID, content["new_asset"], FALSE); } //virtual @@ -424,7 +423,7 @@ void LLNewAgentInventoryResponder::uploadComplete(const LLSD& content) userdata); } - LLImportColladaAssetCache::getInstance()->assetUploaded(mVFileID, content["new_asset"], TRUE); + //LLImportColladaAssetCache::getInstance()->assetUploaded(mVFileID, content["new_asset"], TRUE); } LLSendTexLayerResponder::LLSendTexLayerResponder(const LLSD& post_data, diff --git a/indra/newview/llfloaterimportcollada.cpp b/indra/newview/llfloaterimportcollada.cpp index 000347f68c..dd1cf67ebf 100644 --- a/indra/newview/llfloaterimportcollada.cpp +++ b/indra/newview/llfloaterimportcollada.cpp @@ -29,8 +29,11 @@ * $/LicenseInfo$ */ + #include "llviewerprecompiledheaders.h" +#if 0 //DEPRECATED + #include "llfloaterimportcollada.h" #include "dae.h" @@ -1111,3 +1114,4 @@ void LLImportCollada::onCommitCancel(LLUICtrl*, void*) getInstance()->endImport(); } +#endif diff --git a/indra/newview/llfloaterimportcollada.h b/indra/newview/llfloaterimportcollada.h index 4eb263901b..a165bb8dca 100644 --- a/indra/newview/llfloaterimportcollada.h +++ b/indra/newview/llfloaterimportcollada.h @@ -30,6 +30,8 @@ * $/LicenseInfo$ */ +#if 0 //DEPRECATED + #ifndef LL_LLFLOATERIMPORTCOLLADA_H #define LL_LLFLOATERIMPORTCOLLADA_H @@ -136,3 +138,5 @@ private: }; #endif // LL_LLFLOATERIMPORTCOLLADA_H + +#endif //DEPRECATED diff --git a/indra/newview/llfloatermodelpreview.cpp b/indra/newview/llfloatermodelpreview.cpp index 0cdd5b9898..f995ddd6d0 100644 --- a/indra/newview/llfloatermodelpreview.cpp +++ b/indra/newview/llfloatermodelpreview.cpp @@ -297,6 +297,12 @@ BOOL LLFloaterModelPreview::postBuild() childSetCommitCallback("preview_lod_combo", onPreviewLODCommit, this); + childSetCommitCallback("upload_skin", onUploadSkinCommit, this); + childSetCommitCallback("upload_joints", onUploadJointsCommit, this); + + childDisable("upload_skin"); + childDisable("upload_joints"); + const U32 width = 512; const U32 height = 512; @@ -389,6 +395,35 @@ void LLFloaterModelPreview::setLimit(S32 lod, S32 limit) } } +//static +void LLFloaterModelPreview::onUploadJointsCommit(LLUICtrl*,void* userdata) +{ + LLFloaterModelPreview *fp =(LLFloaterModelPreview *)userdata; + + if (!fp->mModelPreview) + { + return; + } + + fp->mModelPreview->refresh(); +} + +//static +void LLFloaterModelPreview::onUploadSkinCommit(LLUICtrl*,void* userdata) +{ + LLFloaterModelPreview *fp =(LLFloaterModelPreview *)userdata; + + if (!fp->mModelPreview) + { + return; + } + + fp->mModelPreview->refresh(); + fp->mModelPreview->resetPreviewTarget(); + fp->mModelPreview->clearBuffers(); +} + +//static void LLFloaterModelPreview::onPreviewLODCommit(LLUICtrl* ctrl, void* userdata) { LLFloaterModelPreview *fp =(LLFloaterModelPreview *)userdata; @@ -2031,13 +2066,15 @@ U32 LLModelPreview::calcResourceCost() LLModel::physics_shape& physics_shape = instance.mLOD[LLModel::LOD_PHYSICS] ? instance.mLOD[LLModel::LOD_PHYSICS]->mPhysicsShape : instance.mModel->mPhysicsShape; LLSD ret = LLModel::writeModel("", - instance.mLOD[4], + instance.mLOD[4], instance.mLOD[3], instance.mLOD[2], instance.mLOD[1], instance.mLOD[0], physics_shape, - TRUE); + mFMP->childGetValue("upload_skin").asBoolean(), + mFMP->childGetValue("upload_joints").asBoolean(), + true); cost += gMeshRepo.calcResourceCost(ret); @@ -2203,12 +2240,17 @@ void LLModelPreview::loadModelCallback(S32 lod) mDirty = true; + resetPreviewTarget(); + + mFMP->mLoading = FALSE; + refresh(); +} + +void LLModelPreview::resetPreviewTarget() +{ mPreviewTarget = (mModelLoader->mExtents[0] + mModelLoader->mExtents[1]) * 0.5f; mPreviewScale = (mModelLoader->mExtents[1] - mModelLoader->mExtents[0]) * 0.5f; setPreviewTarget(mPreviewScale.magVec()*2.f); - - mFMP->mLoading = FALSE; - refresh(); } void LLModelPreview::smoothNormals() @@ -2556,7 +2598,7 @@ void LLModelPreview::genLODs(S32 which_lod) if (mVertexBuffer[5].empty()) { - genBuffers(5); + genBuffers(5, false); } U32 tri_count = 0; @@ -2935,7 +2977,15 @@ void LLModelPreview::setPreviewTarget(F32 distance) mCameraOffset.clearVec(); } -void LLModelPreview::genBuffers(S32 lod) +void LLModelPreview::clearBuffers() +{ + for (U32 i = 0; i < 6; i++) + { + mVertexBuffer[i].clear(); + } +} + +void LLModelPreview::genBuffers(S32 lod, bool avatar_preview) { U32 tri_count = 0; U32 vertex_count = 0; @@ -2986,7 +3036,7 @@ void LLModelPreview::genBuffers(S32 lod) LLVertexBuffer* vb = NULL; - bool skinned = !mdl->mSkinWeights.empty(); + bool skinned = avatar_preview && !mdl->mSkinWeights.empty(); U32 mask = LLVertexBuffer::MAP_VERTEX | LLVertexBuffer::MAP_NORMAL | LLVertexBuffer::MAP_TEXCOORD0; @@ -3021,13 +3071,12 @@ void LLModelPreview::genBuffers(S32 lod) if (skinned) { - // build vertices and normals for (U32 i = 0; i < num_vertices; i++) { //find closest weight to vf.mVertices[i].mPosition LLVector3 pos(vf.mPositions[i].getF32ptr()); - LLModel::weight_list weight_list = base_mdl->getJointInfluences(pos); + const LLModel::weight_list& weight_list = base_mdl->getJointInfluences(pos); LLVector4 w(0,0,0,0); if (weight_list.size() > 4) @@ -3102,6 +3151,9 @@ BOOL LLModelPreview::render() gl_rect_2d_simple( width, height ); bool avatar_preview = false; + bool upload_skin = mFMP->childGetValue("upload_skin").asBoolean(); + bool upload_joints = mFMP->childGetValue("upload_joints").asBoolean(); + for (LLModelLoader::scene::iterator iter = mScene[mPreviewLOD].begin(); iter != mScene[mPreviewLOD].end(); ++iter) { for (LLModelLoader::model_instance_list::iterator model_iter = iter->second.begin(); model_iter != iter->second.end(); ++model_iter) @@ -3115,6 +3167,39 @@ BOOL LLModelPreview::render() } } + if (upload_skin && !avatar_preview) + { + mFMP->childSetValue("upload_skin", false); + upload_skin = false; + } + + if (!upload_skin && upload_joints) + { + mFMP->childSetValue("upload_joints", false); + upload_joints = false; + } + + if (!avatar_preview) + { + mFMP->childDisable("upload_skin"); + } + else + { + mFMP->childEnable("upload_skin"); + } + + if (!upload_skin) + { + mFMP->childDisable("upload_joints"); + } + else + { + mFMP->childEnable("upload_joints"); + } + + avatar_preview = avatar_preview && upload_skin; + + mFMP->childSetEnabled("consolidate", !avatar_preview); F32 explode = mFMP->mDecompFloater ? mFMP->mDecompFloater->childGetValue("explode").asReal() : 0.f; @@ -3171,8 +3256,8 @@ BOOL LLModelPreview::render() if (!mBaseModel.empty() && mVertexBuffer[5].empty()) { - genBuffers(-1); - genBuffers(3); + genBuffers(-1, avatar_preview); + //genBuffers(3); //genLODs(); } @@ -3194,7 +3279,7 @@ BOOL LLModelPreview::render() { if (mVertexBuffer[mPreviewLOD].empty()) { - genBuffers(mPreviewLOD); + genBuffers(mPreviewLOD, avatar_preview); } if (!avatar_preview) @@ -3527,7 +3612,8 @@ void LLFloaterModelPreview::onUpload(void* user_data) mp->mModelPreview->rebuildUploadData(); - gMeshRepo.uploadModel(mp->mModelPreview->mUploadData, mp->mModelPreview->mPreviewScale, mp->childGetValue("upload_textures").asBoolean()); + gMeshRepo.uploadModel(mp->mModelPreview->mUploadData, mp->mModelPreview->mPreviewScale, + mp->childGetValue("upload_textures").asBoolean(), mp->childGetValue("upload_skin"), mp->childGetValue("upload_joints")); mp->closeFloater(false); } diff --git a/indra/newview/llfloatermodelpreview.h b/indra/newview/llfloatermodelpreview.h index 5de3ebf5e3..08ac3873db 100644 --- a/indra/newview/llfloatermodelpreview.h +++ b/indra/newview/llfloatermodelpreview.h @@ -113,12 +113,14 @@ class LLModelPreview : public LLViewerDynamicTexture, public LLMutex LLModelPreview(S32 width, S32 height, LLFloaterModelPreview* fmp); virtual ~LLModelPreview(); + void resetPreviewTarget(); void setPreviewTarget(F32 distance); void setTexture(U32 name) { mTextureName = name; } BOOL render(); void update(); - void genBuffers(S32 lod); + void genBuffers(S32 lod, bool skinned); + void clearBuffers(); void refresh(); void rotate(F32 yaw_radians, F32 pitch_radians); void zoom(F32 zoom_amt); @@ -225,6 +227,9 @@ protected: friend class LLPhysicsDecomp; friend class LLPhysicsDecompFloater; + static void onUploadJointsCommit(LLUICtrl*,void*); + static void onUploadSkinCommit(LLUICtrl*,void*); + static void onPreviewLODCommit(LLUICtrl*,void*); static void onHighLODCommit(LLUICtrl*,void*); diff --git a/indra/newview/llmeshrepository.cpp b/indra/newview/llmeshrepository.cpp index 8381847842..508e1a9444 100644 --- a/indra/newview/llmeshrepository.cpp +++ b/indra/newview/llmeshrepository.cpp @@ -1121,11 +1121,14 @@ bool LLMeshRepoThread::decompositionReceived(const LLUUID& mesh_id, U8* data, S3 return true; } -LLMeshUploadThread::LLMeshUploadThread(LLMeshUploadThread::instance_list& data, LLVector3& scale, bool upload_textures) +LLMeshUploadThread::LLMeshUploadThread(LLMeshUploadThread::instance_list& data, LLVector3& scale, bool upload_textures, + bool upload_skin, bool upload_joints) : LLThread("mesh upload") { mInstanceList = data; mUploadTextures = upload_textures; + mUploadSkin = upload_skin; + mUploadJoints = upload_joints; mMutex = new LLMutex(NULL); mCurlRequest = NULL; mPendingConfirmations = 0; @@ -2118,9 +2121,10 @@ const LLMeshDecomposition* LLMeshRepository::getDecomposition(const LLUUID& mesh return NULL; } -void LLMeshRepository::uploadModel(std::vector<LLModelInstance>& data, LLVector3& scale, bool upload_textures) +void LLMeshRepository::uploadModel(std::vector<LLModelInstance>& data, LLVector3& scale, bool upload_textures, + bool upload_skin, bool upload_joints) { - LLMeshUploadThread* thread = new LLMeshUploadThread(data, scale, upload_textures); + LLMeshUploadThread* thread = new LLMeshUploadThread(data, scale, upload_textures, upload_skin, upload_joints); mUploads.push_back(thread); thread->start(); } @@ -2165,6 +2169,8 @@ void LLMeshUploadThread::sendCostRequest(LLMeshUploadData& data) data.mModel[LLModel::LOD_LOW], data.mModel[LLModel::LOD_IMPOSTOR], phys_shape, + mUploadSkin, + mUploadJoints, true); std::string desc = data.mBaseModel->mLabel; @@ -2248,7 +2254,9 @@ void LLMeshUploadThread::doUploadModel(LLMeshUploadData& data) data.mModel[LLModel::LOD_MEDIUM], data.mModel[LLModel::LOD_LOW], data.mModel[LLModel::LOD_IMPOSTOR], - phys_shape); + phys_shape, + mUploadSkin, + mUploadJoints); data.mAssetData = ostr.str(); diff --git a/indra/newview/llmeshrepository.h b/indra/newview/llmeshrepository.h index 7a65ea7a44..f8d2a0590c 100644 --- a/indra/newview/llmeshrepository.h +++ b/indra/newview/llmeshrepository.h @@ -334,6 +334,8 @@ public: bool mFinished; LLVector3 mOrigin; bool mUploadTextures; + bool mUploadSkin; + bool mUploadJoints; LLHost mHost; std::string mUploadObjectAssetCapability; @@ -348,7 +350,8 @@ public: std::map<LLPointer<LLViewerFetchedTexture>, LLTextureUploadData> mTextureMap; - LLMeshUploadThread(instance_list& data, LLVector3& scale, bool upload_textures); + LLMeshUploadThread(instance_list& data, LLVector3& scale, bool upload_textures, + bool upload_skin, bool upload_joints); ~LLMeshUploadThread(); void uploadTexture(LLTextureUploadData& data); @@ -403,7 +406,8 @@ public: const LLMeshSkinInfo* getSkinInfo(const LLUUID& mesh_id); const LLMeshDecomposition* getDecomposition(const LLUUID& mesh_id); - void uploadModel(std::vector<LLModelInstance>& data, LLVector3& scale, bool upload_textures); + void uploadModel(std::vector<LLModelInstance>& data, LLVector3& scale, bool upload_textures, + bool upload_skin, bool upload_joints); S32 getMeshSize(const LLUUID& mesh_id, S32 lod); diff --git a/indra/newview/llviewerfloaterreg.cpp b/indra/newview/llviewerfloaterreg.cpp index 2a62a13a3e..75df2357d0 100644 --- a/indra/newview/llviewerfloaterreg.cpp +++ b/indra/newview/llviewerfloaterreg.cpp @@ -71,7 +71,6 @@ #include "llimfloater.h" #include "llfloaterinspect.h" #include "llfloaterinventory.h" -#include "llfloaterimportcollada.h" #include "llfloaterjoystick.h" #include "llfloaterlagmeter.h" #include "llfloaterland.h" @@ -175,7 +174,6 @@ void LLViewerFloaterReg::registerFloaters() LLFloaterReg::add("hud", "floater_hud.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLFloaterHUD>); LLFloaterReg::add("impanel", "floater_im_session.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLIMFloater>); - LLFloaterReg::add("import_collada", "floater_import_collada.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLFloaterImportCollada>); LLFloaterReg::add("im_container", "floater_im_container.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLIMFloaterContainer>); LLFloaterReg::add("im_well_window", "floater_sys_well.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLIMWellWindow>); LLFloaterReg::add("incoming_call", "floater_incoming_call.xml", (LLFloaterBuildFunc)&LLFloaterReg::build<LLIncomingCallDialog>); diff --git a/indra/newview/llviewermenufile.cpp b/indra/newview/llviewermenufile.cpp index 0460ac0988..91781f27a4 100644 --- a/indra/newview/llviewermenufile.cpp +++ b/indra/newview/llviewermenufile.cpp @@ -40,7 +40,6 @@ #include "llfilepicker.h" #include "llfloaterreg.h" #include "llbuycurrencyhtml.h" -#include "llfloaterimportcollada.h" #include "llfloatermodelpreview.h" #include "llfloatersnapshot.h" #include "llimage.h" @@ -67,7 +66,6 @@ #include "lluploaddialog.h" #include "lltrans.h" #include "llfloaterbuycurrency.h" -#include "llfloaterimportcollada.h" // linden libraries #include "llassetuploadresponders.h" @@ -350,19 +348,6 @@ class LLFileUploadImage : public view_listener_t } }; -class LLFileUploadScene : public view_listener_t -{ - bool handleEvent(const LLSD& userdata) - { - std::string filename = upload_pick((void *)LLFilePicker::FFLOAD_COLLADA); - if (!filename.empty()) - { - LLImportCollada::getInstance()->importFile(filename); - } - return TRUE; - } -}; - class LLFileUploadModel : public view_listener_t { bool handleEvent(const LLSD& userdata) @@ -1402,7 +1387,6 @@ void init_menu_file() view_listener_t::addCommit(new LLFileUploadSound(), "File.UploadSound"); view_listener_t::addCommit(new LLFileUploadAnim(), "File.UploadAnim"); view_listener_t::addCommit(new LLFileUploadModel(), "File.UploadModel"); - view_listener_t::addCommit(new LLFileUploadScene(), "File.UploadScene"); view_listener_t::addCommit(new LLFileUploadBulk(), "File.UploadBulk"); view_listener_t::addCommit(new LLFileCloseWindow(), "File.CloseWindow"); view_listener_t::addCommit(new LLFileCloseAllWindows(), "File.CloseAllWindows"); diff --git a/indra/newview/llvovolume.cpp b/indra/newview/llvovolume.cpp index ed9ea2320e..30bd981aa6 100644 --- a/indra/newview/llvovolume.cpp +++ b/indra/newview/llvovolume.cpp @@ -4036,10 +4036,10 @@ void LLVolumeGeometryManager::rebuildGeom(LLSpatialGroup* group) const LLMeshSkinInfo* pSkinData = gMeshRepo.getSkinInfo( vobj->getVolume()->getParams().getSculptID() ); if ( pSkinData ) { - static const int bindCnt = pSkinData->mAlternateBindMatrix.size(); + const int bindCnt = pSkinData->mAlternateBindMatrix.size(); if ( bindCnt > 0 ) { - static const int jointCnt = pSkinData->mJointNames.size(); + const int jointCnt = pSkinData->mJointNames.size(); for ( int i=0; i<jointCnt; ++i ) { std::string lookingForJoint = pSkinData->mJointNames[i].c_str(); diff --git a/indra/newview/skins/default/xui/en/floater_model_preview.xml b/indra/newview/skins/default/xui/en/floater_model_preview.xml index de9f3ee87e..f505e99c02 100644 --- a/indra/newview/skins/default/xui/en/floater_model_preview.xml +++ b/indra/newview/skins/default/xui/en/floater_model_preview.xml @@ -134,8 +134,21 @@ <text bottom_delta="25" follows="top|left" height="15" left="10" name="physics info" width="300"> [TRIANGLES] Triangles, [HULLS] Hulls, [POINTS] Points </text> - - <text bottom_delta="20" follows="top|left" height="15" name="description_label"> + + <text bottom_delta="25" follows="top|left" height="15" left="10" name="physics info" width="300"> + Include: + </text> + + <check_box bottom_delta="20" follow="bottom|left" height="20" label="Textures" + left="15" width="125" name="upload_textures" tool_tip="Upload associated textures "/> + + <check_box bottom_delta="20" follow="bottom|left" height="20" label="Skin Weights" + left="15" width="125" name="upload_skin" tool_tip="Upload vertex skin weighting information."/> + + <check_box bottom_delta="20" follow="bottom|left" height="20" label="Joint Positions" + left="15" width="125" name="upload_joints" tool_tip="Upload joint position information (will override avatar joint positions when mesh is worn)."/> + + <text bottom_delta="35" follows="top|left" height="15" name="description_label"> Description: <!-- Info: [PRIM_COST] prim equivalents, [TEXTURES] textures. --> </text> @@ -144,8 +157,6 @@ <button bottom_delta="25" follows="bottom|left" height="20" label="Upload" left="15" name="ok_btn" width="125" tool_tip="Upload to simulator"/> - <check_box bottom_delta="0" follow="bottom|left" height="20" label="Upload Textures" - left="160" width="125" name="upload_textures" tool_tip="Upload associated textures "/> <text bottom_delta="20" left="15" follows="top|left" height="15" name="description_label" text_color="1 0.82 0.46 1"> (No charge for upload during First Look) </text> |