SH-1491 WIP - whole model upload for fee request
parent
9b0f5c815f
commit
369b34443d
|
|
@ -58,6 +58,8 @@
|
|||
#include "llworld.h"
|
||||
#include "material_codes.h"
|
||||
#include "pipeline.h"
|
||||
#include "llinventorymodel.h"
|
||||
#include "llfoldertype.h"
|
||||
|
||||
#ifndef LL_WINDOWS
|
||||
#include "netdb.h"
|
||||
|
|
@ -478,6 +480,25 @@ public:
|
|||
}
|
||||
};
|
||||
|
||||
class LLWholeModelFeeResponder: public LLCurl::Responder
|
||||
{
|
||||
LLMeshUploadThread* mThread;
|
||||
public:
|
||||
LLWholeModelFeeResponder(LLMeshUploadThread* thread):
|
||||
mThread(thread)
|
||||
{
|
||||
}
|
||||
virtual void completedRaw(U32 status, const std::string& reason,
|
||||
const LLChannelDescriptors& channels,
|
||||
const LLIOPipe::buffer_ptr_t& buffer)
|
||||
{
|
||||
assert_main_thread();
|
||||
llinfos << "completed" << llendl;
|
||||
mThread->mPendingUploads--;
|
||||
}
|
||||
|
||||
};
|
||||
|
||||
LLMeshRepoThread::LLMeshRepoThread()
|
||||
: LLThread("mesh repo", NULL)
|
||||
{
|
||||
|
|
@ -1341,8 +1362,81 @@ void LLMeshUploadThread::run()
|
|||
}
|
||||
}
|
||||
|
||||
LLSD LLMeshUploadThread::wholeModelToLLSD(bool include_textures)
|
||||
{
|
||||
// TODO where do textures go?
|
||||
|
||||
LLSD result;
|
||||
|
||||
result["folder_id"] = gInventory.findCategoryUUIDForType(LLFolderType::FT_OBJECT);
|
||||
result["asset_type"] = "mesh";
|
||||
result["inventory_type"] = "object";
|
||||
result["name"] = "your name here";
|
||||
result["description"] = "your description here";
|
||||
|
||||
LLSD res;
|
||||
res["mesh_list"] = LLSD::emptyArray();
|
||||
S32 mesh_num = 0;
|
||||
|
||||
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];
|
||||
}
|
||||
|
||||
std::stringstream ostr;
|
||||
|
||||
LLModel::Decomposition& decomp =
|
||||
data.mModel[LLModel::LOD_PHYSICS].notNull() ?
|
||||
data.mModel[LLModel::LOD_PHYSICS]->mPhysics :
|
||||
data.mBaseModel->mPhysics;
|
||||
|
||||
decomp.mBaseHull = mHullMap[data.mBaseModel];
|
||||
|
||||
LLModel::writeModel(
|
||||
ostr,
|
||||
data.mModel[LLModel::LOD_PHYSICS],
|
||||
data.mModel[LLModel::LOD_HIGH],
|
||||
data.mModel[LLModel::LOD_MEDIUM],
|
||||
data.mModel[LLModel::LOD_LOW],
|
||||
data.mModel[LLModel::LOD_IMPOSTOR],
|
||||
decomp,
|
||||
mUploadSkin,
|
||||
mUploadJoints);
|
||||
|
||||
data.mAssetData = ostr.str();
|
||||
|
||||
LLSD mesh_entry;
|
||||
|
||||
// TODO - correct coords based on instance.mTransform.
|
||||
mesh_entry["coords"]["x"] = 1.0;
|
||||
mesh_entry["coords"]["y"] = 1.0;
|
||||
mesh_entry["coords"]["z"] = 1.0;
|
||||
mesh_entry["coords"]["rot_x"] = 1.0;
|
||||
mesh_entry["coords"]["rot_y"] = 1.0;
|
||||
mesh_entry["coords"]["rot_z"] = 1.0;
|
||||
mesh_entry["mesh_data"] = ostr.str();
|
||||
|
||||
res["mesh_list"][mesh_num] = mesh_entry;
|
||||
|
||||
mesh_num++;
|
||||
}
|
||||
|
||||
result["asset_resources"] = res;
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
void LLMeshUploadThread::doWholeModelUpload()
|
||||
{
|
||||
mCurlRequest = new LLCurlRequest();
|
||||
|
||||
// Queue up models for hull generation (viewer-side)
|
||||
for (instance_map::iterator iter = mInstance.begin(); iter != mInstance.end(); ++iter)
|
||||
{
|
||||
|
|
@ -1388,7 +1482,12 @@ void LLMeshUploadThread::doWholeModelUpload()
|
|||
|
||||
bool do_include_textures = false; // not needed for initial cost/validation check.
|
||||
LLSD model_data = wholeModelToLLSD(do_include_textures);
|
||||
|
||||
|
||||
mPendingUploads++;
|
||||
LLCurlRequest::headers_t headers;
|
||||
mCurlRequest->post(mWholeModelUploadCapability, headers, model_data.asString(),
|
||||
new LLWholeModelFeeResponder(this));
|
||||
|
||||
// Currently a no-op.
|
||||
mFinished = true;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -424,6 +424,8 @@ public:
|
|||
|
||||
void doWholeModelUpload();
|
||||
void doIterativeUpload();
|
||||
|
||||
LLSD wholeModelToLLSD(bool include_textures);
|
||||
};
|
||||
|
||||
class LLMeshRepository
|
||||
|
|
|
|||
Loading…
Reference in New Issue