diff options
Diffstat (limited to 'indra/newview/llviewerpartsim.h')
-rw-r--r-- | indra/newview/llviewerpartsim.h | 222 |
1 files changed, 111 insertions, 111 deletions
diff --git a/indra/newview/llviewerpartsim.h b/indra/newview/llviewerpartsim.h index ab1cd715ab..4de962ac4f 100644 --- a/indra/newview/llviewerpartsim.h +++ b/indra/newview/llviewerpartsim.h @@ -1,25 +1,25 @@ -/** +/** * @file llviewerpartsim.h * @brief LLViewerPart class header file * * $LicenseInfo:firstyear=2003&license=viewerlgpl$ * Second Life Viewer Source Code * Copyright (C) 2010, Linden Research, Inc. - * + * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; * version 2.1 of the License only. - * + * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. - * + * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - * + * * Linden Research, Inc., 945 Battery Street, San Francisco, CA 94111 USA * $/LicenseInfo$ */ @@ -50,37 +50,37 @@ typedef void (*LLVPCallback)(LLViewerPart &part, const F32 dt); class LLViewerPart : public LLPartData { public: - ~LLViewerPart(); + ~LLViewerPart(); public: - LLViewerPart(); + LLViewerPart(); - void init(LLPointer<LLViewerPartSource> sourcep, LLViewerTexture *imagep, LLVPCallback cb); + void init(LLPointer<LLViewerPartSource> sourcep, LLViewerTexture *imagep, LLVPCallback cb); - U32 mPartID; // Particle ID used primarily for moving between groups - F32 mLastUpdateTime; // Last time the particle was updated - F32 mSkipOffset; // Offset against current group mSkippedTime + U32 mPartID; // Particle ID used primarily for moving between groups + F32 mLastUpdateTime; // Last time the particle was updated + F32 mSkipOffset; // Offset against current group mSkippedTime - LLVPCallback mVPCallback; // Callback function for more complicated behaviors - LLPointer<LLViewerPartSource> mPartSourcep; // Particle source used for this object + LLVPCallback mVPCallback; // Callback function for more complicated behaviors + LLPointer<LLViewerPartSource> mPartSourcep; // Particle source used for this object - LLViewerPart* mParent; // particle to connect to if this is part of a particle ribbon - LLViewerPart* mChild; // child particle for clean reference destruction + LLViewerPart* mParent; // particle to connect to if this is part of a particle ribbon + LLViewerPart* mChild; // child particle for clean reference destruction - // Current particle state (possibly used for rendering) - LLPointer<LLViewerTexture> mImagep; - LLVector3 mPosAgent; - LLVector3 mVelocity; - LLVector3 mAccel; - LLVector3 mAxis; - LLColor4 mColor; - LLVector2 mScale; - F32 mStartGlow; - F32 mEndGlow; - LLColor4U mGlow; + // Current particle state (possibly used for rendering) + LLPointer<LLViewerTexture> mImagep; + LLVector3 mPosAgent; + LLVector3 mVelocity; + LLVector3 mAccel; + LLVector3 mAxis; + LLColor4 mColor; + LLVector2 mScale; + F32 mStartGlow; + F32 mEndGlow; + LLColor4U mGlow; - static U32 sNextPartID; + static U32 sNextPartID; }; @@ -88,128 +88,128 @@ public: class LLViewerPartGroup { public: - LLViewerPartGroup(const LLVector3 ¢er, - const F32 box_radius, - bool hud); - virtual ~LLViewerPartGroup(); + LLViewerPartGroup(const LLVector3 ¢er, + const F32 box_radius, + bool hud); + virtual ~LLViewerPartGroup(); - void cleanup(); + void cleanup(); - BOOL addPart(LLViewerPart* part, const F32 desired_size = -1.f); - - void updateParticles(const F32 lastdt); + BOOL addPart(LLViewerPart* part, const F32 desired_size = -1.f); - BOOL posInGroup(const LLVector3 &pos, const F32 desired_size = -1.f); + void updateParticles(const F32 lastdt); - void shift(const LLVector3 &offset); + BOOL posInGroup(const LLVector3 &pos, const F32 desired_size = -1.f); - F32 getBoxRadius() { return mBoxRadius; } - F32 getBoxSide() { return mBoxSide; } + void shift(const LLVector3 &offset); - typedef std::vector<LLViewerPart*> part_list_t; - part_list_t mParticles; + F32 getBoxRadius() { return mBoxRadius; } + F32 getBoxSide() { return mBoxSide; } - const LLVector3 &getCenterAgent() const { return mCenterAgent; } - S32 getCount() const { return (S32) mParticles.size(); } - LLViewerRegion *getRegion() const { return mRegionp; } + typedef std::vector<LLViewerPart*> part_list_t; + part_list_t mParticles; - void removeParticlesByID(const U32 source_id); - - LLPointer<LLVOPartGroup> mVOPartGroupp; + const LLVector3 &getCenterAgent() const { return mCenterAgent; } + S32 getCount() const { return (S32) mParticles.size(); } + LLViewerRegion *getRegion() const { return mRegionp; } - BOOL mUniformParticles; - U32 mID; + void removeParticlesByID(const U32 source_id); - F32 mSkippedTime; - bool mHud; + LLPointer<LLVOPartGroup> mVOPartGroupp; + + BOOL mUniformParticles; + U32 mID; + + F32 mSkippedTime; + bool mHud; protected: - LLVector3 mCenterAgent; - F32 mBoxRadius; - F32 mBoxSide; - LLVector3 mMinObjPos; - LLVector3 mMaxObjPos; + LLVector3 mCenterAgent; + F32 mBoxRadius; + F32 mBoxSide; + LLVector3 mMinObjPos; + LLVector3 mMaxObjPos; - LLViewerRegion *mRegionp; + LLViewerRegion *mRegionp; }; class LLViewerPartSim : public LLSingleton<LLViewerPartSim> { - LLSINGLETON(LLViewerPartSim); + LLSINGLETON(LLViewerPartSim); public: - void destroyClass(); + void destroyClass(); + + typedef std::vector<LLViewerPartGroup *> group_list_t; + typedef std::vector<LLPointer<LLViewerPartSource> > source_list_t; - typedef std::vector<LLViewerPartGroup *> group_list_t; - typedef std::vector<LLPointer<LLViewerPartSource> > source_list_t; + void enable(bool enabled); - void enable(bool enabled); + void shift(const LLVector3 &offset); - void shift(const LLVector3 &offset); + void updateSimulation(); - void updateSimulation(); + void addPartSource(LLPointer<LLViewerPartSource> sourcep); - void addPartSource(LLPointer<LLViewerPartSource> sourcep); + void cleanupRegion(LLViewerRegion *regionp); - void cleanupRegion(LLViewerRegion *regionp); + static BOOL shouldAddPart(); // Just decides whether this particle should be added or not (for particle count capping) + F32 maxRate() // Return maximum particle generation rate + { + if (sParticleCount >= MAX_PART_COUNT) + { + return 1.f; + } + if (sParticleCount > PART_THROTTLE_THRESHOLD*sMaxParticleCount) + { + return (((F32)sParticleCount/(F32)sMaxParticleCount)-PART_THROTTLE_THRESHOLD)*PART_THROTTLE_RESCALE; + } + return 0.f; + } + F32 getRefRate() { return sParticleAdaptiveRate; } + F32 getBurstRate() {return sParticleBurstRate; } + void addPart(LLViewerPart* part); + void updatePartBurstRate() ; + void clearParticlesByID(const U32 system_id); + void clearParticlesByOwnerID(const LLUUID& task_id); + void removeLastCreatedSource(); - static BOOL shouldAddPart(); // Just decides whether this particle should be added or not (for particle count capping) - F32 maxRate() // Return maximum particle generation rate - { - if (sParticleCount >= MAX_PART_COUNT) - { - return 1.f; - } - if (sParticleCount > PART_THROTTLE_THRESHOLD*sMaxParticleCount) - { - return (((F32)sParticleCount/(F32)sMaxParticleCount)-PART_THROTTLE_THRESHOLD)*PART_THROTTLE_RESCALE; - } - return 0.f; - } - F32 getRefRate() { return sParticleAdaptiveRate; } - F32 getBurstRate() {return sParticleBurstRate; } - void addPart(LLViewerPart* part); - void updatePartBurstRate() ; - void clearParticlesByID(const U32 system_id); - void clearParticlesByOwnerID(const LLUUID& task_id); - void removeLastCreatedSource(); + const source_list_t* getParticleSystemList() const { return &mViewerPartSources; } - const source_list_t* getParticleSystemList() const { return &mViewerPartSources; } + friend class LLViewerPartGroup; - friend class LLViewerPartGroup; + BOOL aboveParticleLimit() const { return sParticleCount > sMaxParticleCount; } - BOOL aboveParticleLimit() const { return sParticleCount > sMaxParticleCount; } + static void setMaxPartCount(const S32 max_parts) { sMaxParticleCount = max_parts; } + static S32 getMaxPartCount() { return sMaxParticleCount; } + static void incPartCount(const S32 count) { sParticleCount += count; } + static void decPartCount(const S32 count) { sParticleCount -= count; } - static void setMaxPartCount(const S32 max_parts) { sMaxParticleCount = max_parts; } - static S32 getMaxPartCount() { return sMaxParticleCount; } - static void incPartCount(const S32 count) { sParticleCount += count; } - static void decPartCount(const S32 count) { sParticleCount -= count; } - - U32 mID; + U32 mID; protected: - LLViewerPartGroup *createViewerPartGroup(const LLVector3 &pos_agent, const F32 desired_size, bool hud); - LLViewerPartGroup *put(LLViewerPart* part); + LLViewerPartGroup *createViewerPartGroup(const LLVector3 &pos_agent, const F32 desired_size, bool hud); + LLViewerPartGroup *put(LLViewerPart* part); - group_list_t mViewerPartGroups; - source_list_t mViewerPartSources; - LLFrameTimer mSimulationTimer; + group_list_t mViewerPartGroups; + source_list_t mViewerPartSources; + LLFrameTimer mSimulationTimer; - static S32 sMaxParticleCount; - static S32 sParticleCount; - static F32 sParticleAdaptiveRate; - static F32 sParticleBurstRate; + static S32 sMaxParticleCount; + static S32 sParticleCount; + static F32 sParticleAdaptiveRate; + static F32 sParticleBurstRate; - static const S32 MAX_PART_COUNT; - static const F32 PART_THROTTLE_THRESHOLD; - static const F32 PART_THROTTLE_RESCALE; - static const F32 PART_ADAPT_RATE_MULT; - static const F32 PART_ADAPT_RATE_MULT_RECIP; + static const S32 MAX_PART_COUNT; + static const F32 PART_THROTTLE_THRESHOLD; + static const F32 PART_THROTTLE_RESCALE; + static const F32 PART_ADAPT_RATE_MULT; + static const F32 PART_ADAPT_RATE_MULT_RECIP; //debug use only public: - static S32 sParticleCount2; + static S32 sParticleCount2; - static void checkParticleCount(U32 size = 0) ; + static void checkParticleCount(U32 size = 0) ; }; #endif // LL_LLVIEWERPARTSIM_H |