LLVolume Class Reference

#include <llvolume.h>

Inheritance diagram for LLVolume:

Inheritance graph
[legend]
Collaboration diagram for LLVolume:

Collaboration graph
[legend]
List of all members.

Public Member Functions

 LLVolume (const LLVolumeParams &params, const F32 detail, const BOOL generate_single_face=FALSE, const BOOL is_unique=FALSE)
U8 getProfileType () const
U8 getPathType () const
S32 getNumFaces () const
S32 getNumVolumeFaces () const
F32 getDetail () const
const LLVolumeParamsgetParams () const
LLVolumeParams getCopyOfParams () const
const LLProfilegetProfile () const
LLPathgetPath () const
const std::vector< Point > & getMesh () const
const LLVector3getMeshPt (const U32 i) const
void setDirty ()
void regen ()
BOOL isConvex () const
BOOL isCap (S32 face)
BOOL isFlat (S32 face)
BOOL isUnique () const
S32 getSculptLevel () const
S32getTriangleIndices (U32 &num_indices) const
void generateSilhouetteVertices (std::vector< LLVector3 > &vertices, std::vector< LLVector3 > &normals, std::vector< S32 > &segments, const LLVector3 &view_vec, const LLMatrix4 &mat, const LLMatrix3 &norm_mat)
S32 lineSegmentIntersect (const LLVector3 &start, LLVector3 &end) const
LLFaceID generateFaceMask ()
BOOL isFaceMaskValid (LLFaceID face_mask)
const LLVolumeFacegetVolumeFace (const S32 f) const
void sculpt (U16 sculpt_width, U16 sculpt_height, S8 sculpt_components, const U8 *sculpt_data, S32 sculpt_level)

Static Public Member Functions

static BOOL cleanupTriangleData (const S32 num_input_vertices, const std::vector< Point > &input_vertices, const S32 num_input_triangles, S32 *input_triangles, S32 &num_output_vertices, LLVector3 **output_vertices, S32 &num_output_triangles, S32 **output_triangles)

Public Attributes

U32 mFaceMask
LLVector3 mLODScaleBias

Static Public Attributes

static S32 sNumMeshPoints = 0

Protected Member Functions

BOOL generate ()
void createVolumeFaces ()

Protected Attributes

BOOL mUnique
F32 mDetail
S32 mSculptLevel
LLVolumeParams mParams
LLPathmPathp
LLProfilemProfilep
std::vector< PointmMesh
BOOL mGenerateSingleFace
S32 mNumVolumeFaces
LLVolumeFacemVolumeFaces

Private Member Functions

 LLVolume (const LLVolume &)
 ~LLVolume ()

Friends

class LLVolumeLODGroup
std::ostream & operator<< (std::ostream &s, const LLVolume &volume)
std::ostream & operator<< (std::ostream &s, const LLVolume *volumep)

Classes

struct  FaceParams
struct  Point

Detailed Description

Definition at line 819 of file llvolume.h.


Constructor & Destructor Documentation

LLVolume::LLVolume ( const LLVolume  )  [private]

LLVolume::~LLVolume (  )  [private]

Definition at line 1648 of file llvolume.cpp.

References mMesh, mPathp, mProfilep, mVolumeFaces, NULL, and sNumMeshPoints.

LLVolume::LLVolume ( const LLVolumeParams params,
const F32  detail,
const BOOL  generate_single_face = FALSE,
const BOOL  is_unique = FALSE 
)

Definition at line 1613 of file llvolume.cpp.

References createVolumeFaces(), generate(), LLPathParams::getCurveType(), LLVolumeParams::getPathParams(), LLVolumeParams::getProfileParams(), LLVolumeParams::getSculptID(), LLUUID::isNull(), LL_PCODE_PATH_FLEXIBLE, mDetail, mFaceMask, mGenerateSingleFace, mNumVolumeFaces, mParams, mPathp, mProfilep, mSculptLevel, mUnique, mVolumeFaces, and NULL.


Member Function Documentation

BOOL LLVolume::cleanupTriangleData ( const S32  num_input_vertices,
const std::vector< Point > &  input_vertices,
const S32  num_input_triangles,
S32 input_triangles,
S32 num_output_vertices,
LLVector3 **  output_vertices,
S32 num_output_triangles,
S32 **  output_triangles 
) [static]

Definition at line 3411 of file llvolume.cpp.

References end, equalTriangle(), FALSE, i, llendl, llwarns, LLVertexIndexPair::mIndex, LLVertexIndexPair::mVertex, NULL, S32, TRUE, and VERTEX_SLOP_SQRD.

void LLVolume::createVolumeFaces (  )  [protected]

Definition at line 1746 of file llvolume.cpp.

References LLVolumeFace::BOTTOM_MASK, LLVolumeFace::CAP_MASK, LLVolumeFace::END_MASK, face, LLVolumeFace::FLAT_MASK, getNumFaces(), getPath(), LLVolumeFace::HOLLOW_MASK, i, LLVolumeFace::INNER_MASK, LLProfile::isHollow(), LLProfile::isOpen(), LL_FACE_INNER_SIDE, LL_FACE_PATH_BEGIN, LL_FACE_PATH_END, LL_FACE_PROFILE_BEGIN, LL_FACE_PROFILE_END, llassert, LLProfile::mFaces, mGenerateSingleFace, mNumVolumeFaces, LLPath::mPath, mProfilep, mVolumeFaces, NULL, LLVolumeFace::OPEN_MASK, LLVolumeFace::OUTER_MASK, S32, LLVolumeFace::SIDE_MASK, and LLVolumeFace::TOP_MASK.

Referenced by LLVolume(), regen(), and sculpt().

BOOL LLVolume::generate (  )  [protected]

Definition at line 1660 of file llvolume.cpp.

References f, FALSE, LLProfile::generate(), LLPath::generate(), LLProfileParams::getCurveType(), LLPathParams::getCurveType(), LLPathParams::getScale(), i, LLPath::isOpen(), LL_PCODE_PATH_CIRCLE, LL_PCODE_PATH_LINE, LL_PCODE_PROFILE_CIRCLE, LL_PCODE_PROFILE_EQUALTRI, LL_PCODE_PROFILE_ISOTRI, LL_PCODE_PROFILE_RIGHTTRI, LL_PCODE_PROFILE_SQUARE, mDetail, mFaceMask, LLProfile::mFaces, mLODScaleBias, mMesh, LLProfile::mParams, LLPath::mParams, LLPath::mPath, mPathp, LLVolume::Point::mPos, LLProfile::mProfile, mProfilep, LLVector3::mV, LLVector2::mV, s, S32, LLVector3::setVec(), sNumMeshPoints, t, and TRUE.

Referenced by LLVolume(), and regen().

LLFaceID LLVolume::generateFaceMask (  ) 

Definition at line 3812 of file llvolume.cpp.

References LLProfileParams::getBegin(), LLProfileParams::getCurveType(), LLProfileParams::getEnd(), LLProfile::isHollow(), LLPath::isOpen(), LLProfile::isOpen(), LL_FACE_INNER_SIDE, LL_FACE_OUTER_SIDE_0, LL_FACE_PATH_BEGIN, LL_FACE_PATH_END, LL_FACE_PROFILE_BEGIN, LL_FACE_PROFILE_END, LL_PCODE_PROFILE_CIRCLE, LL_PCODE_PROFILE_CIRCLE_HALF, LL_PCODE_PROFILE_EQUALTRI, LL_PCODE_PROFILE_ISOTRI, LL_PCODE_PROFILE_MASK, LL_PCODE_PROFILE_RIGHTTRI, LL_PCODE_PROFILE_SQUARE, llceil(), llendl, llerrs, LLProfile::mParams, mPathp, mProfilep, and S32.

void LLVolume::generateSilhouetteVertices ( std::vector< LLVector3 > &  vertices,
std::vector< LLVector3 > &  normals,
std::vector< S32 > &  segments,
const LLVector3 view_vec,
const LLMatrix4 mat,
const LLMatrix3 norm_mat 
)

Definition at line 3079 of file llvolume.cpp.

References LLVolumeFace::CAP_MASK, count, f, face, getNumVolumeFaces(), i, j, LLVector3::normVec(), S32, v1, v2, and vector_append().

Referenced by LLVOVolume::generateSilhouette().

LLVolumeParams LLVolume::getCopyOfParams (  )  const [inline]

Definition at line 850 of file llvolume.h.

References mParams.

F32 LLVolume::getDetail (  )  const [inline]

Definition at line 848 of file llvolume.h.

References mDetail.

const std::vector<Point>& LLVolume::getMesh (  )  const [inline]

Definition at line 853 of file llvolume.h.

References mMesh.

Referenced by LLVolumeFace::createCap(), LLVolumeFace::createSide(), and LLVolumeFace::createUnCutCubeCap().

const LLVector3& LLVolume::getMeshPt ( const U32  i  )  const [inline]

Definition at line 854 of file llvolume.h.

References mMesh.

S32 LLVolume::getNumFaces (  )  const [inline]

Definition at line 846 of file llvolume.h.

References LLProfile::mFaces, mProfilep, and S32.

Referenced by createVolumeFaces(), LLVOVolume::genBBoxes(), isFaceMaskValid(), lineSegmentIntersect(), LLVOVolume::updateFaceFlags(), and LLVOVolume::updateGeometry().

S32 LLVolume::getNumVolumeFaces (  )  const [inline]

Definition at line 847 of file llvolume.h.

References mNumVolumeFaces.

Referenced by LLViewerCamera::areVertsVisible(), generateSilhouetteVertices(), and LLFace::genVolumeBBoxes().

const LLVolumeParams& LLVolume::getParams (  )  const [inline]

Definition at line 849 of file llvolume.h.

References mParams.

Referenced by LLVOVolume::canBeFlexible(), LLVolumeMgr::cleanupVolume(), LLVolumeFace::createSide(), LLVolumeImplFlexible::doUpdateGeometry(), LLPanelObject::getState(), LLVOVolume::isFlexible(), LLVolumeImplFlexible::setAttributesOfAllSections(), LLVOVolume::setIsFlexible(), LLVOVolume::updateGeometry(), and LLVOTextBubble::updateGeometry().

LLPath& LLVolume::getPath (  )  const [inline]

Definition at line 852 of file llvolume.h.

References mPathp.

Referenced by LLVolumeFace::createCap(), LLVolumeFace::createSide(), LLVolumeFace::createUnCutCubeCap(), createVolumeFaces(), LLVolumeImplFlexible::doFlexibleUpdate(), and getTriangleIndices().

U8 LLVolume::getPathType (  )  const [inline]

Definition at line 845 of file llvolume.h.

References LLPathParams::getCurveType(), LLPath::mParams, and mPathp.

Referenced by LLVolumeFace::createSide().

const LLProfile& LLVolume::getProfile (  )  const [inline]

Definition at line 851 of file llvolume.h.

References mProfilep.

Referenced by LLVolumeFace::createCap(), LLVolumeFace::createSide(), LLVolumeFace::createUnCutCubeCap(), and getTriangleIndices().

U8 LLVolume::getProfileType (  )  const [inline]

Definition at line 844 of file llvolume.h.

References LLProfileParams::getCurveType(), LLProfile::mParams, and mProfilep.

Referenced by LLVolumeFace::createSide().

S32 LLVolume::getSculptLevel (  )  const [inline]

Definition at line 865 of file llvolume.h.

References mSculptLevel.

Referenced by LLVOVolume::sculpt(), and LLVOVolume::updateTextures().

S32 * LLVolume::getTriangleIndices ( U32 num_indices  )  const

Definition at line 2432 of file llvolume.cpp.

References count, FALSE, getPath(), getProfile(), LLProfile::getTotal(), LLProfile::getTotalOut(), i, indices, LLProfile::isHollow(), LLPath::isOpen(), LLProfile::isOpen(), llassert, llendl, llinfos, llwarns, LLVector3::magVecSquared(), MAX_INDEX, mMesh, LLPath::mPath, LLProfile::mProfile, LLVector3::mV, NULL, s, S32, t, TRUE, and VZ.

const LLVolumeFace& LLVolume::getVolumeFace ( const S32  f  )  const [inline]

Definition at line 896 of file llvolume.h.

References mVolumeFaces.

Referenced by LLViewerCamera::areVertsVisible(), LLFace::genVolumeBBoxes(), LLVOTextBubble::getGeometry(), LLFace::getGeometryVolume(), lineSegmentIntersect(), LLVOVolume::updateFaceSize(), and LLVOTextBubble::updateFaceSize().

BOOL LLVolume::isCap ( S32  face  ) 

Definition at line 2010 of file llvolume.cpp.

References LLProfile::mFaces, and mProfilep.

BOOL LLVolume::isConvex (  )  const

Definition at line 3877 of file llvolume.cpp.

References LLVolumeParams::isConvex(), and mParams.

BOOL LLVolume::isFaceMaskValid ( LLFaceID  face_mask  ) 

Definition at line 3866 of file llvolume.cpp.

References getNumFaces(), i, LLProfile::mFaces, mProfilep, and S32.

BOOL LLVolume::isFlat ( S32  face  ) 

Definition at line 2015 of file llvolume.cpp.

References LLProfile::mFaces, and mProfilep.

BOOL LLVolume::isUnique (  )  const [inline]

Definition at line 863 of file llvolume.h.

References mUnique.

Referenced by LLVolumeMgr::cleanupVolume().

S32 LLVolume::lineSegmentIntersect ( const LLVector3 start,
LLVector3 end 
) const

Definition at line 3269 of file llvolume.cpp.

References end, face, getNumFaces(), getVolumeFace(), i, j, LLTriangleLineSegmentIntersect(), S32, start, v1, and v2.

Referenced by LLVOVolume::lineSegmentIntersect().

void LLVolume::regen (  ) 

Definition at line 1642 of file llvolume.cpp.

References createVolumeFaces(), and generate().

Referenced by LLVolumeImplFlexible::doFlexibleRebuild().

void LLVolume::sculpt ( U16  sculpt_width,
U16  sculpt_height,
S8  sculpt_components,
const U8 sculpt_data,
S32  sculpt_level 
)

Definition at line 1846 of file llvolume.cpp.

References createVolumeFaces(), F_PI, FALSE, LLProfile::generate(), LLPath::generate(), LLVolumeParams::getSculptType(), i, LLPath::isOpen(), LL_SCULPT_TYPE_CYLINDER, LL_SCULPT_TYPE_SPHERE, LL_SCULPT_TYPE_TORUS, LLVector3::magVec(), mDetail, mFaceMask, LLProfile::mFaces, mMesh, mParams, LLPath::mPath, mPathp, LLVolume::Point::mPos, LLProfile::mProfile, mProfilep, mSculptLevel, LLVector3::mV, NULL, RADIUS, s, S32, SCULPT_MIN_AREA, sculpt_rgb_to_vector(), sNumMeshPoints, t, TRUE, u, v, x, and y.

Referenced by LLVOVolume::sculpt().

void LLVolume::setDirty (  )  [inline]

Definition at line 856 of file llvolume.h.

References mPathp, mProfilep, LLProfile::setDirty(), and LLPath::setDirty().


Friends And Related Function Documentation

friend class LLVolumeLODGroup [friend]

Definition at line 821 of file llvolume.h.

std::ostream& operator<< ( std::ostream &  s,
const LLVolume volumep 
) [friend]

Definition at line 3956 of file llvolume.cpp.

std::ostream& operator<< ( std::ostream &  s,
const LLVolume volume 
) [friend]

Definition at line 3946 of file llvolume.cpp.


Member Data Documentation

F32 LLVolume::mDetail [protected]

Definition at line 909 of file llvolume.h.

Referenced by generate(), getDetail(), LLVolume(), and sculpt().

U32 LLVolume::mFaceMask

Definition at line 898 of file llvolume.h.

Referenced by generate(), LLVolume(), and sculpt().

BOOL LLVolume::mGenerateSingleFace [protected]

Definition at line 917 of file llvolume.h.

Referenced by createVolumeFaces(), and LLVolume().

LLVector3 LLVolume::mLODScaleBias

Definition at line 899 of file llvolume.h.

Referenced by generate().

std::vector<Point> LLVolume::mMesh [protected]

Definition at line 915 of file llvolume.h.

Referenced by generate(), getMesh(), getMeshPt(), getTriangleIndices(), sculpt(), and ~LLVolume().

S32 LLVolume::mNumVolumeFaces [protected]

Definition at line 918 of file llvolume.h.

Referenced by createVolumeFaces(), getNumVolumeFaces(), and LLVolume().

LLVolumeParams LLVolume::mParams [protected]

Definition at line 912 of file llvolume.h.

Referenced by getCopyOfParams(), getParams(), isConvex(), LLVolume(), operator<<(), and sculpt().

LLPath* LLVolume::mPathp [protected]

Definition at line 913 of file llvolume.h.

Referenced by generate(), generateFaceMask(), getPath(), getPathType(), LLVolume(), operator<<(), sculpt(), setDirty(), and ~LLVolume().

LLProfile* LLVolume::mProfilep [protected]

Definition at line 914 of file llvolume.h.

Referenced by createVolumeFaces(), generate(), generateFaceMask(), getNumFaces(), getProfile(), getProfileType(), isCap(), isFaceMaskValid(), isFlat(), LLVolume(), operator<<(), sculpt(), setDirty(), and ~LLVolume().

S32 LLVolume::mSculptLevel [protected]

Definition at line 910 of file llvolume.h.

Referenced by getSculptLevel(), LLVolume(), and sculpt().

BOOL LLVolume::mUnique [protected]

Definition at line 908 of file llvolume.h.

Referenced by isUnique(), and LLVolume().

LLVolumeFace* LLVolume::mVolumeFaces [protected]

Definition at line 919 of file llvolume.h.

Referenced by createVolumeFaces(), getVolumeFace(), LLVolume(), and ~LLVolume().

S32 LLVolume::sNumMeshPoints = 0 [static]

Definition at line 891 of file llvolume.h.

Referenced by generate(), sculpt(), and ~LLVolume().


The documentation for this class was generated from the following files:
Generated on Thu Jul 1 06:12:02 2010 for Second Life Viewer by  doxygen 1.4.7