summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rwxr-xr-xindra/newview/llfloatermodelpreview.cpp55
-rw-r--r--indra/newview/llfloatermodelpreview.h26
-rw-r--r--indra/newview/llfloatermodelwizard.cpp167
-rw-r--r--indra/newview/llfloatermodelwizard.h9
-rw-r--r--indra/newview/llvoavatar.cpp52
-rw-r--r--indra/newview/llvoavatar.h1
-rw-r--r--indra/newview/llvoavatarself.cpp23
-rw-r--r--indra/newview/skins/default/textures/icons/check_mark.png (renamed from indra/newview/skins/default/textures/model_wizard/check_mark.png)bin3166 -> 3166 bytes
-rw-r--r--indra/newview/skins/default/textures/model_wizard/divider_line.pngbin0 -> 2815 bytes
-rw-r--r--indra/newview/skins/default/textures/textures.xml18
-rw-r--r--indra/newview/skins/default/textures/widgets/BreadCrumbBtn_Left_Disabled.png (renamed from indra/newview/skins/default/textures/model_wizard/left_button_disabled.png)bin3576 -> 3576 bytes
-rw-r--r--indra/newview/skins/default/textures/widgets/BreadCrumbBtn_Left_Off.png (renamed from indra/newview/skins/default/textures/model_wizard/left_button_off.png)bin4309 -> 4309 bytes
-rw-r--r--indra/newview/skins/default/textures/widgets/BreadCrumbBtn_Left_Over.png (renamed from indra/newview/skins/default/textures/model_wizard/left_button_over.png)bin4272 -> 4272 bytes
-rw-r--r--indra/newview/skins/default/textures/widgets/BreadCrumbBtn_Left_Press.png (renamed from indra/newview/skins/default/textures/model_wizard/left_button_press.png)bin4278 -> 4278 bytes
-rw-r--r--indra/newview/skins/default/textures/widgets/BreadCrumbBtn_Middle_Disabled.png (renamed from indra/newview/skins/default/textures/model_wizard/middle_button_disabled.png)bin3425 -> 3425 bytes
-rw-r--r--indra/newview/skins/default/textures/widgets/BreadCrumbBtn_Middle_Off.png (renamed from indra/newview/skins/default/textures/model_wizard/middle_button_off.png)bin4151 -> 4151 bytes
-rw-r--r--indra/newview/skins/default/textures/widgets/BreadCrumbBtn_Middle_Over.png (renamed from indra/newview/skins/default/textures/model_wizard/middle_button_over.png)bin4137 -> 4137 bytes
-rw-r--r--indra/newview/skins/default/textures/widgets/BreadCrumbBtn_Middle_Press.png (renamed from indra/newview/skins/default/textures/model_wizard/middle_button_press.png)bin4200 -> 4200 bytes
-rw-r--r--indra/newview/skins/default/textures/widgets/BreadCrumbBtn_Right_Disabled.png (renamed from indra/newview/skins/default/textures/model_wizard/right_button_disabled.png)bin3169 -> 3169 bytes
-rw-r--r--indra/newview/skins/default/textures/widgets/BreadCrumbBtn_Right_Off.png (renamed from indra/newview/skins/default/textures/model_wizard/right_button_off.png)bin3845 -> 3845 bytes
-rw-r--r--indra/newview/skins/default/textures/widgets/BreadCrumbBtn_Right_Over.png (renamed from indra/newview/skins/default/textures/model_wizard/right_button_over.png)bin3867 -> 3867 bytes
-rw-r--r--indra/newview/skins/default/textures/widgets/BreadCrumbBtn_Right_Press.png (renamed from indra/newview/skins/default/textures/model_wizard/right_button_press.png)bin3915 -> 3915 bytes
-rw-r--r--indra/newview/skins/default/xui/en/floater_model_wizard.xml275
23 files changed, 470 insertions, 156 deletions
diff --git a/indra/newview/llfloatermodelpreview.cpp b/indra/newview/llfloatermodelpreview.cpp
index 8dcb441b16..cc2a8c8aac 100755
--- a/indra/newview/llfloatermodelpreview.cpp
+++ b/indra/newview/llfloatermodelpreview.cpp
@@ -291,7 +291,7 @@ BOOL LLFloaterModelPreview::postBuild()
childSetCommitCallback("lod_mode", onLODParamCommit, this);
childSetCommitCallback("lod_error_threshold", onLODParamCommit, this);
- childSetCommitCallback("lod_triangle_limit", onLODParamCommit, this);
+ childSetCommitCallback("lod_triangle_limit", onLODParamCommitTriangleLimit, this);
childSetCommitCallback("build_operator", onLODParamCommit, this);
childSetCommitCallback("queue_mode", onLODParamCommit, this);
childSetCommitCallback("border_mode", onLODParamCommit, this);
@@ -340,6 +340,7 @@ BOOL LLFloaterModelPreview::postBuild()
mModelPreview = new LLModelPreview(512, 512, this);
mModelPreview->setPreviewTarget(16.f);
+ mModelPreview->setDetailsCallback(boost::bind(&LLFloaterModelPreview::setDetails, this, _1, _2, _3, _4, _5));
//set callbacks for left click on line editor rows
for (U32 i = 0; i <= LLModel::LOD_HIGH; i++)
@@ -532,9 +533,14 @@ void LLFloaterModelPreview::onAutoFillCommit(LLUICtrl* ctrl, void* userdata)
void LLFloaterModelPreview::onLODParamCommit(LLUICtrl* ctrl, void* userdata)
{
LLFloaterModelPreview* fp = (LLFloaterModelPreview*) userdata;
- fp->mModelPreview->genLODs(fp->mModelPreview->mPreviewLOD);
- fp->mModelPreview->updateStatusMessages();
- fp->mModelPreview->refresh();
+ fp->mModelPreview->onLODParamCommit(false);
+}
+
+//static
+void LLFloaterModelPreview::onLODParamCommitTriangleLimit(LLUICtrl* ctrl, void* userdata)
+{
+ LLFloaterModelPreview* fp = (LLFloaterModelPreview*) userdata;
+ fp->mModelPreview->onLODParamCommit(true);
}
@@ -1665,6 +1671,8 @@ void LLModelLoader::run()
setLoadState( ERROR_PARSING );
return;
}
+ setLoadState( DONE );
+
processElement(scene);
doOnIdleOneTime(boost::bind(&LLModelPreview::loadModelCallback,mPreview,mLod));
@@ -2264,18 +2272,24 @@ U32 LLModelPreview::calcResourceCost()
//mFMP->childSetTextArg(info_name[LLModel::LOD_PHYSICS], "[HULLS]", llformat("%d",num_hulls));
//mFMP->childSetTextArg(info_name[LLModel::LOD_PHYSICS], "[POINTS]", llformat("%d",num_points));
- mFMP->childSetTextArg("streaming cost", "[COST]", llformat("%.3f", streaming_cost));
- mFMP->childSetTextArg("physics cost", "[COST]", llformat("%.3f", physics_cost));
F32 scale = mFMP->childGetValue("import_scale").asReal()*2.f;
- mFMP->childSetTextArg("import_dimensions", "[X]", llformat("%.3f", mPreviewScale[0]*scale));
- mFMP->childSetTextArg("import_dimensions", "[Y]", llformat("%.3f", mPreviewScale[1]*scale));
- mFMP->childSetTextArg("import_dimensions", "[Z]", llformat("%.3f", mPreviewScale[2]*scale));
+
+ mDetailsSignal(mPreviewScale[0]*scale, mPreviewScale[1]*scale, mPreviewScale[2]*scale, streaming_cost, physics_cost);
updateStatusMessages();
return cost;
}
+void LLFloaterModelPreview::setDetails(F32 x, F32 y, F32 z, F32 streaming_cost, F32 physics_cost)
+{
+ childSetTextArg("import_dimensions", "[X]", llformat("%.3f", x));
+ childSetTextArg("import_dimensions", "[Y]", llformat("%.3f", y));
+ childSetTextArg("import_dimensions", "[Z]", llformat("%.3f", z));
+ childSetTextArg("streaming cost", "[COST]", llformat("%.3f", streaming_cost));
+ childSetTextArg("physics cost", "[COST]", llformat("%.3f", physics_cost));
+}
+
void LLModelPreview::rebuildUploadData()
{
assert_main_thread();
@@ -2552,6 +2566,8 @@ void LLModelPreview::loadModelCallback(S32 lod)
mLoading = false;
refresh();
+
+ mModelLoadedSignal();
}
void LLModelPreview::resetPreviewTarget()
@@ -2817,7 +2833,7 @@ void LLModelPreview::clearMaterials()
refresh();
}
-void LLModelPreview::genLODs(S32 which_lod, U32 decimation)
+void LLModelPreview::genLODs(S32 which_lod, U32 decimation, bool enforce_tri_limit)
{
if (mBaseModel.empty())
{
@@ -3048,7 +3064,17 @@ void LLModelPreview::genLODs(S32 which_lod, U32 decimation)
}
else
{
- triangle_count = limit;
+ if (enforce_tri_limit)
+ {
+ triangle_count = limit;
+ }
+ else
+ {
+ for (S32 j=LLModel::LOD_HIGH; j>which_lod; --j)
+ {
+ triangle_count /= decimation;
+ }
+ }
}
mModel[lod].clear();
@@ -4314,6 +4340,13 @@ void LLModelPreview::textureLoadedCallback( BOOL success, LLViewerFetchedTexture
preview->refresh();
}
+void LLModelPreview::onLODParamCommit(bool enforce_tri_limit)
+{
+ genLODs(mPreviewLOD, 3, enforce_tri_limit);
+ updateStatusMessages();
+ refresh();
+}
+
LLFloaterModelPreview::DecompRequest::DecompRequest(const std::string& stage, LLModel* mdl)
{
mStage = stage;
diff --git a/indra/newview/llfloatermodelpreview.h b/indra/newview/llfloatermodelpreview.h
index 3747abedd1..8fc85cebb9 100644
--- a/indra/newview/llfloatermodelpreview.h
+++ b/indra/newview/llfloatermodelpreview.h
@@ -152,6 +152,8 @@ public:
static void onMouseCaptureLostModelPreview(LLMouseHandler*);
static void setUploadAmount(S32 amount) { sUploadAmount = amount; }
+
+ void setDetails(F32 x, F32 y, F32 z, F32 streaming_cost, F32 physics_cost);
static void onBrowseLOD(void* data);
@@ -187,6 +189,7 @@ protected:
static void onAutoFillCommit(LLUICtrl*,void*);
static void onLODParamCommit(LLUICtrl*,void*);
+ static void onLODParamCommitTriangleLimit(LLUICtrl*,void*);
static void onExplodeCommit(LLUICtrl*, void*);
@@ -232,6 +235,7 @@ protected:
LLMenuButton* mViewOptionMenuButton;
LLToggleableMenu* mViewOptionMenu;
LLMutex* mStatusLock;
+
};
class LLMeshFilePicker : public LLFilePickerThread
@@ -247,10 +251,12 @@ private:
class LLModelPreview : public LLViewerDynamicTexture, public LLMutex
-{
- public:
-
- LLModelPreview(S32 width, S32 height, LLFloater* fmp);
+{
+ typedef boost::signals2::signal<void (F32 x, F32 y, F32 z, F32 streaming_cost, F32 physics_cost)> details_signal_t;
+ typedef boost::signals2::signal<void (void)> model_loaded_signal_t;
+
+public:
+ LLModelPreview(S32 width, S32 height, LLFloater* fmp);
virtual ~LLModelPreview();
void resetPreviewTarget();
@@ -271,7 +277,7 @@ class LLModelPreview : public LLViewerDynamicTexture, public LLMutex
void clearModel(S32 lod);
void loadModel(std::string filename, S32 lod);
void loadModelCallback(S32 lod);
- void genLODs(S32 which_lod = -1, U32 decimation = 3);
+ void genLODs(S32 which_lod = -1, U32 decimation = 3, bool enforce_tri_limit = false);
void generateNormals();
void consolidate();
void clearMaterials();
@@ -280,10 +286,13 @@ class LLModelPreview : public LLViewerDynamicTexture, public LLMutex
void clearIncompatible(S32 lod);
void updateStatusMessages();
void clearGLODGroup();
-
+ void onLODParamCommit(bool enforce_tri_limit);
static void textureLoadedCallback( BOOL success, LLViewerFetchedTexture *src_vi, LLImageRaw* src, LLImageRaw* src_aux, S32 discard_level, BOOL final, void* userdata );
-
+
+ boost::signals2::connection setDetailsCallback( const details_signal_t::slot_type& cb ){ return mDetailsSignal.connect(cb); }
+ boost::signals2::connection setModelLoadedCallback( const model_loaded_signal_t::slot_type& cb ){ return mModelLoadedSignal.connect(cb); }
+
protected:
friend class LLFloaterModelPreview;
friend class LLFloaterModelWizard;
@@ -335,6 +344,9 @@ class LLModelPreview : public LLViewerDynamicTexture, public LLMutex
//map of vertex buffers to models (one vertex buffer in vector per face in model
std::map<LLModel*, std::vector<LLPointer<LLVertexBuffer> > > mVertexBuffer[LLModel::NUM_LODS+1];
+
+ details_signal_t mDetailsSignal;
+ model_loaded_signal_t mModelLoadedSignal;
};
diff --git a/indra/newview/llfloatermodelwizard.cpp b/indra/newview/llfloatermodelwizard.cpp
index fe53eafa40..095499e6b0 100644
--- a/indra/newview/llfloatermodelwizard.cpp
+++ b/indra/newview/llfloatermodelwizard.cpp
@@ -30,6 +30,7 @@
#include "llbutton.h"
#include "lldrawable.h"
+#include "llcheckboxctrl.h"
#include "llcombobox.h"
#include "llfloater.h"
#include "llfloatermodelwizard.h"
@@ -51,7 +52,14 @@ static const std::string stateNames[]={
LLFloaterModelWizard::LLFloaterModelWizard(const LLSD& key)
: LLFloater(key)
{
+ mLastEnabledState = CHOOSE_FILE;
sInstance = this;
+
+ mCommitCallbackRegistrar.add("Wizard.Choose", boost::bind(&LLFloaterModelWizard::setState, this, CHOOSE_FILE));
+ mCommitCallbackRegistrar.add("Wizard.Optimize", boost::bind(&LLFloaterModelWizard::setState, this, OPTIMIZE));
+ mCommitCallbackRegistrar.add("Wizard.Physics", boost::bind(&LLFloaterModelWizard::setState, this, PHYSICS));
+ mCommitCallbackRegistrar.add("Wizard.Review", boost::bind(&LLFloaterModelWizard::setState, this, REVIEW));
+ mCommitCallbackRegistrar.add("Wizard.Upload", boost::bind(&LLFloaterModelWizard::setState, this, UPLOAD));
}
LLFloaterModelWizard::~LLFloaterModelWizard()
{
@@ -59,67 +67,115 @@ LLFloaterModelWizard::~LLFloaterModelWizard()
}
void LLFloaterModelWizard::setState(int state)
{
+
mState = state;
- setButtons(state);
for(size_t t=0; t<LL_ARRAY_SIZE(stateNames); ++t)
{
- LLView *view = getChild<LLView>(stateNames[t]+"_panel");
+ LLView *view = getChildView(stateNames[t]+"_panel");
if (view)
{
view->setVisible(state == (int) t ? TRUE : FALSE);
}
}
+ if (state == CHOOSE_FILE)
+ {
+ mModelPreview->mViewOption["show_physics"] = false;
+
+ getChildView("close")->setVisible(false);
+ getChildView("back")->setVisible(true);
+ getChildView("back")->setEnabled(false);
+ getChildView("next")->setVisible(true);
+ getChildView("upload")->setVisible(false);
+ getChildView("cancel")->setVisible(true);
+ }
+
if (state == OPTIMIZE)
{
- mModelPreview->genLODs(-1);
+ if (mLastEnabledState < state)
+ {
+ mModelPreview->genLODs(-1);
+ }
+
mModelPreview->mViewOption["show_physics"] = false;
+
+ getChildView("back")->setVisible(true);
+ getChildView("back")->setEnabled(true);
+ getChildView("close")->setVisible(false);
+ getChildView("next")->setVisible(true);
+ getChildView("upload")->setVisible(false);
+ getChildView("cancel")->setVisible(true);
}
if (state == PHYSICS)
{
- mModelPreview->setPhysicsFromLOD(1);
+ if (mLastEnabledState < state)
+ {
+ mModelPreview->setPhysicsFromLOD(1);
+ }
+
mModelPreview->mViewOption["show_physics"] = true;
- getChild<LLView>("next")->setVisible(true);
- getChild<LLView>("upload")->setVisible(false);
+ getChildView("next")->setVisible(true);
+ getChildView("upload")->setVisible(false);
+ getChildView("close")->setVisible(false);
+ getChildView("back")->setVisible(true);
+ getChildView("back")->setEnabled(true);
+ getChildView("cancel")->setVisible(true);
}
if (state == REVIEW)
{
- executePhysicsStage("Decompose");
- getChild<LLView>("close")->setVisible(false);
- getChild<LLView>("next")->setVisible(false);
- getChild<LLView>("back")->setVisible(true);
- getChild<LLView>("upload")->setVisible(true);
- getChild<LLView>("cancel")->setVisible(true);
+ if (mLastEnabledState < state)
+ {
+ executePhysicsStage("Decompose");
+ }
+
+ mModelPreview->mViewOption["show_physics"] = true;
+
+ getChildView("close")->setVisible(false);
+ getChildView("next")->setVisible(false);
+ getChildView("back")->setVisible(true);
+ getChildView("back")->setEnabled(true);
+ getChildView("upload")->setVisible(true);
+ getChildView("cancel")->setVisible(true);
}
if (state == UPLOAD)
{
- getChild<LLView>("close")->setVisible(true);
- getChild<LLView>("back")->setVisible(false);
- getChild<LLView>("upload")->setVisible(false);
- getChild<LLView>("cancel")->setVisible(false);
+ getChildView("close")->setVisible(true);
+ getChildView("next")->setVisible(false);
+ getChildView("back")->setVisible(false);
+ getChildView("upload")->setVisible(false);
+ getChildView("cancel")->setVisible(false);
}
+
+ updateButtons();
}
-void LLFloaterModelWizard::setButtons(int state)
+
+
+void LLFloaterModelWizard::updateButtons()
{
+ if (mLastEnabledState < mState)
+ {
+ mLastEnabledState = mState;
+ }
+
for(size_t i=0; i<LL_ARRAY_SIZE(stateNames); ++i)
{
LLButton *button = getChild<LLButton>(stateNames[i]+"_btn");
- if (i < state)
+ if (i == mState)
{
button->setEnabled(TRUE);
- button->setToggleState(FALSE);
+ button->setToggleState(TRUE);
}
- else if (i == state)
+ else if (i <= mLastEnabledState)
{
button->setEnabled(TRUE);
- button->setToggleState(TRUE);
+ button->setToggleState(FALSE);
}
else
{
@@ -418,11 +474,12 @@ void LLFloaterModelWizard::DecompRequest::completed()
BOOL LLFloaterModelWizard::postBuild()
{
- LLView* preview_panel = getChild<LLView>("preview_panel");
+ LLView* preview_panel = getChildView("preview_panel");
childSetValue("import_scale", (F32) 0.67335826);
getChild<LLUICtrl>("browse")->setCommitCallback(boost::bind(&LLFloaterModelWizard::loadModel, this));
+ //getChild<LLUICtrl>("lod_file")->setCommitCallback(boost::bind(&LLFloaterModelWizard::loadModel, this));
getChild<LLUICtrl>("cancel")->setCommitCallback(boost::bind(&LLFloaterModelWizard::onClickCancel, this));
getChild<LLUICtrl>("close")->setCommitCallback(boost::bind(&LLFloaterModelWizard::onClickCancel, this));
getChild<LLUICtrl>("back")->setCommitCallback(boost::bind(&LLFloaterModelWizard::onClickBack, this));
@@ -430,17 +487,20 @@ BOOL LLFloaterModelWizard::postBuild()
getChild<LLUICtrl>("preview_lod_combo")->setCommitCallback(boost::bind(&LLFloaterModelWizard::onPreviewLODCommit, this, _1));
getChild<LLUICtrl>("accuracy_slider")->setCommitCallback(boost::bind(&LLFloaterModelWizard::onAccuracyPerformance, this, _2));
getChild<LLUICtrl>("upload")->setCommitCallback(boost::bind(&LLFloaterModelWizard::onUpload, this));
-
+ getChild<LLUICtrl>("physics_slider")->setCommitCallback(boost::bind(&LLFloaterModelWizard::onPhysicsChanged, this));
+
LLUICtrl::EnableCallbackRegistry::ScopedRegistrar enable_registrar;
enable_registrar.add("Next.OnEnable", boost::bind(&LLFloaterModelWizard::onEnableNext, this));
enable_registrar.add("Back.OnEnable", boost::bind(&LLFloaterModelWizard::onEnableBack, this));
-
+
mPreviewRect = preview_panel->getRect();
mModelPreview = new LLModelPreview(512, 512, this);
mModelPreview->setPreviewTarget(16.f);
+ mModelPreview->setDetailsCallback(boost::bind(&LLFloaterModelWizard::setDetails, this, _1, _2, _3, _4, _5));
+ mModelPreview->setModelLoadedCallback(boost::bind(&LLFloaterModelWizard::modelLoadedCallback, this));
center();
@@ -455,6 +515,37 @@ BOOL LLFloaterModelWizard::postBuild()
return TRUE;
}
+
+void LLFloaterModelWizard::setDetails(F32 x, F32 y, F32 z, F32 streaming_cost, F32 physics_cost)
+{
+ // iterate through all the panels, setting the dimensions
+ for(size_t t=0; t<LL_ARRAY_SIZE(stateNames); ++t)
+ {
+ LLPanel *panel = getChild<LLPanel>(stateNames[t]+"_panel");
+ if (panel)
+ {
+ panel->childSetText("dimension_x", llformat("%.1f", x));
+ panel->childSetText("dimension_y", llformat("%.1f", y));
+ panel->childSetText("dimension_z", llformat("%.1f", z));
+ panel->childSetTextArg("streaming cost", "[COST]", llformat("%.3f", streaming_cost));
+ panel->childSetTextArg("physics cost", "[COST]", llformat("%.3f", physics_cost));
+ }
+ }
+}
+
+void LLFloaterModelWizard::modelLoadedCallback()
+{
+ mLastEnabledState = CHOOSE_FILE;
+ getChild<LLCheckBoxCtrl>("confirm_checkbox")->set(FALSE);
+ updateButtons();
+}
+
+void LLFloaterModelWizard::onPhysicsChanged()
+{
+ mLastEnabledState = PHYSICS;
+ updateButtons();
+}
+
void LLFloaterModelWizard::onUpload()
{
mModelPreview->rebuildUploadData();
@@ -466,7 +557,6 @@ void LLFloaterModelWizard::onUpload()
}
-
void LLFloaterModelWizard::onAccuracyPerformance(const LLSD& data)
{
int val = (int) data.asInteger();
@@ -476,6 +566,7 @@ void LLFloaterModelWizard::onAccuracyPerformance(const LLSD& data)
mModelPreview->refresh();
}
+
void LLFloaterModelWizard::onPreviewLODCommit(LLUICtrl* ctrl)
{
if (!mModelPreview)
@@ -492,8 +583,30 @@ void LLFloaterModelWizard::onPreviewLODCommit(LLUICtrl* ctrl)
mModelPreview->setPreviewLOD(which_mode);
}
+void LLFloaterModelWizard::refresh()
+{
+ if (mState == CHOOSE_FILE)
+ {
+ bool model_loaded = false;
+
+ if (mModelPreview && mModelPreview->mModelLoader && mModelPreview->mModelLoader->getLoadState() == LLModelLoader::DONE)
+ {
+ model_loaded = true;
+ }
+
+ getChildView("next")->setEnabled(model_loaded);
+ }
+ if (mState == REVIEW)
+ {
+ getChildView("upload")->setEnabled(getChild<LLCheckBoxCtrl>("confirm_checkbox")->getValue().asBoolean());
+ }
+
+}
+
void LLFloaterModelWizard::draw()
{
+ refresh();
+
LLFloater::draw();
LLRect r = getRect();
@@ -505,8 +618,8 @@ void LLFloaterModelWizard::draw()
gGL.getTexUnit(0)->bind(mModelPreview);
- LLView *view = getChild<LLView>(stateNames[mState]+"_panel");
- LLView* preview_panel = view->getChild<LLView>("preview_panel");
+ LLView *view = getChildView(stateNames[mState]+"_panel");
+ LLView* preview_panel = view->getChildView("preview_panel");
LLRect rect = preview_panel->getRect();
if (rect != mPreviewRect)
diff --git a/indra/newview/llfloatermodelwizard.h b/indra/newview/llfloatermodelwizard.h
index eaf188ed40..50e4ab1a96 100644
--- a/indra/newview/llfloatermodelwizard.h
+++ b/indra/newview/llfloatermodelwizard.h
@@ -57,13 +57,16 @@ public:
virtual ~LLFloaterModelWizard();
/*virtual*/ BOOL postBuild();
void draw();
+ void refresh();
BOOL handleMouseDown(S32 x, S32 y, MASK mask);
BOOL handleMouseUp(S32 x, S32 y, MASK mask);
BOOL handleHover(S32 x, S32 y, MASK mask);
BOOL handleScrollWheel(S32 x, S32 y, S32 clicks);
-
+ void setDetails(F32 x, F32 y, F32 z, F32 streaming_cost, F32 physics_cost);
+ void modelLoadedCallback();
+ void onPhysicsChanged();
void initDecompControls();
LLPhysicsDecomp::decomp_params mDecompParams;
@@ -82,7 +85,7 @@ private:
};
void setState(int state);
- void setButtons(int state);
+ void updateButtons();
void onClickCancel();
void onClickBack();
void onClickNext();
@@ -100,6 +103,8 @@ private:
S32 mLastMouseX;
S32 mLastMouseY;
+ U32 mLastEnabledState;
+
};
diff --git a/indra/newview/llvoavatar.cpp b/indra/newview/llvoavatar.cpp
index ded3e36cf6..b667dc1af0 100644
--- a/indra/newview/llvoavatar.cpp
+++ b/indra/newview/llvoavatar.cpp
@@ -2895,10 +2895,8 @@ void LLVOAvatar::idleUpdateNameTag(const LLVector3& root_pos_last)
}
LLVector3 name_position = idleUpdateNameTagPosition(root_pos_last);
- mNameText->setPositionAgent(name_position);
-
- idleUpdateNameTagText(new_name);
-
+ mNameText->setPositionAgent(name_position);
+ idleUpdateNameTagText(new_name);
idleUpdateNameTagAlpha(new_name, alpha);
}
@@ -3184,8 +3182,9 @@ void LLVOAvatar::invalidateNameTags()
if (avatar->isDead()) continue;
avatar->clearNameTag();
- }
- }
+
+ }
+}
// Compute name tag position during idle update
LLVector3 LLVOAvatar::idleUpdateNameTagPosition(const LLVector3& root_pos_last)
@@ -3204,12 +3203,14 @@ LLVector3 LLVOAvatar::idleUpdateNameTagPosition(const LLVector3& root_pos_last)
local_camera_up.scaleVec(mBodySize * 0.5f);
local_camera_at.scaleVec(mBodySize * 0.5f);
- LLVector3 name_position = mRoot.getWorldPosition() +
- (local_camera_up * root_rot) -
- (projected_vec(local_camera_at * root_rot, camera_to_av));
+ LLVector3 name_position = mRoot.getWorldPosition();
+ name_position[VZ] -= mPelvisToFoot;
+ name_position[VZ] += (mBodySize[VZ]* 0.55f);
+ name_position += (local_camera_up * root_rot) - (projected_vec(local_camera_at * root_rot, camera_to_av));
name_position += pixel_up_vec * 15.f;
+
return name_position;
- }
+}
void LLVOAvatar::idleUpdateNameTagAlpha(BOOL new_name, F32 alpha)
{
@@ -6026,6 +6027,34 @@ void LLVOAvatar::rebuildRiggedAttachments( void )
}
}
//-----------------------------------------------------------------------------
+// cleanupAttachedMesh()
+//-----------------------------------------------------------------------------
+void LLVOAvatar::cleanupAttachedMesh( LLViewerObject* pVO )
+{
+ //If a VO has a skin that we'll reset the joint positions to their default
+ if ( pVO && pVO->mDrawable )
+ {
+ LLVOVolume* pVObj = pVO->mDrawable->getVOVolume();
+ if ( pVObj )
+ {
+ const LLMeshSkinInfo* pSkinData = gMeshRepo.getSkinInfo( pVObj->getVolume()->getParams().getSculptID() );
+ if ( pSkinData )
+ {
+ const int jointCnt = pSkinData->mJointNames.size();
+ bool fullRig = ( jointCnt>=20 ) ? true : false;
+ if ( fullRig )
+ {
+ const int bindCnt = pSkinData->mAlternateBindMatrix.size();
+ if ( bindCnt > 0 )
+ {
+ LLVOAvatar::resetJointPositionsToDefault();
+ }
+ }
+ }
+ }
+ }
+}
+//-----------------------------------------------------------------------------
// detachObject()
//-----------------------------------------------------------------------------
BOOL LLVOAvatar::detachObject(LLViewerObject *viewer_object)
@@ -6035,9 +6064,10 @@ BOOL LLVOAvatar::detachObject(LLViewerObject *viewer_object)
++iter)
{
LLViewerJointAttachment* attachment = iter->second;
-
+
if (attachment->isObjectAttached(viewer_object))
{
+ cleanupAttachedMesh( viewer_object );
attachment->removeObject(viewer_object);
lldebugs << "Detaching object " << viewer_object->mID << " from " << attachment->getName() << llendl;
return TRUE;
diff --git a/indra/newview/llvoavatar.h b/indra/newview/llvoavatar.h
index ce5ce045b9..7ef35178ca 100644
--- a/indra/newview/llvoavatar.h
+++ b/indra/newview/llvoavatar.h
@@ -687,6 +687,7 @@ public:
void clampAttachmentPositions();
virtual const LLViewerJointAttachment* attachObject(LLViewerObject *viewer_object);
virtual BOOL detachObject(LLViewerObject *viewer_object);
+ void cleanupAttachedMesh( LLViewerObject* pVO );
static LLVOAvatar* findAvatarFromAttachment(LLViewerObject* obj);
protected:
LLViewerJointAttachment* getTargetAttachmentPoint(LLViewerObject* viewer_object);
diff --git a/indra/newview/llvoavatarself.cpp b/indra/newview/llvoavatarself.cpp
index 5d1020fce8..3c66c4860e 100644
--- a/indra/newview/llvoavatarself.cpp
+++ b/indra/newview/llvoavatarself.cpp
@@ -1150,28 +1150,7 @@ BOOL LLVOAvatarSelf::detachObject(LLViewerObject *viewer_object)
const LLUUID attachment_id = viewer_object->getAttachmentItemID();
if ( LLVOAvatar::detachObject(viewer_object) )
{
- //If a VO has a skin that we'll reset the joint positions to their default
- if ( viewer_object->mDrawable )
- {
- LLVOVolume* pVObj = viewer_object->mDrawable->getVOVolume();
- if ( pVObj )
- {
- const LLMeshSkinInfo* pSkinData = gMeshRepo.getSkinInfo( pVObj->getVolume()->getParams().getSculptID() );
- if ( pSkinData )
- {
- const int jointCnt = pSkinData->mJointNames.size();
- bool fullRig = ( jointCnt>=20 ) ? true : false;
- if ( fullRig )
- {
- const int bindCnt = pSkinData->mAlternateBindMatrix.size();
- if ( bindCnt > 0 )
- {
- LLVOAvatar::resetJointPositionsToDefault();
- }
- }
- }
- }
- }
+ LLVOAvatar::cleanupAttachedMesh( viewer_object );
// the simulator should automatically handle permission revocation
diff --git a/indra/newview/skins/default/textures/model_wizard/check_mark.png b/indra/newview/skins/default/textures/icons/check_mark.png
index 2c05297f4f..2c05297f4f 100644
--- a/indra/newview/skins/default/textures/model_wizard/check_mark.png
+++ b/indra/newview/skins/default/textures/icons/check_mark.png
Binary files differ
diff --git a/indra/newview/skins/default/textures/model_wizard/divider_line.png b/indra/newview/skins/default/textures/model_wizard/divider_line.png
new file mode 100644
index 0000000000..76c9e68767
--- /dev/null
+++ b/indra/newview/skins/default/textures/model_wizard/divider_line.png
Binary files differ
diff --git a/indra/newview/skins/default/textures/textures.xml b/indra/newview/skins/default/textures/textures.xml
index e69c5775f0..d351c442d3 100644
--- a/indra/newview/skins/default/textures/textures.xml
+++ b/indra/newview/skins/default/textures/textures.xml
@@ -73,7 +73,22 @@ with the same filename but different name
<texture name="BackButton_Press" file_name="icons/back_arrow_press.png" preload="false" scale.left="22" scale.top="12" scale.right="25" scale.bottom="12" />
<texture name="Blank" file_name="Blank.png" preload="false" />
-
+
+ <texture name="BreadCrumbBtn_Left_Disabled" file_name="widgets/BreadCrumbBtn_Left_Disabled.png" preload="false"/>
+ <texture name="BreadCrumbBtn_Left_Off" file_name="widgets/BreadCrumbBtn_Left_Off.png" preload="false"/>
+ <texture name="BreadCrumbBtn_Left_Over" file_name="widgets/BreadCrumbBtn_Left_Over.png" preload="false"/>
+ <texture name="BreadCrumbBtn_Left_Press" file_name="widgets/BreadCrumbBtn_Left_Press.png" preload="false"/>
+
+ <texture name="BreadCrumbBtn_Middle_Disabled" file_name="widgets/BreadCrumbBtn_Middle_Disabled.png" preload="false"/>
+ <texture name="BreadCrumbBtn_Middle_Off" file_name="widgets/BreadCrumbBtn_Middle_Off.png" preload="false"/>
+ <texture name="BreadCrumbBtn_Middle_Over" file_name="widgets/BreadCrumbBtn_Middle_Over.png" preload="false"/>
+ <texture name="BreadCrumbBtn_Middle_Press" file_name="widgets/BreadCrumbBtn_Middle_Press.png" preload="false"/>
+
+ <texture name="BreadCrumbBtn_Right_Disabled" file_name="widgets/BreadCrumbBtn_Right_Disabled.png" preload="false"/>
+ <texture name="BreadCrumbBtn_Right_Off" file_name="widgets/BreadCrumbBtn_Right_Off.png" preload="false"/>
+ <texture name="BreadCrumbBtn_Right_Over" file_name="widgets/BreadCrumbBtn_Right_Over.png" preload="false"/>
+ <texture name="BreadCrumbBtn_Right_Press" file_name="widgets/BreadCrumbBtn_Right_Press.png" preload="false"/>
+
<texture name="BuyArrow_Over" file_name="navbar/BuyArrow_Over.png" preload="true" scale.left="0" scale.top="1" scale.right="0" scale.bottom="0" />
<texture name="BuyArrow_Press" file_name="navbar/BuyArrow_Press.png" preload="true" scale.left="1" scale.top="1" scale.right="0" scale.bottom="0" />
@@ -102,6 +117,7 @@ with the same filename but different name
<texture name="Checkbox_On" file_name="widgets/Checkbox_On.png" preload="true" />
<texture name="Checkbox_On_Press" file_name="widgets/Checkbox_On_Press.png" preload="true" />
<texture name="Checkbox_Press" file_name="widgets/Checkbox_Press.png" preload="true" />
+ <texture name="Check_Mark" file_name="icons/check_mark" preload="true" />
<texture name="ComboButton_Disabled" file_name="widgets/ComboButton_Disabled.png" preload="true" scale.left="2" scale.top="19" scale.right="18" scale.bottom="2" />
<texture name="ComboButton_Selected" file_name="widgets/ComboButton_Selected.png" preload="true" scale.left="2" scale.top="19" scale.right="18" scale.bottom="2" />
diff --git a/indra/newview/skins/default/textures/model_wizard/left_button_disabled.png b/indra/newview/skins/default/textures/widgets/BreadCrumbBtn_Left_Disabled.png
index c7c0eaa96b..c7c0eaa96b 100644
--- a/indra/newview/skins/default/textures/model_wizard/left_button_disabled.png
+++ b/indra/newview/skins/default/textures/widgets/BreadCrumbBtn_Left_Disabled.png
Binary files differ
diff --git a/indra/newview/skins/default/textures/model_wizard/left_button_off.png b/indra/newview/skins/default/textures/widgets/BreadCrumbBtn_Left_Off.png
index 4a73c254fc..4a73c254fc 100644
--- a/indra/newview/skins/default/textures/model_wizard/left_button_off.png
+++ b/indra/newview/skins/default/textures/widgets/BreadCrumbBtn_Left_Off.png
Binary files differ
diff --git a/indra/newview/skins/default/textures/model_wizard/left_button_over.png b/indra/newview/skins/default/textures/widgets/BreadCrumbBtn_Left_Over.png
index 6fb5c432de..6fb5c432de 100644
--- a/indra/newview/skins/default/textures/model_wizard/left_button_over.png
+++ b/indra/newview/skins/default/textures/widgets/BreadCrumbBtn_Left_Over.png
Binary files differ
diff --git a/indra/newview/skins/default/textures/model_wizard/left_button_press.png b/indra/newview/skins/default/textures/widgets/BreadCrumbBtn_Left_Press.png
index fa18517933..fa18517933 100644
--- a/indra/newview/skins/default/textures/model_wizard/left_button_press.png
+++ b/indra/newview/skins/default/textures/widgets/BreadCrumbBtn_Left_Press.png
Binary files differ
diff --git a/indra/newview/skins/default/textures/model_wizard/middle_button_disabled.png b/indra/newview/skins/default/textures/widgets/BreadCrumbBtn_Middle_Disabled.png
index bed1a701bd..bed1a701bd 100644
--- a/indra/newview/skins/default/textures/model_wizard/middle_button_disabled.png
+++ b/indra/newview/skins/default/textures/widgets/BreadCrumbBtn_Middle_Disabled.png
Binary files differ
diff --git a/indra/newview/skins/default/textures/model_wizard/middle_button_off.png b/indra/newview/skins/default/textures/widgets/BreadCrumbBtn_Middle_Off.png
index 57ce9af574..57ce9af574 100644
--- a/indra/newview/skins/default/textures/model_wizard/middle_button_off.png
+++ b/indra/newview/skins/default/textures/widgets/BreadCrumbBtn_Middle_Off.png
Binary files differ
diff --git a/indra/newview/skins/default/textures/model_wizard/middle_button_over.png b/indra/newview/skins/default/textures/widgets/BreadCrumbBtn_Middle_Over.png
index 2c43022f0e..2c43022f0e 100644
--- a/indra/newview/skins/default/textures/model_wizard/middle_button_over.png
+++ b/indra/newview/skins/default/textures/widgets/BreadCrumbBtn_Middle_Over.png
Binary files differ
diff --git a/indra/newview/skins/default/textures/model_wizard/middle_button_press.png b/indra/newview/skins/default/textures/widgets/BreadCrumbBtn_Middle_Press.png
index 6b8c1baca4..6b8c1baca4 100644
--- a/indra/newview/skins/default/textures/model_wizard/middle_button_press.png
+++ b/indra/newview/skins/default/textures/widgets/BreadCrumbBtn_Middle_Press.png
Binary files differ
diff --git a/indra/newview/skins/default/textures/model_wizard/right_button_disabled.png b/indra/newview/skins/default/textures/widgets/BreadCrumbBtn_Right_Disabled.png
index 51505e80c5..51505e80c5 100644
--- a/indra/newview/skins/default/textures/model_wizard/right_button_disabled.png
+++ b/indra/newview/skins/default/textures/widgets/BreadCrumbBtn_Right_Disabled.png
Binary files differ
diff --git a/indra/newview/skins/default/textures/model_wizard/right_button_off.png b/indra/newview/skins/default/textures/widgets/BreadCrumbBtn_Right_Off.png
index 9f93efbd93..9f93efbd93 100644
--- a/indra/newview/skins/default/textures/model_wizard/right_button_off.png
+++ b/indra/newview/skins/default/textures/widgets/BreadCrumbBtn_Right_Off.png
Binary files differ
diff --git a/indra/newview/skins/default/textures/model_wizard/right_button_over.png b/indra/newview/skins/default/textures/widgets/BreadCrumbBtn_Right_Over.png
index 3a4ec1a315..3a4ec1a315 100644
--- a/indra/newview/skins/default/textures/model_wizard/right_button_over.png
+++ b/indra/newview/skins/default/textures/widgets/BreadCrumbBtn_Right_Over.png
Binary files differ
diff --git a/indra/newview/skins/default/textures/model_wizard/right_button_press.png b/indra/newview/skins/default/textures/widgets/BreadCrumbBtn_Right_Press.png
index 1f1b4c2ed5..1f1b4c2ed5 100644
--- a/indra/newview/skins/default/textures/model_wizard/right_button_press.png
+++ b/indra/newview/skins/default/textures/widgets/BreadCrumbBtn_Right_Press.png
Binary files differ
diff --git a/indra/newview/skins/default/xui/en/floater_model_wizard.xml b/indra/newview/skins/default/xui/en/floater_model_wizard.xml
index e2ec557b06..2377a9e4ef 100644
--- a/indra/newview/skins/default/xui/en/floater_model_wizard.xml
+++ b/indra/newview/skins/default/xui/en/floater_model_wizard.xml
@@ -18,12 +18,15 @@
enabled="false"
label="5. Upload"
border="false"
- image_unselected="model_wizard/middle_button_off.png"
- image_selected="model_wizard/middle_button_press.png"
- image_hover_unselected="model_wizard/middle_button_over.png"
- image_disabled="model_wizard/middle_button_disabled.png"
- image_disabled_selected="model_wizard/middle_button_disabled.png"
- width="110"/>
+ image_unselected="BreadCrumbBtn_Right_Off"
+ image_selected="BreadCrumbBtn_Right_Press"
+ image_hover_unselected="BreadCrumbBtn_Right_Over"
+ image_disabled="BreadCrumbBtn_Right_Disabled"
+ image_disabled_selected="BreadCrumbBtn_Right_Disabled"
+ width="110">
+ <button.commit_callback
+ function="Wizard.Upload"/>
+ </button>
<button
top="32"
left="310"
@@ -33,12 +36,15 @@
label="4. Review"
enabled="false"
border="false"
- image_unselected="model_wizard/middle_button_off.png"
- image_selected="model_wizard/middle_button_press.png"
- image_hover_unselected="model_wizard/middle_button_over.png"
- image_disabled="model_wizard/middle_button_disabled.png"
- image_disabled_selected="model_wizard/middle_button_disabled.png"
- width="110"/>
+ image_unselected="BreadCrumbBtn_Middle_Off"
+ image_selected="BreadCrumbBtn_Middle_Press"
+ image_hover_unselected="BreadCrumbBtn_Middle_Over"
+ image_disabled="BreadCrumbBtn_Middle_Disabled"
+ image_disabled_selected="BreadCrumbBtn_Middle_Disabled"
+ width="110">
+ <button.commit_callback
+ function="Wizard.Review"/>
+ </button>
<button
top="32"
left="210"
@@ -48,12 +54,15 @@
tab_stop="false"
enabled="false"
border="false"
- image_unselected="model_wizard/middle_button_off.png"
- image_selected="model_wizard/middle_button_press.png"
- image_hover_unselected="model_wizard/middle_button_over.png"
- image_disabled="model_wizard/middle_button_disabled.png"
- image_disabled_selected="model_wizard/middle_button_disabled.png"
- width="110"/>
+ image_unselected="BreadCrumbBtn_Middle_Off"
+ image_selected="BreadCrumbBtn_Middle_Press"
+ image_hover_unselected="BreadCrumbBtn_Middle_Over"
+ image_disabled="BreadCrumbBtn_Middle_Disabled"
+ image_disabled_selected="BreadCrumbBtn_Middle_Disabled"
+ width="110">
+ <button.commit_callback
+ function="Wizard.Physics"/>
+ </button>
<button
top="32"
left="115"
@@ -62,12 +71,15 @@
tab_stop="false"
height="32"
border="false"
- image_unselected="model_wizard/middle_button_off.png"
- image_selected="model_wizard/middle_button_press.png"
- image_hover_unselected="model_wizard/middle_button_over.png"
- image_disabled="model_wizard/middle_button_disabled.png"
- image_disabled_selected="model_wizard/middle_button_disabled.png"
- width="110"/>
+ image_unselected="BreadCrumbBtn_Middle_Off"
+ image_selected="BreadCrumbBtn_Middle_Press"
+ image_hover_unselected="BreadCrumbBtn_Middle_Over"
+ image_disabled="BreadCrumbBtn_Middle_Disabled"
+ image_disabled_selected="BreadCrumbBtn_Middle_Disabled"
+ width="110">
+ <button.commit_callback
+ function="Wizard.Optimize"/>
+ </button>
<button
top="32"
left="15"
@@ -76,12 +88,15 @@
enabled="false"
label="1. Choose File"
height="32"
- image_unselected="model_wizard/left_button_off.png"
- image_selected="model_wizard/left_button_press.png"
- image_hover_unselected="model_wizard/left_button_over.png"
- image_disabled="model_wizard/left_button_disabled.png"
- image_disabled_selected="model_wizard/left_button_disabled.png"
- width="110"/>
+ image_unselected="BreadCrumbBtn_Left_Off"
+ image_selected="BreadCrumbBtn_Left_Press"
+ image_hover_unselected="BreadCrumbBtn_Left_Over"
+ image_disabled="BreadCrumbBtn_Left_Disabled"
+ image_disabled_selected="BreadCrumbBtn_Left_Disabled"
+ width="110">
+ <button.commit_callback
+ function="Wizard.Choose"/>
+ </button>
<panel
height="388"
top_pad="0"
@@ -190,21 +205,49 @@
<text
top_pad="10"
width="130"
- height="15"
+ height="14"
left="340"
text_color="White"
word_wrap="true">
Dimensions (meters):
</text>
<text
- top_pad="2"
+ top_pad="0"
width="160"
height="15"
- name="import_dimensions"
+ font="SansSerifSmallBold"
+ text_color="White"
+ name="dimensions"
left_delta="0">
- X: [X] |Y: [Y] |Z: [Z]
+ X: Y: Z:
</text>
<text
+ top_delta="0"
+ width="160"
+ height="15"
+ name="dimension_dividers"
+ left_delta="41">
+ | |
+ </text>
+ <text
+ top_delta="0"
+ width="160"
+ height="15"
+ name="dimension_x"
+ left="356"/>
+ <text
+ top_delta="0"
+ width="160"
+ height="15"
+ name="dimension_y"
+ left="403"/>
+ <text
+ top_delta="0"
+ width="160"
+ height="15"
+ name="dimension_z"
+ left="450"/>
+ <text
top="100"
width="320"
height="15"
@@ -397,29 +440,66 @@ Advanced users familiar with 3d content creation tools may prefer to use the [se
width="290" />
<text
font="SansSerifSmall"
- top_pad="1"
+ top_pad="0"
width="300"
left_delta="6"
height="4">' ' '</text>
- <text top_delta="25" width="100" text_color="White" left_delta="50" height="20">Resource Cost:</text>
+
+
+ <icon
+ top_pad="10"
+ left_delta="0"
+ width="280"
+ height="2"
+ image_name="model_wizard\divider_line.png"/>
+
+ <text top_delta="25" width="200" text_color="White" left_delta="50" name="streaming cost" height="20">Resource Cost: [COST]</text>
<text top_delta="25" width="100" text_color="White" left_delta="0" height="20">Upload Fee:</text>
<text
- top_pad="15"
- width="130"
- height="15"
- left="10"
- text_color="White"
- word_wrap="true">
+ top_pad="5"
+ width="130"
+ height="14"
+ left="10"
+ text_color="White"
+ word_wrap="true">
Dimensions (meters):
</text>
<text
top_pad="0"
width="160"
height="15"
- name="import_dimensions"
+ font="SansSerifSmallBold"
+ text_color="White"
+ name="dimensions"
left_delta="0">
- X: [X] |Y: [Y] |Z: [Z]
+ X: Y: Z:
+ </text>
+ <text
+ top_delta="0"
+ width="160"
+ height="15"
+ name="dimension_dividers"
+ left_delta="41">
+ | |
</text>
+ <text
+ top_delta="0"
+ width="160"
+ height="15"
+ name="dimension_x"
+ left_delta="-25"/>
+ <text
+ top_delta="0"
+ width="160"
+ height="15"
+ name="dimension_y"
+ left_delta="46"/>
+ <text
+ top_delta="0"
+ width="160"
+ height="15"
+ name="dimension_z"
+ left_delta="46"/>
</panel>
</panel>
@@ -466,7 +546,7 @@ Advanced users familiar with 3d content creation tools may prefer to use the [se
<panel
top_delta="40"
left="15"
- height="245"
+ height="265"
width="500"
name="content"
bg_opaque_color="DkGray2"
@@ -499,9 +579,18 @@ Advanced users familiar with 3d content creation tools may prefer to use the [se
<text top_pad="10" width="110" halign="center" word_wrap="true" left="25" height="40">Recommended for solid objects</text>
<text top_delta="0" width="110" halign="center" word_wrap="true" left="190" height="40">Recommended for buildings</text>
<text top_delta="0" width="110" halign="center" word_wrap="true" left="350" height="40">Recommended for vehicles</text>
- <text top_delta="60" width="100" text_color="White" left="160" height="20">Resource Cost:</text>
- <text top_delta="20" width="100" text_color="White" left_delta="0" height="20">Physics Cost:</text>
- <text top_delta="20" width="100" text_color="White" left_delta="0" height="20">Upload Fee:</text>
+
+
+ <icon
+ top_pad="5"
+ left="15"
+ width="470"
+ height="2"
+ image_name="model_wizard\divider_line.png"/>
+
+ <text top_delta="20" width="180" text_color="White" left="160" name="streaming cost" height="20">Resource Cost: [COST]</text>
+ <text top_delta="26" width="180" text_color="White" left_delta="0" name="physics cost" height="20">Physics Cost: [COST]</text>
+ <text top_delta="26" width="180" text_color="White" left_delta="0" height="20">Upload Fee:</text>
</panel>
</panel>
@@ -511,7 +600,7 @@ Advanced users familiar with 3d content creation tools may prefer to use the [se
height="388"
top_delta="0"
name="review_panel"
- visible="false"
+ visible="true"
width="530"
left="0">
<panel
@@ -538,7 +627,7 @@ Advanced users familiar with 3d content creation tools may prefer to use the [se
<text
top_pad="14"
width="460"
- height="20"
+ height="24"
font="SansSerifSmall"
layout="topleft"
name="description"
@@ -546,8 +635,14 @@ Advanced users familiar with 3d content creation tools may prefer to use the [se
left_delta="10">
Review the details below then click. Upload to upload your model. Your L$ balance will be charged when you click Upload.
</text>
+ <icon
+ top_pad="10"
+ left="20"
+ width="495"
+ height="2"
+ image_name="model_wizard\divider_line.png"/>
<panel
- top_delta="40"
+ top_pad="5"
left="15"
height="245"
width="500"
@@ -555,7 +650,7 @@ Advanced users familiar with 3d content creation tools may prefer to use the [se
<text top="10" left="10" width="85" text_color="White" follows="left|top" height="15" name="lod_label">
Model Preview:
</text>
- <combo_box left_pad="5" top_delta="-2" follows="left|top" list_position="below" height="18"
+ <combo_box left_pad="5" top_delta="-5" follows="left|top" list_position="below" height="22"
name="preview_lod_combo" width="90" tool_tip="LOD to view in preview render">
<combo_item name="high">
High
@@ -580,32 +675,61 @@ Advanced users familiar with 3d content creation tools may prefer to use the [se
height="190"
follows="all"
width="190">
- </panel>
- <text
- top_pad="8"
- width="130"
- height="15"
- left="10"
- text_color="White"
- word_wrap="true">
- Dimensions (meters):
- </text>
- <text
- top_pad="0"
- width="160"
- height="15"
- name="import_dimensions"
- left_delta="0">
- X: [X] |Y: [Y] |Z: [Z]
- </text>
+ </panel>
+ <text
+ top_pad="8"
+ width="130"
+ height="14"
+ left="10"
+ text_color="White"
+ word_wrap="true">
+ Dimensions (meters):
+ </text>
+ <text
+ top_pad="0"
+ width="160"
+ height="15"
+ font="SansSerifSmallBold"
+ text_color="White"
+ name="dimensions"
+ left_delta="0">
+ X: Y: Z:
+ </text>
+ <text
+ top_delta="0"
+ width="160"
+ height="15"
+ name="dimension_dividers"
+ left_delta="41">
+ | |
+ </text>
+ <text
+ top_delta="0"
+ width="160"
+ height="15"
+ name="dimension_x"
+ left_delta="-25"/>
+ <text
+ top_delta="0"
+ width="160"
+ height="15"
+ name="dimension_y"
+ left_delta="46"/>
+ <text
+ top_delta="0"
+ width="160"
+ height="15"
+ name="dimension_z"
+ left_delta="46"/>
</panel>
<text
- width="200"
+ width="300"
height="12"
top="125"
+ name="streaming cost"
left="230"
font="SansSerifSmallBold"
- text_color="White">Resource Cost:</text>
+ text_color="White">Resource Cost: [COST]</text>
<text
width="285"
height="30"
@@ -614,12 +738,13 @@ Advanced users familiar with 3d content creation tools may prefer to use the [se
word_wrap="true"
font="SansSerifItalic">This is the cost to your Region's prim/object limit, at default scale</text>
<text
- width="200"
+ width="300"
height="12"
+ name="physics cost"
top_pad="10"
left_delta="0"
font="SansSerifSmallBold"
- text_color="White">Physics Cost:</text>
+ text_color="White">Physics Cost: [COST]</text>
<text
width="285"
height="30"
@@ -663,7 +788,7 @@ Advanced users familiar with 3d content creation tools may prefer to use the [se
height="388"
top_delta="0"
name="upload_panel"
- visible="true"
+ visible="false"
width="530"
left="0">
<panel