From 9b0f5c815fcd8381f336ba860ae1f5bf0c842e58 Mon Sep 17 00:00:00 2001 From: "Brad Payne (Vir Linden)" Date: Thu, 5 May 2011 17:40:35 -0400 Subject: started new code path for whole model fee request/upload --- indra/newview/app_settings/settings.xml | 11 ++++++ indra/newview/llmeshrepository.cpp | 65 +++++++++++++++++++++++++++++++++ indra/newview/llmeshrepository.h | 4 ++ 3 files changed, 80 insertions(+) mode change 100644 => 100755 indra/newview/app_settings/settings.xml mode change 100644 => 100755 indra/newview/llmeshrepository.cpp mode change 100644 => 100755 indra/newview/llmeshrepository.h (limited to 'indra/newview') diff --git a/indra/newview/app_settings/settings.xml b/indra/newview/app_settings/settings.xml old mode 100644 new mode 100755 index c4af9e2ab6..75bd29ecd4 --- a/indra/newview/app_settings/settings.xml +++ b/indra/newview/app_settings/settings.xml @@ -5545,6 +5545,17 @@ Value 0 + MeshUseWholeModelUpload + + Comment + Upload model in its entirety instead of mesh-by-mesh (new caps) + Persist + 1 + Type + Boolean + Value + 0 + MigrateCacheDirectory Comment diff --git a/indra/newview/llmeshrepository.cpp b/indra/newview/llmeshrepository.cpp old mode 100644 new mode 100755 index dd2ffdf7f1..4c04b0ea35 --- a/indra/newview/llmeshrepository.cpp +++ b/indra/newview/llmeshrepository.cpp @@ -1239,6 +1239,7 @@ LLMeshUploadThread::LLMeshUploadThread(LLMeshUploadThread::instance_list& data, mUploadObjectAssetCapability = gAgent.getRegion()->getCapability("UploadObjectAsset"); mNewInventoryCapability = gAgent.getRegion()->getCapability("NewFileAgentInventoryVariablePrice"); + mWholeModelUploadCapability = gAgent.getRegion()->getCapability("NewFileAgentInventory"); mOrigin += gAgent.getAtAxis() * scale.magVec(); } @@ -1329,6 +1330,70 @@ BOOL LLMeshUploadThread::isDiscarded() } void LLMeshUploadThread::run() +{ + if (gSavedSettings.getBOOL("MeshUseWholeModelUpload")) + { + doWholeModelUpload(); + } + else + { + doIterativeUpload(); + } +} + +void LLMeshUploadThread::doWholeModelUpload() +{ + // Queue up models for hull generation (viewer-side) + for (instance_map::iterator iter = mInstance.begin(); iter != mInstance.end(); ++iter) + { + LLMeshUploadData data; + data.mBaseModel = iter->first; + + LLModelInstance& instance = *(iter->second.begin()); + + for (S32 i = 0; i < 5; i++) + { + data.mModel[i] = instance.mLOD[i]; + } + + //queue up models for hull generation + LLModel* physics = NULL; + + if (data.mModel[LLModel::LOD_PHYSICS].notNull()) + { + physics = data.mModel[LLModel::LOD_PHYSICS]; + } + else if (data.mModel[LLModel::LOD_MEDIUM].notNull()) + { + physics = data.mModel[LLModel::LOD_MEDIUM]; + } + else + { + physics = data.mModel[LLModel::LOD_HIGH]; + } + + if (!physics) + { + llerrs << "WTF?" << llendl; + } + + DecompRequest* request = new DecompRequest(physics, data.mBaseModel, this); + gMeshRepo.mDecompThread->submitRequest(request); + } + + while (!mPhysicsComplete) + { + apr_sleep(100); + } + + bool do_include_textures = false; // not needed for initial cost/validation check. + LLSD model_data = wholeModelToLLSD(do_include_textures); + + // Currently a no-op. + mFinished = true; +} + +void LLMeshUploadThread::doIterativeUpload() { if(isDiscarded()) { diff --git a/indra/newview/llmeshrepository.h b/indra/newview/llmeshrepository.h old mode 100644 new mode 100755 index 5983a282a2..e2faed52cf --- a/indra/newview/llmeshrepository.h +++ b/indra/newview/llmeshrepository.h @@ -387,6 +387,7 @@ public: LLHost mHost; std::string mUploadObjectAssetCapability; std::string mNewInventoryCapability; + std::string mWholeModelUploadCapability; std::queue mUploadQ; std::queue mConfirmedQ; @@ -420,6 +421,9 @@ public: void preStart(); void discard() ; BOOL isDiscarded(); + + void doWholeModelUpload(); + void doIterativeUpload(); }; class LLMeshRepository -- cgit v1.2.3