summaryrefslogtreecommitdiff
path: root/indra/newview/llflexibleobject.h
diff options
context:
space:
mode:
Diffstat (limited to 'indra/newview/llflexibleobject.h')
-rw-r--r--indra/newview/llflexibleobject.h206
1 files changed, 103 insertions, 103 deletions
diff --git a/indra/newview/llflexibleobject.h b/indra/newview/llflexibleobject.h
index 9383ab03ae..b4a8659c41 100644
--- a/indra/newview/llflexibleobject.h
+++ b/indra/newview/llflexibleobject.h
@@ -1,4 +1,4 @@
-/**
+/**
* @file llflexibleobject.h
* @author JJ Ventrella, Andrew Meadows, Tom Yedwab
* @brief Flexible object definition
@@ -6,32 +6,32 @@
* $LicenseInfo:firstyear=2006&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$
*/
/**
- * This is for specifying objects in the world that are animated and
+ * This is for specifying objects in the world that are animated and
* rendered locally - on the viewer. Flexible Objects are linear arrays
- * of positions, which stay at a fixed distance from each other. One
- * position is fixed as an "anchor" and is attached to some other object
- * in the world, determined by the server. All the other positions are
- * updated according to local physics.
+ * of positions, which stay at a fixed distance from each other. One
+ * position is fixed as an "anchor" and is attached to some other object
+ * in the world, determined by the server. All the other positions are
+ * updated according to local physics.
*/
#ifndef LL_LLFLEXIBLEOBJECT_H
@@ -42,113 +42,113 @@
#include "llwind.h"
// 10 ms for the whole thing!
-const F32 FLEXIBLE_OBJECT_TIMESLICE = 0.003f;
-const U32 FLEXIBLE_OBJECT_MAX_LOD = 10;
+const F32 FLEXIBLE_OBJECT_TIMESLICE = 0.003f;
+const U32 FLEXIBLE_OBJECT_MAX_LOD = 10;
-// See llprimitive.h for LLFlexibleObjectData and DEFAULT/MIN/MAX values
+// See llprimitive.h for LLFlexibleObjectData and DEFAULT/MIN/MAX values
//-------------------------------------------------------------------
struct LLFlexibleObjectSection
{
- // Input parameters
- LLVector2 mScale;
- LLQuaternion mAxisRotation;
- // Simulated state
- LLVector3 mPosition;
- LLVector3 mVelocity;
- LLVector3 mDirection;
- LLQuaternion mRotation;
- // Derivatives (Not all currently used, will come back with LLVolume changes to automagically generate normals)
- LLVector3 mdPosition;
- //LLMatrix4 mRotScale;
- //LLMatrix4 mdRotScale;
+ // Input parameters
+ LLVector2 mScale;
+ LLQuaternion mAxisRotation;
+ // Simulated state
+ LLVector3 mPosition;
+ LLVector3 mVelocity;
+ LLVector3 mDirection;
+ LLQuaternion mRotation;
+ // Derivatives (Not all currently used, will come back with LLVolume changes to automagically generate normals)
+ LLVector3 mdPosition;
+ //LLMatrix4 mRotScale;
+ //LLMatrix4 mdRotScale;
};
//---------------------------------------------------------
-// The LLVolumeImplFlexible class
+// The LLVolumeImplFlexible class
//---------------------------------------------------------
class LLVolumeImplFlexible : public LLVolumeInterface
{
private:
- static std::vector<LLVolumeImplFlexible*> sInstanceList;
- S32 mInstanceIndex;
-
- public:
- static void updateClass();
-
- LLVolumeImplFlexible(LLViewerObject* volume, LLFlexibleObjectData* attributes);
- ~LLVolumeImplFlexible();
-
- // Implements LLVolumeInterface
- U32 getID() const { return mID; }
- LLVector3 getFramePosition() const;
- LLQuaternion getFrameRotation() const;
- LLVolumeInterfaceType getInterfaceType() const { return INTERFACE_FLEXIBLE; }
- void updateRenderRes();
- void doIdleUpdate();
- BOOL doUpdateGeometry(LLDrawable *drawable);
- LLVector3 getPivotPosition() const;
- void onSetVolume(const LLVolumeParams &volume_params, const S32 detail);
- void onSetScale(const LLVector3 &scale, BOOL damped);
- void onParameterChanged(U16 param_type, LLNetworkData *data, BOOL in_use, bool local_origin);
- void onShift(const LLVector4a &shift_vector);
- bool isVolumeUnique() const { return true; }
- bool isVolumeGlobal() const { return true; }
- bool isActive() const { return true; }
- const LLMatrix4& getWorldMatrix(LLXformMatrix* xform) const;
- void updateRelativeXform(bool force_identity);
- void doFlexibleUpdate(); // Called to update the simulation
- void doFlexibleRebuild(bool rebuild_volume); // Called to rebuild the geometry
- void preRebuild();
-
- //void setAttributes( LLFlexibleObjectData );
- void setParentPositionAndRotationDirectly( LLVector3 p, LLQuaternion r );
- void setUsingCollisionSphere( bool u );
- void setCollisionSphere( LLVector3 position, F32 radius );
- void setRenderingCollisionSphere( bool r);
-
- LLVector3 getEndPosition();
- LLQuaternion getEndRotation();
- LLVector3 getNodePosition( int nodeIndex );
- LLVector3 getAnchorPosition() const;
-
- private:
- //--------------------------------------
- // private members
- //--------------------------------------
- // Backlink only; don't make this an LLPointer.
- LLViewerObject* mVO;
- LLTimer mTimer;
- LLVector3 mAnchorPosition;
- LLVector3 mParentPosition;
- LLQuaternion mParentRotation;
- LLQuaternion mLastFrameRotation;
- LLQuaternion mLastSegmentRotation;
- BOOL mInitialized;
- BOOL mUpdated;
- LLFlexibleObjectData* mAttributes;
- LLFlexibleObjectSection mSection [ (1<<FLEXIBLE_OBJECT_MAX_SECTIONS)+1 ];
- S32 mInitializedRes;
- S32 mSimulateRes;
- S32 mRenderRes;
- U64 mLastFrameNum;
- U32 mLastUpdatePeriod;
- LLVector3 mCollisionSpherePosition;
- F32 mCollisionSphereRadius;
- U32 mID;
-
- //--------------------------------------
- // private methods
- //--------------------------------------
- void setAttributesOfAllSections (LLVector3* inScale = NULL);
-
- void remapSections(LLFlexibleObjectSection *source, S32 source_sections,
- LLFlexibleObjectSection *dest, S32 dest_sections);
-
+ static std::vector<LLVolumeImplFlexible*> sInstanceList;
+ S32 mInstanceIndex;
+
+ public:
+ static void updateClass();
+
+ LLVolumeImplFlexible(LLViewerObject* volume, LLFlexibleObjectData* attributes);
+ ~LLVolumeImplFlexible();
+
+ // Implements LLVolumeInterface
+ U32 getID() const { return mID; }
+ LLVector3 getFramePosition() const;
+ LLQuaternion getFrameRotation() const;
+ LLVolumeInterfaceType getInterfaceType() const { return INTERFACE_FLEXIBLE; }
+ void updateRenderRes();
+ void doIdleUpdate();
+ BOOL doUpdateGeometry(LLDrawable *drawable);
+ LLVector3 getPivotPosition() const;
+ void onSetVolume(const LLVolumeParams &volume_params, const S32 detail);
+ void onSetScale(const LLVector3 &scale, BOOL damped);
+ void onParameterChanged(U16 param_type, LLNetworkData *data, BOOL in_use, bool local_origin);
+ void onShift(const LLVector4a &shift_vector);
+ bool isVolumeUnique() const { return true; }
+ bool isVolumeGlobal() const { return true; }
+ bool isActive() const { return true; }
+ const LLMatrix4& getWorldMatrix(LLXformMatrix* xform) const;
+ void updateRelativeXform(bool force_identity);
+ void doFlexibleUpdate(); // Called to update the simulation
+ void doFlexibleRebuild(bool rebuild_volume); // Called to rebuild the geometry
+ void preRebuild();
+
+ //void setAttributes( LLFlexibleObjectData );
+ void setParentPositionAndRotationDirectly( LLVector3 p, LLQuaternion r );
+ void setUsingCollisionSphere( bool u );
+ void setCollisionSphere( LLVector3 position, F32 radius );
+ void setRenderingCollisionSphere( bool r);
+
+ LLVector3 getEndPosition();
+ LLQuaternion getEndRotation();
+ LLVector3 getNodePosition( int nodeIndex );
+ LLVector3 getAnchorPosition() const;
+
+ private:
+ //--------------------------------------
+ // private members
+ //--------------------------------------
+ // Backlink only; don't make this an LLPointer.
+ LLViewerObject* mVO;
+ LLTimer mTimer;
+ LLVector3 mAnchorPosition;
+ LLVector3 mParentPosition;
+ LLQuaternion mParentRotation;
+ LLQuaternion mLastFrameRotation;
+ LLQuaternion mLastSegmentRotation;
+ BOOL mInitialized;
+ BOOL mUpdated;
+ LLFlexibleObjectData* mAttributes;
+ LLFlexibleObjectSection mSection [ (1<<FLEXIBLE_OBJECT_MAX_SECTIONS)+1 ];
+ S32 mInitializedRes;
+ S32 mSimulateRes;
+ S32 mRenderRes;
+ U64 mLastFrameNum;
+ U32 mLastUpdatePeriod;
+ LLVector3 mCollisionSpherePosition;
+ F32 mCollisionSphereRadius;
+ U32 mID;
+
+ //--------------------------------------
+ // private methods
+ //--------------------------------------
+ void setAttributesOfAllSections (LLVector3* inScale = NULL);
+
+ void remapSections(LLFlexibleObjectSection *source, S32 source_sections,
+ LLFlexibleObjectSection *dest, S32 dest_sections);
+
public:
- // Global setting for update rate
- static F32 sUpdateFactor;
+ // Global setting for update rate
+ static F32 sUpdateFactor;
};// end of class definition