summaryrefslogtreecommitdiff
path: root/indra/newview/pipeline.h
diff options
context:
space:
mode:
Diffstat (limited to 'indra/newview/pipeline.h')
-rw-r--r--indra/newview/pipeline.h35
1 files changed, 35 insertions, 0 deletions
diff --git a/indra/newview/pipeline.h b/indra/newview/pipeline.h
index 67004a5f2d..f41f6173a9 100644
--- a/indra/newview/pipeline.h
+++ b/indra/newview/pipeline.h
@@ -278,6 +278,10 @@ public:
LLCullResult::sg_list_t::iterator beginAlphaGroups();
LLCullResult::sg_list_t::iterator endAlphaGroups();
+
+ //mesh management functions
+ void loadMesh(LLVOVolume* volume, LLUUID mesh_id, S32 detail = 0);
+
void addTrianglesDrawn(S32 count);
BOOL hasRenderType(const U32 type) const { return (type && (mRenderTypeMask & (1<<type))) ? TRUE : FALSE; }
BOOL hasRenderDebugFeatureMask(const U32 mask) const { return (mRenderDebugFeatureMask & mask) ? TRUE : FALSE; }
@@ -675,6 +679,37 @@ public:
protected:
std::vector<LLFace*> mSelectedFaces;
+
+ typedef std::map<LLUUID, std::set<LLUUID> > mesh_load_map;
+ mesh_load_map mLoadingMeshes[4];
+
+ LLMutex* mMeshMutex;
+
+ class LLMeshThread : public LLThread
+ {
+ public:
+ LLPointer<LLVolume> mVolume;
+ LLVolume* mTargetVolume;
+ LLUUID mMeshID;
+ F32 mDetail;
+ S32 mDetailIndex;
+ LLMeshThread(LLUUID mesh_id, LLVolume* target, S32 detail = -1);
+ ~LLMeshThread();
+ void run();
+ };
+
+ static void getMeshAssetCallback(LLVFS *vfs,
+ const LLUUID& asset_uuid,
+ LLAssetType::EType type,
+ void* user_data, S32 status, LLExtStat ext_status);
+
+ std::list<LLMeshThread*> mLoadedMeshes;
+ std::list<LLMeshThread*> mPendingMeshes;
+ U32 mMeshThreadCount;
+
+ void meshLoaded(LLMeshThread* mesh_thread);
+ void notifyLoadedMeshes();
+
LLPointer<LLViewerFetchedTexture> mFaceSelectImagep;
LLPointer<LLViewerTexture> mBloomImagep;
LLPointer<LLViewerTexture> mBloomImage2p;