#include <llvolume.h>
Inheritance diagram for LLVolume:
Public Member Functions | |
LLVolume (const LLVolumeParams ¶ms, 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 LLVolumeParams & | getParams () const |
LLVolumeParams | getCopyOfParams () const |
const LLProfile & | getProfile () const |
LLPath & | getPath () const |
const std::vector< Point > & | getMesh () const |
const LLVector3 & | getMeshPt (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 |
S32 * | getTriangleIndices (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 LLVolumeFace & | getVolumeFace (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 |
LLPath * | mPathp |
LLProfile * | mProfilep |
std::vector< Point > | mMesh |
BOOL | mGenerateSingleFace |
S32 | mNumVolumeFaces |
LLVolumeFace * | mVolumeFaces |
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 |
Definition at line 819 of file llvolume.h.
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.
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] |
F32 LLVolume::getDetail | ( | ) | const [inline] |
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().
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().
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::isConvex | ( | ) | const |
Definition at line 3866 of file llvolume.cpp.
References getNumFaces(), i, LLProfile::mFaces, mProfilep, and S32.
BOOL LLVolume::isUnique | ( | ) | const [inline] |
Definition at line 863 of file llvolume.h.
References mUnique.
Referenced by LLVolumeMgr::cleanupVolume().
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().
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.
F32 LLVolume::mDetail [protected] |
Definition at line 909 of file llvolume.h.
Referenced by generate(), getDetail(), LLVolume(), and sculpt().
BOOL LLVolume::mGenerateSingleFace [protected] |
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] |
LLVolumeFace* LLVolume::mVolumeFaces [protected] |
Definition at line 919 of file llvolume.h.
Referenced by createVolumeFaces(), getVolumeFace(), LLVolume(), and ~LLVolume().
S32 LLVolume::sNumMeshPoints = 0 [static] |