summaryrefslogtreecommitdiff
path: root/indra/newview
diff options
context:
space:
mode:
Diffstat (limited to 'indra/newview')
-rwxr-xr-xindra/newview/llfloatermodelpreview.cpp14
-rwxr-xr-xindra/newview/llmeshrepository.cpp82
-rwxr-xr-xindra/newview/llmeshrepository.h2
-rwxr-xr-x[-rw-r--r--]indra/newview/skins/default/xui/en/floater_model_preview.xml12
4 files changed, 83 insertions, 27 deletions
diff --git a/indra/newview/llfloatermodelpreview.cpp b/indra/newview/llfloatermodelpreview.cpp
index 06f3083349..0748ed8039 100755
--- a/indra/newview/llfloatermodelpreview.cpp
+++ b/indra/newview/llfloatermodelpreview.cpp
@@ -101,7 +101,9 @@
#include "llcallbacklist.h"
#include "llviewerobjectlist.h"
#include "llanimationstates.h"
+#include "llviewernetwork.h"
#include "glod/glod.h"
+#include <boost/algorithm/string.hpp>
const S32 SLM_SUPPORTED_VERSION = 2;
@@ -476,6 +478,18 @@ BOOL LLFloaterModelPreview::postBuild()
text->setMouseDownCallback(boost::bind(&LLModelPreview::setPreviewLOD, mModelPreview, i));
}
}
+ std::string current_grid = LLGridManager::getInstance()->getGridLabel();
+ std::transform(current_grid.begin(),current_grid.end(),current_grid.begin(),::tolower);
+ std::string validate_url;
+ if (current_grid == "agni")
+ {
+ validate_url = "http://secondlife.com/my/account/mesh.php";
+ }
+ else
+ {
+ validate_url = llformat("http://secondlife.%s.lindenlab.com/my/account/mesh.php",current_grid.c_str());
+ }
+ getChild<LLTextBox>("warning_message")->setTextArg("[VURL]", validate_url);
mUploadBtn = getChild<LLButton>("ok_btn");
mCalculateBtn = getChild<LLButton>("calculate_btn");
diff --git a/indra/newview/llmeshrepository.cpp b/indra/newview/llmeshrepository.cpp
index 6e67e580b4..93a6a2a078 100755
--- a/indra/newview/llmeshrepository.cpp
+++ b/indra/newview/llmeshrepository.cpp
@@ -2858,24 +2858,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)
@@ -2899,7 +2902,7 @@ void LLPhysicsDecomp::doDecomposition()
//load data intoLLCD
if (stage == 0)
{
- setMeshData(mesh);
+ setMeshData(mesh, false);
}
//build parameter map
@@ -3073,11 +3076,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;
@@ -3086,23 +3132,15 @@ void LLPhysicsDecomp::doDecompositionSingleHull()
if (!params)
{
- param_count = LLConvexDecomposition::getInstance()->getParameters(&params);
+ param_count = decomp->getParameters(&params);
}
- 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;
@@ -3164,7 +3202,7 @@ void LLPhysicsDecomp::doDecompositionSingleHull()
}
}
}
-
+#endif
{
completeCurrent();
diff --git a/indra/newview/llmeshrepository.h b/indra/newview/llmeshrepository.h
index a15650463e..35a7314cd5 100755
--- a/indra/newview/llmeshrepository.h
+++ b/indra/newview/llmeshrepository.h
@@ -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();
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 a8761e96b0..1d4a1d4827 100644..100755
--- a/indra/newview/skins/default/xui/en/floater_model_preview.xml
+++ b/indra/newview/skins/default/xui/en/floater_model_preview.xml
@@ -92,7 +92,7 @@
parse_urls="true"
wrap="true"
visible="false">
- You will not be able to complete the final upload of this model to the Second Life servers. [secondlife:///app/floater/learn_more Find out how] to get enabled for mesh model uploads.</text>
+ You will not be able to complete the final upload of this model to the Second Life servers. [[VURL] Find out how] to get enabled for mesh model uploads.</text>
<text
height="65"
@@ -170,7 +170,8 @@ L$ [MODEL]
<panel
border="true"
label="Level of Detail"
- name="lod_panel">
+ name="lod_panel"
+ help_topic="upload_model_lod">
<text left="10" width="240" bottom="20" height="15" follows="left|top" name="lod_table_header">
Select Level of Detail:
@@ -293,7 +294,8 @@ L$ [MODEL]
<panel
border="true"
label="Physics"
- name="physics_panel">
+ name="physics_panel"
+ help_topic="upload_model_physics">
<!-- PHYSICS GEOMETRY-->
<panel
@@ -434,7 +436,9 @@ L$ [MODEL]
<panel
border="true"
label="Modifiers"
- name="modifiers_panel">
+ name="modifiers_panel"
+ help_topic="upload_model_modifiers">
+
<text left="10" width="90" bottom="30" follows="top|left" height="15">
Scale:
</text>