diff options
Diffstat (limited to 'indra/newview/llviewerpartsource.h')
-rw-r--r-- | indra/newview/llviewerpartsource.h | 422 |
1 files changed, 211 insertions, 211 deletions
diff --git a/indra/newview/llviewerpartsource.h b/indra/newview/llviewerpartsource.h index 37c1d451ee..682d545b94 100644 --- a/indra/newview/llviewerpartsource.h +++ b/indra/newview/llviewerpartsource.h @@ -1,211 +1,211 @@ -/** - * @file llviewerpartsource.h - * @brief LLViewerPartSource 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$ - */ - -#ifndef LL_LLVIEWERPARTSOURCE_H -#define LL_LLVIEWERPARTSOURCE_H - -#include "llrefcount.h" -#include "llpartdata.h" -#include "llpointer.h" -#include "llquaternion.h" -#include "v3math.h" - -//////////////////// -// -// A particle source - subclassed to generate particles with different behaviors -// -// - -class LLViewerTexture; -class LLViewerObject; -class LLViewerPart; -class LLVOAvatar; - -class LLViewerPartSource : public LLRefCount -{ -public: - enum - { - LL_PART_SOURCE_NULL, - LL_PART_SOURCE_SCRIPT, - LL_PART_SOURCE_SPIRAL, - LL_PART_SOURCE_BEAM, - LL_PART_SOURCE_CHAT - }; - - LLViewerPartSource(const U32 type); - - virtual void update(const F32 dt); // Return false if this source is dead... - - virtual void setDead(); - bool isDead() const { return mIsDead; } - void setSuspended( bool state ) { mIsSuspended = state; } - bool isSuspended() const { return mIsSuspended; } - U32 getType() const { return mType; } - static void updatePart(LLViewerPart &part, const F32 dt); - void setOwnerUUID(const LLUUID& owner_id) { mOwnerUUID = owner_id; } - LLUUID getOwnerUUID() const { return mOwnerUUID; } - U32 getID() const { return mID; } - LLUUID getImageUUID() const; - void setStart() ; - - LLVector3 mPosAgent; // Location of the particle source - LLVector3 mTargetPosAgent; // Location of the target position - LLVector3 mLastUpdatePosAgent; - LLPointer<LLViewerObject> mSourceObjectp; - U32 mID; - LLViewerPart* mLastPart; //last particle emitted (for making particle ribbons) - -protected: - U32 mType; - bool mIsDead; - bool mIsSuspended; - F32 mLastUpdateTime; - F32 mLastPartTime; - LLUUID mOwnerUUID; - LLPointer<LLVOAvatar> mOwnerAvatarp; - LLPointer<LLViewerTexture> mImagep; - // Particle information - U32 mPartFlags; // Flags for the particle - U32 mDelay ; //delay to start particles -}; - - - -/////////////////////////////// -// -// LLViewerPartSourceScript -// -// Particle source that handles the "generic" script-drive particle source -// attached to objects -// - - -class LLViewerPartSourceScript : public LLViewerPartSource -{ -public: - LLViewerPartSourceScript(LLViewerObject *source_objp); - /*virtual*/ void update(const F32 dt); - - /*virtual*/ void setDead(); - - bool updateFromMesg(); - - // Returns a new particle source to attach to an object... - static LLPointer<LLViewerPartSourceScript> unpackPSS(LLViewerObject *source_objp, LLPointer<LLViewerPartSourceScript> pssp, const S32 block_num); - static LLPointer<LLViewerPartSourceScript> unpackPSS(LLViewerObject *source_objp, LLPointer<LLViewerPartSourceScript> pssp, LLDataPacker &dp, bool legacy); - static LLPointer<LLViewerPartSourceScript> createPSS(LLViewerObject *source_objp, const LLPartSysData& particle_parameters); - - LLViewerTexture *getImage() const { return mImagep; } - void setImage(LLViewerTexture *imagep); - LLPartSysData mPartSysData; - - void setTargetObject(LLViewerObject *objp); - -protected: - LLQuaternion mRotation; // Current rotation for particle source - LLPointer<LLViewerObject> mTargetObjectp; // Target object for the particle source -}; - - -//////////////////////////// -// -// Particle source for spiral effect (customize avatar, mostly) -// - -class LLViewerPartSourceSpiral : public LLViewerPartSource -{ -public: - LLViewerPartSourceSpiral(const LLVector3 &pos); - - /*virtual*/ void setDead(); - - /*virtual*/ void update(const F32 dt); - - void setSourceObject(LLViewerObject *objp); - void setColor(const LLColor4 &color); - - static void updatePart(LLViewerPart &part, const F32 dt); - LLColor4 mColor; -protected: - LLVector3d mLKGSourcePosGlobal; -}; - - -//////////////////////////// -// -// Particle source for tractor(editing) beam -// - -class LLViewerPartSourceBeam : public LLViewerPartSource -{ -public: - LLViewerPartSourceBeam(); - - /*virtual*/ void setDead(); - - /*virtual*/ void update(const F32 dt); - - void setSourceObject(LLViewerObject *objp); - void setTargetObject(LLViewerObject *objp); - void setSourcePosGlobal(const LLVector3d &pos_global); - void setTargetPosGlobal(const LLVector3d &pos_global); - void setColor(const LLColor4 &color); - - static void updatePart(LLViewerPart &part, const F32 dt); - LLPointer<LLViewerObject> mTargetObjectp; - LLVector3d mLKGTargetPosGlobal; - LLColor4 mColor; -protected: - ~LLViewerPartSourceBeam(); -}; - - - -////////////////////////// -// -// Particle source for chat effect -// - -class LLViewerPartSourceChat : public LLViewerPartSource -{ -public: - LLViewerPartSourceChat(const LLVector3 &pos); - - /*virtual*/ void setDead(); - - /*virtual*/ void update(const F32 dt); - - void setSourceObject(LLViewerObject *objp); - void setColor(const LLColor4 &color); - static void updatePart(LLViewerPart &part, const F32 dt); - LLColor4 mColor; -protected: - LLVector3d mLKGSourcePosGlobal; -}; - - -#endif // LL_LLVIEWERPARTSOURCE_H +/**
+ * @file llviewerpartsource.h
+ * @brief LLViewerPartSource 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$
+ */
+
+#ifndef LL_LLVIEWERPARTSOURCE_H
+#define LL_LLVIEWERPARTSOURCE_H
+
+#include "llrefcount.h"
+#include "llpartdata.h"
+#include "llpointer.h"
+#include "llquaternion.h"
+#include "v3math.h"
+
+////////////////////
+//
+// A particle source - subclassed to generate particles with different behaviors
+//
+//
+
+class LLViewerTexture;
+class LLViewerObject;
+class LLViewerPart;
+class LLVOAvatar;
+
+class LLViewerPartSource : public LLRefCount
+{
+public:
+ enum
+ {
+ LL_PART_SOURCE_NULL,
+ LL_PART_SOURCE_SCRIPT,
+ LL_PART_SOURCE_SPIRAL,
+ LL_PART_SOURCE_BEAM,
+ LL_PART_SOURCE_CHAT
+ };
+
+ LLViewerPartSource(const U32 type);
+
+ virtual void update(const F32 dt); // Return false if this source is dead...
+
+ virtual void setDead();
+ bool isDead() const { return mIsDead; }
+ void setSuspended( bool state ) { mIsSuspended = state; }
+ bool isSuspended() const { return mIsSuspended; }
+ U32 getType() const { return mType; }
+ static void updatePart(LLViewerPart &part, const F32 dt);
+ void setOwnerUUID(const LLUUID& owner_id) { mOwnerUUID = owner_id; }
+ LLUUID getOwnerUUID() const { return mOwnerUUID; }
+ U32 getID() const { return mID; }
+ LLUUID getImageUUID() const;
+ void setStart() ;
+
+ LLVector3 mPosAgent; // Location of the particle source
+ LLVector3 mTargetPosAgent; // Location of the target position
+ LLVector3 mLastUpdatePosAgent;
+ LLPointer<LLViewerObject> mSourceObjectp;
+ U32 mID;
+ LLViewerPart* mLastPart; //last particle emitted (for making particle ribbons)
+
+protected:
+ U32 mType;
+ bool mIsDead;
+ bool mIsSuspended;
+ F32 mLastUpdateTime;
+ F32 mLastPartTime;
+ LLUUID mOwnerUUID;
+ LLPointer<LLVOAvatar> mOwnerAvatarp;
+ LLPointer<LLViewerTexture> mImagep;
+ // Particle information
+ U32 mPartFlags; // Flags for the particle
+ U32 mDelay ; //delay to start particles
+};
+
+
+
+///////////////////////////////
+//
+// LLViewerPartSourceScript
+//
+// Particle source that handles the "generic" script-drive particle source
+// attached to objects
+//
+
+
+class LLViewerPartSourceScript : public LLViewerPartSource
+{
+public:
+ LLViewerPartSourceScript(LLViewerObject *source_objp);
+ /*virtual*/ void update(const F32 dt);
+
+ /*virtual*/ void setDead();
+
+ bool updateFromMesg();
+
+ // Returns a new particle source to attach to an object...
+ static LLPointer<LLViewerPartSourceScript> unpackPSS(LLViewerObject *source_objp, LLPointer<LLViewerPartSourceScript> pssp, const S32 block_num);
+ static LLPointer<LLViewerPartSourceScript> unpackPSS(LLViewerObject *source_objp, LLPointer<LLViewerPartSourceScript> pssp, LLDataPacker &dp, bool legacy);
+ static LLPointer<LLViewerPartSourceScript> createPSS(LLViewerObject *source_objp, const LLPartSysData& particle_parameters);
+
+ LLViewerTexture *getImage() const { return mImagep; }
+ void setImage(LLViewerTexture *imagep);
+ LLPartSysData mPartSysData;
+
+ void setTargetObject(LLViewerObject *objp);
+
+protected:
+ LLQuaternion mRotation; // Current rotation for particle source
+ LLPointer<LLViewerObject> mTargetObjectp; // Target object for the particle source
+};
+
+
+////////////////////////////
+//
+// Particle source for spiral effect (customize avatar, mostly)
+//
+
+class LLViewerPartSourceSpiral : public LLViewerPartSource
+{
+public:
+ LLViewerPartSourceSpiral(const LLVector3 &pos);
+
+ /*virtual*/ void setDead();
+
+ /*virtual*/ void update(const F32 dt);
+
+ void setSourceObject(LLViewerObject *objp);
+ void setColor(const LLColor4 &color);
+
+ static void updatePart(LLViewerPart &part, const F32 dt);
+ LLColor4 mColor;
+protected:
+ LLVector3d mLKGSourcePosGlobal;
+};
+
+
+////////////////////////////
+//
+// Particle source for tractor(editing) beam
+//
+
+class LLViewerPartSourceBeam : public LLViewerPartSource
+{
+public:
+ LLViewerPartSourceBeam();
+
+ /*virtual*/ void setDead();
+
+ /*virtual*/ void update(const F32 dt);
+
+ void setSourceObject(LLViewerObject *objp);
+ void setTargetObject(LLViewerObject *objp);
+ void setSourcePosGlobal(const LLVector3d &pos_global);
+ void setTargetPosGlobal(const LLVector3d &pos_global);
+ void setColor(const LLColor4 &color);
+
+ static void updatePart(LLViewerPart &part, const F32 dt);
+ LLPointer<LLViewerObject> mTargetObjectp;
+ LLVector3d mLKGTargetPosGlobal;
+ LLColor4 mColor;
+protected:
+ ~LLViewerPartSourceBeam();
+};
+
+
+
+//////////////////////////
+//
+// Particle source for chat effect
+//
+
+class LLViewerPartSourceChat : public LLViewerPartSource
+{
+public:
+ LLViewerPartSourceChat(const LLVector3 &pos);
+
+ /*virtual*/ void setDead();
+
+ /*virtual*/ void update(const F32 dt);
+
+ void setSourceObject(LLViewerObject *objp);
+ void setColor(const LLColor4 &color);
+ static void updatePart(LLViewerPart &part, const F32 dt);
+ LLColor4 mColor;
+protected:
+ LLVector3d mLKGSourcePosGlobal;
+};
+
+
+#endif // LL_LLVIEWERPARTSOURCE_H
|