diff options
Diffstat (limited to 'indra/newview')
| -rwxr-xr-x | indra/newview/llfloatermodelpreview.cpp | 15 | ||||
| -rwxr-xr-x | indra/newview/llfloatermodelpreview.h | 4 | ||||
| -rw-r--r-- | indra/newview/llfloatermodelwizard.cpp | 141 | ||||
| -rw-r--r-- | indra/newview/llfloatermodelwizard.h | 38 | ||||
| -rw-r--r-- | indra/newview/skins/default/xui/en/floater_model_wizard.xml | 832 | 
5 files changed, 774 insertions, 256 deletions
diff --git a/indra/newview/llfloatermodelpreview.cpp b/indra/newview/llfloatermodelpreview.cpp index f9648b0e3b..85d0ae02cf 100755 --- a/indra/newview/llfloatermodelpreview.cpp +++ b/indra/newview/llfloatermodelpreview.cpp @@ -107,7 +107,6 @@ const S32 PREVIEW_RESIZE_HANDLE_SIZE = S32(RESIZE_HANDLE_WIDTH * OO_SQRT2) + PRE  const S32 PREVIEW_HPAD = PREVIEW_RESIZE_HANDLE_SIZE;  const S32 PREF_BUTTON_HEIGHT = 16 + 7 + 16;  const S32 PREVIEW_TEXTURE_HEIGHT = 300; -const S32 NUM_LOD = 4;  void drawBoxOutline(const LLVector3& pos, const LLVector3& size); @@ -476,12 +475,10 @@ void LLFloaterModelPreview::onPreviewLODCommit(LLUICtrl* ctrl, void* userdata)  	S32 which_mode = 0; -	LLCtrlSelectionInterface* iface = fp->childGetSelectionInterface("preview_lod_combo"); -	if (iface) -	{ -		which_mode = iface->getFirstSelectedIndex(); -	} -	which_mode = (NUM_LOD-1)-which_mode; // combo box list of lods is in reverse order +	LLComboBox* combo = (LLComboBox*) ctrl;
 +	
 +	which_mode = (NUM_LOD-1)-combo->getFirstSelectedIndex(); // combo box list of lods is in reverse order
 +
  	fp->mModelPreview->setPreviewLOD(which_mode);  } @@ -2699,7 +2696,7 @@ bool LLModelPreview::containsRiggedAsset( void )  	}  	return false;  } -void LLModelPreview::genLODs(S32 which_lod) +void LLModelPreview::genLODs(S32 which_lod, U32 decimation)  {  	if (mBaseModel.empty())  	{ @@ -2916,7 +2913,7 @@ void LLModelPreview::genLODs(S32 which_lod)  		{  			if (lod < start)  			{ -				triangle_count /= 3; +				triangle_count /= decimation;  			}  		}  		else diff --git a/indra/newview/llfloatermodelpreview.h b/indra/newview/llfloatermodelpreview.h index ae4cf18fee..64b220d86b 100755 --- a/indra/newview/llfloatermodelpreview.h +++ b/indra/newview/llfloatermodelpreview.h @@ -52,6 +52,8 @@ class domTranslate;  class LLMenuButton;  class LLToggleableMenu; +const S32 NUM_LOD = 4;
 +  class LLModelLoader : public LLThread  {  public: @@ -258,7 +260,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); +	void genLODs(S32 which_lod = -1, U32 decimation = 3);  	void generateNormals();  	void consolidate();  	void clearMaterials(); diff --git a/indra/newview/llfloatermodelwizard.cpp b/indra/newview/llfloatermodelwizard.cpp index 79c29ef017..6a92e43d1a 100644 --- a/indra/newview/llfloatermodelwizard.cpp +++ b/indra/newview/llfloatermodelwizard.cpp @@ -28,19 +28,71 @@  #include "llviewerprecompiledheaders.h" +#include "llbutton.h"  #include "lldrawable.h" +#include "llcombobox.h"  #include "llfloater.h"  #include "llfloatermodelwizard.h"  #include "llfloatermodelpreview.h"  #include "llfloaterreg.h" +#include "llslider.h" +static	const std::string stateNames[]={ +	"choose_file", +	"optimize", +	"physics", +	"review", +	"upload"};  LLFloaterModelWizard::LLFloaterModelWizard(const LLSD& key)  	: LLFloater(key)  {  } +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"); +		if (view)  +		{ +			view->setVisible(state == (int) t ? TRUE : FALSE); +		} +	} + +	if (state == OPTIMIZE) +	{ +		mModelPreview->genLODs(-1); +	} +} + +void LLFloaterModelWizard::setButtons(int state) +{ +	for(size_t i=0; i<LL_ARRAY_SIZE(stateNames); ++i) +	{ +		LLButton *button = getChild<LLButton>(stateNames[i]+"_btn"); + +		if (i < state) +		{ +			button->setEnabled(TRUE); +			button->setToggleState(FALSE); +		} +		else if (i == state) +		{ +			button->setEnabled(TRUE); +			button->setToggleState(TRUE); +		} +		else +		{ +			button->setEnabled(FALSE); +		} +	} +} +  void LLFloaterModelWizard::loadModel()  {  	 mModelPreview->mLoading = TRUE; @@ -48,6 +100,30 @@ void LLFloaterModelWizard::loadModel()  	(new LLMeshFilePicker(mModelPreview, 3))->getFile();  } +void LLFloaterModelWizard::onClickCancel() +{ +	closeFloater(); +} + +void LLFloaterModelWizard::onClickBack() +{ +	setState(llmax((int) CHOOSE_FILE, mState-1)); +} + +void LLFloaterModelWizard::onClickNext() +{ +	setState(llmin((int) UPLOAD, mState+1)); +} + +bool LLFloaterModelWizard::onEnableNext() +{ +	return true; +} + +bool LLFloaterModelWizard::onEnableBack() +{ +	return true; +}  BOOL LLFloaterModelWizard::postBuild()  { @@ -56,7 +132,20 @@ BOOL LLFloaterModelWizard::postBuild()  	childSetValue("import_scale", (F32) 0.67335826);  	getChild<LLUICtrl>("browse")->setCommitCallback(boost::bind(&LLFloaterModelWizard::loadModel, this)); +	getChild<LLUICtrl>("cancel")->setCommitCallback(boost::bind(&LLFloaterModelWizard::onClickCancel, this)); +	getChild<LLUICtrl>("back")->setCommitCallback(boost::bind(&LLFloaterModelWizard::onClickBack, this)); +	getChild<LLUICtrl>("next")->setCommitCallback(boost::bind(&LLFloaterModelWizard::onClickNext, this)); +	childSetCommitCallback("preview_lod_combo", onPreviewLODCommit, this); +	getChild<LLUICtrl>("accuracy_slider")->setCommitCallback(boost::bind(&LLFloaterModelWizard::onAccuracyPerformance, this, _2)); + +	childSetAction("ok_btn", onUpload, 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); @@ -64,9 +153,55 @@ BOOL LLFloaterModelWizard::postBuild()  	center(); +	setState(CHOOSE_FILE); + +	childSetTextArg("import_dimensions", "[X]", LLStringUtil::null); +	childSetTextArg("import_dimensions", "[Y]", LLStringUtil::null); +	childSetTextArg("import_dimensions", "[Z]", LLStringUtil::null); +  	return TRUE;  } +void LLFloaterModelWizard::onUpload(void* user_data) +{ +	LLFloaterModelWizard* mp = (LLFloaterModelWizard*) user_data; +	 +	mp->mModelPreview->rebuildUploadData(); +	 +	gMeshRepo.uploadModel(mp->mModelPreview->mUploadData, mp->mModelPreview->mPreviewScale,  +						  mp->childGetValue("upload_textures").asBoolean(), mp->childGetValue("upload_skin"), mp->childGetValue("upload_joints")); +	 +	mp->closeFloater(false); +} + + +void LLFloaterModelWizard::onAccuracyPerformance(const LLSD& data) +{ +	int val = (int) data.asInteger(); + +	mModelPreview->genLODs(-1, NUM_LOD-val); + +	mModelPreview->refresh(); +} + +void LLFloaterModelWizard::onPreviewLODCommit(LLUICtrl* ctrl, void* userdata) +{ +	LLFloaterModelWizard *fp =(LLFloaterModelWizard *)userdata; +	 +	if (!fp->mModelPreview) +	{ +		return; +	} +	 +	S32 which_mode = 0; +	 +	LLComboBox* combo = (LLComboBox*) ctrl; +	 +	which_mode = (NUM_LOD-1)-combo->getFirstSelectedIndex(); // combo box list of lods is in reverse order + +	fp->mModelPreview->setPreviewLOD(which_mode); +} +  void LLFloaterModelWizard::draw()  {  	LLFloater::draw(); @@ -74,14 +209,14 @@ void LLFloaterModelWizard::draw()  	mModelPreview->update(); -	if (mModelPreview && mModelPreview->mModelLoader) +	if (mModelPreview)  	{  		gGL.color3f(1.f, 1.f, 1.f);  		gGL.getTexUnit(0)->bind(mModelPreview); - -		LLView* preview_panel = getChild<LLView>("preview_panel"); +		LLView *view = getChild<LLView>(stateNames[mState]+"_panel"); +		LLView* preview_panel = view->getChild<LLView>("preview_panel");  		LLRect rect = preview_panel->getRect();  		if (rect != mPreviewRect) diff --git a/indra/newview/llfloatermodelwizard.h b/indra/newview/llfloatermodelwizard.h index c766697d47..ab69d93b63 100644 --- a/indra/newview/llfloatermodelwizard.h +++ b/indra/newview/llfloatermodelwizard.h @@ -35,24 +35,36 @@ public:  	virtual ~LLFloaterModelWizard() {};  	/*virtual*/	BOOL	postBuild();  	void			draw(); -	void loadModel(); -	//void onSave(); -	//void onReset(); -	//void onCancel(); -	///*virtual*/ void onOpen(const LLSD& key);  private: -	 +	enum EWizardState +	{ +		CHOOSE_FILE = 0, +		OPTIMIZE, +		PHYSICS, +		REVIEW, +		UPLOAD +	}; + +	void setState(int state); +	void setButtons(int state); +	void onClickCancel(); +	void onClickBack(); +	void onClickNext(); +	bool onEnableNext(); +	bool onEnableBack(); +	void loadModel(); +	static void	onPreviewLODCommit(LLUICtrl*,void*); +	void onAccuracyPerformance(const LLSD& data); +	static void onUpload(void* data); +  	LLModelPreview*	mModelPreview;  	LLRect			mPreviewRect; +	int mState; + + +  }; -/* -namespace LLFloaterDisplayNameUtil -{ -	// Register with LLFloaterReg -	void registerFloater(); -} -*/  #endif 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 4a4b8075c8..18dc33a23a 100644 --- a/indra/newview/skins/default/xui/en/floater_model_wizard.xml +++ b/indra/newview/skins/default/xui/en/floater_model_wizard.xml @@ -1,230 +1,602 @@ -<?xml version="1.0" encoding="utf-8" standalone="yes" ?> -<floater - legacy_header_height="18" - layout="topleft" - name="Model Wizard" - help_topic="model_wizard" - bg_opaque_image_overlay="0.5 0.5 0.5 1" - height="450" - save_rect="true" - title="UPLOAD MODEL WIZARD"  - width="530"> -	<panel -		   height="600"> -		<button -	     top="30" -		 left="410" -		 height="32" -		 name="upload"  -		 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"/> -		<button -	     top="30" -		 left="310" -		 height="32" -		  tab_stop="false" -		 name="review" -		 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"/> -		<button -	     top="30" -		 left="210" -		 height="32" -		 name="physics" -		 label="3. Physics" -		 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"/> -		<button -	     top="30" -		 left="115" -		 name="optimize" -		 label="2. Optimize" -		  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"/> -		<button -	     top="30" -		 left="15" -		 name="choose_file" -		 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"/> -		<panel -		 top_pad="20" -		 height="20" -		 width="500"  -		 bg_opaque_color="DkGray2" -		 background_visible="true" -		 background_opaque="true"  -		 left="20"> -		<text -		 width="200" -		 left="10"  -		 top="2"  -		 height="10" -		 font="SansSerifBig" -		 layout="topleft" -		 > -			  Upload Model -		</text></panel> -		<text -		 top_pad="14" -		 width="460" -		 height="20" -		 font="SansSerifSmall" -		 layout="topleft" -		 word_wrap="true" -		 left_delta="0"> -			This wizard will help you import mesh models to Second Life.  First specify a file containing the model you wish to import.  Second Life supports COLLADA (.dae) files. -		</text> - -		<panel -			top_delta="40" -			left="15" -		 height="240" -		 width="500" -		 bg_opaque_color="DkGray2" -		 background_visible="true" -		 background_opaque="true"> - -			<text -	 type="string" -	 length="1" -	 follows="left|top" -	 top="10"  -	 height="10" -	 layout="topleft" -	 left_delta="10" -	 name="Cache location" -	 width="300"> -				Filename: -			</text> -			<line_editor -			 border_style="line" -			 border_thickness="1" -			 follows="left|top" -			 font="SansSerifSmall" -			 height="20" -			 layout="topleft" -	 left_delta="0" -			 max_length="4096" -			 name="lod_file" -			 top_pad="5" -			 width="220" /> -			<button -			 follows="left|top" -			 height="23" -			 label="Browse..." -			 label_selected="Browse..." -			 layout="topleft" -			 left_pad="10" -			 name="browse" -			 top_delta="-1" -			 width="75"> -			</button> -			<text -	top_delta="-15" -	width="200" -	height="15" -	font="SansSerifSmall" -	layout="topleft" -	left_pad="24"> -				Model Preview: -			</text> - -			<!-- Placeholder panel for 3D preview render --> -			 -			<panel -					left_delta="-2" -				   top_pad="0" -					name="preview_panel" -					bevel_style="none" -				   border_style="line" -					border="true" -				   height="150" -			  follows="all" -				   width="150"> -			</panel> -			<text -			 top_pad="10" -			 width="130" -			 height="15" -			 left="340" -			 word_wrap="true" -		 > -				Dimensions (meters): -			</text> -			<text -			 top_pad="5" -			 width="150" -			 height="15" -			 name="import_dimensions" -			 left_delta="0"> -				X:  [X] |  Y:  [Y] | Z: [Z] -			</text> -			 -			<text -			 top="100" -			 width="320" -			 height="40" -			 left="10" -			 word_wrap="true" -		 > -				Note: -Advanced users familiar with 3d content creation tools may prefer to use the Advanced Mesh Import window. -			</text> -		</panel> -		<button -		 top="410" -		 right="-175"  -		 width="80" -		 height="20" -		 label="<< Back" /> -		<button -		 top="410" -		 right="-92" -		 width="80" -		 height="20" -		 label="Next >> " /> -		<button -		 top="410" -		 right="-15" -		 width="70" -		 height="20" -		 label="Cancel" /> -	</panel> -	<spinner visible="false" left="10" height="20" follows="top|left" width="80" top_pad="-50" value="1.0" min_val="0.01" max_val="64.0" name="import_scale"/> -</floater> +<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
 +<floater
 + legacy_header_height="18"
 + layout="topleft"
 + name="Model Wizard"
 + help_topic="model_wizard"
 + bg_opaque_image_overlay="0.5 0.5 0.5 1"
 + height="450"
 + save_rect="true"
 + title="UPLOAD MODEL WIZARD"
 + width="530">
 +	<button
 +	 top="30"
 +	 tab_stop="false"
 +	 left="410"
 +	 height="32"
 +	 name="upload_btn"
 +	 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"/>
 +	<button
 +	 top="30"
 +	 left="310"
 +	 height="32"
 +	 tab_stop="false"
 +	 name="review_btn"
 +	 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"/>
 +	<button
 +	 top="30"
 +	 left="210"
 +	 height="32"
 +	 name="physics_btn"
 +	 label="3. Physics"
 +	 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"/>
 +	<button
 +	 top="30"
 +	 left="115"
 +	 name="optimize_btn"
 +	 label="2. Optimize"
 +	 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"/>
 +	<button
 +	 top="30"
 +	 left="15"
 +	 name="choose_file_btn"
 +	 tab_stop="false"
 +	 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"/>
 +	<panel
 +		 height="388"
 +		 top_pad="0"
 +		 name="choose_file_panel"
 +		 visible="true"
 +		 width="530"
 +		 left="0">
 +		<panel
 +		 height="20"
 +		 top_pad="20"
 +		 width="500"
 +		 name="header_panel"
 +		 bg_opaque_color="DkGray2"
 +		 background_visible="true"
 +		 background_opaque="true"
 +		 left="20">
 +			<text
 +			 width="200"
 +			 left="10"
 +			 top="2"
 +			 name="header_text"
 +			 height="10"
 +			 font="SansSerifBig"
 +			 layout="topleft">
 +				Upload Model
 +			</text>
 +		</panel>
 +		<text
 +		 top_pad="14"
 +		 width="460"
 +		 height="20"
 +		 name="description"
 +		 font="SansSerifSmall"
 +		 layout="topleft"
 +		 word_wrap="true"
 +		 left_delta="0">
 +			This wizard will help you import mesh models to Second Life.  First specify a file containing the model you wish to import.  Second Life supports COLLADA (.dae) files.
 +		</text>
 +		<panel
 +		 top_delta="40"
 +		 left="15"
 +		 height="240"
 +		 width="500"
 +		 name="content"
 +		 bg_opaque_color="DkGray2"
 +		 background_visible="true"
 +		 background_opaque="true">
 +			<text
 +			 type="string"
 +			 length="1"
 +			 follows="left|top"
 +			 top="10"
 +			 height="10"
 +			 layout="topleft"
 +			 left_delta="10"
 +			 name="Cache location"
 +			 width="300">
 +				Filename:
 +			</text>
 +			<line_editor
 +			 border_style="line"
 +			 border_thickness="1"
 +			 follows="left|top"
 +			 font="SansSerifSmall"
 +			 height="20"
 +			 layout="topleft"
 +			 left_delta="0"
 +			 max_length="4096"
 +			 name="lod_file"
 +			 top_pad="5"
 +			 width="220" />
 +			<button
 +			 follows="left|top"
 +			 height="23"
 +			 label="Browse..."
 +			 label_selected="Browse..."
 +			 layout="topleft"
 +			 left_pad="10"
 +			 name="browse"
 +			 top_delta="-1"
 +			 width="75">
 +			</button>
 +			<text
 +			 top_delta="-15"
 +			 width="200"
 +			 height="15"
 +			 font="SansSerifSmall"
 +			 layout="topleft"
 +			 left_pad="24">
 +				Model Preview:
 +			</text>
 +			<!-- Placeholder panel for 3D preview render -->
 +			<panel
 +			 left_delta="-2"
 +			 top_pad="0"
 +			 name="preview_panel"
 +			 bevel_style="none"
 +			 border_style="line"
 +			 border="true"
 +			 height="150"
 +			 follows="all"
 +			 width="150">
 +			</panel>
 +			<text
 +			 top_pad="10"
 +			 width="130"
 +			 height="15"
 +			 left="340"
 +			 word_wrap="true">
 +				Dimensions (meters):
 +			</text>
 +			<text
 +			 top_pad="5"
 +			 width="160"
 +			 height="15"
 +			 name="import_dimensions"
 +			 left_delta="0">
 +				X:  [X] |  Y:  [Y] | Z: [Z]
 +			</text>
 +			<text
 +			 top="100"
 +			 width="320"
 +			 height="40"
 +			 left="10"
 +			 word_wrap="true">
 +				Note:
 +				Advanced users familiar with 3d content creation tools may prefer to use the Advanced Mesh Import window.
 +			</text>
 +			<combo_box left_pad="0" top_delta="0"  follows="left|top" list_position="below" height="18"
 +  name="preview_lod_combo_2" width="90" tool_tip="LOD to view in preview render">
 +				<combo_item name="high">
 +					High
 +				</combo_item>
 +				<combo_item name="medium">
 +					Medium
 +				</combo_item>
 +				<combo_item name="lowest">
 +					Lowest
 +				</combo_item>
 +				<combo_item name="low">
 +					Low
 +				</combo_item>
 +			</combo_box>
 +		</panel>
 +	</panel>
 +
 +
 +	<panel
 +		 height="388"
 +		 top_delta="0"
 +		 name="optimize_panel"
 +		 visible="false"
 +		 width="530"
 +		 left="0">
 +		<panel
 +		 height="20"
 +		 top_pad="20"
 +		 name="header_panel"
 +		 width="500"
 +		 bg_opaque_color="DkGray2"
 +		 background_visible="true"
 +		 background_opaque="true"
 +		 left="20">
 +			<text
 +			 width="200"
 +			 left="10"
 +			 name="header_text"
 +			 top="2"
 +			 height="10"
 +			 font="SansSerifBig"
 +			 layout="topleft">
 +				Optimize
 +			</text>
 +		</panel>
 +		<text
 +		 top_pad="14"
 +		 width="460"
 +		 height="20"
 +		 font="SansSerifSmall"
 +		 layout="topleft"
 +		 name="description"
 +		 word_wrap="true"
 +		 left_delta="0">
 +			This wizard is optimizing your model. This may take several minutes. To stop the process click the back button
 +		</text>
 +		<panel
 +		 top_delta="40"
 +		 visible="false"
 +		 left="15"
 +		 height="240"
 +		 width="500"
 +		 name="content"
 +		 bg_opaque_color="DkGray2"
 +		 background_visible="true"
 +		 background_opaque="true">
 +			<text
 +			 top="20"
 +			 width="300"
 +			 height="12"
 +			 font="SansSerifBold"
 +			 left="112">Generating Level of Detail</text>
 +			<progress_bar
 +			  name="optimize_progress_bar"
 +              image_fill="model_wizard\progress_light.png"
 +			  color_bg="1 1 1 1"
 +			  color_bar="1 1 1 0.96"
 +			  follows="left|right|top"
 +			  width="260"
 +			  height="16"
 +			  image_bar="model_wizard\progress_bar_bg.png"
 +			  top_pad="14"
 +			  left="110"/>
 +			<icon
 +			 top_pad="10"
 +			 left_delta="0"
 +			 width="13"
 +			 height="12"
 +			 image_name="model_wizard\check_mark.png"/>
 +			<text
 +			 top_delta="0"
 +			 left_delta="18"
 +			 name="high_detail_text"
 +			 width="200"
 +			 height="14">Generate Level of Detail: High</text>
 +			<icon
 +			 top_pad="10"
 +			 left_delta="-18"
 +			 width="13"
 +			 height="12"
 +			 image_name="model_wizard\check_mark.png"/>
 +			<text
 +			 top_delta="0"
 +			 left_delta="18"
 +			 name="medium_detail_text"
 +			 width="200"
 +			 height="14">Generate Level of Detail: Medium</text>
 +			<icon
 +			 top_pad="10"
 +			 left_delta="-18"
 +			 width="13"
 +			 height="12"
 +			 image_name="model_wizard\check_mark.png"/>
 +			<text
 +			 top_delta="0"
 +			 left_delta="18"
 +			 name="low_detail_text"
 +			 width="200"
 +			 height="14">Generate Level of Detail: Low</text>
 +			<icon
 +			 top_pad="10"
 +			 left_delta="-18"
 +			 width="13"
 +			 height="12"
 +			 image_name="model_wizard\check_mark.png"/>
 +			<text
 +			 top_delta="0"
 +			 left_delta="18"
 +			 name="lowest_detail_text"
 +			 width="200"
 +			 height="14">Generate Level of Detail: Lowest</text>
 +		</panel>
 +		<panel
 +				 top_delta="0"
 +				 left_delta="0"
 +				 height="240"
 +				 width="500"
 +				 name="content2"
 +				 bg_opaque_color="DkGray2"
 +				 background_visible="true"
 +				 background_opaque="true">
 +			<text top="10" left="10" width="85"  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"
 +	     name="preview_lod_combo" width="90" tool_tip="LOD to view in preview render">
 +				<combo_item name="high">
 +					High
 +				</combo_item>
 +				<combo_item name="medium">
 +					Medium
 +				</combo_item>
 +				<combo_item name="lowest">
 +					Lowest
 +				</combo_item>
 +				<combo_item name="low">
 +					Low
 +				</combo_item>
 +			</combo_box>
 +			<panel
 +				 left="10"
 +				 top_pad="5"
 +				 name="preview_panel"
 +				 bevel_style="none"
 +				 border_style="line"
 +				 border="true"
 +				 height="175"
 +				 follows="all"
 +				 width="175">
 +			</panel>
 +			<text top="50" left="210"  font="SansSerifSmallBold" width="300" height="4">Performance                            Accuracy</text>
 +
 +			<slider
 +		   follows="left|top"
 +		   height="20"
 +		   increment="1"
 +		   layout="topleft"
 +		   left="220"
 +		   max_val="2"
 +		   initial_vauel="1"
 +		   min_val="0"
 +		   name="accuracy_slider"
 +		   show_text="false"
 +		   top="105"
 +		   width="250" />
 +			<text font="SansSerifSmall" top_pad="4"  width="300" left_delta="6" height="4">|                                      |                                      |</text>
 +
 +		</panel>
 +	</panel>
 +
 +
 +
 +	<panel
 +		 height="388"
 +		 top_delta="0"
 +		 name="physics_panel"
 +		 visible="false"
 +		 width="530"
 +		 left="0">
 +		<panel
 +		 height="20"
 +		 top_pad="20"
 +		 name="header_panel"
 +		 width="500"
 +		 bg_opaque_color="DkGray2"
 +		 background_visible="true"
 +		 background_opaque="true"
 +		 left="20">
 +			<text
 +			 width="200"
 +			 left="10"
 +			 name="header_text"
 +			 top="2"
 +			 height="10"
 +			 font="SansSerifBig"
 +			 layout="topleft">
 +				Physics
 +			</text>
 +		</panel>
 +		<text
 +		 top_pad="14"
 +		 width="460"
 +		 height="20"
 +		 font="SansSerifSmall"
 +		 layout="topleft"
 +		 name="description"
 +		 word_wrap="true"
 +		 left_delta="0">
 +			The wizard will create a physical shape, which determines how the object interacts with other objects and avatars. Set the slider to the detail level most appropriate for how your object will be used:
 +		</text>
 +		<panel
 +		 top_delta="40"
 +		 left="15"
 +		 height="240"
 +		 width="500"
 +		 name="content"
 +		 bg_opaque_color="DkGray2"
 +		 background_visible="true"
 +		 background_opaque="true"/>
 +	</panel>
 +
 +
 +	<panel
 +		 height="388"
 +		 top_delta="0"
 +		 name="review_panel"
 +		 visible="false"
 +		 width="530"
 +		 left="0">
 +		<panel
 +		 height="20"
 +		 top_pad="20"
 +		 name="header_panel"
 +		 width="500"
 +		 bg_opaque_color="DkGray2"
 +		 background_visible="true"
 +		 background_opaque="true"
 +		 left="20">
 +			<text
 +			 width="200"
 +			 left="10"
 +			 name="header_text"
 +			 top="2"
 +			 height="10"
 +			 font="SansSerifBig"
 +			 layout="topleft">
 +				Review
 +			</text>
 +		</panel>
 +		<text
 +		 top_pad="14"
 +		 width="460"
 +		 height="20"
 +		 font="SansSerifSmall"
 +		 layout="topleft"
 +		 name="description"
 +		 word_wrap="true"
 +		 left_delta="0">
 +			Review the details below then click. Upload to upload your model. Your L$ balance will be charged when you click Upload.
 +		</text>
 +		<panel
 +		 top_delta="40"
 +		 left="15"
 +		 height="240"
 +		 width="500"
 +		 name="content"
 +		 bg_opaque_color="DkGray2"
 +		 background_visible="true"
 +		 background_opaque="true"/>
 +	</panel>
 +
 +
 +
 +
 +	<panel
 +		 height="388"
 +		 top_delta="0"
 +		 name="upload_panel"
 +		 visible="false"
 +		 width="530"
 +		 left="0">
 +		<panel
 +		 height="20"
 +		 top_pad="20"
 +		 name="header_panel"
 +		 width="500"
 +		 bg_opaque_color="DkGray2"
 +		 background_visible="true"
 +		 background_opaque="true"
 +		 left="20">
 +			<text
 +			 width="200"
 +			 left="10"
 +			 name="header_text"
 +			 top="2"
 +			 height="10"
 +			 font="SansSerifBig"
 +			 layout="topleft">
 +				Upload Complete!
 +			</text>
 +		</panel>
 +		<text
 +		 top_pad="14"
 +		 width="460"
 +		 height="20"
 +		 font="SansSerifSmall"
 +		 layout="topleft"
 +		 name="description"
 +		 word_wrap="true"
 +		 left_delta="0">
 +			Congratulations! Your model has been sucessfully uploaded.  You will find the model in the Objects folder in your inventory.
 +		</text>
 +		<panel
 +		 top_delta="40"
 +		 left="15"
 +		 height="240"
 +		 width="500"
 +		 name="content"
 +		 bg_opaque_color="DkGray2"
 +		 background_visible="true"
 +		 background_opaque="true">
 +			<button top="10" follows="top|left" height="20" label="Upload"
 +				   left="15" width="80" name="ok_btn" tool_tip="Upload to simulator"/>
 +		</panel>
 +	</panel>
 +
 +
 +
 +	<button
 +	 top="410"
 +	 right="-245"
 +	 width="90"
 +	 height="20"
 +	 name="back"
 +	 label="<< Back" />
 +	<button
 +	 top_delta="0"
 +	 right="-150"
 +	 width="90"
 +	 height="20"
 +	 name="next"
 +	 label="Next >> " />
 +	<button
 +	 top_delta="0"
 +	 right="-15"
 +	 width="90"
 +	 height="20"
 +	 name="cancel"
 +	 label="Cancel" />
 +	<spinner visible="false" left="10" height="20" follows="top|left" width="80" top_pad="-50" value="1.0" min_val="0.01" max_val="64.0" name="import_scale"/>
 +
 +	<string name="status_idle">Idle</string>
 +	<string name="status_reading_file">Loading...</string>
 +	<string name="status_generating_meshes">Generating Meshes...</string>
 +	<string name="high">High</string>
 +	<string name="medium">Medium</string>
 +	<string name="low">Low</string>
 +	<string name="lowest">Lowest</string>
 +	<string name="mesh_status_good">Ship it!</string>
 +	<string name="mesh_status_na">N/A</string>
 +	<string name="mesh_status_none">None</string>
 +	<string name="mesh_status_submesh_mismatch">Levels of detail have a different number of textureable faces.</string>
 +	<string name="mesh_status_mesh_mismatch">Levels of detail have a different number of mesh instances.</string>
 +	<string name="mesh_status_too_many_vertices">Level of detail has too many vertices.</string>
 +	<string name="mesh_status_missing_lod">Missing required level of detail.</string>
 +	<string name="layer_all">All</string>
 +	<!-- Text to display in physics layer combo box for "all layers" -->
 +
 +</floater>
  | 
