summaryrefslogtreecommitdiff
path: root/indra
diff options
context:
space:
mode:
authorDave Parks <davep@lindenlab.com>2010-09-28 13:45:42 -0500
committerDave Parks <davep@lindenlab.com>2010-09-28 13:45:42 -0500
commit613894c8cca25f9fa86da7056da3594fe8771d46 (patch)
tree4667e95a7041fe8d2b08209c73a803f8370a01f1 /indra
parent7c2b9221d6678ea7a04f529efaa2e557abce504d (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.cpp10
-rw-r--r--indra/llprimitive/llmodel.h4
-rw-r--r--indra/newview/llassetuploadresponders.cpp5
-rw-r--r--indra/newview/llfloaterimportcollada.cpp4
-rw-r--r--indra/newview/llfloaterimportcollada.h4
-rw-r--r--indra/newview/llfloatermodelpreview.cpp114
-rw-r--r--indra/newview/llfloatermodelpreview.h7
-rw-r--r--indra/newview/llmeshrepository.cpp16
-rw-r--r--indra/newview/llmeshrepository.h8
-rw-r--r--indra/newview/llviewerfloaterreg.cpp2
-rw-r--r--indra/newview/llviewermenufile.cpp16
-rw-r--r--indra/newview/llvovolume.cpp4
-rw-r--r--indra/newview/skins/default/xui/en/floater_model_preview.xml19
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>