summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorXiaohong Bao <bao@lindenlab.com>2013-03-28 16:52:36 -0600
committerXiaohong Bao <bao@lindenlab.com>2013-03-28 16:52:36 -0600
commit7a33d88886d9f9d83d3d12c95bb41e0093159d58 (patch)
tree9dcca0d65d54d178ab411b9b7357ef0a7cd4fca6
parent5334c15852b0669be74546d4fa11c58a279dda2d (diff)
freeze particle system when monitor scene loading
-rw-r--r--indra/newview/llscenemonitor.cpp9
-rw-r--r--indra/newview/llviewerpartsim.cpp14
-rw-r--r--indra/newview/llviewerpartsim.h2
3 files changed, 25 insertions, 0 deletions
diff --git a/indra/newview/llscenemonitor.cpp b/indra/newview/llscenemonitor.cpp
index 8655aa4521..afb03ff268 100644
--- a/indra/newview/llscenemonitor.cpp
+++ b/indra/newview/llscenemonitor.cpp
@@ -39,6 +39,7 @@
#include "llspatialpartition.h"
#include "llagent.h"
#include "pipeline.h"
+#include "llviewerpartsim.h"
LLSceneMonitorView* gSceneMonitorView = NULL;
@@ -273,8 +274,12 @@ void LLSceneMonitor::freezeScene()
// freeze everything else
gSavedSettings.setBOOL("FreezeTime", TRUE);
+ //disable sky, water and clouds
gPipeline.clearRenderTypeMask(LLPipeline::RENDER_TYPE_SKY, LLPipeline::RENDER_TYPE_WL_SKY,
LLPipeline::RENDER_TYPE_WATER, LLPipeline::RENDER_TYPE_CLOUDS, LLPipeline::END_RENDER_TYPES);
+
+ //disable particle system
+ LLViewerPartSim::getInstance()->enable(false);
}
void LLSceneMonitor::unfreezeScene()
@@ -285,8 +290,12 @@ void LLSceneMonitor::unfreezeScene()
// thaw everything else
gSavedSettings.setBOOL("FreezeTime", FALSE);
+ //enable sky, water and clouds
gPipeline.setRenderTypeMask(LLPipeline::RENDER_TYPE_SKY, LLPipeline::RENDER_TYPE_WL_SKY,
LLPipeline::RENDER_TYPE_WATER, LLPipeline::RENDER_TYPE_CLOUDS, LLPipeline::END_RENDER_TYPES);
+
+ //enable particle system
+ LLViewerPartSim::getInstance()->enable(true);
}
void LLSceneMonitor::capture()
diff --git a/indra/newview/llviewerpartsim.cpp b/indra/newview/llviewerpartsim.cpp
index 8acdc08b00..a23a15da32 100644
--- a/indra/newview/llviewerpartsim.cpp
+++ b/indra/newview/llviewerpartsim.cpp
@@ -467,6 +467,20 @@ LLViewerPartSim::LLViewerPartSim()
mID = ++id_seed;
}
+//enable/disable particle system
+void LLViewerPartSim::enable(bool enabled)
+{
+ if(!enabled && sMaxParticleCount > 0)
+ {
+ sMaxParticleCount = 0; //disable
+ }
+ else if(enabled && sMaxParticleCount < 1)
+ {
+ sMaxParticleCount = llmin(gSavedSettings.getS32("RenderMaxPartCount"), LL_MAX_PARTICLE_COUNT);
+ }
+
+ return;
+}
void LLViewerPartSim::destroyClass()
{
diff --git a/indra/newview/llviewerpartsim.h b/indra/newview/llviewerpartsim.h
index c91fcf0691..27bfcd4343 100644
--- a/indra/newview/llviewerpartsim.h
+++ b/indra/newview/llviewerpartsim.h
@@ -134,6 +134,8 @@ public:
typedef std::vector<LLViewerPartGroup *> group_list_t;
typedef std::vector<LLPointer<LLViewerPartSource> > source_list_t;
+ void enable(bool enabled);
+
void shift(const LLVector3 &offset);
void updateSimulation();