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
void resizePath (S32 length)
const std::vector< Point > & getMesh () const
const LLVector3getMeshPt (const U32 i) const
void setDirty ()
void regen ()
void genBinormals (S32 face)
BOOL isConvex () const
BOOL isCap (S32 face)
BOOL isFlat (S32 face)
BOOL isUnique () const
S32 getSculptLevel () const
S32getTriangleIndices (U32 &num_indices) const
S32 getNumTriangleIndices () 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 Types

typedef std::vector< LLVolumeFaceface_list_t

Protected Member Functions

BOOL generate ()
void createVolumeFaces ()

Protected Attributes

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

Private Member Functions

 LLVolume (const LLVolume &)
 ~LLVolume ()
F32 sculptGetSurfaceArea (U16 sculpt_width, U16 sculpt_height, S8 sculpt_components, const U8 *sculpt_data)
void sculptGenerateMapVertices (U16 sculpt_width, U16 sculpt_height, S8 sculpt_components, const U8 *sculpt_data, U8 sculpt_type)
void sculptGeneratePlaceholder ()

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 826 of file llvolume.h.


Member Typedef Documentation

typedef std::vector<LLVolumeFace> LLVolume::face_list_t [protected]

Definition at line 935 of file llvolume.h.


Constructor & Destructor Documentation

LLVolume::LLVolume ( const LLVolume  )  [private]

LLVolume::~LLVolume (  )  [private]

Definition at line 1682 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 
)


Member Function Documentation

U8 LLVolume::getProfileType (  )  const [inline]

Definition at line 851 of file llvolume.h.

Referenced by LLVolumeFace::createSide().

Here is the caller graph for this function:

U8 LLVolume::getPathType (  )  const [inline]

Definition at line 852 of file llvolume.h.

Referenced by LLVolumeFace::createSide().

Here is the caller graph for this function:

S32 LLVolume::getNumFaces (  )  const [inline]

Definition at line 853 of file llvolume.h.

References S32.

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

Here is the caller graph for this function:

S32 LLVolume::getNumVolumeFaces (  )  const [inline]

Definition at line 854 of file llvolume.h.

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

Here is the caller graph for this function:

F32 LLVolume::getDetail (  )  const [inline]

Definition at line 855 of file llvolume.h.

Referenced by LLVOVolume::updateGeometry().

Here is the caller graph for this function:

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

LLVolumeParams LLVolume::getCopyOfParams (  )  const [inline]

Definition at line 857 of file llvolume.h.

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

Definition at line 858 of file llvolume.h.

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

Here is the caller graph for this function:

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

void LLVolume::resizePath ( S32  length  ) 

Definition at line 1665 of file llvolume.cpp.

References mPathp, mVolumeFaces, and LLPath::resizePath().

Referenced by LLVolumeImplFlexible::doFlexibleUpdate().

Here is the call graph for this function:

Here is the caller graph for this function:

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

Definition at line 861 of file llvolume.h.

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

Here is the caller graph for this function:

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

Definition at line 862 of file llvolume.h.

void LLVolume::setDirty (  )  [inline]

Definition at line 864 of file llvolume.h.

void LLVolume::regen (  ) 

Definition at line 1671 of file llvolume.cpp.

References createVolumeFaces(), and generate().

Referenced by LLVolumeImplFlexible::doFlexibleRebuild().

Here is the call graph for this function:

Here is the caller graph for this function:

void LLVolume::genBinormals ( S32  face  ) 

Definition at line 1677 of file llvolume.cpp.

References mVolumeFaces.

BOOL LLVolume::isConvex (  )  const

Definition at line 4095 of file llvolume.cpp.

References LLVolumeParams::isConvex(), and mParams.

Here is the call graph for this function:

BOOL LLVolume::isCap ( S32  face  ) 

Definition at line 2109 of file llvolume.cpp.

References LLProfile::mFaces, and mProfilep.

BOOL LLVolume::isFlat ( S32  face  ) 

Definition at line 2114 of file llvolume.cpp.

References LLProfile::mFaces, and mProfilep.

BOOL LLVolume::isUnique (  )  const [inline]

Definition at line 872 of file llvolume.h.

Referenced by LLVolumeMgr::unrefVolume().

Here is the caller graph for this function:

S32 LLVolume::getSculptLevel (  )  const [inline]

Definition at line 874 of file llvolume.h.

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

Here is the caller graph for this function:

S32 * LLVolume::getTriangleIndices ( U32 num_indices  )  const

S32 LLVolume::getNumTriangleIndices (  )  const

Definition at line 3154 of file llvolume.cpp.

References LLProfileParams::getHollow(), getPath(), getProfile(), LLVolumeParams::getProfileParams(), LLProfile::getTotal(), LLProfile::getTotalOut(), LLPath::isOpen(), LLProfile::isOpen(), mParams, LLPath::mPath, and S32.

Referenced by getTriangleIndices().

Here is the call graph for this function:

Here is the caller graph for this function:

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 3214 of file llvolume.cpp.

References LLVolumeFace::CAP_MASK, j, LLVector3::magVecSquared(), LLVolumeFace::mEdge, LLVolumeFace::mIndices, LLMemType::MTYPE_VOLUME, LLVolumeFace::mTypeMask, LLVolumeFace::mVertices, mVolumeFaces, LLVector3::normVec(), S32, and vector_append().

Referenced by LLVOVolume::generateSilhouette().

Here is the call graph for this function:

Here is the caller graph for this function:

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

Definition at line 3408 of file llvolume.cpp.

References getNumFaces(), getVolumeFace(), i, j, LLTriangleLineSegmentIntersect(), LLVector3::magVecSquared(), LLVolumeFace::mIndices, LLVolumeFace::mVertices, and S32.

Referenced by LLVOVolume::lineSegmentIntersect().

Here is the call graph for this function:

Here is the caller graph for this function:

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 3550 of file llvolume.cpp.

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

Here is the call graph for this function:

LLFaceID LLVolume::generateFaceMask (  ) 

BOOL LLVolume::isFaceMaskValid ( LLFaceID  face_mask  ) 

Definition at line 4084 of file llvolume.cpp.

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

Here is the call graph for this function:

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

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

F32 LLVolume::sculptGetSurfaceArea ( U16  sculpt_width,
U16  sculpt_height,
S8  sculpt_components,
const U8 sculpt_data 
) [private]

Definition at line 1912 of file llvolume.cpp.

References LLVector3::magVec(), LLPath::mPath, mPathp, LLProfile::mProfile, mProfilep, NULL, S32, and sculpt_st_to_vector().

Referenced by sculpt().

Here is the call graph for this function:

Here is the caller graph for this function:

void LLVolume::sculptGenerateMapVertices ( U16  sculpt_width,
U16  sculpt_height,
S8  sculpt_components,
const U8 sculpt_data,
U8  sculpt_type 
) [private]

Definition at line 1980 of file llvolume.cpp.

References i, LL_SCULPT_TYPE_CYLINDER, LL_SCULPT_TYPE_SPHERE, LL_SCULPT_TYPE_TORUS, mMesh, LLPath::mPath, mPathp, LLVolume::Point::mPos, LLProfile::mProfile, mProfilep, LLMemType::MTYPE_VOLUME, S32, and sculpt_xy_to_vector().

Referenced by sculpt().

Here is the call graph for this function:

Here is the caller graph for this function:

void LLVolume::sculptGeneratePlaceholder (  )  [private]

Definition at line 1947 of file llvolume.cpp.

References F_PI, i, mMesh, LLPath::mPath, mPathp, LLVolume::Point::mPos, LLProfile::mProfile, mProfilep, LLMemType::MTYPE_VOLUME, LLVector3::mV, RADIUS, and S32.

Referenced by sculpt().

Here is the caller graph for this function:

BOOL LLVolume::generate (  )  [protected]

void LLVolume::createVolumeFaces (  )  [protected]


Friends And Related Function Documentation

friend class LLVolumeLODGroup [friend]

Definition at line 828 of file llvolume.h.

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

Definition at line 4164 of file llvolume.cpp.

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

Definition at line 4174 of file llvolume.cpp.


Member Data Documentation

Definition at line 904 of file llvolume.h.

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

Definition at line 911 of file llvolume.h.

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

Definition at line 912 of file llvolume.h.

Referenced by LLVOVolume::calcLOD(), and generate().

BOOL LLVolume::mUnique [protected]

Definition at line 925 of file llvolume.h.

Referenced by LLVolume().

F32 LLVolume::mDetail [protected]

Definition at line 926 of file llvolume.h.

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

Definition at line 927 of file llvolume.h.

Referenced by LLVolume(), and sculpt().

LLPath* LLVolume::mPathp [protected]

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

Definition at line 934 of file llvolume.h.

Referenced by createVolumeFaces(), and LLVolume().


The documentation for this class was generated from the following files:

Generated on Fri May 16 09:37:34 2008 for SecondLife by  doxygen 1.5.5