HDK
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
GEO_Detail Class Reference

#include <GEO_Detail.h>

+ Inheritance diagram for GEO_Detail:

Classes

struct  EdgeAdjacencyData
 
class  geo_NPairs
 
class  LocalXformContextT
 
struct  PointAdjacencyData
 
class  SoftSymmetryParms
 

Public Types

enum  CaptureType {
  CAPTURE_BONE = 0, CAPTURE_META, CAPTURE_WIRE, CAPTURE_CLOTH,
  CAPTURE_MUSCLE
}
 Methods for manipulating capture weights (GEO_CaptureWeight.C) More...
 
enum  VisualizationType { VISTYPE_SINGLE, VISTYPE_MULTIPLE }
 
using LocalXformContextR = LocalXformContextT< fpreal >
 
using LocalXformContextF = LocalXformContextT< fpreal32 >
 
using LocalXformContextD = LocalXformContextT< fpreal64 >
 
typedef GEO_Primitive GB_MACRO_PRIM_TYPE
 
typedef UT_Array
< PointAdjacencyData
GEO_PointAdjArray
 
typedef UT_Array
< EdgeAdjacencyData
GEO_EdgeAdjArray
 
- Public Types inherited from GA_Detail
enum  GA_DestroyPointMode { GA_LEAVE_PRIMITIVES, GA_DESTROY_DEGENERATE, GA_DESTROY_DEGENERATE_INCOMPATIBLE }
 
typedef GA_Primitive GB_MACRO_PRIM_TYPE
 

Public Member Functions

 GEO_Detail (GA_PrimitiveFactory &factory, bool full_topology=true)
 
 ~GEO_Detail () override
 
int64 getMemoryUsage (bool inclusive) const override
 Compute memory usage (includes all shared memory) More...
 
void countMemory (UT_MemoryCounter &counter, bool inclusive) const override
 
void clearAndDestroy ()
 Clear all the points/primitives out of this detail. More...
 
void merge (const GEO_Detail &src, const GA_PrimitiveGroup *primGrp=nullptr, bool mergePrimGroup=true, bool insertPrimsAtHead=false, bool keep_internal_groups=true, GA_DataIdStrategy data_id_strategy=GA_DATA_ID_BUMP)
 
void mergePoints (const GEO_Detail &src, const GA_PointGroup *ptGrp=0, bool merge_groups=true, bool keep_internal_groups=true)
 
void mergePoints (const GEO_Detail &src, const GA_Range &points)
 Merge only a group of points. More...
 
void mergePrimitives (const GEO_Detail &src, const GA_Range &prims)
 Merge only a group of prims. More...
 
void merge (const GEO_Primitive &sprim, bool insertPrimAtHead=false)
 Merge a single primitive into this detail. More...
 
bool copy (const GEO_Detail &src, GEO_CopyMethod method=GEO_COPY_ONCE, bool this_parameter_is_ignored=true, bool keep_internal_groups=true, GA_DataIdStrategy data_id_strategy=GA_DATA_ID_BUMP)
 
void collapseIndexAttributes ()
 
void mirror (GEO_MirrorParms &parms)
 Mirrors a portion of the gdp across some plane. More...
 
template<typename FLOAT_T >
void transform (const UT_Matrix4T< FLOAT_T > &mat, const GA_Range &primitives, bool just_P, bool keep_vector_lengths=true, bool check_pasting=true, bool neg_determinant_flip_vector=true, bool update_ptnormals=false, GEO_Delta *geodelta=nullptr, bool updateaffectednormals=false, const char *attribpattern=nullptr)
 
template<typename FLOAT_T >
void transform (const UT_Matrix4T< FLOAT_T > &mat, const GA_Range &primitives, const GA_Range &points, bool just_P, bool keep_vector_lengths=true, bool check_pasting=true, bool neg_determinant_flip_vector=true, bool update_ptnormals=false, GEO_Delta *geodelta=nullptr, bool updateaffectednormals=false, const char *attribpattern=nullptr)
 
template<typename FLOAT_T >
void transform (const UT_Matrix4T< FLOAT_T > &mat, const GA_PrimitiveGroup *primGrp=0, const GA_PointGroup *pointClosure=0, bool just_P=false, bool keep_vector_lengths=true, bool check_pasting=true, bool neg_determinant_flipvector=true, bool update_ptnormals=false, GEO_Delta *geodelta=0, bool updateaffectednormals=false, const char *attribpattern=nullptr)
 
template<typename FLOAT_T >
void transformRange (const UT_Matrix4T< FLOAT_T > &mat, GA_Index min_ptnum, GA_Index max_ptnum, GA_Index min_primnum, GA_Index max_primnum, bool just_P=false, bool keep_vector_lengths=true, bool check_pasting=true, bool neg_determinant_flipvector=true, bool update_ptnormals=false, GEO_Delta *geodelta=0, bool updateaffectednormals=false, const char *attribpattern=nullptr)
 Don't use update_ptnormals, except for compatibility; use updateaffectednormals. More...
 
template<typename FLOAT_T >
void translate (const UT_Vector3T< FLOAT_T > &delta, const GA_PrimitiveGroup *primGrp=0, const GA_PointGroup *pointClosure=0, bool check_pasting=true, bool update_ptnormals=false, GEO_Delta *geodelta=0, bool updateaffectednormals=false, const char *attribpattern=nullptr)
 Don't use update_ptnormals, except for compatibility; use updateaffectednormals. More...
 
template<typename FLOAT_T >
void transformPoints (const UT_Matrix4T< FLOAT_T > &mat, const GA_Range &points, bool just_P=false, bool keep_vector_lengths=true, bool check_pasting=true, bool neg_determinant_flipvector=true, bool update_ptnormals=false, GEO_Delta *geodelta=0, bool updateaffectednormals=false, const char *attribpattern=nullptr)
 
template<typename FLOAT_T >
void transformPoints (const UT_Matrix4T< FLOAT_T > &mat, const GA_PointGroup *pointGroup=0, const GA_PrimitiveGroup *primClosure=0, bool just_P=false, bool keep_vector_lengths=true, bool check_pasting=true, bool neg_determinant_flipvector=true, bool update_ptnormals=false, GEO_Delta *geodelta=0, bool updateaffectednormals=false, const char *attribpattern=nullptr)
 
template<typename FLOAT_T , bool INVERT = false>
void transformPointsByAttribute (const GA_ROHandleT< UT_Matrix4T< FLOAT_T > > &xformhandle, const GA_Range &points, bool keep_vector_lengths=true, bool updateaffectednormals=true, const char *attribpattern=nullptr)
 
template<typename FLOAT_T , bool INVERT = false>
void transformPointsByAttribute (const GA_ROHandleT< UT_Matrix3T< FLOAT_T > > &xformhandle, const GA_Range &points, bool keep_vector_lengths=true, bool updateaffectednormals=true, const char *attribpattern=nullptr)
 
template<typename FLOAT_T , bool INVERT = false>
void transformPointsByAttribute (const GA_ROHandleT< UT_QuaternionT< FLOAT_T > > &xformhandle, const GA_Range &points, bool keep_vector_lengths=true, bool updateaffectednormals=true, const char *attribpattern=nullptr)
 
template<typename FLOAT_T , bool INVERT = false>
void translatePointsByAttribute (const GA_ROHandleT< UT_Vector3T< FLOAT_T > > &xformhandle, const GA_Range &points, bool keep_vector_lengths=true, bool updateaffectednormals=true, const char *attribpattern=nullptr)
 
template<typename FLOAT_T >
void translatePoints (const UT_Vector3T< FLOAT_T > &delta, const GA_PointGroup *pointGroup=0, bool check_pasting=true, bool update_ptnormals=false, GEO_Delta *geodelta=0, bool updateaffectednormals=false, const char *attribpattern=nullptr)
 Don't use update_ptnormals, except for compatibility; use updateaffectednormals. More...
 
template<typename FLOAT_T >
void transformEdges (const UT_Matrix4T< FLOAT_T > &mat, const GA_EdgeGroup *edgegrp=0, const GA_PrimitiveGroup *primclosure=0, bool just_P=false, bool keep_vector_lengths=true, bool check_pasting=true, bool neg_determinant_flipvector=true, bool update_ptnormals=false, GEO_Delta *geodelta=0, bool updateaffectednormals=false, const char *attribpattern=nullptr)
 
template<typename FLOAT_T >
void translateEdges (const UT_Vector3T< FLOAT_T > &delta, const GA_EdgeGroup *edgegrp=0, bool check_pasting=true, bool update_ptnormals=false, GEO_Delta *geodelta=0, bool updateaffectednormals=false, const char *attribpattern=nullptr)
 Don't use update_ptnormals, except for compatibility; use updateaffectednormals. More...
 
template<typename FLOAT_T >
void transformBreakpoints (const UT_Matrix4T< FLOAT_T > &mat, const GA_BreakpointGroup *grp=0, bool just_P=false, bool update_ptnormals=false, GEO_Delta *geodelta=0, bool updateaffectednormals=false, const char *attribpattern=nullptr)
 
template<typename FLOAT_T >
void translateBreakpoints (const UT_Vector3T< FLOAT_T > &delta, const GA_BreakpointGroup *grp=0, bool update_ptnormals=false, GEO_Delta *geodelta=0, bool updateaffectednormals=false, const char *attribpattern=nullptr)
 Don't use update_ptnormals, except for compatibility; use updateaffectednormals. More...
 
template<typename FLOAT_T >
void transformGroup (const UT_Matrix4T< FLOAT_T > &mat, const GA_Group &grp, bool just_P=false, bool keep_vector_lengths=true, bool check_pasting=true, bool neg_determinant_flipvector=true, const GA_PointGroup *ptclosure=0, const GA_PrimitiveGroup *primclosure=0, bool update_ptnormals=false, GEO_Delta *geodelta=0, bool updateaffectednormals=false, const char *attribpattern=nullptr)
 
template<typename FLOAT_T >
void translateGroup (const UT_Vector3T< FLOAT_T > &delta, const GA_Group &grp, bool check_pasting=true, const GA_PointGroup *ptclosure=0, bool update_ptnormals=false, GEO_Delta *geodelta=0, bool updateaffectednormals=false, const char *attribpattern=nullptr)
 Don't use update_ptnormals, except for compatibility; use updateaffectednormals. More...
 
void visualizeSoftPoints (const GEO_Rolloff &rolloff, const GA_PointGroup *ptgroup, UT_ColorRamp ramp)
 
void computeSoftPointFalloff (const bool connected, const fpreal radius, const GEO_Rolloff *rolloff, const GA_PointGroup *ptgroup, const SoftSymmetryParms *symmetry, const GA_RWHandleF &falloff, const GA_ROHandleV3 &p_attrib, GA_PointGroup *affected_group=nullptr, GA_RWHandleID *source_points=nullptr) const
 
void computeNormalInternal (GA_Offset ptoff, UT_Vector3 &nml)
 
void computeNormal (const GEO_Primitive &prim, UT_Vector3 &nml) const
 This is the same as prim.computeNormal() More...
 
void computeNormal (const GA_Edge &edge, UT_Vector3 &nml) const
 
void computeNormal (const GA_Breakpoint &bkpt, UT_Vector3 &nml) const
 
void computeNormalAndTangents (const GA_Breakpoint &bkpt, UT_Vector3 &nml, UT_Vector3 *u_tangent, UT_Vector3 *v_tangent, bool normalize) const
 
void normalTranslatePoints (float length=1.0F, int check_pasting=1, const GA_PointGroup *grp=0, int update_ptnormals=0, GEO_Delta *geodelta=0, bool updateaffectednormals=false)
 
void normalTranslatePrimitives (float length=1.0F, int check_pasting=1, const GA_PrimitiveGroup *grp=0, int update_ptnormals=0, GEO_Delta *geodelta=0, bool updateaffectednormals=false)
 
void normalTranslate (const GA_PointGroup &grp, float length=1.0F, int check_pasting=1, int update_ptnormals=0, GEO_Delta *geodelta=0, bool updateaffectednormals=false)
 
void normalTranslate (const GA_PrimitiveGroup &grp, float length=1.0F, int check_pasting=1, int update_ptnormals=0, GEO_Delta *geodelta=0, bool updateaffectednormals=false)
 
void normalTranslate (const GA_EdgeGroup &grp, float length=1.0F, int check_pasting=1, int update_ptnormals=0, GEO_Delta *geodelta=0, bool updateaffectednormals=false)
 
void normalTranslate (const GA_BreakpointGroup &grp, float length=1.0F, int check_pasting=1, int update_ptnormals=0, GEO_Delta *geodelta=0, bool updateaffectednormals=false)
 
void normalTranslateGroup (const GA_Group &grp, float length=1.0F, int check_pasting=1, int update_ptnormals=0, GEO_Delta *geodelta=0, bool updateaffectednormals=false)
 
void updateAffectedNormals (const GA_Range &ptrange, GEO_Delta *geodelta=0, bool allsametransform=false)
 
template<typename FLOAT_T >
void slideTransformEdges (const UT_Matrix4T< FLOAT_T > &mat, const GA_EdgeGroup *edgegrp=0, const GA_PrimitiveGroup *primclosure=0, bool just_P=false, bool keep_vector_lengths=true, bool check_pasting=true, bool neg_determinant_flipvector=true, bool update_ptnormals=false, GEO_Delta *geodelta=0, bool updateaffectednormals=false)
 
template<typename FLOAT_T >
void slideTransformPoints (const UT_Matrix4T< FLOAT_T > &mat, const GA_PointGroup *ptgrp=0, const GA_PrimitiveGroup *primclosure=0, bool just_P=false, bool keep_vector_lengths=true, bool check_pasting=true, bool neg_determinant_flipvector=true, bool update_ptnormals=false, GEO_Delta *geodelta=0, bool updateaffectednormals=false, GEO_PointSliderCache *slider_cache=0)
 
template<typename FLOAT_T >
void slideTransformPrimitives (const UT_Matrix4T< FLOAT_T > &mat, const GA_PrimitiveGroup *primgrp=0, const GA_PointGroup *ptclosure=0, bool just_P=false, bool keep_vector_lengths=true, bool check_pasting=true, bool neg_determinant_flipvector=true, bool update_ptnormals=false, GEO_Delta *geodelta=0, bool updateaffectednormals=false, GEO_PointSliderCache *slider_cache=0)
 
template<typename FLOAT_T >
void slideTransformGroup (const UT_Matrix4T< FLOAT_T > &mat, const GA_Group &grp, bool just_P=false, bool keep_vector_lengths=true, bool check_pasting=true, bool neg_determinant_flipvector=true, const GA_PointGroup *ptclosure=0, const GA_PrimitiveGroup *primclosure=0, bool update_ptnormals=false, GEO_Delta *geodelta=0, bool updateaffectednormals=false, GEO_PointSliderCache *slider_cache=0)
 
void softTransformPoints (const UT_XformOrder &order, float tx, float ty, float tz, float rx, float ry, float rz, float sx, float sy, float sz, float s_xy, float s_xz, float s_yz, float px, float py, float pz, float prx, float pry, float prz, const GEO_Rolloff &rolloff, const GA_PointGroup *ptgroup=0, const SoftSymmetryParms *symmetry=0, int just_P=0, int keep_vector_lengths=1, int check_pasting=1, int neg_determinant_flipvector=1, int update_ptnormals=0, GEO_Delta *geodelta=0, bool updateaffectednormals=false, const char *attribpattern=nullptr, const GA_RWHandleF *falloff_output=nullptr, bool *falloff_written=nullptr)
 
void softTransformEdges (const UT_XformOrder &order, float tx, float ty, float tz, float rx, float ry, float rz, float sx, float sy, float sz, float s_xy, float s_xz, float s_yz, float px, float py, float pz, float prx, float pry, float prz, const GEO_Rolloff &rolloff, const GA_EdgeGroup *edgegrp=0, const SoftSymmetryParms *symmetry=0, int just_P=0, int keep_vector_lengths=1, int check_pasting=1, int neg_determinant_flipvector=1, int update_ptnormals=0, GEO_Delta *geodelta=0, bool updateaffectednormals=false, const char *attribpattern=nullptr, const GA_RWHandleF *falloff_output=nullptr, bool *falloff_written=nullptr)
 
void softTransformPoints (const LocalXformContextF *local, const UT_XformOrder &order, float tx, float ty, float tz, float rx, float ry, float rz, float sx, float sy, float sz, float s_xy, float s_xz, float s_yz, float px, float py, float pz, float prx, float pry, float prz, const GEO_Rolloff &rolloff, const GA_PointGroup *ptgroup=0, const SoftSymmetryParms *symmetry=0, int just_P=0, int keep_vector_lengths=1, int check_pasting=1, int neg_determinant_flipvector=1, int update_ptnormals=0, GEO_Delta *geodelta=0, bool updateaffectednormals=false, const char *attribpattern=nullptr, const GA_RWHandleF *falloff_output=nullptr, bool *falloff_written=nullptr)
 
void softTransformEdges (const LocalXformContextF *local, const UT_XformOrder &order, float tx, float ty, float tz, float rx, float ry, float rz, float sx, float sy, float sz, float s_xy, float s_xz, float s_yz, float px, float py, float pz, float prx, float pry, float prz, const GEO_Rolloff &rolloff, const GA_EdgeGroup *edgegrp=0, const SoftSymmetryParms *symmetry=0, int just_P=0, int keep_vector_lengths=1, int check_pasting=1, int neg_determinant_flipvector=1, int update_ptnormals=0, GEO_Delta *geodelta=0, bool updateaffectednormals=false, const char *attribpattern=nullptr, const GA_RWHandleF *falloff_output=nullptr, bool *falloff_written=nullptr)
 
void softTranslatePoints (const UT_Vector3 &delta, const GEO_Rolloff &rolloff, const GA_PointGroup *ptgroup=0, const SoftSymmetryParms *symmetry=0, int check_pasting=1, int update_ptnormals=0, GEO_Delta *geodelta=0, bool updateaffectednormals=false, const char *attribpattern=nullptr, const GA_RWHandleF *falloff_output=nullptr, bool *falloff_written=nullptr)
 
void softTranslateEdges (const UT_Vector3 &delta, const GEO_Rolloff &rolloff, const GA_EdgeGroup *edgegrp=0, const SoftSymmetryParms *symmetry=0, int check_pasting=1, int update_ptnormals=0, GEO_Delta *geodelta=0, bool updateaffectednormals=false, const char *attribpattern=nullptr, const GA_RWHandleF *falloff_output=nullptr, bool *falloff_written=nullptr)
 
void softNormalTranslatePoints (float distance, const GEO_Rolloff &rolloff, const GA_PointGroup *ptgroup=nullptr, const SoftSymmetryParms *symmetry=nullptr, int along_lead_normal=1, int check_pasting=1, int update_ptnormals=0, GEO_Delta *geodelta=nullptr, bool updateaffectednormals=false, const GA_RWHandleF *falloff_output=nullptr, bool *falloff_written=nullptr)
 
GA_Attributenormal (bool internal=false, const GA_PrimitiveGroup *primgroup=nullptr)
 
void normal (UT_Vector3Array &output, bool use_internaln=true) const
 Return normals computed from the geometry, ignoring the "N" attribute. More...
 
void normal (UT_Vector3DArray &output, bool use_internaln=true) const
 
void normal (const GA_RWHandleV3 &attrib, const GA_PrimitiveGroup *primgroup=nullptr) const
 
void getVertexNormals (UT_Vector3Array &output) const
 Add and compute vertex normal attributes. Returns the normals. More...
 
bool getCaptureRegionRootPath (UT_String &root_path, CaptureType t=CAPTURE_BONE) const
 
bool setCaptureRegionRootPath (const UT_String &root_path, CaptureType t=CAPTURE_BONE)
 
int getCaptureRegionIndex (const UT_String &cregion_name, CaptureType t=CAPTURE_BONE)
 
int addCaptureRegion (const UT_String &cregion_name, const UT_Matrix4 &parent_xform, const GEO_Detail *tube_gdp)
 
int addCaptureRegion (const UT_String &cregion_name, const UT_Matrix4 &xform, float tcap, float bcap, float taperx, float taperz)
 
int addCaptureRegion (const UT_String &cregion_name, CaptureType type)
 
int removeCaptureRegion (const UT_String &cregion_name, CaptureType t=CAPTURE_BONE)
 
void setCaptureWeight (int cregion_index, float weight, const GA_PointGroup *ptgroup=nullptr, GEO_Delta *geodelta=nullptr, bool add_weight=false, bool clamp_negative=false, bool normalizeweight=false, CaptureType t=CAPTURE_BONE)
 Set the capture weight on a group of points. More...
 
void setCaptureWeight (int cregion_index, float weight, GA_Offset ptoff, GEO_Delta *geodelta=nullptr, bool add_weight=false, bool clamp_negative=false, bool normalizeweight=false, CaptureType t=CAPTURE_BONE)
 Set the capture weight on a point. More...
 
float getCaptureWeight (int cregion_index, GA_Offset ptoff, CaptureType t=CAPTURE_BONE) const
 Get the capture weight of a point. More...
 
bool addAverageCaptureWeight (const GA_PointGroup *ptgroup, const UT_String &root_path, UT_StringMap< float * > &averages) const
 Get the average capture weight of a set of points. More...
 
void getCaptureWeights (GA_Offset ptoff, UT_IntArray &regions, UT_FloatArray &weights, CaptureType t=CAPTURE_BONE) const
 
void clearCaptureWeights (GA_Offset ptoff, CaptureType t=CAPTURE_BONE)
 
void colorPointsByCaptureWeight (const UT_Array< const UT_Vector3 * > &colors, const UT_Vector3 &zero_weight_color, CaptureType t=CAPTURE_BONE, VisualizationType vistype=VISTYPE_MULTIPLE, UT_ColorRamp singlevismode=UT_COLORRAMP_FALSE)
 Color points according to their capture (normalized) weight. More...
 
void colorPointsByCaptureWeight (const UT_Array< const UT_Vector3 * > &colors, const UT_Vector3 &zero_weight_color, CaptureType t, VisualizationType vistype, UT_ColorRamp singlevismode, bool normalize)
 
void normalizeCaptureWeights (const GA_PointGroup *ptgroup=nullptr, CaptureType t=CAPTURE_BONE, fpreal tolerance=SYS_FTOLERANCE_R)
 
void clampCaptureWeights (const GA_PointGroup *ptgroup=nullptr, bool clamp_low_flag=true, float low_threshold=0.0f, float low_val=0.0f, bool clamp_hi_flag=false, float hi_threshold=1.0f, float hi_val=1.0f, CaptureType t=GEO_Detail::CAPTURE_BONE)
 
void normalizeRelativeCaptureWeights (int idx, GA_Offset ptoff, GEO_Delta *delta=nullptr)
 This specifies a capture index that is exempt from normalization. More...
 
GA_Offset insertPointOffset (GA_Index beforeWhich=GA_INVALID_INDEX)
 
SYS_FORCE_INLINE GA_Offset appendPointOffset ()
 
GA_Offset insertPointCopy (GA_Offset src, GA_PointWrangler &wrangler, GA_Index beforeWhich=GA_INVALID_INDEX)
 
GA_Offset insertPointCopy (GA_Offset src, GA_Index beforeWhich=GA_INVALID_INDEX)
 
GA_Offset appendPointCopy (GA_Offset src, GA_PointWrangler &wrangler)
 Append a point, copying data from the source point. More...
 
GA_Offset appendPointCopy (GA_Offset src)
 
SYS_FORCE_INLINE GA_Size deletePoints (const GA_PointGroup &point_group, GA_DestroyPointMode mode=GA_LEAVE_PRIMITIVES)
 
GEO_PrimitiveinsertPrimitive (const GA_PrimitiveTypeId &type, const GEO_Primitive *beforeWhich=nullptr)
 
SYS_FORCE_INLINE GEO_PrimitiveappendPrimitive (const GA_PrimitiveTypeId &type)
 
GA_Size deletePrimitives (const GA_PrimitiveGroup &primGrp, bool and_points=false)
 
GA_Size deletePrimitives (const UT_Array< GEO_Primitive * > &prims_in, bool and_points=false)
 
virtual void deleteBreakpoints (const GA_BreakpointGroup &bkptgrp)
 
bool getBBox (UT_BoundingBox *bbox, const GA_PrimitiveGroup *g=nullptr) const
 
bool getBBox (UT_BoundingBox &bbox, const UT_Matrix4R &transform, const GA_PrimitiveGroup *g=nullptr) const
 
bool getVisibleBBox (UT_BoundingBox *bbox, const UT_Matrix4R *transform=nullptr, const GA_PrimitiveGroup *g=nullptr) const
 
bool getBSphere (UT_BoundingSphere *bsphere, const GA_PrimitiveGroup *g=nullptr, bool accurate_bounds=false) const
 
bool getPointBBox (UT_BoundingBox *bbox, const GA_PointGroup *g=nullptr) const
 
bool getPointBBox (UT_BoundingBox &bbox, const UT_Matrix4R &transform, const GA_PointGroup *g=nullptr) const
 
bool getPointBSphere (UT_BoundingSphere *bsphere, const GA_PointGroup *g=nullptr, bool accurate_bounds=false) const
 
bool getVertexBBox (UT_BoundingBox *bbox, const GA_VertexGroup *g=nullptr) const
 
bool getVertexBBox (UT_BoundingBox &bbox, const UT_Matrix4R &transform, const GA_VertexGroup *g=nullptr) const
 
bool getEdgeBBox (UT_BoundingBox &bbox, const GA_EdgeGroup &grp) const
 
bool getEdgeBBox (UT_BoundingBox &bbox, const UT_Matrix4R &transform, const GA_EdgeGroup &grp) const
 
bool getEdgeBSphere (UT_BoundingSphere &bsphere, const GA_EdgeGroup &grp, bool accurate_bounds=false) const
 
bool getBreakpointBBox (UT_BoundingBox &bbox, const GA_BreakpointGroup &grp) const
 
bool getBreakpointBBox (UT_BoundingBox &bbox, const UT_Matrix4R &transform, const GA_BreakpointGroup &grp) const
 
bool getBreakpointBSphere (UT_BoundingSphere &bsphere, const GA_BreakpointGroup &grp, bool accurate_bounds=false) const
 
bool getGroupBBox (UT_BoundingBox *bbox, const GA_Group *grp) const
 
bool getGroupBBox (UT_BoundingBox &bbox, const UT_Matrix4R &transform, const GA_Group *grp) const
 
bool getGroupBSphere (UT_BoundingSphere *bsphere, const GA_Group *grp, bool accurate_bounds) const
 
bool getPointAttribBBox (const UT_StringRef &name, UT_BoundingBox *bbox, const GA_PointGroup *g=nullptr) const
 
bool getPointAttribBBox (const UT_StringRef &name, UT_BoundingBox *bbox, const GA_PrimitiveGroup &g) const
 
bool getPointAttribBBox (const UT_StringRef &name, UT_BoundingBox *bbox, const GA_EdgeGroup &g) const
 
bool getPointAttribBBox (const UT_StringRef &name, UT_BoundingBox *bbox, const GA_VertexGroup &g) const
 
template<typename T >
bool getPointAttribCentroid (UT_Vector3T< T > &centroid, const GA_Attribute &attrib, const GA_PointGroup *grp=nullptr) const
 
bool getPointAttribGroupBBox (const UT_StringRef &name, UT_BoundingBox *bbox, const GA_Group *grp) const
 
bool getVertexAttribBBox (const UT_StringRef &name, UT_BoundingBox *bbox, const GA_PointGroup *g=nullptr) const
 
bool getVertexAttribBBox (const UT_StringRef &name, UT_BoundingBox *bbox, const GA_PrimitiveGroup &g) const
 
bool getVertexAttribBBox (const UT_StringRef &name, UT_BoundingBox *bbox, const GA_EdgeGroup &g) const
 
bool getVertexAttribBBox (const UT_StringRef &name, UT_BoundingBox *bbox, const GA_VertexGroup &g) const
 
bool getVertexAttribGroupBBox (const UT_StringRef &name, UT_BoundingBox *bbox, const GA_Group *grp) const
 
void copyVertexAttributes (GEO_Vertex dest, const GEO_Vertex &src) const
 Copy vertex attributes from source to destination. More...
 
void copyVertexAttributes (GA_Offset dest, GA_Offset src, GA_VertexWrangler &wrangler) const
 
void copyPointVertexAttributes (GEO_Vertex dest, const GEO_Vertex &src, bool copy_point_P=true) const
 Copy vertex AND point attributes. More...
 
void copyPointVertexAttributes (GA_Offset dest_vtx, GA_Offset src_vtx, const GA_AttributeRefMap &vertex_attribs, const GA_AttributeRefMap &point_attribs)
 
void copyPointVertexAttributes (GA_Offset dest_vtx, GA_Offset src_vtx, GA_VertexWrangler &vertex_wrangler, GA_PointWrangler &point_wrangler, bool copy_point_P)
 
void copyFullVertex (GEO_Vertex dest, const GEO_Vertex &src) const
 Copy vertex attributes AND change the point reference of the vertex. More...
 
void copyFullVertex (GA_Offset dest_vtx, GA_Offset src_vtx, GA_VertexWrangler &vertex_wrangler)
 Copy vertex attributes AND change the point reference of the vertex. More...
 
void copyPrimitiveAttributes (GEO_Primitive &dest, const GEO_Primitive &src)
 Copy primitive attributes. More...
 
void copyPrimitiveGroups (GEO_Primitive &dest, const GEO_Primitive &src) const
 
void copyVertex (GEO_Vertex dest, const GEO_Vertex &src, int shallow=0) const
 
void copyVertex (GA_Offset dest, GA_Offset src, GA_AttributeRefMap &vertex_attribs, GA_AttributeRefMap *point_attribs)
 
void copyVertex (GA_Offset dest, GA_Offset src, GA_VertexWrangler &vertex_wrangler, GA_PointWrangler *point_wrangler)
 
void copyVertex (GA_Offset dest, GA_Offset src, GA_VertexWrangler &vertex_wrangler, GA_PointWrangler &point_wrangler, bool copy_point_p)
 
void fixSplineWeights ()
 
GA_AttributeaddNormalAttribute (GA_AttributeOwner who, GA_Storage s=GA_STORE_INVALID)
 
GA_AttributeaddTextureAttribute (GA_AttributeOwner who, GA_Storage s=GA_STORE_INVALID)
 
GA_AttributeaddVelocityAttribute (GA_AttributeOwner who, GA_Storage s=GA_STORE_INVALID)
 
GA_AttributeaddAngularVelocityAttribute (GA_AttributeOwner who, GA_Storage s=GA_STORE_INVALID)
 
GA_AttributeaddOrientAttribute (GA_AttributeOwner who, GA_Storage s=GA_STORE_INVALID)
 
GA_AttributeaddAlphaAttribute (GA_AttributeOwner who, GA_Storage s=GA_STORE_INVALID)
 
GA_AttributeaddComAttribute (GA_AttributeOwner who, GA_Storage s=GA_STORE_INVALID)
 
GA_AttributeaddDiffuseAttribute (GA_AttributeOwner who, GA_Storage s=GA_STORE_INVALID)
 
GA_AttributeaddDistanceAttribute (GA_AttributeOwner who, GA_Storage s=GA_STORE_INVALID)
 
GA_AttributeaddLODAttribute (GA_AttributeOwner who, GA_Storage s=GA_STORE_INVALID)
 
GA_AttributeaddRestAttribute (GA_AttributeOwner who, GA_Storage s=GA_STORE_INVALID, const UT_StringHolder &name=UT_StringHolder::theEmptyString)
 
GA_AttributeaddTubeCaptureAttribute (GA_Storage s=GA_STORE_INVALID)
 
GA_AttributeaddCaptureFrameAttribute (CaptureType t=CAPTURE_BONE, GA_Storage s=GA_STORE_INVALID)
 Add the detail's capture frame attribute for capture type t. More...
 
GA_AttributeaddCaptureSkelRootAttribute (CaptureType t=CAPTURE_BONE)
 Add the bone capture skeleton root detail attribute. More...
 
GA_AttributeaddPtIndexPairAttribute (const UT_StringHolder &name, geo_NPairs n_pairs, GA_Storage s=GA_STORE_INVALID)
 
GA_AttributeaddIndexPairAttribute (GA_AttributeOwner owner, const UT_StringHolder &name, int n_pairs, GA_Storage s=GA_STORE_INVALID)
 
GA_AttributeaddPointCaptureAttribute (geo_NPairs n_pairs, CaptureType t=CAPTURE_BONE, GA_Storage s=GA_STORE_INVALID)
 Add the (index, weight) point attribute for capture type t. More...
 
GA_AttributeaddPointCaptureAlphaAttribute (float dflt, GA_Storage s=GA_STORE_INVALID)
 Add the bone capture alpha point attribute. More...
 
const GA_AttributefindNormalAttribute (GA_AttributeOwner who) const
 
GA_AttributefindNormalAttribute (GA_AttributeOwner who)
 
const GA_AttributefindTextureAttribute (GA_AttributeOwner who) const
 
GA_AttributefindTextureAttribute (GA_AttributeOwner who)
 
const GA_AttributefindVelocityAttribute (GA_AttributeOwner who) const
 
GA_AttributefindVelocityAttribute (GA_AttributeOwner who)
 
const GA_AttributefindAlphaAttribute (GA_AttributeOwner who) const
 
GA_AttributefindAlphaAttribute (GA_AttributeOwner who)
 
const GA_AttributefindComAttribute (GA_AttributeOwner who) const
 
GA_AttributefindComAttribute (GA_AttributeOwner who)
 
const GA_AttributefindDiffuseAttribute (GA_AttributeOwner who) const
 
GA_AttributefindDiffuseAttribute (GA_AttributeOwner who)
 
const GA_AttributefindDistanceAttribute (GA_AttributeOwner who) const
 
GA_AttributefindDistanceAttribute (GA_AttributeOwner who)
 
const GA_AttributefindLODAttribute (GA_AttributeOwner who) const
 
GA_AttributefindLODAttribute (GA_AttributeOwner who)
 
const GA_AttributefindRestAttribute (GA_AttributeOwner who) const
 
GA_AttributefindRestAttribute (GA_AttributeOwner who)
 
const GA_AttributefindTubeCaptureAttribute () const
 
GA_AttributefindTubeCaptureAttribute ()
 
GA_ROHandleS findMaterialAttribute (GA_AttributeOwner who) const
 
const GA_AttributefindInternalNormalAttribute () const
 
GA_AttributefindInternalNormalAttribute ()
 
const GA_AttributefindCaptureFrameAttribute (CaptureType t=CAPTURE_BONE) const
 
GA_AttributefindCaptureFrameAttribute (CaptureType t=CAPTURE_BONE)
 
const GA_AttributefindCaptureSkelRootAttribute (CaptureType t=CAPTURE_BONE) const
 Find the offset for the bone capture skeleton root detail attribute. More...
 
GA_AttributefindCaptureSkelRootAttribute (CaptureType t=CAPTURE_BONE)
 
const GA_AttributefindPointCaptureAttribute (CaptureType t=CAPTURE_BONE) const
 
GA_AttributefindPointCaptureAttribute (CaptureType t=CAPTURE_BONE)
 
const GA_AttributefindPointCaptureAlphaAttribute () const
 Find the offset for the bone capture alpha point attribute. More...
 
GA_AttributefindPointCaptureAlphaAttribute ()
 
const GA_AttributefindPtIndexPairAttribute (const UT_StringRef &name) const
 Find the offset for a custom (index, weight) point attribute. More...
 
GA_AttributefindPtIndexPairAttribute (const UT_StringRef &name)
 
void destroyNormalAttribute (GA_AttributeOwner who)
 
void destroyInternalNormalAttribute ()
 
void destroyTextureAttribute (GA_AttributeOwner who)
 
void destroyVelocityAttribute (GA_AttributeOwner who)
 
void destroyAlphaAttribute (GA_AttributeOwner who)
 
void destroyComAttribute (GA_AttributeOwner who)
 
void destroyDiffuseAttribute (GA_AttributeOwner who)
 
void destroyDistanceAttribute (GA_AttributeOwner who)
 
void destroyLODAttribute (GA_AttributeOwner who)
 
void destroyRestAttribute (GA_AttributeOwner who)
 
void destroyTubeCaptureAttribute ()
 
void destroyCaptureFrameAttribute (CaptureType t=CAPTURE_BONE)
 Destroy the detail's capture frame attribute for capture type t. More...
 
void destroyCaptureSkelRootAttribute (CaptureType t=CAPTURE_BONE)
 Destroy the bone capture skeleton root detail attribute. More...
 
void destroyPointCaptureAttribute (CaptureType t=CAPTURE_BONE)
 
void destroyPointCaptureAlphaAttribute ()
 Destroy the bone capture alpha point attribute. More...
 
void destroyPtIndexPairAttribute (const UT_StringRef &name)
 Destroy a custom (index, weight) point attribute. More...
 
bool getMetaRestAnchorPath (UT_String &anchorPath) const
 
UT_StringHolder getStdAttributeName (GEO_Standard_Attributes name, int layer=-1) const
 
int getAttributeLayer (const char *attr_name) const
 
int getCurrentLayer () const
 These handle layers: More...
 
void setCurrentLayer (int layer)
 
void setNumLayers (int numlayer)
 
int getNumLayers () const
 
void setLayerMerge (int preclear, int mask, int srcblend, int dstblend)
 These get and set the CURRENT layer's merge mode: More...
 
void getLayerMerge (int &preclear, int &mask, int &srcblend, int &dstblend) const
 
void addVariableName (const char *attr, const char *varname)
 
void removeVariableName (const char *varname)
 
void getVariableNameMap (UT_String &result) const
 
void traverseVariableNames (int(*function)(const char *attr, const char *varname, void *data), void *data) const
 Traverses the variable name mappings currently present: More...
 
GA_AttributegrowPointCaptureAttribute (geo_NPairs num_added_pairs, CaptureType t=CAPTURE_BONE)
 increase the memory size of the attribute More...
 
SYS_FORCE_INLINE GA_AttributeaddPointAttrib (const GA_Attribute *src)
 
SYS_FORCE_INLINE GA_AttributeaddPointAttrib (GA_AttributeScope scope, const UT_StringHolder &n, const UT_Options *creation_args, const GA_AttributeOptions *attribute_options, const UT_StringRef &attribtype)
 
SYS_FORCE_INLINE GA_AttributeaddPointAttrib (const UT_StringHolder &n, const UT_Options *creation_args, const GA_AttributeOptions *attribute_options, const UT_StringRef &attribtype)
 
SYS_FORCE_INLINE const
GA_Attribute
findPointAttrib (const GA_Attribute &src) const
 
SYS_FORCE_INLINE GA_AttributefindPointAttrib (const GA_Attribute &src)
 
SYS_FORCE_INLINE const
GA_Attribute
findPointVectorAttrib (GA_AttributeScope s, const UT_StringRef &n) const
 Looks for a 3-float point attribute. More...
 
SYS_FORCE_INLINE const
GA_Attribute
findPointVectorAttrib (const UT_StringRef &n) const
 
SYS_FORCE_INLINE GA_AttributefindPointVectorAttrib (GA_AttributeScope s, const UT_StringRef &n)
 
SYS_FORCE_INLINE GA_AttributefindPointVectorAttrib (const UT_StringRef &n)
 
SYS_FORCE_INLINE void destroyPointAttrib (GA_AttributeScope scope, const UT_StringRef &n, const GA_AttributeFilter *filter=nullptr)
 
SYS_FORCE_INLINE void destroyPointAttrib (const UT_StringRef &n, const GA_AttributeFilter *filter=nullptr)
 
bool promotePointAttrib (GA_AttributeScope scope, const UT_StringRef &name)
 
SYS_FORCE_INLINE bool promotePointAttrib (const UT_StringRef &name)
 
SYS_FORCE_INLINE GA_AttributeaddVertexAttrib (const GA_Attribute *src)
 
SYS_FORCE_INLINE GA_AttributeaddVertexAttrib (GA_AttributeScope scope, const UT_StringHolder &n, const UT_Options *creation_args, const GA_AttributeOptions *attribute_options, const UT_StringRef &attribtype)
 
SYS_FORCE_INLINE GA_AttributeaddVertexAttrib (const UT_StringHolder &n, const UT_Options *creation_args, const GA_AttributeOptions *attribute_options, const UT_StringRef &attribtype)
 
SYS_FORCE_INLINE const
GA_Attribute
findVertexAttrib (const GA_Attribute &src) const
 
SYS_FORCE_INLINE GA_AttributefindVertexAttrib (const GA_Attribute &src)
 
SYS_FORCE_INLINE const
GA_Attribute
findVertexVectorAttrib (GA_AttributeScope s, const UT_StringRef &n) const
 Looks for a 3-float vertex attribute. More...
 
SYS_FORCE_INLINE const
GA_Attribute
findVertexVectorAttrib (const UT_StringRef &n) const
 
SYS_FORCE_INLINE GA_AttributefindVertexVectorAttrib (GA_AttributeScope s, const UT_StringRef &n)
 
SYS_FORCE_INLINE GA_AttributefindVertexVectorAttrib (const UT_StringRef &n)
 
SYS_FORCE_INLINE void destroyVertexAttrib (GA_AttributeScope scope, const UT_StringRef &n, const GA_AttributeFilter *filter=nullptr)
 
SYS_FORCE_INLINE void destroyVertexAttrib (const UT_StringRef &n, const GA_AttributeFilter *filter=nullptr)
 
bool demoteVertexAttrib (GA_AttributeScope scope, const UT_StringRef &name)
 
SYS_FORCE_INLINE bool demoteVertexAttrib (const UT_StringRef &name)
 
SYS_FORCE_INLINE GA_AttributeaddPrimAttrib (const GA_Attribute *src)
 
SYS_FORCE_INLINE GA_AttributeaddPrimAttrib (GA_AttributeScope scope, const UT_StringHolder &n, const UT_Options *creation_args, const GA_AttributeOptions *attribute_options, const UT_StringRef &attribtype)
 
SYS_FORCE_INLINE GA_AttributeaddPrimAttrib (const UT_StringHolder &n, const UT_Options *creation_args, const GA_AttributeOptions *attribute_options, const UT_StringRef &attribtype)
 
SYS_FORCE_INLINE const
GA_Attribute
findPrimAttrib (const GA_Attribute &src) const
 
SYS_FORCE_INLINE GA_AttributefindPrimAttrib (const GA_Attribute &src)
 
SYS_FORCE_INLINE void destroyPrimAttrib (GA_AttributeScope scope, const UT_StringRef &n, const GA_AttributeFilter *filter=nullptr)
 
SYS_FORCE_INLINE void destroyPrimAttrib (const UT_StringRef &n, const GA_AttributeFilter *filter=nullptr)
 
SYS_FORCE_INLINE GA_AttributeaddGlobalAttrib (const GA_Attribute *src)
 
SYS_FORCE_INLINE GA_AttributeaddGlobalAttrib (GA_AttributeScope scope, const UT_StringHolder &n, const UT_Options *creation_args, const GA_AttributeOptions *attribute_options, const UT_StringRef &attribtype)
 
SYS_FORCE_INLINE GA_AttributeaddGlobalAttrib (const UT_StringHolder &n, const UT_Options *creation_args, const GA_AttributeOptions *attribute_options, const UT_StringRef &attribtype)
 
SYS_FORCE_INLINE const
GA_Attribute
findGlobalAttrib (const GA_Attribute &src) const
 
SYS_FORCE_INLINE GA_AttributefindGlobalAttrib (const GA_Attribute &src)
 
SYS_FORCE_INLINE void destroyGlobalAttrib (GA_AttributeScope scope, const UT_StringRef &n, const GA_AttributeFilter *filter=nullptr)
 
SYS_FORCE_INLINE void destroyGlobalAttrib (const UT_StringRef &n, const GA_AttributeFilter *filter=nullptr)
 
GEO_PrimList primitives ()
 Query the internal structures: More...
 
const GEO_PrimList primitives () const
 
SYS_FORCE_INLINE const
GA_AttributeDict
pointAttribs () const
 
SYS_FORCE_INLINE const
GA_AttributeDict
primitiveAttribs () const
 
SYS_FORCE_INLINE const
GA_AttributeDict
vertexAttribs () const
 
SYS_FORCE_INLINE const
GA_AttributeDict
attribs () const
 
bool hasMetaPrimitives () const
 
bool hasPastedPrimitives () const
 
bool hasQuadricPrimitives () const
 
bool hasParticlePrimitives () const
 
bool hasVolumePrimitives () const
 
bool hasChannelPrimitives () const
 
bool hasTransformingPrimitives () const
 
bool hasCustomPrimitives () const
 
GA_Size getMetaCount () const
 
GA_Size getPastedCount () const
 
GA_Size getQuadricCount () const
 
GA_Size getParticleCount () const
 
GA_Size getVolumeCount () const
 
bool getStandardAttributes (const char *s, GEO_Standard_Attributes &a)
 
bool mergeCaptureProperties (GA_Attribute *my_atr, const GA_Attribute *src_atr, UT_IntArray &new_indices)
 
GEO_AttributeHandle getPointAttribute (const char *attrib_name) const
 
GEO_AttributeHandle getPointAttribute (const char *attrib_name)
 
GEO_AttributeHandle getPrimAttribute (const char *attrib_name) const
 
GEO_AttributeHandle getPrimAttribute (const char *attrib_name)
 
GEO_AttributeHandle getVertexAttribute (const char *attrib_name) const
 
GEO_AttributeHandle getVertexAttribute (const char *attrib_name)
 
GEO_AttributeHandle getDetailAttribute (const char *attrib_name) const
 
GEO_AttributeHandle getDetailAttribute (const char *attrib_name)
 
GEO_AttributeHandle getAttribute (GA_AttributeOwner dict, const char *attrib_name) const
 
GEO_AttributeHandle getAttribute (GA_AttributeOwner dict, const char *attrib_name)
 
bool changeAttributeStorage (GA_AttributeOwner dict, const UT_StringRef &name, GA_Storage new_storage)
 
bool changePointAttributeStorage (const UT_StringRef &nm, GA_Storage s)
 
bool changeVertexAttributeStorage (const UT_StringRef &nm, GA_Storage s)
 
bool changePrimAttributeStorage (const UT_StringRef &nm, GA_Storage s)
 
bool changeDetailAttributeStorage (const UT_StringRef &nm, GA_Storage s)
 
GA_Size getPointAdjacentPolygons (GEO_PointAdjArray &adjacencies, GA_Offset poly_off) const
 
GA_Size getPointAdjacentPolygons (GA_OffsetArray &polygons, GA_Offset poly_off) const
 
GA_Size getEdgeAdjacentPolygons (GEO_EdgeAdjArray &adjacencies, GA_Offset poly_off) const
 
GA_Size getEdgeAdjacentPolygons (GA_OffsetArray &polygons, GA_Offset poly_off) const
 
const GEO_PrimitivefindPrimitiveByName (const char *nametomatch, const GA_PrimCompat::TypeMask &mask=GEO_PrimTypeCompat::GEOPRIMALL, const char *nameattrib="name", int matchnumber=0) const
 
GEO_PrimitivefindPrimitiveByName (const char *nametomatch, const GA_PrimCompat::TypeMask &mask=GEO_PrimTypeCompat::GEOPRIMALL, const char *nameattrib="name", int matchnumber=0)
 
void findAllPrimitivesByName (UT_Array< const GEO_Primitive * > &primlist, const char *nametomatch, const GA_PrimCompat::TypeMask &mask=GEO_PrimTypeCompat::GEOPRIMALL, const char *nameattrib="name") const
 Like findPrimitiveByName, but adds all matching primitives to the list. More...
 
void findAllPrimitivesByName (UT_Array< GEO_Primitive * > &primlist, const char *nametomatch, const GA_PrimCompat::TypeMask &mask=GEO_PrimTypeCompat::GEOPRIMALL, const char *nameattrib="name")
 
void mergeDetailAttributes (const GEO_Detail &src, int num_pts_prev)
 
void destroyPointGroup (GA_PointGroup *g)
 
void destroyPrimitiveGroup (GA_PrimitiveGroup *g)
 
void destroyVertexGroup (GA_VertexGroup *g)
 
bool destroyPointGroup (const char *name)
 
bool destroyPrimitiveGroup (const char *name)
 
bool destroyVertexGroup (const char *name)
 
void mergeGroups (const GEO_Detail &src, bool override, unsigned mask=GA_GMASK_FULL_MASK)
 
GA_PointGroupmergeGroup (const GEO_Detail &src, const GA_PointGroup &group, bool override=true)
 
GA_PrimitiveGroupmergeGroup (const GEO_Detail &src, const GA_PrimitiveGroup &group, bool override=true)
 
GA_VertexGroupmergeGroup (const GEO_Detail &src, const GA_VertexGroup &group, GA_OffsetArray &map_cache, bool override=true)
 
GA_EdgeGroupmergeGroup (const GEO_Detail &src, const GA_EdgeGroup &group, bool override=true)
 
GA_AttributeaddAttribute (const UT_StringHolder &name, const UT_Options *creation_args, const GA_AttributeOptions *attribute_options, const UT_StringRef &attribtype, GA_AttributeOwner who, GA_AttributeScope scope=GA_SCOPE_PUBLIC)
 Some common methods for the standard guys. More...
 
GA_AttributegrowTuple (GA_AttributeOwner owner, GA_AttributeScope scope, const UT_StringRef &name, int added_size)
 
SYS_FORCE_INLINE GA_AttributegrowTuple (GA_AttributeOwner owner, const UT_StringRef &name, int added_size)
 
void destroyAttribute (GA_AttributeOwner owner, GA_AttributeScope scope, const UT_StringRef &name, const GA_AttributeFilter *filter=0)
 
SYS_FORCE_INLINE void destroyAttribute (GA_AttributeOwner owner, const UT_StringRef &name, const GA_AttributeFilter *filter=0)
 
SYS_FORCE_INLINE GEO_PrimitivegetGEOPrimitive (GA_Offset primoff)
 
SYS_FORCE_INLINE const
GEO_Primitive
getGEOPrimitive (GA_Offset off) const
 
GEO_PrimitivegetGEOPrimitiveByIndex (GA_Index idx)
 
const GEO_PrimitivegetGEOPrimitiveByIndex (GA_Index idx) const
 
GA_Size deletePoints (const GA_Range &range, GA_DestroyPointMode mode=GA_LEAVE_PRIMITIVES)
 
GA_Size deletePrimitives (const GA_Range &range, bool and_points=false)
 
bool deletePrimitive (GA_Primitive &prim, bool and_points=false)
 
bool setDetailAttributeS (const UT_StringHolder &aname, const char *value)
 
bool setDetailAttributeS (const UT_StringHolder &aname, const UT_StringArray &s)
 
bool setDetailAttributeR (const UT_StringHolder &aname, const UT_Ramp &ramp)
 
bool setDetailAttributeF (const UT_StringHolder &aname, float v)
 
bool setDetailAttributeF (const UT_StringHolder &aname, float v1, float v2)
 
bool setDetailAttributeF (const UT_StringHolder &aname, const UT_Vector2 &v)
 
bool setDetailAttributeF (const UT_StringHolder &aname, const UT_Vector3 &v)
 
bool setDetailAttributeF (const UT_StringHolder &aname, const UT_Vector4 &v)
 
bool setDetailAttributeF (const UT_StringHolder &aname, const UT_Matrix3 &v)
 
bool setDetailAttributeF (const UT_StringHolder &aname, const UT_Matrix4 &v)
 
bool setDetailAttributeI (const UT_StringHolder &aname, int v)
 
GA_Size getPointGroupAdjacentToPrimitiveGroup (const GA_PrimitiveGroup *in_prim_grp, GA_PointGroup *adj_pt_grp)
 
GA_Size getPointGroupAdjacentToPrimitiveRange (const GA_Range &in_prim_rng, GA_PointGroup *adj_pt_rng)
 
GA_Size getVertexGroupAdjacentToPrimitiveGroup (const GA_PrimitiveGroup *in_prim_grp, GA_VertexGroup *adj_vtx_grp)
 
GA_Size getVertexGroupAdjacentToPrimitiveRange (const GA_Range &in_prim_rng, GA_VertexGroup *adj_vtx_rng)
 
const GA_AttributefindFloatTuple (GA_AttributeOwner owner, GA_AttributeScope scope, const UT_StringRef &name, int min_size=1, int max_size=-1) const
 
SYS_FORCE_INLINE const
GA_Attribute
findFloatTuple (GA_AttributeOwner owner, const UT_StringRef &name, int min_size=1, int max_size=-1) const
 
GA_AttributefindFloatTuple (GA_AttributeOwner owner, GA_AttributeScope scope, const UT_StringRef &name, int min_size=1, int max_size=-1)
 
SYS_FORCE_INLINE GA_AttributefindFloatTuple (GA_AttributeOwner owner, const UT_StringRef &name, int min_size=1, int max_size=-1)
 
const GA_AttributefindIntTuple (GA_AttributeOwner owner, GA_AttributeScope scope, const UT_StringRef &name, int min_size=1, int max_size=-1) const
 
SYS_FORCE_INLINE const
GA_Attribute
findIntTuple (GA_AttributeOwner owner, const UT_StringRef &name, int min_size=1, int max_size=-1) const
 
GA_AttributefindIntTuple (GA_AttributeOwner owner, GA_AttributeScope scope, const UT_StringRef &name, int min_size=1, int max_size=-1)
 
SYS_FORCE_INLINE GA_AttributefindIntTuple (GA_AttributeOwner owner, const UT_StringRef &name, int min_size=1, int max_size=-1)
 
const GA_AttributefindNumericTuple (GA_AttributeOwner owner, GA_AttributeScope scope, const UT_StringRef &name, int min_size=1, int max_size=-1) const
 findNumericTuple will find either float or int. More...
 
SYS_FORCE_INLINE const
GA_Attribute
findNumericTuple (GA_AttributeOwner owner, const UT_StringRef &name, int min_size=1, int max_size=-1) const
 
GA_AttributefindNumericTuple (GA_AttributeOwner owner, GA_AttributeScope scope, const UT_StringRef &name, int min_size=1, int max_size=-1)
 findNumericTuple will find either float or int. More...
 
SYS_FORCE_INLINE GA_AttributefindNumericTuple (GA_AttributeOwner owner, const UT_StringRef &name, int min_size=1, int max_size=-1)
 
const GA_AttributefindStringTuple (GA_AttributeOwner owner, GA_AttributeScope scope, const UT_StringRef &name, int min_size=1, int max_size=-1) const
 
SYS_FORCE_INLINE const
GA_Attribute
findStringTuple (GA_AttributeOwner owner, const UT_StringRef &name, int min_size=1, int max_size=-1) const
 
GA_AttributefindStringTuple (GA_AttributeOwner owner, GA_AttributeScope scope, const UT_StringRef &name, int min_size=1, int max_size=-1)
 
SYS_FORCE_INLINE GA_AttributefindStringTuple (GA_AttributeOwner owner, const UT_StringRef &name, int min_size=1, int max_size=-1)
 
const GA_AttributefindDictTuple (GA_AttributeOwner owner, GA_AttributeScope scope, const UT_StringRef &name, int min_size=1, int max_size=-1) const
 
SYS_FORCE_INLINE const
GA_Attribute
findDictTuple (GA_AttributeOwner owner, const UT_StringRef &name, int min_size=1, int max_size=-1) const
 
GA_AttributefindDictTuple (GA_AttributeOwner owner, GA_AttributeScope scope, const UT_StringRef &name, int min_size=1, int max_size=-1)
 
SYS_FORCE_INLINE GA_AttributefindDictTuple (GA_AttributeOwner owner, const UT_StringRef &name, int min_size=1, int max_size=-1)
 
const GA_AttributefindIndexPair (GA_AttributeOwner owner, GA_AttributeScope scope, const UT_StringRef &name) const
 
SYS_FORCE_INLINE const
GA_Attribute
findIndexPair (GA_AttributeOwner owner, const UT_StringRef &name) const
 
GA_AttributefindIndexPair (GA_AttributeOwner owner, GA_AttributeScope scope, const UT_StringRef &name)
 
SYS_FORCE_INLINE GA_AttributefindIndexPair (GA_AttributeOwner owner, const UT_StringRef &name)
 
const GA_AttributefindFloatArray (GA_AttributeOwner owner, GA_AttributeScope scope, const UT_StringRef &name, int min_size=1, int max_size=-1) const
 
SYS_FORCE_INLINE const
GA_Attribute
findFloatArray (GA_AttributeOwner owner, const UT_StringRef &name, int min_size=1, int max_size=-1) const
 
GA_AttributefindFloatArray (GA_AttributeOwner owner, GA_AttributeScope scope, const UT_StringRef &name, int min_size=1, int max_size=-1)
 
SYS_FORCE_INLINE GA_AttributefindFloatArray (GA_AttributeOwner owner, const UT_StringRef &name, int min_size=1, int max_size=-1)
 
const GA_AttributefindIntArray (GA_AttributeOwner owner, GA_AttributeScope scope, const UT_StringRef &name, int min_size=1, int max_size=-1) const
 
SYS_FORCE_INLINE const
GA_Attribute
findIntArray (GA_AttributeOwner owner, const UT_StringRef &name, int min_size=1, int max_size=-1) const
 
GA_AttributefindIntArray (GA_AttributeOwner owner, GA_AttributeScope scope, const UT_StringRef &name, int min_size=1, int max_size=-1)
 
SYS_FORCE_INLINE GA_AttributefindIntArray (GA_AttributeOwner owner, const UT_StringRef &name, int min_size=1, int max_size=-1)
 
const GA_AttributefindNumericArray (GA_AttributeOwner owner, GA_AttributeScope scope, const UT_StringRef &name, int min_size=1, int max_size=-1) const
 
SYS_FORCE_INLINE const
GA_Attribute
findNumericArray (GA_AttributeOwner owner, const UT_StringRef &name, int min_size=1, int max_size=-1) const
 
GA_AttributefindNumericArray (GA_AttributeOwner owner, GA_AttributeScope scope, const UT_StringRef &name, int min_size=1, int max_size=-1)
 
SYS_FORCE_INLINE GA_AttributefindNumericArray (GA_AttributeOwner owner, const UT_StringRef &name, int min_size=1, int max_size=-1)
 
const GA_AttributefindStringArray (GA_AttributeOwner owner, GA_AttributeScope scope, const UT_StringRef &name, int min_size=1, int max_size=-1) const
 
SYS_FORCE_INLINE const
GA_Attribute
findStringArray (GA_AttributeOwner owner, const UT_StringRef &name, int min_size=1, int max_size=-1) const
 
GA_AttributefindStringArray (GA_AttributeOwner owner, GA_AttributeScope scope, const UT_StringRef &name, int min_size=1, int max_size=-1)
 
SYS_FORCE_INLINE GA_AttributefindStringArray (GA_AttributeOwner owner, const UT_StringRef &name, int min_size=1, int max_size=-1)
 
const GA_AttributefindDictArray (GA_AttributeOwner owner, GA_AttributeScope scope, const UT_StringRef &name, int min_size=1, int max_size=-1) const
 
SYS_FORCE_INLINE const
GA_Attribute
findDictArray (GA_AttributeOwner owner, const UT_StringRef &name, int min_size=1, int max_size=-1) const
 
GA_AttributefindDictArray (GA_AttributeOwner owner, GA_AttributeScope scope, const UT_StringRef &name, int min_size=1, int max_size=-1)
 
SYS_FORCE_INLINE GA_AttributefindDictArray (GA_AttributeOwner owner, const UT_StringRef &name, int min_size=1, int max_size=-1)
 
GA_AttributeaddTuple (GA_Storage storage, GA_AttributeOwner owner, GA_AttributeScope scope, const UT_StringHolder &name, int tuple_size, const GA_Defaults &defaults=GA_Defaults(0.0), const UT_Options *creation_args=0, const GA_AttributeOptions *attribute_options=0, const GA_ReuseStrategy &reuse=GA_ReuseStrategy())
 
SYS_FORCE_INLINE GA_AttributeaddTuple (GA_Storage storage, GA_AttributeOwner owner, const UT_StringHolder &name, int tuple_size, const GA_Defaults &defaults=GA_Defaults(0.0), const UT_Options *creation_args=0, const GA_AttributeOptions *attribute_options=0, const GA_ReuseStrategy &reuse=GA_ReuseStrategy())
 
GA_AttributeaddFloatTuple (GA_AttributeOwner owner, GA_AttributeScope scope, const UT_StringHolder &name, int tuple_size, const GA_Defaults &defaults=GA_Defaults(0.0), const UT_Options *creation_args=0, const GA_AttributeOptions *attribute_options=0, GA_Storage storage=GA_STORE_REAL32, const GA_ReuseStrategy &reuse=GA_ReuseStrategy())
 
SYS_FORCE_INLINE GA_AttributeaddFloatTuple (GA_AttributeOwner owner, const UT_StringHolder &name, int tuple_size, const GA_Defaults &defaults=GA_Defaults(0.0), const UT_Options *creation_args=0, const GA_AttributeOptions *attribute_options=0, GA_Storage storage=GA_STORE_REAL32, const GA_ReuseStrategy &reuse=GA_ReuseStrategy())
 
GA_AttributeaddIntTuple (GA_AttributeOwner owner, GA_AttributeScope scope, const UT_StringHolder &name, int tuple_size, const GA_Defaults &defaults=GA_Defaults(0), const UT_Options *creation_args=0, const GA_AttributeOptions *attribute_options=0, GA_Storage storage=GA_STORE_INT32, const GA_ReuseStrategy &reuse=GA_ReuseStrategy())
 
SYS_FORCE_INLINE GA_AttributeaddIntTuple (GA_AttributeOwner owner, const UT_StringHolder &name, int tuple_size, const GA_Defaults &defaults=GA_Defaults(0), const UT_Options *creation_args=0, const GA_AttributeOptions *attribute_options=0, GA_Storage storage=GA_STORE_INT32, const GA_ReuseStrategy &reuse=GA_ReuseStrategy())
 
GA_AttributeaddStringTuple (GA_AttributeOwner owner, GA_AttributeScope scope, const UT_StringHolder &name, int tuple_size, const UT_Options *creation_args=0, const GA_AttributeOptions *attribute_options=0, const GA_ReuseStrategy &reuse=GA_ReuseStrategy())
 
SYS_FORCE_INLINE GA_AttributeaddStringTuple (GA_AttributeOwner owner, const UT_StringHolder &name, int tuple_size, const UT_Options *creation_args=0, const GA_AttributeOptions *attribute_options=0, const GA_ReuseStrategy &reuse=GA_ReuseStrategy())
 
GA_AttributeaddDictTuple (GA_AttributeOwner owner, GA_AttributeScope scope, const UT_StringHolder &name, int tuple_size, const UT_Options *creation_args=0, const GA_AttributeOptions *attribute_options=0, const GA_ReuseStrategy &reuse=GA_ReuseStrategy())
 
SYS_FORCE_INLINE GA_AttributeaddDictTuple (GA_AttributeOwner owner, const UT_StringHolder &name, int tuple_size, const UT_Options *creation_args=0, const GA_AttributeOptions *attribute_options=0, const GA_ReuseStrategy &reuse=GA_ReuseStrategy())
 
GA_AttributeaddFloatArray (GA_AttributeOwner owner, GA_AttributeScope scope, const UT_StringHolder &name, int tuple_size=1, const UT_Options *creation_args=0, const GA_AttributeOptions *attribute_options=0, GA_Storage storage=GA_STORE_REAL32, const GA_ReuseStrategy &reuse=GA_ReuseStrategy())
 
SYS_FORCE_INLINE GA_AttributeaddFloatArray (GA_AttributeOwner owner, const UT_StringHolder &name, int tuple_size=1, const UT_Options *creation_args=0, const GA_AttributeOptions *attribute_options=0, GA_Storage storage=GA_STORE_REAL32, const GA_ReuseStrategy &reuse=GA_ReuseStrategy())
 
GA_AttributeaddIntArray (GA_AttributeOwner owner, GA_AttributeScope scope, const UT_StringHolder &name, int tuple_size=1, const UT_Options *creation_args=0, const GA_AttributeOptions *attribute_options=0, GA_Storage storage=GA_STORE_INT32, const GA_ReuseStrategy &reuse=GA_ReuseStrategy())
 
SYS_FORCE_INLINE GA_AttributeaddIntArray (GA_AttributeOwner owner, const UT_StringHolder &name, int tuple_size=1, const UT_Options *creation_args=0, const GA_AttributeOptions *attribute_options=0, GA_Storage storage=GA_STORE_INT32, const GA_ReuseStrategy &reuse=GA_ReuseStrategy())
 
GA_AttributeaddStringArray (GA_AttributeOwner owner, GA_AttributeScope scope, const UT_StringHolder &name, int tuple_size=1, const UT_Options *creation_args=0, const GA_AttributeOptions *attribute_options=0, GA_Storage storage=GA_STORE_STRING, const GA_ReuseStrategy &reuse=GA_ReuseStrategy())
 
SYS_FORCE_INLINE GA_AttributeaddStringArray (GA_AttributeOwner owner, const UT_StringHolder &name, int tuple_size=1, const UT_Options *creation_args=0, const GA_AttributeOptions *attribute_options=0, GA_Storage storage=GA_STORE_STRING, const GA_ReuseStrategy &reuse=GA_ReuseStrategy())
 
GA_AttributeaddDictArray (GA_AttributeOwner owner, GA_AttributeScope scope, const UT_StringHolder &name, int tuple_size=1, const UT_Options *creation_args=0, const GA_AttributeOptions *attribute_options=0, GA_Storage storage=GA_STORE_STRING, const GA_ReuseStrategy &reuse=GA_ReuseStrategy())
 
SYS_FORCE_INLINE GA_AttributeaddDictArray (GA_AttributeOwner owner, const UT_StringHolder &name, int tuple_size=1, const UT_Options *creation_args=0, const GA_AttributeOptions *attribute_options=0, GA_Storage storage=GA_STORE_STRING, const GA_ReuseStrategy &reuse=GA_ReuseStrategy())
 
- Public Member Functions inherited from GA_Detail
 GA_Detail (GA_PrimitiveFactory &factory, GA_Storage Pstorage=GA_STORE_REAL32, bool isprimary=true, bool full_topology=true)
 
virtual ~GA_Detail ()
 Destructor. More...
 
exint getUniqueId () const
 
void clear ()
 
bool isEmpty () const
 
GA_AttributegetP ()
 Convenience method to access the P attribute. More...
 
const GA_AttributegetP () const
 
SYS_FORCE_INLINE bool isPDouble () const
 
UT_Vector2 getPos2 (GA_Offset ptoff) const
 The ptoff passed is the point offset. More...
 
UT_Vector2D getPos2D (GA_Offset ptoff) const
 
SYS_FORCE_INLINE UT_Vector3 getPos3 (GA_Offset ptoff) const
 The ptoff passed is the point offset. More...
 
SYS_FORCE_INLINE UT_Vector3D getPos3D (GA_Offset ptoff) const
 
template<typename T >
UT_Vector3T< TgetPos3T (GA_Offset ptoff) const
 
template<typename T >
bool getPos3AsArray (const GA_Range &ptrange, UT_Array< UT_Vector3T< T > > &positions) const
 
template<typename T >
bool setPos3FromArray (const GA_Range &ptrange, const UT_Array< UT_Vector3T< T > > &positions)
 
void setPos2 (GA_Offset ptoff, const UT_Vector2 &pos)
 Set P from a UT_Vector2. More...
 
void setPos2 (GA_Offset ptoff, const UT_Vector2D &pos)
 
SYS_FORCE_INLINE void setPos3 (GA_Offset ptoff, const UT_Vector3 &pos)
 Set P from a UT_Vector3. More...
 
SYS_FORCE_INLINE void setPos3 (GA_Offset ptoff, const UT_Vector3D &pos)
 
SYS_FORCE_INLINE void setPos3 (GA_Offset ptoff, fpreal x, fpreal y, fpreal z)
 Set P given the x, y, z components. More...
 
SYS_FORCE_INLINE void translatePoint (GA_Offset ptoff, const UT_Vector3 &delta)
 
SYS_FORCE_INLINE void translatePoint (GA_Offset ptoff, const UT_Vector3D &delta)
 
fpreal getPw (GA_Offset ptoff) const
 Get the homogeneous coordinate for a point. More...
 
void setPw (GA_Offset ptoff, fpreal w)
 Set the homogeneous coordinate for a point. More...
 
UT_Vector4 getPos4 (GA_Offset ptoff) const
 The ptoff passed is the point offset. More...
 
UT_Vector4D getPos4D (GA_Offset ptoff) const
 
void setPos4 (GA_Offset ptoff, const UT_Vector4 &pos)
 Set P from a UT_Vector4. More...
 
void setPos4 (GA_Offset ptoff, const UT_Vector4D &pos)
 
void setPos4 (GA_Offset ptoff, fpreal x, fpreal y, fpreal z, fpreal w)
 Set P given the x, y, z, w components. More...
 
SYS_FORCE_INLINE GA_Offset appendPoint ()
 Append a new point, returning its new data offset. More...
 
SYS_FORCE_INLINE GA_Offset appendPointBlock (GA_Size npoints)
 Append new points, returning the first offset of the contiguous block. More...
 
SYS_FORCE_INLINE GA_Size getNumPoints () const
 Return the number of points. More...
 
SYS_FORCE_INLINE GA_Offset getNumPointOffsets () const
 
SYS_FORCE_INLINE GA_Offset pointOffset (GA_Index index) const
 Given a point's index (in append order), return its data offset. More...
 
SYS_FORCE_INLINE GA_Index pointIndex (GA_Offset offset) const
 Given a point's data offset, return its index. More...
 
GA_Index reorderPoint (GA_Offset ptoff, GA_Index new_order)
 
GA_PrimitiveappendPrimitive (const GA_PrimitiveTypeId &type)
 Append a primitive by GA_PrimitiveTypeId. More...
 
GA_PrimitiveappendPrimitive (const UT_StringRef &type)
 Append a primitive by type name string. More...
 
GA_Offset appendPrimitiveBlock (const GA_PrimitiveTypeId &type, GA_Size nprimitives)
 Append a contiguous block of primitives by GA_PrimitiveTypeId. More...
 
GA_Offset appendPrimitivesAndVertices (const GA_PrimitiveTypeId &type, GA_Size nprimitives, GA_Size nvertices_each, GA_Offset &vertex_block_start, bool closed_flag=false)
 
GA_Offset appendPrimitivesAndVertices (const GA_PrimitiveTypeId &type, const GA_PolyCounts &vertex_counts, GA_Offset &vertex_block_start, bool closed_flag=false)
 
GA_Offset appendPrimitivesAndVertices (const std::pair< int, exint > *primtype_count_pairs, const GA_PolyCounts &vertex_counts, GA_Offset &vertex_block_start, const exint *closed_span_length=nullptr, exint ncopies=1)
 
SYS_FORCE_INLINE GA_Size getNumPrimitives () const
 Return the number of primitives. More...
 
SYS_FORCE_INLINE GA_Offset getNumPrimitiveOffsets () const
 
SYS_FORCE_INLINE GA_Offset primitiveOffset (GA_Index index) const
 Given a primitive's index (in append order), return its data offset. More...
 
SYS_FORCE_INLINE GA_Index primitiveIndex (GA_Offset offset) const
 Given a primitive's data offset, return its index. More...
 
SYS_FORCE_INLINE GA_OffsetListRef getPrimitiveVertexList (GA_Offset primoff) const
 
SYS_FORCE_INLINE GA_Size getPrimitiveVertexCount (GA_Offset primoff) const
 
SYS_FORCE_INLINE GA_Offset getPrimitiveVertexOffset (GA_Offset primoff, GA_Size i) const
 
SYS_FORCE_INLINE int getPrimitiveTypeId (GA_Offset primoff) const
 
SYS_FORCE_INLINE bool getPrimitiveClosedFlag (GA_Offset primoff) const
 
SYS_FORCE_INLINE void setPrimitiveClosedFlag (GA_Offset primoff, bool closed)
 
GA_Index reorderPrimitive (GA_Offset offset, GA_Index new_order)
 
bool swapPrimitiveOrder (GA_Offset offset1, GA_Offset offset2)
 Swap the order of the two specified primitive data offsets. More...
 
SYS_FORCE_INLINE GA_Offset appendVertex ()
 Append a vertex (for the entire detail) More...
 
SYS_FORCE_INLINE GA_Offset appendVertexBlock (GA_Size nvertices)
 Append new vertices, returning the first offset of the contiguous block. More...
 
SYS_FORCE_INLINE GA_Size getNumVertices () const
 Return the number verticies in the entire detail. More...
 
SYS_FORCE_INLINE GA_Offset getNumVertexOffsets () const
 
SYS_FORCE_INLINE GA_Offset vertexOffset (GA_Index index) const
 Given a vertex's index (in append order), return its data offset. More...
 
SYS_FORCE_INLINE GA_Index vertexIndex (GA_Offset offset) const
 Given a vertex's data offset, return its index. More...
 
SYS_FORCE_INLINE GA_Offset vertexPoint (GA_Offset vertex) const
 Given a vertex, return the point it references. More...
 
void setVertexPoint (GA_Offset vertex, GA_Offset ptoff)
 Given a vertex, set the corresponding point offset. More...
 
SYS_FORCE_INLINE GA_Offset vertexPrimitive (GA_Offset vertex) const
 
SYS_FORCE_INLINE GA_Offset pointVertex (GA_Offset point) const
 
SYS_FORCE_INLINE GA_Offset vertexToNextVertex (GA_Offset vtx) const
 
SYS_FORCE_INLINE GA_Offset vertexToPrevVertex (GA_Offset vtx) const
 
GA_Offset getVertexReferencingPoint (GA_Offset ptoff, GA_Offset primoff=GA_INVALID_OFFSET) const
 
GA_Size getVerticesReferencingPoint (GA_OffsetArray &vertices, GA_Offset point_offset) const
 
GA_Size getPrimitivesReferencingPoint (GA_OffsetArray &primitives, GA_Offset point_offset) const
 
bool hasNoSharedPoints () const
 
bool destroyVertexOffset (GA_Offset offset)
 
virtual bool destroyPrimitiveOffset (GA_Offset offset, bool and_points=false)
 
bool destroyPrimitiveIndex (GA_Index index, bool and_points=false)
 
bool destroyPrimitive (GA_Primitive &prim, bool and_points=false)
 
virtual GA_Size destroyPrimitiveOffsets (const GA_Range &it, bool and_points=false)
 
GA_Size destroyPrimitives (const GA_Range &it, bool and_points=false)
 
GA_Size destroyDegeneratePrimitives (const GA_Range &it, bool and_points=false)
 
GA_Size destroyDegeneratePrimitives (const GA_PrimitiveGroup *prims=0, bool and_points=false)
 
GA_Size destroyUnusedPoints (const GA_PointGroup *ptgrp=0)
 Destroy unused points. If ptgrp is given, then only within the group. More...
 
GA_Size destroyVertexOffsets (const GA_Range &range)
 
GA_Size destroyVertices (const GA_Range &range)
 
bool isPointUsed (GA_Offset point) const
 
bool isPointUsedFast (GA_Offset point) const
 
bool findUnusedPoints (GA_OffsetList *unused=nullptr) const
 
const GA_IndexMapgetIndexMap (GA_AttributeOwner owner) const
 
GA_IndexMapgetIndexMap (GA_AttributeOwner owner)
 
const GA_IndexMapgetPointMap () const
 
const GA_IndexMapgetVertexMap () const
 
const GA_IndexMapgetPrimitiveMap () const
 
const GA_IndexMapgetGlobalMap () const
 
const GA_PrimitiveListgetPrimitiveList () const
 
GA_PrimitiveListgetPrimitiveList ()
 
GA_AttributeSetgetAttributes ()
 
const GA_AttributeSetgetAttributes () const
 
GA_TopologygetTopology ()
 
const GA_TopologygetTopology () const
 
bool checkValidTopology () const
 
void createTopologyAttributes ()
 
void clearTopologyAttributes ()
 
void bumpAllDataIds ()
 
void bumpDataIdsForRewire ()
 
void bumpDataIdsForAddOrRemove (bool added_or_removed_points, bool added_or_removed_vertices, bool added_or_removed_primitives)
 
bool defragment (GA_AttributeOwner owner, const UT_Options *options=nullptr)
 
bool defragment (const UT_Options *options=nullptr)
 
void sortVertexMapByPrimitiveUse ()
 
SYS_FORCE_INLINE bool destroyAttribute (GA_AttributeOwner owner, GA_AttributeScope scope, const UT_StringRef &name)
 
SYS_FORCE_INLINE bool destroyAttribute (GA_AttributeOwner owner, const UT_StringRef &name)
 
SYS_FORCE_INLINE bool renameAttribute (GA_AttributeOwner owner, GA_AttributeScope scope, const UT_StringRef &from_name, const UT_StringHolder &to_name)
 
GA_AttributecreateTupleAttribute (GA_AttributeOwner owner, GA_AttributeScope scope, const UT_StringHolder &name, GA_Storage storage, int tuple_size, const GA_Defaults &defaults=GA_Defaults(0.0f), const UT_Options *create_args=nullptr, const GA_AttributeOptions *attribute_options=nullptr)
 
GA_AttributecreateTupleAttribute (GA_AttributeOwner owner, const UT_StringHolder &name, GA_Storage storage, int tuple_size, const GA_Defaults &defaults=GA_Defaults(0.0f), const UT_Options *create_args=nullptr, const GA_AttributeOptions *attribute_options=nullptr)
 
GA_AttributecreateStringAttribute (GA_AttributeOwner owner, GA_AttributeScope scope, const UT_StringHolder &name, const UT_Options *create_args=nullptr, const GA_AttributeOptions *attribute_options=nullptr)
 
GA_AttributecreateStringAttribute (GA_AttributeOwner owner, const UT_StringHolder &name, const UT_Options *create_args=nullptr, const GA_AttributeOptions *attribute_options=nullptr)
 
SYS_FORCE_INLINE const
GA_Attribute
findAttribute (GA_AttributeScope scope, const UT_StringRef &name, const GA_AttributeOwner search_order[], int search_size) const
 
SYS_FORCE_INLINE const
GA_Attribute
findAttribute (const UT_StringRef &name, const GA_AttributeOwner search_order[], int search_size) const
 
SYS_FORCE_INLINE const
GA_Attribute
findAttribute (GA_AttributeOwner owner, GA_AttributeScope scope, const UT_StringRef &name) const
 
SYS_FORCE_INLINE const
GA_Attribute
findAttribute (GA_AttributeOwner owner, const UT_StringRef &name) const
 
SYS_FORCE_INLINE const
GA_Attribute
findPointAttribute (GA_AttributeScope s, const UT_StringRef &name) const
 
SYS_FORCE_INLINE const
GA_Attribute
findPointAttribute (const UT_StringRef &name) const
 
SYS_FORCE_INLINE const
GA_Attribute
findVertexAttribute (GA_AttributeScope s, const UT_StringRef &name) const
 
SYS_FORCE_INLINE const
GA_Attribute
findVertexAttribute (const UT_StringRef &name) const
 
SYS_FORCE_INLINE const
GA_Attribute
findPrimitiveAttribute (GA_AttributeScope s, const UT_StringRef &name) const
 
SYS_FORCE_INLINE const
GA_Attribute
findPrimitiveAttribute (const UT_StringRef &name) const
 
SYS_FORCE_INLINE const
GA_Attribute
findGlobalAttribute (GA_AttributeScope s, const UT_StringRef &name) const
 
SYS_FORCE_INLINE const
GA_Attribute
findGlobalAttribute (const UT_StringRef &name) const
 
SYS_FORCE_INLINE GA_AttributefindAttribute (GA_AttributeScope scope, const UT_StringRef &name, const GA_AttributeOwner search_order[], int search_size)
 
SYS_FORCE_INLINE GA_AttributefindAttribute (const UT_StringRef &name, const GA_AttributeOwner search_order[], int search_size)
 
SYS_FORCE_INLINE GA_AttributefindAttribute (GA_AttributeOwner owner, GA_AttributeScope scope, const UT_StringRef &name)
 
SYS_FORCE_INLINE GA_AttributefindAttribute (GA_AttributeOwner owner, const UT_StringRef &name)
 
SYS_FORCE_INLINE GA_AttributefindPointAttribute (GA_AttributeScope s, const UT_StringRef &name)
 
SYS_FORCE_INLINE GA_AttributefindPointAttribute (const UT_StringRef &name)
 
SYS_FORCE_INLINE GA_AttributefindVertexAttribute (GA_AttributeScope s, const UT_StringRef &name)
 
SYS_FORCE_INLINE GA_AttributefindVertexAttribute (const UT_StringRef &name)
 
SYS_FORCE_INLINE GA_AttributefindPrimitiveAttribute (GA_AttributeScope s, const UT_StringRef &name)
 
SYS_FORCE_INLINE GA_AttributefindPrimitiveAttribute (const UT_StringRef &name)
 
SYS_FORCE_INLINE GA_AttributefindGlobalAttribute (GA_AttributeScope s, const UT_StringRef &name)
 
SYS_FORCE_INLINE GA_AttributefindGlobalAttribute (const UT_StringRef &name)
 
GA_ElementGroupcreateElementGroup (GA_AttributeOwner owner, const UT_StringHolder &name, bool ordered=false)
 
GA_ElementGroupcreateInternalElementGroup (GA_AttributeOwner owner, bool ordered=false)
 
GA_ElementGroupfindElementGroup (GA_AttributeOwner owner, const UT_StringRef &name)
 
const GA_ElementGroupfindElementGroup (GA_AttributeOwner owner, const UT_StringRef &name) const
 
const GA_ElementGroupTablegetElementGroupTable (GA_AttributeOwner owner) const
 
SYS_FORCE_INLINE
GA_ElementGroupTable
getElementGroupTable (GA_AttributeOwner owner)
 
GA_GroupTablegetGroupTable (GA_GroupType group_type)
 
const GA_GroupTablegetGroupTable (GA_GroupType group_type) const
 
template<GA_AttributeOwner OWNER>
SYS_FORCE_INLINE
GA_ElementGroupTableT< OWNER >
::GROUP_TYPE * 
createElementGroup (const UT_StringHolder &name, bool ordered=false)
 
template<GA_AttributeOwner OWNER>
SYS_FORCE_INLINE
GA_ElementGroupTableT< OWNER >
::GROUP_TYPE * 
createInternalElementGroup (bool ordered=false)
 
template<GA_AttributeOwner OWNER>
SYS_FORCE_INLINE
GA_ElementGroupTableT< OWNER >
::GROUP_TYPE * 
findElementGroup (const UT_StringRef &name)
 
template<GA_AttributeOwner OWNER>
SYS_FORCE_INLINE const
GA_ElementGroupTableT< OWNER >
::GROUP_TYPE * 
findElementGroup (const UT_StringRef &name) const
 
void getElementGroupList (GA_AttributeOwner owner, UT_Array< const GA_ElementGroup * > &list) const
 
void getElementGroupList (GA_AttributeOwner owner, UT_Array< GA_ElementGroup * > &list)
 
SYS_FORCE_INLINE bool destroyElementGroup (GA_AttributeOwner owner, const UT_StringRef &name)
 
SYS_FORCE_INLINE bool destroyElementGroup (GA_AttributeOwner owner, const char *name)
 
bool destroyElementGroup (GA_ElementGroup *group)
 
bool destroyGroup (GA_Group *group)
 
SYS_FORCE_INLINE const
GA_PointGroup
findPointGroup (const UT_StringRef &name) const
 
SYS_FORCE_INLINE const
GA_VertexGroup
findVertexGroup (const UT_StringRef &name) const
 
SYS_FORCE_INLINE const
GA_PrimitiveGroup
findPrimitiveGroup (const UT_StringRef &name) const
 
SYS_FORCE_INLINE GA_PointGroupfindPointGroup (const UT_StringRef &name)
 
SYS_FORCE_INLINE GA_VertexGroupfindVertexGroup (const UT_StringRef &name)
 
SYS_FORCE_INLINE
GA_PrimitiveGroup
findPrimitiveGroup (const UT_StringRef &name)
 
GA_EdgeGroupcreateEdgeGroup (const UT_StringHolder &name)
 
GA_EdgeGroupcreateInternalEdgeGroup ()
 
const GA_EdgeGroupfindEdgeGroup (const UT_StringRef &name) const
 
GA_EdgeGroupfindEdgeGroup (const UT_StringRef &name)
 
void getEdgeGroupList (UT_Array< const GA_EdgeGroup * > &list) const
 
void getEdgeGroupList (UT_Array< GA_EdgeGroup * > &list)
 
SYS_FORCE_INLINE bool destroyEdgeGroup (const UT_StringRef &name)
 
SYS_FORCE_INLINE bool destroyEdgeGroup (GA_EdgeGroup *g)
 
GA_Size destroyEmptyGroups (GA_AttributeOwner owner)
 
GA_Size destroyAllEmptyGroups ()
 
const GA_IntrinsicManagergetIntrinsicManager () const
 
template<typename FUNCTOR >
SYS_FORCE_INLINE void forEachPoint (FUNCTOR &&functor) const
 
template<typename FUNCTOR >
SYS_FORCE_INLINE void forEachPoint (const GA_PointGroup *group, FUNCTOR &&functor) const
 
template<typename FUNCTOR >
SYS_FORCE_INLINE void forEachPoint (const GA_PointGroup *group, bool complement, FUNCTOR &&functor) const
 
template<typename FUNCTOR >
SYS_FORCE_INLINE void forEachPrimitive (FUNCTOR &&functor) const
 
template<typename FUNCTOR >
SYS_FORCE_INLINE void forEachPrimitive (const GA_PrimitiveGroup *group, FUNCTOR &&functor) const
 
template<typename FUNCTOR >
SYS_FORCE_INLINE void forEachPrimitive (const GA_PrimitiveGroup *group, bool complement, FUNCTOR &&functor) const
 
GA_Range getPointRange (const GA_PointGroup *group=0) const
 Get a range of all points in the detail. More...
 
GA_Range getPrimitiveRange (const GA_PrimitiveGroup *group=0) const
 Get a range of all primitives in the detail. More...
 
GA_Range getPointRangeSlice (GA_Index begin_ptnum, GA_Index end_ptnum=GA_INVALID_INDEX) const
 Get ordered point range from base_ptnum to end_ptnum, or the end. More...
 
GA_Range getPrimitiveRangeSlice (GA_Index begin_prim, GA_Index end_prim=GA_INVALID_INDEX) const
 Get ordered primitive range from base_prim to end_prim, or the end. More...
 
GA_Range getVertexRange (const GA_VertexGroup *group=0) const
 Get a range of all vertices in the detail. More...
 
GA_Range getGlobalRange () const
 Get a range representing the global (detail) data. More...
 
bool enlargeBoundingBox (UT_BoundingRect &box, const GA_Range &range) const
 
bool enlargeBoundingBox (UT_BoundingRect &box, const GA_Range &range, const GA_Attribute *P) const
 
bool enlargeBoundingBox (UT_BoundingBox &box, const GA_Range &range) const
 
bool enlargeBoundingBox (UT_BoundingBox &box, const GA_Range &range, const GA_Attribute *P) const
 
void computeQuickBounds (UT_BoundingBox &box) const
 
void computeQuickBounds (UT_BoundingBox &box, GA_Size counts[], GA_Size count_buf_size) const
 
virtual GA_DetailcloneEmptyDetail (bool clone_attributes) const =0
 
void cloneCopyGroupsAndAttributes (const GA_Detail &src, bool copydetailattribs=false)
 
SYS_FORCE_INLINE void copyPoint (GA_Offset destptoff, GA_Offset srcptoff, const GA_AttributeFilter *filter=nullptr)
 
void copyVertex (GA_Offset destvtxoff, GA_Offset srcvtxoff, bool ref_point_dont_copy, const GA_AttributeFilter *filter=nullptr)
 
void baseMerge (const GA_Detail &src)
 Merge the source detail into this detail (using default options) More...
 
void baseMerge (const GA_Detail &src, GA_MergeOptions &options)
 Merge the source detail into this detail with options. More...
 
void replaceWith (const GA_Detail &src, const GA_AttributeFilter *skip=nullptr, bool full_copy=false)
 
void replaceWithPoints (const GA_Detail &src, const GA_AttributeFilter *skip=nullptr)
 
virtual void clearCaches ()
 
void mergeGlobalAttributes (const GA_Detail &src)
 Merge global attributes (using default options) More...
 
void mergeGlobalAttributes (const GA_Detail &src, GA_MergeOptions &options)
 Merge source global attributes using options. More...
 
void cloneMissingAttributes (const GA_Detail &src, GA_AttributeOwner owner, const GA_AttributeFilter &filter)
 
void cloneMissingGroups (const GA_Detail &src, GA_AttributeOwner owner, const GA_AttributeFilter &filter)
 Clone any missing groups from the source detail. More...
 
bool registerIO (GA_IO *io) const
 Register an IO file format. More...
 
const GA_IOfindIO (const char *name=nullptr) const
 
void getIONames (UT_StringArray &names) const
 
IOStatus save (const char *filename, const GA_SaveOptions *options, UT_StringArray *errors=0) const
 
IOStatus save (std::ostream &os, bool binary, const GA_SaveOptions *options, UT_StringArray *errors=0) const
 
IOStatus save (UT_JSONWriter &w, const GA_SaveOptions *opts=0) const
 
IOStatus load (const char *filename, const GA_LoadOptions *opts=0, UT_StringArray *errors=0)
 Load a geometry file. More...
 
IOStatus load (UT_IStream &is, const GA_LoadOptions *opts=0, UT_StringArray *errors=0)
 Load a geometry file given a UT_IStream. More...
 
IOStatus load (UT_JSONParser &p, const GA_LoadOptions *opts=0, UT_StringArray *errors=0)
 
bool stat (GA_Stat &stat, uint level=0xffff) const
 
void statAttributes (GA_Stat &stat, uint level=0xffff) const
 Fill out only the attribute information on the stat. More...
 
void statGroups (GA_Stat &stat, uint level=0xffff) const
 Fill out only the group information on the stat. More...
 
virtual void statVolumes (GA_Stat &stat, uint level=0xffff) const
 Fill out only the volume information. More...
 
const GA_PrimitiveFactorygetPrimitiveFactory () const
 
virtual void refreshCachedHandles ()
 
void refreshCachedAttributes ()
 Refreshes the cached myP attribute. More...
 
void constructTailInitializers (GA_AttributeOwner owner, GA_Offset start, GA_Offset size=GA_Offset(1))
 
bool containsPrimitiveType (const GA_PrimitiveTypeId &type) const
 
bool containsOnlyPrimitiveTypes (const UT_Array< GA_PrimitiveTypeId > &type) const
 
GA_Size countPrimitiveType (const GA_PrimitiveTypeId &type) const
 
GA_Size countPrimitiveTypeFamily (GA_PrimitiveFamilyMask family) const
 
bool containsLocalTransformPrimitive () const
 
bool getPrimitivesOfType (const GA_PrimitiveTypeId &type, UT_Array< const GA_Primitive * > &prims) const
 
GA_PrimitiveTypeMask getPrimitiveTypeMaskAll () const
 
GA_PrimitiveTypeMask getPrimitiveTypeMask (const GA_PrimitiveGroup *group=0) const
 
const GA_AttributeInstanceMatrixgetInstanceMatrix () const
 Return cached attribute instance matrix pointer. More...
 
void clearInstanceMatrix ()
 
bool isPrimary () const
 
GA_CEAttributegetTopologyCEAttribute (GA_Topology::TopologyCE topotype, GA_StorageClass storage, GA_Precision precision, int &tuplesize, bool isarray, bool read, bool write)
 Builds & acquires GPU backed buffers for topology attributes. More...
 
virtual UT_UniquePtr
< GA_CEAttribute
buildTopologyCEAttribute (GA_Topology::TopologyCE topotype, GA_StorageClass storage, GA_Precision precision, int &tuplesize, bool isarray, bool read, bool write) const
 
void flushCEWriteCaches ()
 
void flushCECaches ()
 
void stealCEBuffers (const GA_Detail &srcdetail)
 
void copyChangedNonTransforming (const GA_Detail *inputgeo, GA_AttributeOwner owner)
 
void incrementMetaCacheCount ()
 
int64 getMetaCacheCount () const
 
GA_Precision getPreferredPrecision () const
 
void setPreferredPrecision (GA_Precision prec)
 
void stashAll ()
 
void destroyStashed ()
 
const GA_AttributegetPwAttribute () const
 
GA_AttributegetPwAttribute ()
 
SYS_FORCE_INLINE GA_PrimitivegetPrimitive (GA_Offset prim_off)
 
SYS_FORCE_INLINE const
GA_Primitive
getPrimitive (GA_Offset prim_off) const
 
GA_PrimitivegetPrimitiveByIndex (GA_Index prim_idx)
 
const GA_PrimitivegetPrimitiveByIndex (GA_Index prim_idx) const
 
bool destroyPointOffset (GA_Offset ptoff, GA_DestroyPointMode mode=GA_LEAVE_PRIMITIVES, bool guarantee_no_vertex_references=false)
 
bool destroyPointIndex (GA_Index index, GA_DestroyPointMode mode=GA_LEAVE_PRIMITIVES, bool guarantee_no_vertex_references=false)
 
GA_Size destroyUnusedPoints (const GA_Range &point_range)
 
GA_Size destroyPointOffsets (const GA_Range &range, GA_DestroyPointMode mode=GA_LEAVE_PRIMITIVES, bool guarantee_no_vertex_references=false)
 
GA_Size destroyPoints (const GA_Range &range, GA_DestroyPointMode mode=GA_LEAVE_PRIMITIVES, bool guarantee_no_vertex_references=false)
 
GA_AttributeOwner getAttributeOwner (const GA_AttributeDict &dict) const
 
const GA_AttributeDictgetAttributeDict (GA_AttributeOwner owner) const
 
GA_AttributecreateAttribute (GA_AttributeOwner owner, GA_AttributeScope scope, const UT_StringHolder &name, const UT_Options *create_args, const GA_AttributeOptions *attribute_options, const UT_StringRef &attribtype)
 
GA_AttributecreateAttribute (GA_AttributeOwner owner, const UT_StringHolder &name, const UT_Options *create_args, const GA_AttributeOptions *attribute_options, const UT_StringRef &attribtype)
 
SYS_FORCE_INLINE GA_ATINumericUPtr createDetachedTupleAttribute (GA_AttributeOwner owner, GA_Storage storage, int tuple_size, const GA_Defaults &defaults=GA_Defaults(0.0f), const GA_AttributeOptions *attribute_options=nullptr) const
 
SYS_FORCE_INLINE GA_AttributeUPtr createDetachedAttribute (GA_AttributeOwner owner, const UT_StringRef &attribtype, const UT_Options *create_args=nullptr, const GA_AttributeOptions *attribute_options=nullptr) const
 
SYS_FORCE_INLINE GA_AttributeUPtr createDetachedAttribute (GA_AttributeOwner owner, const GA_AttributeType &attribtype, const UT_Options *create_args=nullptr, const GA_AttributeOptions *attribute_options=nullptr) const
 
template<typename T >
bool getAttributeAsArray (const GA_Attribute *atr, const GA_Range &range, UT_Array< T > &result) const
 Get/set all the point attribute data from/to a contiguous array. More...
 
template<typename T >
bool setAttributeFromArray (GA_Attribute *atr, const GA_Range &range, const UT_Array< T > &src)
 
GA_PointGroupTablepointGroups ()
 
const GA_PointGroupTablepointGroups () const
 
GA_PrimitiveGroupTableprimitiveGroups ()
 
const GA_PrimitiveGroupTableprimitiveGroups () const
 
GA_VertexGroupTablevertexGroups ()
 
const GA_VertexGroupTablevertexGroups () const
 
GA_EdgeGroupTableedgeGroups ()
 
const GA_EdgeGroupTableedgeGroups () const
 
GA_PointGroupnewPointGroup (const UT_StringHolder &name)
 
GA_VertexGroupnewVertexGroup (const UT_StringHolder &name)
 
GA_PrimitiveGroupnewPrimitiveGroup (const UT_StringHolder &name)
 
GA_EdgeGroupnewEdgeGroup (const UT_StringHolder &name)
 
GA_PointGroupnewInternalPointGroup ()
 
GA_VertexGroupnewInternalVertexGroup ()
 
GA_PrimitiveGroupnewInternalPrimitiveGroup ()
 
GA_EdgeGroupnewInternalEdgeGroup ()
 
GA_PointGroupnewDetachedPointGroup () const
 
GA_PrimitiveGroupnewDetachedPrimitiveGroup () const
 Be sure to do "delete group;" to clean it up. More...
 
GA_VertexGroupnewDetachedVertexGroup () const
 Be sure to do "delete group;" to clean it up. More...
 
GA_EdgeGroupnewDetachedEdgeGroup () const
 Be sure to do "delete group;" to clean it up. More...
 
GA_PointGroupUPtr createDetachedPointGroup () const
 
GA_PrimitiveGroupUPtr createDetachedPrimitiveGroup () const
 
GA_VertexGroupUPtr createDetachedVertexGroup () const
 
GA_EdgeGroupUPtr createDetachedEdgeGroup () const
 
GA_PointGroupnewPointGroup (const UT_StringHolder &name, bool internal)
 
GA_PrimitiveGroupnewPrimitiveGroup (const UT_StringHolder &name, bool internal)
 
GA_VertexGroupnewVertexGroup (const UT_StringHolder &name, bool internal)
 
GA_EdgeGroupnewEdgeGroup (const UT_StringHolder &name, bool internal)
 
GA_LocalIntrinsic findIntrinsic (const UT_StringRef &nm) const
 
GA_LocalIntrinsic findIntrinsic (GA_GlobalIntrinsic h) const
 
GA_GlobalIntrinsic findGlobalIntrinsic (GA_LocalIntrinsic h) const
 
const char * getIntrinsicName (GA_LocalIntrinsic h) const
 
GA_Size getIntrinsicTupleSize (GA_LocalIntrinsic h) const
 
GA_StorageClass getIntrinsicStorage (GA_LocalIntrinsic h) const
 
bool getIntrinsicReadOnly (GA_LocalIntrinsic h) const
 
const UT_OptionsgetIntrinsicOptions (GA_LocalIntrinsic h) const
 
GA_Size getIntrinsic (GA_LocalIntrinsic h, UT_String &val) const
 
GA_Size getIntrinsic (GA_LocalIntrinsic h, UT_StringArray &val) const
 
GA_Size getIntrinsic (GA_LocalIntrinsic h, UT_OptionsHolder &val) const
 
GA_Size getIntrinsic (GA_LocalIntrinsic h, UT_Array< UT_OptionsHolder > &val) const
 
GA_Size getIntrinsic (GA_LocalIntrinsic h, int64 *v, GA_Size size) const
 
GA_Size getIntrinsic (GA_LocalIntrinsic h, fpreal64 *v, GA_Size sz) const
 
bool getIntrinsic (GA_LocalIntrinsic h, float &v) const
 
bool getIntrinsic (GA_LocalIntrinsic h, int &v) const
 
bool getIntrinsic (GA_LocalIntrinsic h, UT_Vector2 &v) const
 
bool getIntrinsic (GA_LocalIntrinsic h, UT_Vector3 &v) const
 
bool getIntrinsic (GA_LocalIntrinsic h, UT_Vector4 &v) const
 
bool getIntrinsic (GA_LocalIntrinsic h, UT_Matrix2 &v) const
 
bool getIntrinsic (GA_LocalIntrinsic h, UT_Matrix3 &v) const
 
bool getIntrinsic (GA_LocalIntrinsic h, UT_Matrix4 &v) const
 
bool getIntrinsic (GA_LocalIntrinsic h, double &v) const
 
bool getIntrinsic (GA_LocalIntrinsic h, int64 &v) const
 
bool getIntrinsic (GA_LocalIntrinsic h, UT_Vector2D &v) const
 
bool getIntrinsic (GA_LocalIntrinsic h, UT_Vector3D &v) const
 
bool getIntrinsic (GA_LocalIntrinsic h, UT_Vector4D &v) const
 
bool getIntrinsic (GA_LocalIntrinsic h, UT_Matrix2D &v) const
 
bool getIntrinsic (GA_LocalIntrinsic h, UT_Matrix3D &v) const
 
bool getIntrinsic (GA_LocalIntrinsic h, UT_Matrix4D &v) const
 
GA_Size setIntrinsic (GA_LocalIntrinsic h, const char *value)
 
GA_Size setIntrinsic (GA_LocalIntrinsic h, const UT_StringArray &value)
 
GA_Size setIntrinsic (GA_LocalIntrinsic h, const char **val, GA_Size s)
 
GA_Size setIntrinsic (GA_LocalIntrinsic h, const UT_OptionsHolder &val)
 
GA_Size setIntrinsic (GA_LocalIntrinsic h, const UT_Array< UT_OptionsHolder > &value)
 
GA_Size setIntrinsic (GA_LocalIntrinsic h, const UT_OptionsHolder *val, GA_Size s)
 
GA_Size setIntrinsic (GA_LocalIntrinsic h, const int64 val)
 
GA_Size setIntrinsic (GA_LocalIntrinsic h, const fpreal64 val)
 
GA_Size setIntrinsic (GA_LocalIntrinsic h, const int64 *val, GA_Size sz)
 
GA_Size setIntrinsic (GA_LocalIntrinsic h, const fpreal64 *v, GA_Size sz)
 
template<typename FUNCTOR >
SYS_FORCE_INLINE void forEachPointBreak (FUNCTOR &&functor) const
 
template<typename FUNCTOR >
SYS_FORCE_INLINE void forEachPointBreak (const GA_PointGroup *group, FUNCTOR &&functor) const
 
template<typename FUNCTOR >
SYS_FORCE_INLINE void forEachPointBreak (const GA_PointGroup *group, bool complement, FUNCTOR &&functor) const
 
template<typename FUNCTOR >
SYS_FORCE_INLINE void forEachPrimitiveBreak (FUNCTOR &&functor) const
 
template<typename FUNCTOR >
SYS_FORCE_INLINE void forEachPrimitiveBreak (const GA_PrimitiveGroup *group, FUNCTOR &&functor) const
 
template<typename FUNCTOR >
SYS_FORCE_INLINE void forEachPrimitiveBreak (const GA_PrimitiveGroup *group, bool complement, FUNCTOR &&functor) const
 
void copyAttributes (GA_AttributeOwner owner, GA_Offset destoff, GA_Offset srcoff, const GA_AttributeFilter *filter=nullptr)
 
void copyAttributes (GA_AttributeOwner owner, GA_Offset destoff, const GA_Detail &srcdetail, GA_Offset srcoff, const GA_AttributeFilter *filter=nullptr)
 
IOStatus saveClassic (const char *, const GA_SaveOptions *) const
 
IOStatus saveClassic (std::ostream &os, bool, const GA_SaveOptions *) const
 
IOStatus statFile (const char *filename, GA_Stat &stat, uint level=0xffff, const GA_LoadOptions *opts=nullptr) const
 
IOStatus stat (UT_JSONParser &p, GA_Stat &stat, uint level) const
 
void addTailInitializer (GA_Attribute *attrib)
 
bool removeTailInitializer (GA_Attribute *attrib)
 
MantraGeometry * mantraGeometry ()
 
const MantraGeometry * mantraGeometry () const
 
void setMantraGeometry (MantraGeometry *m)
 
bool saveVertexPointReferenceH9 (std::ostream &os, int binary, GA_Offset vertex_offset) const
 
bool loadVertexH9 (UT_IStream &is, GA_Offset vertex_offset, const UT_Array< GA_AttribLoadDataH9 > &vtx_l)
 
bool saveVertexH9 (std::ostream &os, int binary, GA_Offset vertex_offset, const UT_Array< GA_AttribSaveDataH9 > &vtx_l) const
 

Static Public Member Functions

template<typename FLT >
static UT_Matrix4T< FLT > localSpaceXformMatrix (const UT_XformOrder &order, const LocalXformContextT< FLT > &local_frame, FLT tx, FLT ty, FLT tz, FLT rx, FLT ry, FLT rz, FLT sx, FLT sy, FLT sz, FLT s_xy, FLT s_xz, FLT s_yz, FLT px, FLT py, FLT pz, FLT prx, FLT pry, FLT prz)
 
static const UT_StringHoldergetPointCaptureAttribName (CaptureType type)
 
static const char * getPointCaptureIndexPropertyName (CaptureType type)
 
static const UT_StringHoldergetPointCaptureFrameAttribName (CaptureType type)
 
static const UT_StringHoldergetPointCaptureRootAttribName (CaptureType type)
 
static const char * getPointCaptureDataPropertyName (CaptureType type)
 
static GA_TypeInfo getStdAttributeTypeInfo (const char *name, int floattuplesize)
 
static int asciiMagicH9 ()
 Magic number for ASCII geometry files. More...
 
static int binaryMagicH9 ()
 Magic number for binary geometry files. More...
 
- Static Public Member Functions inherited from GA_Detail
static
GA_IntrinsicManager::Registrar 
registerIntrinsics (GA_PrimitiveFactory &factory)
 
template<typename FUNCTOR >
static void forEachOffset (FUNCTOR &&functor, const GA_IndexMap &index_map, const GA_ElementGroup *group=nullptr, bool complement=false)
 
template<typename FUNCTOR >
static void forEachOffsetBreak (FUNCTOR &&functor, const GA_IndexMap &index_map, const GA_ElementGroup *group=nullptr, bool complement=false)
 
static int64 printMemory (UT_WorkBuffer &buffer, bool include_total=true, int indent=3, const char *title="Geometry Memory Tracking")
 Debugging output of detail. More...
 
template<typename T >
static const
T::GB_MACRO_PRIM_TYPE * 
GB_MACRO_CAST (const T *, const GA_Primitive *prim)
 
template<typename T >
static T::GB_MACRO_PRIM_TYPE * GB_MACRO_CAST (const T *, GA_Primitive *prim)
 
static bool loadAttribDataH9 (UT_IStream &is, GA_Offset offset, const UT_Array< GA_AttribLoadDataH9 > &l)
 
static bool saveAttribDataH9 (std::ostream &os, int binary, GA_Offset offset, const UT_Array< GA_AttribSaveDataH9 > &l, char delim_ch= '(')
 

Protected Member Functions

GA_Size localIntrinsicTupleSize (GA_IntrinsicEval &eval) const override
 
GA_Size localGetIntrinsicS (GA_IntrinsicEval &eval, UT_String &value) const override
 
GA_Size localGetIntrinsicSA (GA_IntrinsicEval &eval, UT_StringArray &value) const override
 
GA_Size localGetIntrinsicD (GA_IntrinsicEval &eval, UT_OptionsHolder &value) const override
 
GA_Size localGetIntrinsicDA (GA_IntrinsicEval &eval, UT_Array< UT_OptionsHolder > &value) const override
 
GA_Size localGetIntrinsicI (GA_IntrinsicEval &eval, int64 *value, GA_Size size) const override
 
GA_Size localGetIntrinsicF (GA_IntrinsicEval &eval, fpreal64 *value, GA_Size size) const override
 
GA_Size localSetIntrinsicS (GA_IntrinsicEval &eval, const char *value) override
 
GA_Size localSetIntrinsicSA (GA_IntrinsicEval &eval, const UT_StringArray &value) override
 
GA_Size localSetIntrinsicSS (GA_IntrinsicEval &eval, const char **value, GA_Size size) override
 
GA_Size localSetIntrinsicDA (GA_IntrinsicEval &eval, const UT_Array< UT_OptionsHolder > &value) override
 
GA_Size localSetIntrinsicDS (GA_IntrinsicEval &eval, const UT_OptionsHolder *value, GA_Size size) override
 
GA_Size localSetIntrinsicI (GA_IntrinsicEval &eval, const int64 *value, GA_Size size) override
 
GA_Size localSetIntrinsicF (GA_IntrinsicEval &eval, const fpreal64 *value, GA_Size size) override
 
GA_Detail::IOStatus saveH9Stream (std::ostream &os, bool binary, const GA_SaveOptions *options) const
 
GA_Detail::IOStatus loadH9 (UT_IStream &is, const GA_LoadOptions *options)
 
bool convertIndexPairDataFromH9 ()
 
bool convertIndexPairDataToH9 ()
 
template<typename FLOAT_T >
void transformInternal (const UT_Matrix4T< FLOAT_T > &mat, const GA_Range &prim_range, const GA_Range &pt_range, bool just_P, bool keep_vector_lengths, bool check_pasting, bool neg_determinant_flipvector, bool update_ptnormals, GEO_Delta *geodelta, bool updateaffectednormals, const char *attribpattern)
 
void privateComputeNormal (const GA_RWHandleV3 &normalattrib, const GA_Group *group, const float cuspangledegrees, const int method) const override
 
- Protected Member Functions inherited from GA_Detail
void doConstructTailInitializers (GA_AttributeOwner owner, GA_Offset start, GA_Offset size)
 
bool loadPrimitivesH9 (UT_IStream &is, int count, const GA_FileFormatH9::PrimTypeXlate &type_map, const UT_Array< GA_AttribLoadDataH9 > &prim_attribs, const UT_Array< GA_AttribLoadDataH9 > &vtx_attribs)
 
bool savePrimitivesH9 (std::ostream &os, int binary, const UT_Array< const GA_Primitive * > &list, const GA_FileFormatH9::PrimTypeXlate &type_map, const UT_Array< GA_AttribSaveDataH9 > &prim_attribs, const UT_Array< GA_AttribSaveDataH9 > &vx_attribs) const
 
void splitAnyFloat4P ()
 
void setUniqueId (exint i)
 
void setMetaCacheCount (int64 i)
 

Static Protected Member Functions

static
GA_IntrinsicManager::Registrar 
registerIntrinsics (GA_PrimitiveFactory &factory)
 
static GA_Detail::IOStatus statH9Basic (UT_IStream &is, GA_Stat &sbuf, bool binstream)
 
- Static Protected Member Functions inherited from GA_Detail
static void finishLoadH9 (const UT_Array< GA_AttribLoadDataH9 > &attribs)
 

Friends

class GEO_IOTable
 
class GU_IOClassic
 
std::ostream & operator<< (std::ostream &os, const GEO_Detail &d)
 

Additional Inherited Members

- Static Public Attributes inherited from GA_Detail
static const int64 INVALID_CACHE_COUNT = -1
 

Detailed Description

Member Typedef Documentation

Definition at line 1956 of file GEO_Detail.h.

Member Enumeration Documentation

Methods for manipulating capture weights (GEO_CaptureWeight.C)

Enumerator
CAPTURE_BONE 
CAPTURE_META 
CAPTURE_WIRE 
CAPTURE_CLOTH 
CAPTURE_MUSCLE 

Definition at line 996 of file GEO_Detail.h.

Enumerator
VISTYPE_SINGLE 
VISTYPE_MULTIPLE 

Definition at line 1095 of file GEO_Detail.h.

Constructor & Destructor Documentation

GEO_Detail::GEO_Detail ( GA_PrimitiveFactory factory,
bool  full_topology = true 
)
GEO_Detail::~GEO_Detail ( )
override

Member Function Documentation

GA_Attribute* GEO_Detail::addAlphaAttribute ( GA_AttributeOwner  who,
GA_Storage  s = GA_STORE_INVALID 
)
GA_Attribute* GEO_Detail::addAngularVelocityAttribute ( GA_AttributeOwner  who,
GA_Storage  s = GA_STORE_INVALID 
)
GA_Attribute* GEO_Detail::addAttribute ( const UT_StringHolder name,
const UT_Options creation_args,
const GA_AttributeOptions attribute_options,
const UT_StringRef attribtype,
GA_AttributeOwner  who,
GA_AttributeScope  scope = GA_SCOPE_PUBLIC 
)

Some common methods for the standard guys.

bool GEO_Detail::addAverageCaptureWeight ( const GA_PointGroup ptgroup,
const UT_String root_path,
UT_StringMap< float * > &  averages 
) const

Get the average capture weight of a set of points.

GA_Attribute* GEO_Detail::addCaptureFrameAttribute ( CaptureType  t = CAPTURE_BONE,
GA_Storage  s = GA_STORE_INVALID 
)

Add the detail's capture frame attribute for capture type t.

int GEO_Detail::addCaptureRegion ( const UT_String cregion_name,
const UT_Matrix4 parent_xform,
const GEO_Detail tube_gdp 
)

Add a new bone capture region. Sets the detail's capture transforms for the new region. Returns the index for this new region or -1 for failure.

int GEO_Detail::addCaptureRegion ( const UT_String cregion_name,
const UT_Matrix4 xform,
float  tcap,
float  bcap,
float  taperx,
float  taperz 
)
int GEO_Detail::addCaptureRegion ( const UT_String cregion_name,
CaptureType  type 
)

Add a non-bone capture capture region of type type to this detail. Returns the index for this new region, or -1 for failure.

GA_Attribute* GEO_Detail::addCaptureSkelRootAttribute ( CaptureType  t = CAPTURE_BONE)

Add the bone capture skeleton root detail attribute.

GA_Attribute* GEO_Detail::addComAttribute ( GA_AttributeOwner  who,
GA_Storage  s = GA_STORE_INVALID 
)
GA_Attribute* GEO_Detail::addDictArray ( GA_AttributeOwner  owner,
GA_AttributeScope  scope,
const UT_StringHolder name,
int  tuple_size = 1,
const UT_Options creation_args = 0,
const GA_AttributeOptions attribute_options = 0,
GA_Storage  storage = GA_STORE_STRING,
const GA_ReuseStrategy reuse = GA_ReuseStrategy() 
)

Convenience method to add a new floating point, or int array attribute.

If there's an existing attribute of the same name, the GA_ReuseStrategy will be used. By default, this will return the existing attribute if it is the same type. If not, it will try to replace it with a new one and copy the old data over.

SYS_FORCE_INLINE GA_Attribute* GEO_Detail::addDictArray ( GA_AttributeOwner  owner,
const UT_StringHolder name,
int  tuple_size = 1,
const UT_Options creation_args = 0,
const GA_AttributeOptions attribute_options = 0,
GA_Storage  storage = GA_STORE_STRING,
const GA_ReuseStrategy reuse = GA_ReuseStrategy() 
)
inline

Convenience method to add a new floating point, or int array attribute.

If there's an existing attribute of the same name, the GA_ReuseStrategy will be used. By default, this will return the existing attribute if it is the same type. If not, it will try to replace it with a new one and copy the old data over.

Definition at line 2809 of file GEO_Detail.h.

GA_Attribute* GEO_Detail::addDictTuple ( GA_AttributeOwner  owner,
GA_AttributeScope  scope,
const UT_StringHolder name,
int  tuple_size,
const UT_Options creation_args = 0,
const GA_AttributeOptions attribute_options = 0,
const GA_ReuseStrategy reuse = GA_ReuseStrategy() 
)

Convenience method to add a new floating point, int or string tuple attribute.

If there's an existing attribute of the same name, the GA_ReuseStrategy will be used. By default, this will return the existing attribute if it is the same type. If not, it will try to replace it with a new one and copy the old data over.

SYS_FORCE_INLINE GA_Attribute* GEO_Detail::addDictTuple ( GA_AttributeOwner  owner,
const UT_StringHolder name,
int  tuple_size,
const UT_Options creation_args = 0,
const GA_AttributeOptions attribute_options = 0,
const GA_ReuseStrategy reuse = GA_ReuseStrategy() 
)
inline

Convenience method to add a new floating point, int or string tuple attribute.

If there's an existing attribute of the same name, the GA_ReuseStrategy will be used. By default, this will return the existing attribute if it is the same type. If not, it will try to replace it with a new one and copy the old data over.

Definition at line 2705 of file GEO_Detail.h.

GA_Attribute* GEO_Detail::addDistanceAttribute ( GA_AttributeOwner  who,
GA_Storage  s = GA_STORE_INVALID 
)
GA_Attribute* GEO_Detail::addFloatArray ( GA_AttributeOwner  owner,
GA_AttributeScope  scope,
const UT_StringHolder name,
int  tuple_size = 1,
const UT_Options creation_args = 0,
const GA_AttributeOptions attribute_options = 0,
GA_Storage  storage = GA_STORE_REAL32,
const GA_ReuseStrategy reuse = GA_ReuseStrategy() 
)

Convenience method to add a new floating point, or int array attribute.

If there's an existing attribute of the same name, the GA_ReuseStrategy will be used. By default, this will return the existing attribute if it is the same type. If not, it will try to replace it with a new one and copy the old data over.

SYS_FORCE_INLINE GA_Attribute* GEO_Detail::addFloatArray ( GA_AttributeOwner  owner,
const UT_StringHolder name,
int  tuple_size = 1,
const UT_Options creation_args = 0,
const GA_AttributeOptions attribute_options = 0,
GA_Storage  storage = GA_STORE_REAL32,
const GA_ReuseStrategy reuse = GA_ReuseStrategy() 
)
inline

Convenience method to add a new floating point, or int array attribute.

If there's an existing attribute of the same name, the GA_ReuseStrategy will be used. By default, this will return the existing attribute if it is the same type. If not, it will try to replace it with a new one and copy the old data over.

Definition at line 2737 of file GEO_Detail.h.

GA_Attribute* GEO_Detail::addFloatTuple ( GA_AttributeOwner  owner,
GA_AttributeScope  scope,
const UT_StringHolder name,
int  tuple_size,
const GA_Defaults defaults = GA_Defaults(0.0),
const UT_Options creation_args = 0,
const GA_AttributeOptions attribute_options = 0,
GA_Storage  storage = GA_STORE_REAL32,
const GA_ReuseStrategy reuse = GA_ReuseStrategy() 
)

Convenience method to add a new floating point, int or string tuple attribute.

If there's an existing attribute of the same name, the GA_ReuseStrategy will be used. By default, this will return the existing attribute if it is the same type. If not, it will try to replace it with a new one and copy the old data over.

Examples:
field3d/f3d_io.C, mocapstream/MocapStreamRokokoHDK.C, SIM/SIM_SolverHair.C, SIM/SNOW_Solver.C, SOP/SOP_BrushHairLen.C, SOP/SOP_CustomBrush.C, SOP/SOP_DetailAttrib.C, SOP/SOP_IKSample.C, and SOP/SOP_SParticle.C.
SYS_FORCE_INLINE GA_Attribute* GEO_Detail::addFloatTuple ( GA_AttributeOwner  owner,
const UT_StringHolder name,
int  tuple_size,
const GA_Defaults defaults = GA_Defaults(0.0),
const UT_Options creation_args = 0,
const GA_AttributeOptions attribute_options = 0,
GA_Storage  storage = GA_STORE_REAL32,
const GA_ReuseStrategy reuse = GA_ReuseStrategy() 
)
inline

Convenience method to add a new floating point, int or string tuple attribute.

If there's an existing attribute of the same name, the GA_ReuseStrategy will be used. By default, this will return the existing attribute if it is the same type. If not, it will try to replace it with a new one and copy the old data over.

Definition at line 2630 of file GEO_Detail.h.

SYS_FORCE_INLINE GA_Attribute* GEO_Detail::addGlobalAttrib ( const GA_Attribute src)
inline

Note: if attrib already exists, will return pointer to existing attrib.

Definition at line 1880 of file GEO_Detail.h.

SYS_FORCE_INLINE GA_Attribute* GEO_Detail::addGlobalAttrib ( GA_AttributeScope  scope,
const UT_StringHolder n,
const UT_Options creation_args,
const GA_AttributeOptions attribute_options,
const UT_StringRef attribtype 
)
inline

Definition at line 1887 of file GEO_Detail.h.

SYS_FORCE_INLINE GA_Attribute* GEO_Detail::addGlobalAttrib ( const UT_StringHolder n,
const UT_Options creation_args,
const GA_AttributeOptions attribute_options,
const UT_StringRef attribtype 
)
inline

Definition at line 1897 of file GEO_Detail.h.

GA_Attribute* GEO_Detail::addIndexPairAttribute ( GA_AttributeOwner  owner,
const UT_StringHolder name,
int  n_pairs,
GA_Storage  s = GA_STORE_INVALID 
)
GA_Attribute* GEO_Detail::addIntArray ( GA_AttributeOwner  owner,
GA_AttributeScope  scope,
const UT_StringHolder name,
int  tuple_size = 1,
const UT_Options creation_args = 0,
const GA_AttributeOptions attribute_options = 0,
GA_Storage  storage = GA_STORE_INT32,
const GA_ReuseStrategy reuse = GA_ReuseStrategy() 
)

Convenience method to add a new floating point, or int array attribute.

If there's an existing attribute of the same name, the GA_ReuseStrategy will be used. By default, this will return the existing attribute if it is the same type. If not, it will try to replace it with a new one and copy the old data over.

Examples:
SOP/SOP_ArrayAttrib.C.
SYS_FORCE_INLINE GA_Attribute* GEO_Detail::addIntArray ( GA_AttributeOwner  owner,
const UT_StringHolder name,
int  tuple_size = 1,
const UT_Options creation_args = 0,
const GA_AttributeOptions attribute_options = 0,
GA_Storage  storage = GA_STORE_INT32,
const GA_ReuseStrategy reuse = GA_ReuseStrategy() 
)
inline

Convenience method to add a new floating point, or int array attribute.

If there's an existing attribute of the same name, the GA_ReuseStrategy will be used. By default, this will return the existing attribute if it is the same type. If not, it will try to replace it with a new one and copy the old data over.

Definition at line 2762 of file GEO_Detail.h.

GA_Attribute* GEO_Detail::addIntTuple ( GA_AttributeOwner  owner,
GA_AttributeScope  scope,
const UT_StringHolder name,
int  tuple_size,
const GA_Defaults defaults = GA_Defaults(0),
const UT_Options creation_args = 0,
const GA_AttributeOptions attribute_options = 0,
GA_Storage  storage = GA_STORE_INT32,
const GA_ReuseStrategy reuse = GA_ReuseStrategy() 
)

Convenience method to add a new floating point, int or string tuple attribute.

If there's an existing attribute of the same name, the GA_ReuseStrategy will be used. By default, this will return the existing attribute if it is the same type. If not, it will try to replace it with a new one and copy the old data over.

Examples:
euclid/SOP_Euclid.C, field3d/f3d_io.C, and SOP/SOP_BouncyAgent.C.
SYS_FORCE_INLINE GA_Attribute* GEO_Detail::addIntTuple ( GA_AttributeOwner  owner,
const UT_StringHolder name,
int  tuple_size,
const GA_Defaults defaults = GA_Defaults(0),
const UT_Options creation_args = 0,
const GA_AttributeOptions attribute_options = 0,
GA_Storage  storage = GA_STORE_INT32,
const GA_ReuseStrategy reuse = GA_ReuseStrategy() 
)
inline

Convenience method to add a new floating point, int or string tuple attribute.

If there's an existing attribute of the same name, the GA_ReuseStrategy will be used. By default, this will return the existing attribute if it is the same type. If not, it will try to replace it with a new one and copy the old data over.

Definition at line 2657 of file GEO_Detail.h.

GA_Attribute* GEO_Detail::addLODAttribute ( GA_AttributeOwner  who,
GA_Storage  s = GA_STORE_INVALID 
)
GA_Attribute* GEO_Detail::addNormalAttribute ( GA_AttributeOwner  who,
GA_Storage  s = GA_STORE_INVALID 
)

Some useful alias functions, they simplify your life a lot Attribute handling

These alias methods return the offset of the (new) attribute, or -1 if they failed for some reason.

GA_Attribute* GEO_Detail::addOrientAttribute ( GA_AttributeOwner  who,
GA_Storage  s = GA_STORE_INVALID 
)
SYS_FORCE_INLINE GA_Attribute* GEO_Detail::addPointAttrib ( const GA_Attribute src)
inline
Examples:
SIM/SIM_SolverHair.C, and SIM/SNOW_Solver.C.

Definition at line 1684 of file GEO_Detail.h.

SYS_FORCE_INLINE GA_Attribute* GEO_Detail::addPointAttrib ( GA_AttributeScope  scope,
const UT_StringHolder n,
const UT_Options creation_args,
const GA_AttributeOptions attribute_options,
const UT_StringRef attribtype 
)
inline

Definition at line 1691 of file GEO_Detail.h.

SYS_FORCE_INLINE GA_Attribute* GEO_Detail::addPointAttrib ( const UT_StringHolder n,
const UT_Options creation_args,
const GA_AttributeOptions attribute_options,
const UT_StringRef attribtype 
)
inline

Definition at line 1701 of file GEO_Detail.h.

GA_Attribute* GEO_Detail::addPointCaptureAlphaAttribute ( float  dflt,
GA_Storage  s = GA_STORE_INVALID 
)

Add the bone capture alpha point attribute.

GA_Attribute* GEO_Detail::addPointCaptureAttribute ( geo_NPairs  n_pairs,
CaptureType  t = CAPTURE_BONE,
GA_Storage  s = GA_STORE_INVALID 
)

Add the (index, weight) point attribute for capture type t.

Examples:
SOP/SOP_BouncyAgent.C.
SYS_FORCE_INLINE GA_Attribute* GEO_Detail::addPrimAttrib ( const GA_Attribute src)
inline
SYS_FORCE_INLINE GA_Attribute* GEO_Detail::addPrimAttrib ( GA_AttributeScope  scope,
const UT_StringHolder n,
const UT_Options creation_args,
const GA_AttributeOptions attribute_options,
const UT_StringRef attribtype 
)
inline

Definition at line 1832 of file GEO_Detail.h.

SYS_FORCE_INLINE GA_Attribute* GEO_Detail::addPrimAttrib ( const UT_StringHolder n,
const UT_Options creation_args,
const GA_AttributeOptions attribute_options,
const UT_StringRef attribtype 
)
inline

Definition at line 1841 of file GEO_Detail.h.

GA_Attribute* GEO_Detail::addPtIndexPairAttribute ( const UT_StringHolder name,
geo_NPairs  n_pairs,
GA_Storage  s = GA_STORE_INVALID 
)
GA_Attribute* GEO_Detail::addStringArray ( GA_AttributeOwner  owner,
GA_AttributeScope  scope,
const UT_StringHolder name,
int  tuple_size = 1,
const UT_Options creation_args = 0,
const GA_AttributeOptions attribute_options = 0,
GA_Storage  storage = GA_STORE_STRING,
const GA_ReuseStrategy reuse = GA_ReuseStrategy() 
)

Convenience method to add a new floating point, or int array attribute.

If there's an existing attribute of the same name, the GA_ReuseStrategy will be used. By default, this will return the existing attribute if it is the same type. If not, it will try to replace it with a new one and copy the old data over.

SYS_FORCE_INLINE GA_Attribute* GEO_Detail::addStringArray ( GA_AttributeOwner  owner,
const UT_StringHolder name,
int  tuple_size = 1,
const UT_Options creation_args = 0,
const GA_AttributeOptions attribute_options = 0,
GA_Storage  storage = GA_STORE_STRING,
const GA_ReuseStrategy reuse = GA_ReuseStrategy() 
)
inline

Convenience method to add a new floating point, or int array attribute.

If there's an existing attribute of the same name, the GA_ReuseStrategy will be used. By default, this will return the existing attribute if it is the same type. If not, it will try to replace it with a new one and copy the old data over.

Definition at line 2786 of file GEO_Detail.h.

GA_Attribute* GEO_Detail::addStringTuple ( GA_AttributeOwner  owner,
GA_AttributeScope  scope,
const UT_StringHolder name,
int  tuple_size,
const UT_Options creation_args = 0,
const GA_AttributeOptions attribute_options = 0,
const GA_ReuseStrategy reuse = GA_ReuseStrategy() 
)

Convenience method to add a new floating point, int or string tuple attribute.

If there's an existing attribute of the same name, the GA_ReuseStrategy will be used. By default, this will return the existing attribute if it is the same type. If not, it will try to replace it with a new one and copy the old data over.

Examples:
field3d/f3d_io.C, GEO/GEO_VoxelTranslator.C, mocapstream/MocapStreamRokokoHDK.C, packedprim/packedprim.C, RAY/RAY_DemoSprite.C, SOP/SOP_BouncyAgent.C, and standalone/geo2voxel.C.
SYS_FORCE_INLINE GA_Attribute* GEO_Detail::addStringTuple ( GA_AttributeOwner  owner,
const UT_StringHolder name,
int  tuple_size,
const UT_Options creation_args = 0,
const GA_AttributeOptions attribute_options = 0,
const GA_ReuseStrategy reuse = GA_ReuseStrategy() 
)
inline

Convenience method to add a new floating point, int or string tuple attribute.

If there's an existing attribute of the same name, the GA_ReuseStrategy will be used. By default, this will return the existing attribute if it is the same type. If not, it will try to replace it with a new one and copy the old data over.

Definition at line 2683 of file GEO_Detail.h.

GA_Attribute* GEO_Detail::addTextureAttribute ( GA_AttributeOwner  who,
GA_Storage  s = GA_STORE_INVALID 
)
GA_Attribute* GEO_Detail::addTubeCaptureAttribute ( GA_Storage  s = GA_STORE_INVALID)
GA_Attribute* GEO_Detail::addTuple ( GA_Storage  storage,
GA_AttributeOwner  owner,
GA_AttributeScope  scope,
const UT_StringHolder name,
int  tuple_size,
const GA_Defaults defaults = GA_Defaults(0.0),
const UT_Options creation_args = 0,
const GA_AttributeOptions attribute_options = 0,
const GA_ReuseStrategy reuse = GA_ReuseStrategy() 
)

Convenience method for adding a float, integer or string tuple attribute.

If there's an existing attribute of the same name, the GA_ReuseStrategy will be used. By default, this will return the existing attribute if it is the same type. If not, it will try to replace it with a new one and copy the old data over.

The attribute storage will be determined by the storage parameter. For example, if it's GA_STORE_REAL32 or GA_STORE_REAL16, a floating point tuple will be added. An integer tuple would be created for GA_STORE_INT64 and a string tuple for GA_STORE_STRING.

The defaults will be ignored for string attributes.

Note
If you have a GA_StorageClass, you can call GAgetDefaultStorage(storageclass);
SYS_FORCE_INLINE GA_Attribute* GEO_Detail::addTuple ( GA_Storage  storage,
GA_AttributeOwner  owner,
const UT_StringHolder name,
int  tuple_size,
const GA_Defaults defaults = GA_Defaults(0.0),
const UT_Options creation_args = 0,
const GA_AttributeOptions attribute_options = 0,
const GA_ReuseStrategy reuse = GA_ReuseStrategy() 
)
inline

Convenience method for adding a float, integer or string tuple attribute.

If there's an existing attribute of the same name, the GA_ReuseStrategy will be used. By default, this will return the existing attribute if it is the same type. If not, it will try to replace it with a new one and copy the old data over.

The attribute storage will be determined by the storage parameter. For example, if it's GA_STORE_REAL32 or GA_STORE_REAL16, a floating point tuple will be added. An integer tuple would be created for GA_STORE_INT64 and a string tuple for GA_STORE_STRING.

The defaults will be ignored for string attributes.

Note
If you have a GA_StorageClass, you can call GAgetDefaultStorage(storageclass);

Definition at line 2589 of file GEO_Detail.h.

void GEO_Detail::addVariableName ( const char *  attr,
const char *  varname 
)
GA_Attribute* GEO_Detail::addVelocityAttribute ( GA_AttributeOwner  who,
GA_Storage  s = GA_STORE_INVALID 
)
SYS_FORCE_INLINE GA_Attribute* GEO_Detail::addVertexAttrib ( const GA_Attribute src)
inline

Definition at line 1755 of file GEO_Detail.h.

SYS_FORCE_INLINE GA_Attribute* GEO_Detail::addVertexAttrib ( GA_AttributeScope  scope,
const UT_StringHolder n,
const UT_Options creation_args,
const GA_AttributeOptions attribute_options,
const UT_StringRef attribtype 
)
inline

Definition at line 1762 of file GEO_Detail.h.

SYS_FORCE_INLINE GA_Attribute* GEO_Detail::addVertexAttrib ( const UT_StringHolder n,
const UT_Options creation_args,
const GA_AttributeOptions attribute_options,
const UT_StringRef attribtype 
)
inline

Definition at line 1771 of file GEO_Detail.h.

GA_Offset GEO_Detail::appendPointCopy ( GA_Offset  src,
GA_PointWrangler wrangler 
)
inline

Append a point, copying data from the source point.

Definition at line 1158 of file GEO_Detail.h.

GA_Offset GEO_Detail::appendPointCopy ( GA_Offset  src)
inline

Append a point, copying data from the source point.

Note
It is more efficient to use the GA_PointWrangler version.

Definition at line 1162 of file GEO_Detail.h.

SYS_FORCE_INLINE GA_Offset GEO_Detail::appendPointOffset ( )
inline
Examples:
SIM/SIM_RadialEmit.C, SIM/SIM_SolverHair.C, and SIM/SNOW_Solver.C.

Definition at line 1143 of file GEO_Detail.h.

SYS_FORCE_INLINE GEO_Primitive* GEO_Detail::appendPrimitive ( const GA_PrimitiveTypeId type)
inline
Examples:
SIM/SIM_ForceOrbit.C, and SOP/SOP_SParticle.C.

Definition at line 1236 of file GEO_Detail.h.

static int GEO_Detail::asciiMagicH9 ( )
inlinestatic

Magic number for ASCII geometry files.

Definition at line 2826 of file GEO_Detail.h.

SYS_FORCE_INLINE const GA_AttributeDict& GEO_Detail::attribs ( ) const
inline

Definition at line 1951 of file GEO_Detail.h.

static int GEO_Detail::binaryMagicH9 ( )
inlinestatic

Magic number for binary geometry files.

Definition at line 2831 of file GEO_Detail.h.

bool GEO_Detail::changeAttributeStorage ( GA_AttributeOwner  dict,
const UT_StringRef name,
GA_Storage  new_storage 
)

Change the storage type from one type to another. For example, cast an integer attribute into a floating point attribute, or vice versa. Only some casting methods have been implemented, so it's quite likely that this method may fail.

bool GEO_Detail::changeDetailAttributeStorage ( const UT_StringRef nm,
GA_Storage  s 
)
bool GEO_Detail::changePointAttributeStorage ( const UT_StringRef nm,
GA_Storage  s 
)
bool GEO_Detail::changePrimAttributeStorage ( const UT_StringRef nm,
GA_Storage  s 
)
bool GEO_Detail::changeVertexAttributeStorage ( const UT_StringRef nm,
GA_Storage  s 
)
void GEO_Detail::clampCaptureWeights ( const GA_PointGroup ptgroup = nullptr,
bool  clamp_low_flag = true,
float  low_threshold = 0.0f,
float  low_val = 0.0f,
bool  clamp_hi_flag = false,
float  hi_threshold = 1.0f,
float  hi_val = 1.0f,
CaptureType  t = GEO_Detail::CAPTURE_BONE 
)

clamp the capture weights to the given low/hi values, if the corresponding flag is true and the capture weight is below/above the corresponding threshold. If low/hi flag is false, the capture weight will be unaffected for respecive clamping.

void GEO_Detail::clearAndDestroy ( )
inline

Clear all the points/primitives out of this detail.

Examples:
euclid/SOP_Euclid.C, SOP/SOP_Cop2Raster.C, SOP/SOP_HDKObject.C, SOP/SOP_NURBS.C, SOP/SOP_SParticle.C, and tetprim/SOP_Tetra.C.

Definition at line 267 of file GEO_Detail.h.

void GEO_Detail::clearCaptureWeights ( GA_Offset  ptoff,
CaptureType  t = CAPTURE_BONE 
)
void GEO_Detail::collapseIndexAttributes ( )
void GEO_Detail::colorPointsByCaptureWeight ( const UT_Array< const UT_Vector3 * > &  colors,
const UT_Vector3 zero_weight_color,
CaptureType  t = CAPTURE_BONE,
VisualizationType  vistype = VISTYPE_MULTIPLE,
UT_ColorRamp  singlevismode = UT_COLORRAMP_FALSE 
)

Color points according to their capture (normalized) weight.

void GEO_Detail::colorPointsByCaptureWeight ( const UT_Array< const UT_Vector3 * > &  colors,
const UT_Vector3 zero_weight_color,
CaptureType  t,
VisualizationType  vistype,
UT_ColorRamp  singlevismode,
bool  normalize 
)

Color points according to their capture weight, with option to normalize the weights for visualization.

void GEO_Detail::computeNormal ( const GEO_Primitive prim,
UT_Vector3 nml 
) const

This is the same as prim.computeNormal()

void GEO_Detail::computeNormal ( const GA_Edge edge,
UT_Vector3 nml 
) const
void GEO_Detail::computeNormal ( const GA_Breakpoint bkpt,
UT_Vector3 nml 
) const

WARNING: This could be very slow! Are you sure you need no side-effects? See computeNormalInternal!

void GEO_Detail::computeNormalAndTangents ( const GA_Breakpoint bkpt,
UT_Vector3 nml,
UT_Vector3 u_tangent,
UT_Vector3 v_tangent,
bool  normalize 
) const

Compute the normal, and (optionally) tangents, at the specified breakpoint. An extension of computeNormal() that also computes partial tangents.

void GEO_Detail::computeNormalInternal ( GA_Offset  ptoff,
UT_Vector3 nml 
)

The computeNormal methods compute the normals of primitives, points, edges and breakpoints. The primitive one is there for completeness. An edge normal is the average of its primitive normals. For internal functions: If nml_offset > -1, the attribute at that offset will be returned, else if the geometry has a normal attribute ("N"), nml_offset will be set to the offset of that attribute and that attributes value will be returned, else if the geometry has an internal normal attribute ("internalN") the value of the internal attribute will be returned and nml_offset will be set to its offset, else the "internalN" attribute is created by a call to normal(1), nml_offset is set to it, and the calculated value returned. If nml_offset is null, the case of nml_offset == -1 is followed except nml_offset is not written to. Otherwise: Recompute the normal. No side-effects happen, but this is much slower. A faster version of computeNormal which has the side effect of computing the internal normal if it's not there

void GEO_Detail::computeSoftPointFalloff ( const bool  connected,
const fpreal  radius,
const GEO_Rolloff rolloff,
const GA_PointGroup ptgroup,
const SoftSymmetryParms symmetry,
const GA_RWHandleF falloff,
const GA_ROHandleV3 p_attrib,
GA_PointGroup affected_group = nullptr,
GA_RWHandleID source_points = nullptr 
) const

symmetry - the soft falloff from any points not directly on the plane of symmetry will be clamped to that plane of symmetry when provided affected_group - if provided, all points within the soft falloff will be added to this group

bool GEO_Detail::convertIndexPairDataFromH9 ( )
protected
bool GEO_Detail::convertIndexPairDataToH9 ( )
protected
bool GEO_Detail::copy ( const GEO_Detail src,
GEO_CopyMethod  method = GEO_COPY_ONCE,
bool  this_parameter_is_ignored = true,
bool  keep_internal_groups = true,
GA_DataIdStrategy  data_id_strategy = GA_DATA_ID_BUMP 
)

Copy the source detail into this detail.

If data_id_strategy is GA_DATA_ID_CLONE and method is GEO_COPY_ONCE, any attributes whose source has a valid data id will inherit that data id. Otherwise, each merged attribute will get a new unique data id if this detail is generating such.

Examples:
SOP/SOP_HDKObject.C.
void GEO_Detail::copyFullVertex ( GEO_Vertex  dest,
const GEO_Vertex src 
) const

Copy vertex attributes AND change the point reference of the vertex.

void GEO_Detail::copyFullVertex ( GA_Offset  dest_vtx,
GA_Offset  src_vtx,
GA_VertexWrangler vertex_wrangler 
)
inline

Copy vertex attributes AND change the point reference of the vertex.

Definition at line 1416 of file GEO_Detail.h.

void GEO_Detail::copyPointVertexAttributes ( GEO_Vertex  dest,
const GEO_Vertex src,
bool  copy_point_P = true 
) const

Copy vertex AND point attributes.

void GEO_Detail::copyPointVertexAttributes ( GA_Offset  dest_vtx,
GA_Offset  src_vtx,
const GA_AttributeRefMap vertex_attribs,
const GA_AttributeRefMap point_attribs 
)
void GEO_Detail::copyPointVertexAttributes ( GA_Offset  dest_vtx,
GA_Offset  src_vtx,
GA_VertexWrangler vertex_wrangler,
GA_PointWrangler point_wrangler,
bool  copy_point_P 
)
inline

Definition at line 1402 of file GEO_Detail.h.

void GEO_Detail::copyPrimitiveAttributes ( GEO_Primitive dest,
const GEO_Primitive src 
)

Copy primitive attributes.

void GEO_Detail::copyPrimitiveGroups ( GEO_Primitive dest,
const GEO_Primitive src 
) const
void GEO_Detail::copyVertex ( GEO_Vertex  dest,
const GEO_Vertex src,
int  shallow = 0 
) const

Create a copy of the source vertex. Regardless of the "shallow" parm, this method will copy the vertex attribute data. If not shallow, it will also copy the point attribute data and will assign the source point position to the destination point. If shallow, it will assign the source point offset to the destination.

Examples:
tetprim/GEO_PrimTetra.C.
void GEO_Detail::copyVertex ( GA_Offset  dest,
GA_Offset  src,
GA_AttributeRefMap vertex_attribs,
GA_AttributeRefMap point_attribs 
)

Create a copy of the source vertex, copying only the vertex attributes specified by "vertex_attribs" and only the point attributes specified by the optional "point_attribs". If "point_attribs" is nullptr, then a shallow point copy is performed wiring the source's point (if any) to dest.

void GEO_Detail::copyVertex ( GA_Offset  dest,
GA_Offset  src,
GA_VertexWrangler vertex_wrangler,
GA_PointWrangler point_wrangler 
)

Create a copy of the source vertex using the supplied wranglers to copy attributes. If "point_wrangler" is nullptr, then a shallow point copy is performed, wiring the source's point (if any) to dest.

void GEO_Detail::copyVertex ( GA_Offset  dest,
GA_Offset  src,
GA_VertexWrangler vertex_wrangler,
GA_PointWrangler point_wrangler,
bool  copy_point_p 
)

Create a copy of the source vertex using the supplied wranglers to copy attributes. Unlike the previous method which takes an optional "point_wrangler", this overload always performs a non-shallow point copy and specifies whether or not "P" should be copied, regardless of the setting of the point wrangler.

void GEO_Detail::copyVertexAttributes ( GEO_Vertex  dest,
const GEO_Vertex src 
) const

Copy vertex attributes from source to destination.

void GEO_Detail::copyVertexAttributes ( GA_Offset  dest,
GA_Offset  src,
GA_VertexWrangler wrangler 
) const
void GEO_Detail::countMemory ( UT_MemoryCounter counter,
bool  inclusive 
) const
overridevirtual

Count memory usage using a UT_MemoryCounter in order to count shared memory correctly. If inclusive is true, the size of this object is counted, else only memory owned by this object is counted. If this is pointed to by the calling object, inclusive should be true. If this is contained in the calling object, inclusive should be false. (Its memory was already counted in the size of the calling object.)

Reimplemented from GA_Detail.

Reimplemented in GU_Detail.

virtual void GEO_Detail::deleteBreakpoints ( const GA_BreakpointGroup bkptgrp)
virtual

Delete a whole group of breakpoints.

Note
The group is cleared when done (non-const operation)
SYS_FORCE_INLINE GA_Size GEO_Detail::deletePoints ( const GA_PointGroup point_group,
GA_DestroyPointMode  mode = GA_LEAVE_PRIMITIVES 
)
inline

Provide a few additional overloads of deletePoints() in addition to those available in GA_Detail.

Definition at line 1168 of file GEO_Detail.h.

GA_Size GEO_Detail::deletePoints ( const GA_Range range,
GA_DestroyPointMode  mode = GA_LEAVE_PRIMITIVES 
)
inline

GA uses "destroy" instead of "delete" as the verb. However, the old GEO/GB code made extensive use of "delete". These methods are to save the sanity of people trying to port code.

Definition at line 1217 of file GEO_Detail.h.

bool GEO_Detail::deletePrimitive ( GA_Primitive prim,
bool  and_points = false 
)
inline

GA uses "destroy" instead of "delete" as the verb. However, the old GEO/GB code made extensive use of "delete". These methods are to save the sanity of people trying to port code.

Examples:
tetprim/GEO_PrimTetra.C.

Definition at line 1222 of file GEO_Detail.h.

GA_Size GEO_Detail::deletePrimitives ( const GA_Range range,
bool  and_points = false 
)
inline

GA uses "destroy" instead of "delete" as the verb. However, the old GEO/GB code made extensive use of "delete". These methods are to save the sanity of people trying to port code.

Definition at line 1220 of file GEO_Detail.h.

GA_Size GEO_Detail::deletePrimitives ( const GA_PrimitiveGroup primGrp,
bool  and_points = false 
)

Provide a few additional overloads of deletePrimitives() in addition to those available in GA_Detail.

GA_Size GEO_Detail::deletePrimitives ( const UT_Array< GEO_Primitive * > &  prims_in,
bool  and_points = false 
)
bool GEO_Detail::demoteVertexAttrib ( GA_AttributeScope  scope,
const UT_StringRef name 
)
SYS_FORCE_INLINE bool GEO_Detail::demoteVertexAttrib ( const UT_StringRef name)
inline

Definition at line 1821 of file GEO_Detail.h.

void GEO_Detail::destroyAlphaAttribute ( GA_AttributeOwner  who)
void GEO_Detail::destroyAttribute ( GA_AttributeOwner  owner,
GA_AttributeScope  scope,
const UT_StringRef name,
const GA_AttributeFilter filter = 0 
)
SYS_FORCE_INLINE void GEO_Detail::destroyAttribute ( GA_AttributeOwner  owner,
const UT_StringRef name,
const GA_AttributeFilter filter = 0 
)
inline

Definition at line 2285 of file GEO_Detail.h.

void GEO_Detail::destroyCaptureFrameAttribute ( CaptureType  t = CAPTURE_BONE)

Destroy the detail's capture frame attribute for capture type t.

void GEO_Detail::destroyCaptureSkelRootAttribute ( CaptureType  t = CAPTURE_BONE)

Destroy the bone capture skeleton root detail attribute.

void GEO_Detail::destroyComAttribute ( GA_AttributeOwner  who)
void GEO_Detail::destroyDiffuseAttribute ( GA_AttributeOwner  who)
void GEO_Detail::destroyDistanceAttribute ( GA_AttributeOwner  who)
SYS_FORCE_INLINE void GEO_Detail::destroyGlobalAttrib ( GA_AttributeScope  scope,
const UT_StringRef n,
const GA_AttributeFilter filter = nullptr 
)
inline

Definition at line 1915 of file GEO_Detail.h.

SYS_FORCE_INLINE void GEO_Detail::destroyGlobalAttrib ( const UT_StringRef n,
const GA_AttributeFilter filter = nullptr 
)
inline

Definition at line 1920 of file GEO_Detail.h.

void GEO_Detail::destroyInternalNormalAttribute ( )
void GEO_Detail::destroyLODAttribute ( GA_AttributeOwner  who)
void GEO_Detail::destroyNormalAttribute ( GA_AttributeOwner  who)
SYS_FORCE_INLINE void GEO_Detail::destroyPointAttrib ( GA_AttributeScope  scope,
const UT_StringRef n,
const GA_AttributeFilter filter = nullptr 
)
inline

Definition at line 1739 of file GEO_Detail.h.

SYS_FORCE_INLINE void GEO_Detail::destroyPointAttrib ( const UT_StringRef n,
const GA_AttributeFilter filter = nullptr 
)
inline

Definition at line 1744 of file GEO_Detail.h.

void GEO_Detail::destroyPointCaptureAlphaAttribute ( )

Destroy the bone capture alpha point attribute.

void GEO_Detail::destroyPointCaptureAttribute ( CaptureType  t = CAPTURE_BONE)

Destroy the (region, weight) point capture point attribute for capture type t.

void GEO_Detail::destroyPointGroup ( GA_PointGroup g)
inline

Definition at line 2154 of file GEO_Detail.h.

bool GEO_Detail::destroyPointGroup ( const char *  name)
inline

Definition at line 2160 of file GEO_Detail.h.

SYS_FORCE_INLINE void GEO_Detail::destroyPrimAttrib ( GA_AttributeScope  scope,
const UT_StringRef n,
const GA_AttributeFilter filter = nullptr 
)
inline

Definition at line 1863 of file GEO_Detail.h.

SYS_FORCE_INLINE void GEO_Detail::destroyPrimAttrib ( const UT_StringRef n,
const GA_AttributeFilter filter = nullptr 
)
inline

Definition at line 1871 of file GEO_Detail.h.

void GEO_Detail::destroyPrimitiveGroup ( GA_PrimitiveGroup g)
inline

Definition at line 2156 of file GEO_Detail.h.

bool GEO_Detail::destroyPrimitiveGroup ( const char *  name)
inline

Definition at line 2163 of file GEO_Detail.h.

void GEO_Detail::destroyPtIndexPairAttribute ( const UT_StringRef name)

Destroy a custom (index, weight) point attribute.

void GEO_Detail::destroyRestAttribute ( GA_AttributeOwner  who)
void GEO_Detail::destroyTextureAttribute ( GA_AttributeOwner  who)
void GEO_Detail::destroyTubeCaptureAttribute ( )
void GEO_Detail::destroyVelocityAttribute ( GA_AttributeOwner  who)
SYS_FORCE_INLINE void GEO_Detail::destroyVertexAttrib ( GA_AttributeScope  scope,
const UT_StringRef n,
const GA_AttributeFilter filter = nullptr 
)
inline

Definition at line 1809 of file GEO_Detail.h.

SYS_FORCE_INLINE void GEO_Detail::destroyVertexAttrib ( const UT_StringRef n,
const GA_AttributeFilter filter = nullptr 
)
inline

Definition at line 1814 of file GEO_Detail.h.

void GEO_Detail::destroyVertexGroup ( GA_VertexGroup g)
inline

Definition at line 2158 of file GEO_Detail.h.

bool GEO_Detail::destroyVertexGroup ( const char *  name)
inline

Definition at line 2166 of file GEO_Detail.h.

void GEO_Detail::findAllPrimitivesByName ( UT_Array< const GEO_Primitive * > &  primlist,
const char *  nametomatch,
const GA_PrimCompat::TypeMask mask = GEO_PrimTypeCompat::GEOPRIMALL,
const char *  nameattrib = "name" 
) const

Like findPrimitiveByName, but adds all matching primitives to the list.

Examples:
SIM/GAS_NetVDBSliceExchange.C.
void GEO_Detail::findAllPrimitivesByName ( UT_Array< GEO_Primitive * > &  primlist,
const char *  nametomatch,
const GA_PrimCompat::TypeMask mask = GEO_PrimTypeCompat::GEOPRIMALL,
const char *  nameattrib = "name" 
)
const GA_Attribute* GEO_Detail::findAlphaAttribute ( GA_AttributeOwner  who) const
GA_Attribute* GEO_Detail::findAlphaAttribute ( GA_AttributeOwner  who)
const GA_Attribute* GEO_Detail::findCaptureFrameAttribute ( CaptureType  t = CAPTURE_BONE) const

Find the offset for the detail's capture frame attribute for capture type t.

GA_Attribute* GEO_Detail::findCaptureFrameAttribute ( CaptureType  t = CAPTURE_BONE)
const GA_Attribute* GEO_Detail::findCaptureSkelRootAttribute ( CaptureType  t = CAPTURE_BONE) const

Find the offset for the bone capture skeleton root detail attribute.

GA_Attribute* GEO_Detail::findCaptureSkelRootAttribute ( CaptureType  t = CAPTURE_BONE)
const GA_Attribute* GEO_Detail::findComAttribute ( GA_AttributeOwner  who) const
GA_Attribute* GEO_Detail::findComAttribute ( GA_AttributeOwner  who)
const GA_Attribute* GEO_Detail::findDictArray ( GA_AttributeOwner  owner,
GA_AttributeScope  scope,
const UT_StringRef name,
int  min_size = 1,
int  max_size = -1 
) const

Convenience method to find floating point, int, or string tuples of a specified size range. If max_size or min_size are <= 0, then we won't perform the corresponding size check.

SYS_FORCE_INLINE const GA_Attribute* GEO_Detail::findDictArray ( GA_AttributeOwner  owner,
const UT_StringRef name,
int  min_size = 1,
int  max_size = -1 
) const
inline

Convenience method to find floating point, int, or string tuples of a specified size range. If max_size or min_size are <= 0, then we won't perform the corresponding size check.

Definition at line 2540 of file GEO_Detail.h.

GA_Attribute* GEO_Detail::findDictArray ( GA_AttributeOwner  owner,
GA_AttributeScope  scope,
const UT_StringRef name,
int  min_size = 1,
int  max_size = -1 
)

Convenience method to find floating point, int, or string tuples of a specified size range. If max_size or min_size are <= 0, then we won't perform the corresponding size check.

SYS_FORCE_INLINE GA_Attribute* GEO_Detail::findDictArray ( GA_AttributeOwner  owner,
const UT_StringRef name,
int  min_size = 1,
int  max_size = -1 
)
inline

Convenience method to find floating point, int, or string tuples of a specified size range. If max_size or min_size are <= 0, then we won't perform the corresponding size check.

Definition at line 2552 of file GEO_Detail.h.

const GA_Attribute* GEO_Detail::findDictTuple ( GA_AttributeOwner  owner,
GA_AttributeScope  scope,
const UT_StringRef name,
int  min_size = 1,
int  max_size = -1 
) const

Convenience method to find floating point, int, or string tuples of a specified size range. If max_size or min_size are <= 0, then we won't perform the corresponding size check.

SYS_FORCE_INLINE const GA_Attribute* GEO_Detail::findDictTuple ( GA_AttributeOwner  owner,
const UT_StringRef name,
int  min_size = 1,
int  max_size = -1 
) const
inline

Convenience method to find floating point, int, or string tuples of a specified size range. If max_size or min_size are <= 0, then we won't perform the corresponding size check.

Definition at line 2401 of file GEO_Detail.h.

GA_Attribute* GEO_Detail::findDictTuple ( GA_AttributeOwner  owner,
GA_AttributeScope  scope,
const UT_StringRef name,
int  min_size = 1,
int  max_size = -1 
)

Convenience method to find floating point, int, or string tuples of a specified size range. If max_size or min_size are <= 0, then we won't perform the corresponding size check.

SYS_FORCE_INLINE GA_Attribute* GEO_Detail::findDictTuple ( GA_AttributeOwner  owner,
const UT_StringRef name,
int  min_size = 1,
int  max_size = -1 
)
inline

Convenience method to find floating point, int, or string tuples of a specified size range. If max_size or min_size are <= 0, then we won't perform the corresponding size check.

Definition at line 2413 of file GEO_Detail.h.

const GA_Attribute* GEO_Detail::findDiffuseAttribute ( GA_AttributeOwner  who) const
GA_Attribute* GEO_Detail::findDiffuseAttribute ( GA_AttributeOwner  who)
const GA_Attribute* GEO_Detail::findDistanceAttribute ( GA_AttributeOwner  who) const
GA_Attribute* GEO_Detail::findDistanceAttribute ( GA_AttributeOwner  who)
const GA_Attribute* GEO_Detail::findFloatArray ( GA_AttributeOwner  owner,
GA_AttributeScope  scope,
const UT_StringRef name,
int  min_size = 1,
int  max_size = -1 
) const

Convenience method to find floating point, int, or string tuples of a specified size range. If max_size or min_size are <= 0, then we won't perform the corresponding size check.

SYS_FORCE_INLINE const GA_Attribute* GEO_Detail::findFloatArray ( GA_AttributeOwner  owner,
const UT_StringRef name,
int  min_size = 1,
int  max_size = -1 
) const
inline

Convenience method to find floating point, int, or string tuples of a specified size range. If max_size or min_size are <= 0, then we won't perform the corresponding size check.

Definition at line 2444 of file GEO_Detail.h.

GA_Attribute* GEO_Detail::findFloatArray ( GA_AttributeOwner  owner,
GA_AttributeScope  scope,
const UT_StringRef name,
int  min_size = 1,
int  max_size = -1 
)

Convenience method to find floating point, int, or string tuples of a specified size range. If max_size or min_size are <= 0, then we won't perform the corresponding size check.

SYS_FORCE_INLINE GA_Attribute* GEO_Detail::findFloatArray ( GA_AttributeOwner  owner,
const UT_StringRef name,
int  min_size = 1,
int  max_size = -1 
)
inline

Convenience method to find floating point, int, or string tuples of a specified size range. If max_size or min_size are <= 0, then we won't perform the corresponding size check.

Definition at line 2456 of file GEO_Detail.h.

const GA_Attribute* GEO_Detail::findFloatTuple ( GA_AttributeOwner  owner,
GA_AttributeScope  scope,
const UT_StringRef name,
int  min_size = 1,
int  max_size = -1 
) const

Convenience method to find floating point, int, or string tuples of a specified size range. If max_size or min_size are <= 0, then we won't perform the corresponding size check.

Examples:
RAY/RAY_DemoSprite.C, SOP/SOP_BrushHairLen.C, SOP/SOP_CustomBrush.C, SOP/SOP_DetailAttrib.C, SOP/SOP_IKSample.C, and SOP/SOP_SParticle.C.
SYS_FORCE_INLINE const GA_Attribute* GEO_Detail::findFloatTuple ( GA_AttributeOwner  owner,
const UT_StringRef name,
int  min_size = 1,
int  max_size = -1 
) const
inline

Convenience method to find floating point, int, or string tuples of a specified size range. If max_size or min_size are <= 0, then we won't perform the corresponding size check.

Definition at line 2302 of file GEO_Detail.h.

GA_Attribute* GEO_Detail::findFloatTuple ( GA_AttributeOwner  owner,
GA_AttributeScope  scope,
const UT_StringRef name,
int  min_size = 1,
int  max_size = -1 
)

Convenience method to find floating point, int, or string tuples of a specified size range. If max_size or min_size are <= 0, then we won't perform the corresponding size check.

SYS_FORCE_INLINE GA_Attribute* GEO_Detail::findFloatTuple ( GA_AttributeOwner  owner,
const UT_StringRef name,
int  min_size = 1,
int  max_size = -1 
)
inline

Convenience method to find floating point, int, or string tuples of a specified size range. If max_size or min_size are <= 0, then we won't perform the corresponding size check.

Definition at line 2314 of file GEO_Detail.h.

SYS_FORCE_INLINE const GA_Attribute* GEO_Detail::findGlobalAttrib ( const GA_Attribute src) const
inline

Definition at line 1907 of file GEO_Detail.h.

SYS_FORCE_INLINE GA_Attribute* GEO_Detail::findGlobalAttrib ( const GA_Attribute src)
inline

Definition at line 1911 of file GEO_Detail.h.

const GA_Attribute* GEO_Detail::findIndexPair ( GA_AttributeOwner  owner,
GA_AttributeScope  scope,
const UT_StringRef name 
) const

Convenience method to find floating point, int, or string tuples of a specified size range. If max_size or min_size are <= 0, then we won't perform the corresponding size check.

SYS_FORCE_INLINE const GA_Attribute* GEO_Detail::findIndexPair ( GA_AttributeOwner  owner,
const UT_StringRef name 
) const
inline

Convenience method to find floating point, int, or string tuples of a specified size range. If max_size or min_size are <= 0, then we won't perform the corresponding size check.

Definition at line 2425 of file GEO_Detail.h.

GA_Attribute* GEO_Detail::findIndexPair ( GA_AttributeOwner  owner,
GA_AttributeScope  scope,
const UT_StringRef name 
)

Convenience method to find floating point, int, or string tuples of a specified size range. If max_size or min_size are <= 0, then we won't perform the corresponding size check.

SYS_FORCE_INLINE GA_Attribute* GEO_Detail::findIndexPair ( GA_AttributeOwner  owner,
const UT_StringRef name 
)
inline

Convenience method to find floating point, int, or string tuples of a specified size range. If max_size or min_size are <= 0, then we won't perform the corresponding size check.

Definition at line 2434 of file GEO_Detail.h.

const GA_Attribute* GEO_Detail::findIntArray ( GA_AttributeOwner  owner,
GA_AttributeScope  scope,
const UT_StringRef name,
int  min_size = 1,
int  max_size = -1 
) const

Convenience method to find floating point, int, or string tuples of a specified size range. If max_size or min_size are <= 0, then we won't perform the corresponding size check.

Examples:
SOP/SOP_ArrayAttrib.C.
SYS_FORCE_INLINE const GA_Attribute* GEO_Detail::findIntArray ( GA_AttributeOwner  owner,
const UT_StringRef name,
int  min_size = 1,
int  max_size = -1 
) const
inline

Convenience method to find floating point, int, or string tuples of a specified size range. If max_size or min_size are <= 0, then we won't perform the corresponding size check.

Definition at line 2468 of file GEO_Detail.h.

GA_Attribute* GEO_Detail::findIntArray ( GA_AttributeOwner  owner,
GA_AttributeScope  scope,
const UT_StringRef name,
int  min_size = 1,
int  max_size = -1 
)

Convenience method to find floating point, int, or string tuples of a specified size range. If max_size or min_size are <= 0, then we won't perform the corresponding size check.

SYS_FORCE_INLINE GA_Attribute* GEO_Detail::findIntArray ( GA_AttributeOwner  owner,
const UT_StringRef name,
int  min_size = 1,
int  max_size = -1 
)
inline

Convenience method to find floating point, int, or string tuples of a specified size range. If max_size or min_size are <= 0, then we won't perform the corresponding size check.

Definition at line 2480 of file GEO_Detail.h.

const GA_Attribute* GEO_Detail::findInternalNormalAttribute ( ) const

The internal normal attribute is always a point attribute

Todo:
Remove internalN code path with the H11 viewport?
GA_Attribute* GEO_Detail::findInternalNormalAttribute ( )
const GA_Attribute* GEO_Detail::findIntTuple ( GA_AttributeOwner  owner,
GA_AttributeScope  scope,
const UT_StringRef name,
int  min_size = 1,
int  max_size = -1 
) const

Convenience method to find floating point, int, or string tuples of a specified size range. If max_size or min_size are <= 0, then we won't perform the corresponding size check.

Examples:
euclid/SOP_Euclid.C.
SYS_FORCE_INLINE const GA_Attribute* GEO_Detail::findIntTuple ( GA_AttributeOwner  owner,
const UT_StringRef name,
int  min_size = 1,
int  max_size = -1 
) const
inline

Convenience method to find floating point, int, or string tuples of a specified size range. If max_size or min_size are <= 0, then we won't perform the corresponding size check.

Definition at line 2326 of file GEO_Detail.h.

GA_Attribute* GEO_Detail::findIntTuple ( GA_AttributeOwner  owner,
GA_AttributeScope  scope,
const UT_StringRef name,
int  min_size = 1,
int  max_size = -1 
)

Convenience method to find floating point, int, or string tuples of a specified size range. If max_size or min_size are <= 0, then we won't perform the corresponding size check.

SYS_FORCE_INLINE GA_Attribute* GEO_Detail::findIntTuple ( GA_AttributeOwner  owner,
const UT_StringRef name,
int  min_size = 1,
int  max_size = -1 
)
inline

Convenience method to find floating point, int, or string tuples of a specified size range. If max_size or min_size are <= 0, then we won't perform the corresponding size check.

Definition at line 2338 of file GEO_Detail.h.

const GA_Attribute* GEO_Detail::findLODAttribute ( GA_AttributeOwner  who) const
GA_Attribute* GEO_Detail::findLODAttribute ( GA_AttributeOwner  who)
GA_ROHandleS GEO_Detail::findMaterialAttribute ( GA_AttributeOwner  who) const

Find the material attribute if it exists. This checks for the GEO_STD_ATTRIB_MATERIAL name.

const GA_Attribute* GEO_Detail::findNormalAttribute ( GA_AttributeOwner  who) const
GA_Attribute* GEO_Detail::findNormalAttribute ( GA_AttributeOwner  who)
const GA_Attribute* GEO_Detail::findNumericArray ( GA_AttributeOwner  owner,
GA_AttributeScope  scope,
const UT_StringRef name,
int  min_size = 1,
int  max_size = -1 
) const

Convenience method to find floating point, int, or string tuples of a specified size range. If max_size or min_size are <= 0, then we won't perform the corresponding size check.

SYS_FORCE_INLINE const GA_Attribute* GEO_Detail::findNumericArray ( GA_AttributeOwner  owner,
const UT_StringRef name,
int  min_size = 1,
int  max_size = -1 
) const
inline

Convenience method to find floating point, int, or string tuples of a specified size range. If max_size or min_size are <= 0, then we won't perform the corresponding size check.

Definition at line 2492 of file GEO_Detail.h.

GA_Attribute* GEO_Detail::findNumericArray ( GA_AttributeOwner  owner,
GA_AttributeScope  scope,
const UT_StringRef name,
int  min_size = 1,
int  max_size = -1 
)

Convenience method to find floating point, int, or string tuples of a specified size range. If max_size or min_size are <= 0, then we won't perform the corresponding size check.

SYS_FORCE_INLINE GA_Attribute* GEO_Detail::findNumericArray ( GA_AttributeOwner  owner,
const UT_StringRef name,
int  min_size = 1,
int  max_size = -1 
)
inline

Convenience method to find floating point, int, or string tuples of a specified size range. If max_size or min_size are <= 0, then we won't perform the corresponding size check.

Definition at line 2504 of file GEO_Detail.h.

const GA_Attribute* GEO_Detail::findNumericTuple ( GA_AttributeOwner  owner,
GA_AttributeScope  scope,
const UT_StringRef name,
int  min_size = 1,
int  max_size = -1 
) const

findNumericTuple will find either float or int.

SYS_FORCE_INLINE const GA_Attribute* GEO_Detail::findNumericTuple ( GA_AttributeOwner  owner,
const UT_StringRef name,
int  min_size = 1,
int  max_size = -1 
) const
inline

Convenience method to find floating point, int, or string tuples of a specified size range. If max_size or min_size are <= 0, then we won't perform the corresponding size check.

Definition at line 2351 of file GEO_Detail.h.

GA_Attribute* GEO_Detail::findNumericTuple ( GA_AttributeOwner  owner,
GA_AttributeScope  scope,
const UT_StringRef name,
int  min_size = 1,
int  max_size = -1 
)

findNumericTuple will find either float or int.

SYS_FORCE_INLINE GA_Attribute* GEO_Detail::findNumericTuple ( GA_AttributeOwner  owner,
const UT_StringRef name,
int  min_size = 1,
int  max_size = -1 
)
inline

Convenience method to find floating point, int, or string tuples of a specified size range. If max_size or min_size are <= 0, then we won't perform the corresponding size check.

Definition at line 2364 of file GEO_Detail.h.

SYS_FORCE_INLINE const GA_Attribute* GEO_Detail::findPointAttrib ( const GA_Attribute src) const
inline

Replace old findPointAttribute(const char *name...) with findIntTuple(GA_ATTRIB_POINT, ...), findFloatTuple(), findStringTuple(), etc.

Definition at line 1714 of file GEO_Detail.h.

SYS_FORCE_INLINE GA_Attribute* GEO_Detail::findPointAttrib ( const GA_Attribute src)
inline

Definition at line 1718 of file GEO_Detail.h.

const GA_Attribute* GEO_Detail::findPointCaptureAlphaAttribute ( ) const

Find the offset for the bone capture alpha point attribute.

GA_Attribute* GEO_Detail::findPointCaptureAlphaAttribute ( )
const GA_Attribute* GEO_Detail::findPointCaptureAttribute ( CaptureType  t = CAPTURE_BONE) const

Find the offset for the (region, weight) point capture point attribute for capture type t.

GA_Attribute* GEO_Detail::findPointCaptureAttribute ( CaptureType  t = CAPTURE_BONE)
SYS_FORCE_INLINE const GA_Attribute* GEO_Detail::findPointVectorAttrib ( GA_AttributeScope  s,
const UT_StringRef n 
) const
inline

Looks for a 3-float point attribute.

Definition at line 1724 of file GEO_Detail.h.

SYS_FORCE_INLINE const GA_Attribute* GEO_Detail::findPointVectorAttrib ( const UT_StringRef n) const
inline

Definition at line 1728 of file GEO_Detail.h.

SYS_FORCE_INLINE GA_Attribute* GEO_Detail::findPointVectorAttrib ( GA_AttributeScope  s,
const UT_StringRef n 
)
inline

Definition at line 1731 of file GEO_Detail.h.

SYS_FORCE_INLINE GA_Attribute* GEO_Detail::findPointVectorAttrib ( const UT_StringRef n)
inline

Definition at line 1735 of file GEO_Detail.h.

SYS_FORCE_INLINE const GA_Attribute* GEO_Detail::findPrimAttrib ( const GA_Attribute src) const
inline

Replace old findPrimAttribute(const char *name...) with findIntTuple(GA_ATTRIB_PRIMITIVE, ...), findFloatTuple(), findStringTuple(), etc.

Definition at line 1854 of file GEO_Detail.h.

SYS_FORCE_INLINE GA_Attribute* GEO_Detail::findPrimAttrib ( const GA_Attribute src)
inline

Definition at line 1858 of file GEO_Detail.h.

const GEO_Primitive* GEO_Detail::findPrimitiveByName ( const char *  nametomatch,
const GA_PrimCompat::TypeMask mask = GEO_PrimTypeCompat::GEOPRIMALL,
const char *  nameattrib = "name",
int  matchnumber = 0 
) const

Searches primitive list for a primitive whose name attribute matches the given name. UT_String::multiMatch is used for comparison so searching for Cd.* will return as expected. Returns the matchnumberth matching primitive.

GEO_Primitive* GEO_Detail::findPrimitiveByName ( const char *  nametomatch,
const GA_PrimCompat::TypeMask mask = GEO_PrimTypeCompat::GEOPRIMALL,
const char *  nameattrib = "name",
int  matchnumber = 0 
)
const GA_Attribute* GEO_Detail::findPtIndexPairAttribute ( const UT_StringRef name) const

Find the offset for a custom (index, weight) point attribute.

GA_Attribute* GEO_Detail::findPtIndexPairAttribute ( const UT_StringRef name)
const GA_Attribute* GEO_Detail::findRestAttribute ( GA_AttributeOwner  who) const
GA_Attribute* GEO_Detail::findRestAttribute ( GA_AttributeOwner  who)
const GA_Attribute* GEO_Detail::findStringArray ( GA_AttributeOwner  owner,
GA_AttributeScope  scope,
const UT_StringRef name,
int  min_size = 1,
int  max_size = -1 
) const

Convenience method to find floating point, int, or string tuples of a specified size range. If max_size or min_size are <= 0, then we won't perform the corresponding size check.

SYS_FORCE_INLINE const GA_Attribute* GEO_Detail::findStringArray ( GA_AttributeOwner  owner,
const UT_StringRef name,
int  min_size = 1,
int  max_size = -1 
) const
inline

Convenience method to find floating point, int, or string tuples of a specified size range. If max_size or min_size are <= 0, then we won't perform the corresponding size check.

Definition at line 2516 of file GEO_Detail.h.

GA_Attribute* GEO_Detail::findStringArray ( GA_AttributeOwner  owner,
GA_AttributeScope  scope,
const UT_StringRef name,
int  min_size = 1,
int  max_size = -1 
)

Convenience method to find floating point, int, or string tuples of a specified size range. If max_size or min_size are <= 0, then we won't perform the corresponding size check.

SYS_FORCE_INLINE GA_Attribute* GEO_Detail::findStringArray ( GA_AttributeOwner  owner,
const UT_StringRef name,
int  min_size = 1,
int  max_size = -1 
)
inline

Convenience method to find floating point, int, or string tuples of a specified size range. If max_size or min_size are <= 0, then we won't perform the corresponding size check.

Definition at line 2528 of file GEO_Detail.h.

const GA_Attribute* GEO_Detail::findStringTuple ( GA_AttributeOwner  owner,
GA_AttributeScope  scope,
const UT_StringRef name,
int  min_size = 1,
int  max_size = -1 
) const

Convenience method to find floating point, int, or string tuples of a specified size range. If max_size or min_size are <= 0, then we won't perform the corresponding size check.

Examples:
RAY/RAY_DemoSprite.C.
SYS_FORCE_INLINE const GA_Attribute* GEO_Detail::findStringTuple ( GA_AttributeOwner  owner,
const UT_StringRef name,
int  min_size = 1,
int  max_size = -1 
) const
inline

Convenience method to find floating point, int, or string tuples of a specified size range. If max_size or min_size are <= 0, then we won't perform the corresponding size check.

Definition at line 2376 of file GEO_Detail.h.

GA_Attribute* GEO_Detail::findStringTuple ( GA_AttributeOwner  owner,
GA_AttributeScope  scope,
const UT_StringRef name,
int  min_size = 1,
int  max_size = -1 
)

Convenience method to find floating point, int, or string tuples of a specified size range. If max_size or min_size are <= 0, then we won't perform the corresponding size check.

SYS_FORCE_INLINE GA_Attribute* GEO_Detail::findStringTuple ( GA_AttributeOwner  owner,
const UT_StringRef name,
int  min_size = 1,
int  max_size = -1 
)
inline

Convenience method to find floating point, int, or string tuples of a specified size range. If max_size or min_size are <= 0, then we won't perform the corresponding size check.

Definition at line 2388 of file GEO_Detail.h.

const GA_Attribute* GEO_Detail::findTextureAttribute ( GA_AttributeOwner  who) const
GA_Attribute* GEO_Detail::findTextureAttribute ( GA_AttributeOwner  who)
const GA_Attribute* GEO_Detail::findTubeCaptureAttribute ( ) const
GA_Attribute* GEO_Detail::findTubeCaptureAttribute ( )
const GA_Attribute* GEO_Detail::findVelocityAttribute ( GA_AttributeOwner  who) const
GA_Attribute* GEO_Detail::findVelocityAttribute ( GA_AttributeOwner  who)
SYS_FORCE_INLINE const GA_Attribute* GEO_Detail::findVertexAttrib ( const GA_Attribute src) const
inline

Replace old findVertexAttribute(const char *name...) with findIntTuple(GA_ATTRIB_VERTEX, ...), findFloatTuple(), findStringTuple(), etc.

Definition at line 1784 of file GEO_Detail.h.

SYS_FORCE_INLINE GA_Attribute* GEO_Detail::findVertexAttrib ( const GA_Attribute src)
inline

Definition at line 1788 of file GEO_Detail.h.

SYS_FORCE_INLINE const GA_Attribute* GEO_Detail::findVertexVectorAttrib ( GA_AttributeScope  s,
const UT_StringRef n 
) const
inline

Looks for a 3-float vertex attribute.

Definition at line 1794 of file GEO_Detail.h.

SYS_FORCE_INLINE const GA_Attribute* GEO_Detail::findVertexVectorAttrib ( const UT_StringRef n) const
inline

Definition at line 1798 of file GEO_Detail.h.

SYS_FORCE_INLINE GA_Attribute* GEO_Detail::findVertexVectorAttrib ( GA_AttributeScope  s,
const UT_StringRef n 
)
inline

Definition at line 1801 of file GEO_Detail.h.

SYS_FORCE_INLINE GA_Attribute* GEO_Detail::findVertexVectorAttrib ( const UT_StringRef n)
inline

Definition at line 1805 of file GEO_Detail.h.

void GEO_Detail::fixSplineWeights ( )

The following method will fix all rational curve/patch weights by flagging the curve/patch appropriately. It is quite expensive since it traverses the entire primitive list. Only call it as a last resort.

GEO_AttributeHandle GEO_Detail::getAttribute ( GA_AttributeOwner  dict,
const char *  attrib_name 
) const
GEO_AttributeHandle GEO_Detail::getAttribute ( GA_AttributeOwner  dict,
const char *  attrib_name 
)
int GEO_Detail::getAttributeLayer ( const char *  attr_name) const
bool GEO_Detail::getBBox ( UT_BoundingBox bbox,
const GA_PrimitiveGroup g = nullptr 
) const
bool GEO_Detail::getBBox ( UT_BoundingBox bbox,
const UT_Matrix4R transform,
const GA_PrimitiveGroup g = nullptr 
) const

Find the bounding box (optionally of a group of primitives) of transformed instantiation. Returns false if the box is empty and true otherwise.

bool GEO_Detail::getBreakpointBBox ( UT_BoundingBox bbox,
const GA_BreakpointGroup grp 
) const
bool GEO_Detail::getBreakpointBBox ( UT_BoundingBox bbox,
const UT_Matrix4R transform,
const GA_BreakpointGroup grp 
) const
bool GEO_Detail::getBreakpointBSphere ( UT_BoundingSphere bsphere,
const GA_BreakpointGroup grp,
bool  accurate_bounds = false 
) const
bool GEO_Detail::getBSphere ( UT_BoundingSphere bsphere,
const GA_PrimitiveGroup g = nullptr,
bool  accurate_bounds = false 
) const
int GEO_Detail::getCaptureRegionIndex ( const UT_String cregion_name,
CaptureType  t = CAPTURE_BONE 
)

Given a string representing a capture region for type t, return that region's index. -1 is returned if no index exists.

bool GEO_Detail::getCaptureRegionRootPath ( UT_String root_path,
CaptureType  t = CAPTURE_BONE 
) const
float GEO_Detail::getCaptureWeight ( int  cregion_index,
GA_Offset  ptoff,
CaptureType  t = CAPTURE_BONE 
) const

Get the capture weight of a point.

void GEO_Detail::getCaptureWeights ( GA_Offset  ptoff,
UT_IntArray regions,
UT_FloatArray weights,
CaptureType  t = CAPTURE_BONE 
) const
int GEO_Detail::getCurrentLayer ( ) const

These handle layers:

GEO_AttributeHandle GEO_Detail::getDetailAttribute ( const char *  attrib_name) const
GEO_AttributeHandle GEO_Detail::getDetailAttribute ( const char *  attrib_name)
GA_Size GEO_Detail::getEdgeAdjacentPolygons ( GEO_EdgeAdjArray adjacencies,
GA_Offset  poly_off 
) const
GA_Size GEO_Detail::getEdgeAdjacentPolygons ( GA_OffsetArray polygons,
GA_Offset  poly_off 
) const
bool GEO_Detail::getEdgeBBox ( UT_BoundingBox bbox,
const GA_EdgeGroup grp 
) const
bool GEO_Detail::getEdgeBBox ( UT_BoundingBox bbox,
const UT_Matrix4R transform,
const GA_EdgeGroup grp 
) const
bool GEO_Detail::getEdgeBSphere ( UT_BoundingSphere bsphere,
const GA_EdgeGroup grp,
bool  accurate_bounds = false 
) const
SYS_FORCE_INLINE GEO_Primitive* GEO_Detail::getGEOPrimitive ( GA_Offset  primoff)
inline

Get a GEO_Primitive pointer by primitive offset

Examples:
SOP/SOP_PrimVOP.C, SOP/SOP_Surface.C, and tetprim/GT_PrimTetra.C.

Definition at line 1177 of file GEO_Detail.h.

SYS_FORCE_INLINE const GEO_Primitive* GEO_Detail::getGEOPrimitive ( GA_Offset  off) const
inline

Get a GEO_Primitive pointer by primitive offset

Definition at line 1186 of file GEO_Detail.h.

GEO_Primitive* GEO_Detail::getGEOPrimitiveByIndex ( GA_Index  idx)
inline

Get a GEO_Primitive pointer by primitive index

Definition at line 1197 of file GEO_Detail.h.

const GEO_Primitive* GEO_Detail::getGEOPrimitiveByIndex ( GA_Index  idx) const
inline

Get a GEO_Primitive pointer by primitive index

Definition at line 1204 of file GEO_Detail.h.

bool GEO_Detail::getGroupBBox ( UT_BoundingBox bbox,
const GA_Group grp 
) const
bool GEO_Detail::getGroupBBox ( UT_BoundingBox bbox,
const UT_Matrix4R transform,
const GA_Group grp 
) const
bool GEO_Detail::getGroupBSphere ( UT_BoundingSphere bsphere,
const GA_Group grp,
bool  accurate_bounds 
) const
void GEO_Detail::getLayerMerge ( int preclear,
int mask,
int srcblend,
int dstblend 
) const
int64 GEO_Detail::getMemoryUsage ( bool  inclusive) const
overridevirtual

Compute memory usage (includes all shared memory)

Reimplemented from GA_Detail.

Reimplemented in GU_Detail, and GOP_Guide.

GA_Size GEO_Detail::getMetaCount ( ) const
bool GEO_Detail::getMetaRestAnchorPath ( UT_String anchorPath) const

Retrieve the restAnchor string attribute from this gdp, if it exists - return true if successful

int GEO_Detail::getNumLayers ( ) const
GA_Size GEO_Detail::getParticleCount ( ) const
GA_Size GEO_Detail::getPastedCount ( ) const
GA_Size GEO_Detail::getPointAdjacentPolygons ( GEO_PointAdjArray adjacencies,
GA_Offset  poly_off 
) const
GA_Size GEO_Detail::getPointAdjacentPolygons ( GA_OffsetArray polygons,
GA_Offset  poly_off 
) const
bool GEO_Detail::getPointAttribBBox ( const UT_StringRef name,
UT_BoundingBox bbox,
const GA_PointGroup g = nullptr 
) const

The following method computes either a 2D or 3D bounding box for the specified float attribute.

bool GEO_Detail::getPointAttribBBox ( const UT_StringRef name,
UT_BoundingBox bbox,
const GA_PrimitiveGroup g 
) const
bool GEO_Detail::getPointAttribBBox ( const UT_StringRef name,
UT_BoundingBox bbox,
const GA_EdgeGroup g 
) const
bool GEO_Detail::getPointAttribBBox ( const UT_StringRef name,
UT_BoundingBox bbox,
const GA_VertexGroup g 
) const
template<typename T >
bool GEO_Detail::getPointAttribCentroid ( UT_Vector3T< T > &  centroid,
const GA_Attribute attrib,
const GA_PointGroup grp = nullptr 
) const

Compute the 3D centroid with the given attribute and group. typename T can either be single or double precision. Returns false if there are no points. Behaviour is undefined if the attribute has less than 3 components.

bool GEO_Detail::getPointAttribGroupBBox ( const UT_StringRef name,
UT_BoundingBox bbox,
const GA_Group grp 
) const
GEO_AttributeHandle GEO_Detail::getPointAttribute ( const char *  attrib_name) const

Methods for dealing with attribute handles. It is important to note that the const methods return READ-ONLY handles which will fail when any write methods are called.

Examples:
SIM/SNOW_Solver.C.
GEO_AttributeHandle GEO_Detail::getPointAttribute ( const char *  attrib_name)
bool GEO_Detail::getPointBBox ( UT_BoundingBox bbox,
const GA_PointGroup g = nullptr 
) const

Find the bounding box (optionally of a group of points) instantiation. Returns false if the box is empty and true otherwise.

bool GEO_Detail::getPointBBox ( UT_BoundingBox bbox,
const UT_Matrix4R transform,
const GA_PointGroup g = nullptr 
) const
bool GEO_Detail::getPointBSphere ( UT_BoundingSphere bsphere,
const GA_PointGroup g = nullptr,
bool  accurate_bounds = false 
) const
static const UT_StringHolder& GEO_Detail::getPointCaptureAttribName ( CaptureType  type)
static

Get the name of the point attribute which contains (region, weight) pairs of capture data.

static const char* GEO_Detail::getPointCaptureDataPropertyName ( CaptureType  type)
static

Get the name of the property for capture data (usually, a linear array of transformation matrices + possibly other data). Returns nullptr if a capture type doesn't use a capture data attribute.

static const UT_StringHolder& GEO_Detail::getPointCaptureFrameAttribName ( CaptureType  type)
static

Get the name of the detail attribute for capture frame. Returns nullptr if a capture type doesn't use capture frame.

static const char* GEO_Detail::getPointCaptureIndexPropertyName ( CaptureType  type)
static

Get the name of the property which contains an index of region names (like capture regions and metaball groups). Returns nullptr if no such region mapping exists for a type.

static const UT_StringHolder& GEO_Detail::getPointCaptureRootAttribName ( CaptureType  type)
static

Get the name of the detail attribute for capture root. Returns nullptr if a capture type doesn't use capture frame.

GA_Size GEO_Detail::getPointGroupAdjacentToPrimitiveGroup ( const GA_PrimitiveGroup in_prim_grp,
GA_PointGroup adj_pt_grp 
)

Convenience routines to retrieve a group of points referenced by a range/group of primitives. These routines assume that the point group pointer is not nullptr and return the size of the resulting point group.

GA_Size GEO_Detail::getPointGroupAdjacentToPrimitiveRange ( const GA_Range in_prim_rng,
GA_PointGroup adj_pt_rng 
)

Convenience routines to retrieve a group of points referenced by a range/group of primitives. These routines assume that the point group pointer is not nullptr and return the size of the resulting point group.

GEO_AttributeHandle GEO_Detail::getPrimAttribute ( const char *  attrib_name) const
GEO_AttributeHandle GEO_Detail::getPrimAttribute ( const char *  attrib_name)
GA_Size GEO_Detail::getQuadricCount ( ) const
bool GEO_Detail::getStandardAttributes ( const char *  s,
GEO_Standard_Attributes a 
)
UT_StringHolder GEO_Detail::getStdAttributeName ( GEO_Standard_Attributes  name,
int  layer = -1 
) const

You should never assume that "uv" is textures! Note that Point capture is still special cased. If the supplied layer is <= 0, then the current layer is used. To extract all the layers names, one should do: for (layer = 1; layer <= getNumLayers(); layer++) layername[layer] = getStdAttributeName(..., layer);

WARNING: The returned UT_StringHolder may own the string it references, so you must either assign it to a UT_StringHolder or UT_String, or pass it to a function that takes a UT_StringHolder, UT_StringRef, const UT_StringHolder&, or const UT_StringRef&. DO NOT assign it to a const char* variable! The UT_StringHolder will be destructed immediately after the assignment, deleting the string that the const char* points to!

Examples:
SIM/SIM_SolverHair.C.
static GA_TypeInfo GEO_Detail::getStdAttributeTypeInfo ( const char *  name,
int  floattuplesize 
)
static
void GEO_Detail::getVariableNameMap ( UT_String result) const

This gets a raw list of the variable maps suitable for caching to see if they changed.

bool GEO_Detail::getVertexAttribBBox ( const UT_StringRef name,
UT_BoundingBox bbox,
const GA_PointGroup g = nullptr 
) const
bool GEO_Detail::getVertexAttribBBox ( const UT_StringRef name,
UT_BoundingBox bbox,
const GA_PrimitiveGroup g 
) const
bool GEO_Detail::getVertexAttribBBox ( const UT_StringRef name,
UT_BoundingBox bbox,
const GA_EdgeGroup g 
) const
bool GEO_Detail::getVertexAttribBBox ( const UT_StringRef name,
UT_BoundingBox bbox,
const GA_VertexGroup g 
) const
bool GEO_Detail::getVertexAttribGroupBBox ( const UT_StringRef name,
UT_BoundingBox bbox,
const GA_Group grp 
) const
GEO_AttributeHandle GEO_Detail::getVertexAttribute ( const char *  attrib_name) const
GEO_AttributeHandle GEO_Detail::getVertexAttribute ( const char *  attrib_name)
bool GEO_Detail::getVertexBBox ( UT_BoundingBox bbox,
const GA_VertexGroup g = nullptr 
) const
bool GEO_Detail::getVertexBBox ( UT_BoundingBox bbox,
const UT_Matrix4R transform,
const GA_VertexGroup g = nullptr 
) const
GA_Size GEO_Detail::getVertexGroupAdjacentToPrimitiveGroup ( const GA_PrimitiveGroup in_prim_grp,
GA_VertexGroup adj_vtx_grp 
)

Convenience routines to retrieve a group of points referenced by a range/group of primitives. These routines assume that the point group pointer is not nullptr and return the size of the resulting point group.

GA_Size GEO_Detail::getVertexGroupAdjacentToPrimitiveRange ( const GA_Range in_prim_rng,
GA_VertexGroup adj_vtx_rng 
)

Convenience routines to retrieve a group of points referenced by a range/group of primitives. These routines assume that the point group pointer is not nullptr and return the size of the resulting point group.

void GEO_Detail::getVertexNormals ( UT_Vector3Array output) const

Add and compute vertex normal attributes. Returns the normals.

bool GEO_Detail::getVisibleBBox ( UT_BoundingBox bbox,
const UT_Matrix4R transform = nullptr,
const GA_PrimitiveGroup g = nullptr 
) const

Find bounding box of visible primitives. Returns false if the box is empty and true otherwise.

GA_Size GEO_Detail::getVolumeCount ( ) const
GA_Attribute* GEO_Detail::growPointCaptureAttribute ( geo_NPairs  num_added_pairs,
CaptureType  t = CAPTURE_BONE 
)

increase the memory size of the attribute

GA_Attribute* GEO_Detail::growTuple ( GA_AttributeOwner  owner,
GA_AttributeScope  scope,
const UT_StringRef name,
int  added_size 
)
SYS_FORCE_INLINE GA_Attribute* GEO_Detail::growTuple ( GA_AttributeOwner  owner,
const UT_StringRef name,
int  added_size 
)
inline

Definition at line 2274 of file GEO_Detail.h.

bool GEO_Detail::hasChannelPrimitives ( ) const
bool GEO_Detail::hasCustomPrimitives ( ) const

Check to see whether the detail has any custom primitive types (i.e. non-factory primitives)

bool GEO_Detail::hasMetaPrimitives ( ) const
bool GEO_Detail::hasParticlePrimitives ( ) const
bool GEO_Detail::hasPastedPrimitives ( ) const
bool GEO_Detail::hasQuadricPrimitives ( ) const
bool GEO_Detail::hasTransformingPrimitives ( ) const
bool GEO_Detail::hasVolumePrimitives ( ) const
GA_Offset GEO_Detail::insertPointCopy ( GA_Offset  src,
GA_PointWrangler wrangler,
GA_Index  beforeWhich = GA_INVALID_INDEX 
)

Insert a point, copying data from the source point. If the beforeWhich index isn't specified, the point will be added at the end of the point list.

GA_Offset GEO_Detail::insertPointCopy ( GA_Offset  src,
GA_Index  beforeWhich = GA_INVALID_INDEX 
)

Insert a point, copying data from the source point. If the beforeWhich index isn't specified, the point will be added at the end of the point list.

Note
It is more efficient to use the GA_PointWrangler version.
GA_Offset GEO_Detail::insertPointOffset ( GA_Index  beforeWhich = GA_INVALID_INDEX)

Methods for adding to the point list.

GEO_Primitive* GEO_Detail::insertPrimitive ( const GA_PrimitiveTypeId type,
const GEO_Primitive beforeWhich = nullptr 
)

Inserting and appending a new primitive Insertion works the same way as insertion of points. However, the primitive is not allocated beforehand, leaving this to the allocator. If the source primitive is from another detail, our primitive attribute dictionary must be an extension of that detail's (see sortAllAttributes()). Note that this last condition is the reverse of that for inserting or appending a copy of a point.

GA_Detail::IOStatus GEO_Detail::loadH9 ( UT_IStream is,
const GA_LoadOptions options 
)
protected
GA_Size GEO_Detail::localGetIntrinsicD ( GA_IntrinsicEval eval,
UT_OptionsHolder value 
) const
overrideprotectedvirtual

Virtual implementation of intrinsic attributes. See GA_IntrinsicEval for further details.

Reimplemented from GA_Detail.

GA_Size GEO_Detail::localGetIntrinsicDA ( GA_IntrinsicEval eval,
UT_Array< UT_OptionsHolder > &  value 
) const
overrideprotectedvirtual

Virtual implementation of intrinsic attributes. See GA_IntrinsicEval for further details.

Reimplemented from GA_Detail.

GA_Size GEO_Detail::localGetIntrinsicF ( GA_IntrinsicEval eval,
fpreal64 value,
GA_Size  size 
) const
overrideprotectedvirtual

Virtual implementation of intrinsic attributes. See GA_IntrinsicEval for further details.

Reimplemented from GA_Detail.

GA_Size GEO_Detail::localGetIntrinsicI ( GA_IntrinsicEval eval,
int64 value,
GA_Size  size 
) const
overrideprotectedvirtual

Virtual implementation of intrinsic attributes. See GA_IntrinsicEval for further details.

Reimplemented from GA_Detail.

GA_Size GEO_Detail::localGetIntrinsicS ( GA_IntrinsicEval eval,
UT_String value 
) const
overrideprotectedvirtual

Virtual implementation of intrinsic attributes. See GA_IntrinsicEval for further details.

Reimplemented from GA_Detail.

GA_Size GEO_Detail::localGetIntrinsicSA ( GA_IntrinsicEval eval,
UT_StringArray value 
) const
overrideprotectedvirtual

Virtual implementation of intrinsic attributes. See GA_IntrinsicEval for further details.

Reimplemented from GA_Detail.

GA_Size GEO_Detail::localIntrinsicTupleSize ( GA_IntrinsicEval eval) const
overrideprotectedvirtual

Virtual implementation of intrinsic attributes. See GA_IntrinsicEval for further details.

Reimplemented from GA_Detail.

GA_Size GEO_Detail::localSetIntrinsicDA ( GA_IntrinsicEval eval,
const UT_Array< UT_OptionsHolder > &  value 
)
overrideprotectedvirtual

Virtual implementation of intrinsic attributes. See GA_IntrinsicEval for further details.

Reimplemented from GA_Detail.

GA_Size GEO_Detail::localSetIntrinsicDS ( GA_IntrinsicEval eval,
const UT_OptionsHolder value,
GA_Size  size 
)
overrideprotectedvirtual

Virtual implementation of intrinsic attributes. See GA_IntrinsicEval for further details.

Reimplemented from GA_Detail.

GA_Size GEO_Detail::localSetIntrinsicF ( GA_IntrinsicEval eval,
const fpreal64 value,
GA_Size  size 
)
overrideprotectedvirtual

Virtual implementation of intrinsic attributes. See GA_IntrinsicEval for further details.

Reimplemented from GA_Detail.

GA_Size GEO_Detail::localSetIntrinsicI ( GA_IntrinsicEval eval,
const int64 value,
GA_Size  size 
)
overrideprotectedvirtual

Virtual implementation of intrinsic attributes. See GA_IntrinsicEval for further details.

Reimplemented from GA_Detail.

GA_Size GEO_Detail::localSetIntrinsicS ( GA_IntrinsicEval eval,
const char *  value 
)
overrideprotectedvirtual

Virtual implementation of intrinsic attributes. See GA_IntrinsicEval for further details.

Reimplemented from GA_Detail.

GA_Size GEO_Detail::localSetIntrinsicSA ( GA_IntrinsicEval eval,
const UT_StringArray value 
)
overrideprotectedvirtual

Virtual implementation of intrinsic attributes. See GA_IntrinsicEval for further details.

Reimplemented from GA_Detail.

GA_Size GEO_Detail::localSetIntrinsicSS ( GA_IntrinsicEval eval,
const char **  value,
GA_Size  size 
)
overrideprotectedvirtual

Virtual implementation of intrinsic attributes. See GA_IntrinsicEval for further details.

Reimplemented from GA_Detail.

template<typename FLT >
static UT_Matrix4T<FLT> GEO_Detail::localSpaceXformMatrix ( const UT_XformOrder order,
const LocalXformContextT< FLT > &  local_frame,
FLT  tx,
FLT  ty,
FLT  tz,
FLT  rx,
FLT  ry,
FLT  rz,
FLT  sx,
FLT  sy,
FLT  sz,
FLT  s_xy,
FLT  s_xz,
FLT  s_yz,
FLT  px,
FLT  py,
FLT  pz,
FLT  prx,
FLT  pry,
FLT  prz 
)
static

Perform the transformation given by t*, s*, p*, s_*, in the coordinate frame described by local_frame.

void GEO_Detail::merge ( const GEO_Detail src,
const GA_PrimitiveGroup primGrp = nullptr,
bool  mergePrimGroup = true,
bool  insertPrimsAtHead = false,
bool  keep_internal_groups = true,
GA_DataIdStrategy  data_id_strategy = GA_DATA_ID_BUMP 
)

Merge the whole detail, or only a group of prims, or only some points.

If a primGroup is given, only the primitives in that group will be merged into this detail. Only points referenced by the primitives will be merged. The primGroup should exist on the src detail.

Primitives will be appended to the primitive list unless insertPrimsAtHead is set.

If mergePrimGroup is set, primitive groups will be copied from the source detail. If keep_internal_groups is true, all groups will be copied, not just public primitive groups.

If data_id_strategy is GA_DATA_ID_CLONE and it's a full merge into an empty detail, any attributes whose source has a valid data id will inherit that data id. Otherwise, each merged attribute will get a new unique data id if this detail is generating such.

void GEO_Detail::merge ( const GEO_Primitive sprim,
bool  insertPrimAtHead = false 
)

Merge a single primitive into this detail.

bool GEO_Detail::mergeCaptureProperties ( GA_Attribute my_atr,
const GA_Attribute src_atr,
UT_IntArray new_indices 
)
void GEO_Detail::mergeDetailAttributes ( const GEO_Detail src,
int  num_pts_prev 
)

Merges attributes from 'src' into this detail. Capture attributes for newly merged points are also updated. Newly merged points are identified by point numbers beginning from 'num_pts_prev'.

GA_PointGroup* GEO_Detail::mergeGroup ( const GEO_Detail src,
const GA_PointGroup group,
bool  override = true 
)
GA_PrimitiveGroup* GEO_Detail::mergeGroup ( const GEO_Detail src,
const GA_PrimitiveGroup group,
bool  override = true 
)
GA_VertexGroup* GEO_Detail::mergeGroup ( const GEO_Detail src,
const GA_VertexGroup group,
GA_OffsetArray map_cache,
bool  override = true 
)
GA_EdgeGroup* GEO_Detail::mergeGroup ( const GEO_Detail src,
const GA_EdgeGroup group,
bool  override = true 
)
void GEO_Detail::mergeGroups ( const GEO_Detail src,
bool  override,
unsigned  mask = GA_GMASK_FULL_MASK 
)

Attempt to copy groups from the source detail. If override is true, existing groups with the same names as src groups are cleared, else existing groups are not affected. The status (ordered/unordered, internal/persistent) of the source group is also copied.

Membership is matched by element index for point and primitive groups, by primitive and local vertex index for vertex groups, and by element index validated by adjacency for edge groups.

void GEO_Detail::mergePoints ( const GEO_Detail src,
const GA_PointGroup ptGrp = 0,
bool  merge_groups = true,
bool  keep_internal_groups = true 
)

Merge points from the source detail into this detail.

If the ptGrp group is specified, only points in the src detail's group will be merged.

If merge_groups is set, point groups will be copied from the source detail. If keep_internal_groups is set, all groups will be copied (not just public point groups).

void GEO_Detail::mergePoints ( const GEO_Detail src,
const GA_Range points 
)

Merge only a group of points.

void GEO_Detail::mergePrimitives ( const GEO_Detail src,
const GA_Range prims 
)

Merge only a group of prims.

void GEO_Detail::mirror ( GEO_MirrorParms parms)

Mirrors a portion of the gdp across some plane.

GA_Attribute* GEO_Detail::normal ( bool  internal = false,
const GA_PrimitiveGroup primgroup = nullptr 
)

Add and compute normal attributes. Returns the normal attribute. If given a primgroup, only points within the selection are used in the calculation, all others are zeroed.

void GEO_Detail::normal ( UT_Vector3Array output,
bool  use_internaln = true 
) const

Return normals computed from the geometry, ignoring the "N" attribute.

void GEO_Detail::normal ( UT_Vector3DArray output,
bool  use_internaln = true 
) const
void GEO_Detail::normal ( const GA_RWHandleV3 attrib,
const GA_PrimitiveGroup primgroup = nullptr 
) const

Compute normals into the existing attribute given. The attribute can be detached, and the detail won't ever be modified.

void GEO_Detail::normalizeCaptureWeights ( const GA_PointGroup ptgroup = nullptr,
CaptureType  t = CAPTURE_BONE,
fpreal  tolerance = SYS_FTOLERANCE_R 
)
void GEO_Detail::normalizeRelativeCaptureWeights ( int  idx,
GA_Offset  ptoff,
GEO_Delta delta = nullptr 
)

This specifies a capture index that is exempt from normalization.

void GEO_Detail::normalTranslate ( const GA_PointGroup grp,
float  length = 1.0F,
int  check_pasting = 1,
int  update_ptnormals = 0,
GEO_Delta geodelta = 0,
bool  updateaffectednormals = false 
)
void GEO_Detail::normalTranslate ( const GA_PrimitiveGroup grp,
float  length = 1.0F,
int  check_pasting = 1,
int  update_ptnormals = 0,
GEO_Delta geodelta = 0,
bool  updateaffectednormals = false 
)
void GEO_Detail::normalTranslate ( const GA_EdgeGroup grp,
float  length = 1.0F,
int  check_pasting = 1,
int  update_ptnormals = 0,
GEO_Delta geodelta = 0,
bool  updateaffectednormals = false 
)
void GEO_Detail::normalTranslate ( const GA_BreakpointGroup grp,
float  length = 1.0F,
int  check_pasting = 1,
int  update_ptnormals = 0,
GEO_Delta geodelta = 0,
bool  updateaffectednormals = false 
)
void GEO_Detail::normalTranslateGroup ( const GA_Group grp,
float  length = 1.0F,
int  check_pasting = 1,
int  update_ptnormals = 0,
GEO_Delta geodelta = 0,
bool  updateaffectednormals = false 
)
void GEO_Detail::normalTranslatePoints ( float  length = 1.0F,
int  check_pasting = 1,
const GA_PointGroup grp = 0,
int  update_ptnormals = 0,
GEO_Delta geodelta = 0,
bool  updateaffectednormals = false 
)

The normalTranslate* methods translate points, prims, edges or breakpoints along each of their normals.

void GEO_Detail::normalTranslatePrimitives ( float  length = 1.0F,
int  check_pasting = 1,
const GA_PrimitiveGroup grp = 0,
int  update_ptnormals = 0,
GEO_Delta geodelta = 0,
bool  updateaffectednormals = false 
)
SYS_FORCE_INLINE const GA_AttributeDict& GEO_Detail::pointAttribs ( ) const
inline
Examples:
RAY/RAY_DemoSprite.C.

Definition at line 1939 of file GEO_Detail.h.

SYS_FORCE_INLINE const GA_AttributeDict& GEO_Detail::primitiveAttribs ( ) const
inline
Examples:
field3d/f3d_io.C, and SOP/SOP_PrimVOP.C.

Definition at line 1943 of file GEO_Detail.h.

GEO_PrimList GEO_Detail::primitives ( )
inline

Query the internal structures:

Definition at line 1927 of file GEO_Detail.h.

const GEO_PrimList GEO_Detail::primitives ( ) const
inline

Definition at line 1932 of file GEO_Detail.h.

void GEO_Detail::privateComputeNormal ( const GA_RWHandleV3 normalattrib,
const GA_Group group,
const float  cuspangledegrees,
const int  method 
) const
overrideprotectedvirtual

This is here just so that GA_AttributeSet::jsonSave() can call GEOcomputeNormals()

Reimplemented from GA_Detail.

bool GEO_Detail::promotePointAttrib ( GA_AttributeScope  scope,
const UT_StringRef name 
)
SYS_FORCE_INLINE bool GEO_Detail::promotePointAttrib ( const UT_StringRef name)
inline

Definition at line 1751 of file GEO_Detail.h.

static GA_IntrinsicManager::Registrar GEO_Detail::registerIntrinsics ( GA_PrimitiveFactory factory)
staticprotected
int GEO_Detail::removeCaptureRegion ( const UT_String cregion_name,
CaptureType  t = CAPTURE_BONE 
)

Delete a capture region (detail and point attributes) data. Return index of deleted attribute, -1 if cannot delete capture region

void GEO_Detail::removeVariableName ( const char *  varname)
inline

Definition at line 1668 of file GEO_Detail.h.

GA_Detail::IOStatus GEO_Detail::saveH9Stream ( std::ostream &  os,
bool  binary,
const GA_SaveOptions options 
) const
protected
bool GEO_Detail::setCaptureRegionRootPath ( const UT_String root_path,
CaptureType  t = CAPTURE_BONE 
)
void GEO_Detail::setCaptureWeight ( int  cregion_index,
float  weight,
const GA_PointGroup ptgroup = nullptr,
GEO_Delta geodelta = nullptr,
bool  add_weight = false,
bool  clamp_negative = false,
bool  normalizeweight = false,
CaptureType  t = CAPTURE_BONE 
)

Set the capture weight on a group of points.

void GEO_Detail::setCaptureWeight ( int  cregion_index,
float  weight,
GA_Offset  ptoff,
GEO_Delta geodelta = nullptr,
bool  add_weight = false,
bool  clamp_negative = false,
bool  normalizeweight = false,
CaptureType  t = CAPTURE_BONE 
)

Set the capture weight on a point.

void GEO_Detail::setCurrentLayer ( int  layer)
bool GEO_Detail::setDetailAttributeF ( const UT_StringHolder aname,
float  v 
)

Convenience functions to set a detail attribute to a specific value, and also create the attribute if it doesn't exist. Values will only be assigned to the first N tuple components. For example, for strings, only the first string value will be set, while for a vector2, only the first 2 components will be set.

Note
Storing a ramp will call the save() method on the UT_Ramp and assign that string to the attribute.
If the attribute already exists but is the wrong type, or the attribute has too small a tuple size, this method will fail.
Examples:
mocapstream/MocapStreamRokokoHDK.C.
bool GEO_Detail::setDetailAttributeF ( const UT_StringHolder aname,
float  v1,
float  v2 
)

Convenience functions to set a detail attribute to a specific value, and also create the attribute if it doesn't exist. Values will only be assigned to the first N tuple components. For example, for strings, only the first string value will be set, while for a vector2, only the first 2 components will be set.

Note
Storing a ramp will call the save() method on the UT_Ramp and assign that string to the attribute.
If the attribute already exists but is the wrong type, or the attribute has too small a tuple size, this method will fail.
bool GEO_Detail::setDetailAttributeF ( const UT_StringHolder aname,
const UT_Vector2 v 
)

Convenience functions to set a detail attribute to a specific value, and also create the attribute if it doesn't exist. Values will only be assigned to the first N tuple components. For example, for strings, only the first string value will be set, while for a vector2, only the first 2 components will be set.

Note
Storing a ramp will call the save() method on the UT_Ramp and assign that string to the attribute.
If the attribute already exists but is the wrong type, or the attribute has too small a tuple size, this method will fail.
bool GEO_Detail::setDetailAttributeF ( const UT_StringHolder aname,
const UT_Vector3 v 
)

Convenience functions to set a detail attribute to a specific value, and also create the attribute if it doesn't exist. Values will only be assigned to the first N tuple components. For example, for strings, only the first string value will be set, while for a vector2, only the first 2 components will be set.

Note
Storing a ramp will call the save() method on the UT_Ramp and assign that string to the attribute.
If the attribute already exists but is the wrong type, or the attribute has too small a tuple size, this method will fail.
bool GEO_Detail::setDetailAttributeF ( const UT_StringHolder aname,
const UT_Vector4 v 
)

Convenience functions to set a detail attribute to a specific value, and also create the attribute if it doesn't exist. Values will only be assigned to the first N tuple components. For example, for strings, only the first string value will be set, while for a vector2, only the first 2 components will be set.

Note
Storing a ramp will call the save() method on the UT_Ramp and assign that string to the attribute.
If the attribute already exists but is the wrong type, or the attribute has too small a tuple size, this method will fail.
bool GEO_Detail::setDetailAttributeF ( const UT_StringHolder aname,
const UT_Matrix3 v 
)

Convenience functions to set a detail attribute to a specific value, and also create the attribute if it doesn't exist. Values will only be assigned to the first N tuple components. For example, for strings, only the first string value will be set, while for a vector2, only the first 2 components will be set.

Note
Storing a ramp will call the save() method on the UT_Ramp and assign that string to the attribute.
If the attribute already exists but is the wrong type, or the attribute has too small a tuple size, this method will fail.
bool GEO_Detail::setDetailAttributeF ( const UT_StringHolder aname,
const UT_Matrix4 v 
)

Convenience functions to set a detail attribute to a specific value, and also create the attribute if it doesn't exist. Values will only be assigned to the first N tuple components. For example, for strings, only the first string value will be set, while for a vector2, only the first 2 components will be set.

Note
Storing a ramp will call the save() method on the UT_Ramp and assign that string to the attribute.
If the attribute already exists but is the wrong type, or the attribute has too small a tuple size, this method will fail.
bool GEO_Detail::setDetailAttributeI ( const UT_StringHolder aname,
int  v 
)

Convenience functions to set a detail attribute to a specific value, and also create the attribute if it doesn't exist. Values will only be assigned to the first N tuple components. For example, for strings, only the first string value will be set, while for a vector2, only the first 2 components will be set.

Note
Storing a ramp will call the save() method on the UT_Ramp and assign that string to the attribute.
If the attribute already exists but is the wrong type, or the attribute has too small a tuple size, this method will fail.
bool GEO_Detail::setDetailAttributeR ( const UT_StringHolder aname,
const UT_Ramp ramp 
)

Convenience functions to set a detail attribute to a specific value, and also create the attribute if it doesn't exist. Values will only be assigned to the first N tuple components. For example, for strings, only the first string value will be set, while for a vector2, only the first 2 components will be set.

Note
Storing a ramp will call the save() method on the UT_Ramp and assign that string to the attribute.
If the attribute already exists but is the wrong type, or the attribute has too small a tuple size, this method will fail.
bool GEO_Detail::setDetailAttributeS ( const UT_StringHolder aname,
const char *  value 
)

Convenience functions to set a detail attribute to a specific value, and also create the attribute if it doesn't exist. Values will only be assigned to the first N tuple components. For example, for strings, only the first string value will be set, while for a vector2, only the first 2 components will be set.

Note
Storing a ramp will call the save() method on the UT_Ramp and assign that string to the attribute.
If the attribute already exists but is the wrong type, or the attribute has too small a tuple size, this method will fail.
bool GEO_Detail::setDetailAttributeS ( const UT_StringHolder aname,
const UT_StringArray s 
)

Convenience functions to set a detail attribute to a specific value, and also create the attribute if it doesn't exist. Values will only be assigned to the first N tuple components. For example, for strings, only the first string value will be set, while for a vector2, only the first 2 components will be set.

Note
Storing a ramp will call the save() method on the UT_Ramp and assign that string to the attribute.
If the attribute already exists but is the wrong type, or the attribute has too small a tuple size, this method will fail.
void GEO_Detail::setLayerMerge ( int  preclear,
int  mask,
int  srcblend,
int  dstblend 
)

These get and set the CURRENT layer's merge mode:

void GEO_Detail::setNumLayers ( int  numlayer)
template<typename FLOAT_T >
void GEO_Detail::slideTransformEdges ( const UT_Matrix4T< FLOAT_T > &  mat,
const GA_EdgeGroup edgegrp = 0,
const GA_PrimitiveGroup primclosure = 0,
bool  just_P = false,
bool  keep_vector_lengths = true,
bool  check_pasting = true,
bool  neg_determinant_flipvector = true,
bool  update_ptnormals = false,
GEO_Delta geodelta = 0,
bool  updateaffectednormals = false 
)

Slide edges along adjacent primitive edges. The transform matrix is used to compute translation deltas for the edge endpoints. Don't use update_ptnormals, except for compatibility; use updateaffectednormals.

template<typename FLOAT_T >
void GEO_Detail::slideTransformGroup ( const UT_Matrix4T< FLOAT_T > &  mat,
const GA_Group grp,
bool  just_P = false,
bool  keep_vector_lengths = true,
bool  check_pasting = true,
bool  neg_determinant_flipvector = true,
const GA_PointGroup ptclosure = 0,
const GA_PrimitiveGroup primclosure = 0,
bool  update_ptnormals = false,
GEO_Delta geodelta = 0,
bool  updateaffectednormals = false,
GEO_PointSliderCache slider_cache = 0 
)

Convenience function, will call the appropriate slide transform depending on the type of group Don't use update_ptnormals, except for compatibility; use updateaffectednormals. The GEO_PointSliderCache argument is unused for edge groups.

template<typename FLOAT_T >
void GEO_Detail::slideTransformPoints ( const UT_Matrix4T< FLOAT_T > &  mat,
const GA_PointGroup ptgrp = 0,
const GA_PrimitiveGroup primclosure = 0,
bool  just_P = false,
bool  keep_vector_lengths = true,
bool  check_pasting = true,
bool  neg_determinant_flipvector = true,
bool  update_ptnormals = false,
GEO_Delta geodelta = 0,
bool  updateaffectednormals = false,
GEO_PointSliderCache slider_cache = 0 
)

Slide points across the face of adjacent primitives. Don't use update_ptnormals, except for compatibility; use updateaffectednormals.

template<typename FLOAT_T >
void GEO_Detail::slideTransformPrimitives ( const UT_Matrix4T< FLOAT_T > &  mat,
const GA_PrimitiveGroup primgrp = 0,
const GA_PointGroup ptclosure = 0,
bool  just_P = false,
bool  keep_vector_lengths = true,
bool  check_pasting = true,
bool  neg_determinant_flipvector = true,
bool  update_ptnormals = false,
GEO_Delta geodelta = 0,
bool  updateaffectednormals = false,
GEO_PointSliderCache slider_cache = 0 
)

Slide primitives (by their points) across the face of adjacent primitives. Don't use update_ptnormals, except for compatibility; use updateaffectednormals.

void GEO_Detail::softNormalTranslatePoints ( float  distance,
const GEO_Rolloff rolloff,
const GA_PointGroup ptgroup = nullptr,
const SoftSymmetryParms symmetry = nullptr,
int  along_lead_normal = 1,
int  check_pasting = 1,
int  update_ptnormals = 0,
GEO_Delta geodelta = nullptr,
bool  updateaffectednormals = false,
const GA_RWHandleF falloff_output = nullptr,
bool *  falloff_written = nullptr 
)

Translate points along their normals using soft-selections symmetry - the soft falloff from any points not directly on the plane of symmetry will be clamped to the plane of symmetry when provided falloff_output - any non-zero falloffs used during this call will be written to this attribute when provided falloff_written - will be set to true when provided if falloff_output is provided, and this call did not skip processing any non-zero falloffs. If not set, you must call computeSoftPointFalloff() to obtain the falloffs.

void GEO_Detail::softTransformEdges ( const UT_XformOrder order,
float  tx,
float  ty,
float  tz,
float  rx,
float  ry,
float  rz,
float  sx,
float  sy,
float  sz,
float  s_xy,
float  s_xz,
float  s_yz,
float  px,
float  py,
float  pz,
float  prx,
float  pry,
float  prz,
const GEO_Rolloff rolloff,
const GA_EdgeGroup edgegrp = 0,
const SoftSymmetryParms symmetry = 0,
int  just_P = 0,
int  keep_vector_lengths = 1,
int  check_pasting = 1,
int  neg_determinant_flipvector = 1,
int  update_ptnormals = 0,
GEO_Delta geodelta = 0,
bool  updateaffectednormals = false,
const char *  attribpattern = nullptr,
const GA_RWHandleF falloff_output = nullptr,
bool *  falloff_written = nullptr 
)
void GEO_Detail::softTransformEdges ( const LocalXformContextF local,
const UT_XformOrder order,
float  tx,
float  ty,
float  tz,
float  rx,
float  ry,
float  rz,
float  sx,
float  sy,
float  sz,
float  s_xy,
float  s_xz,
float  s_yz,
float  px,
float  py,
float  pz,
float  prx,
float  pry,
float  prz,
const GEO_Rolloff rolloff,
const GA_EdgeGroup edgegrp = 0,
const SoftSymmetryParms symmetry = 0,
int  just_P = 0,
int  keep_vector_lengths = 1,
int  check_pasting = 1,
int  neg_determinant_flipvector = 1,
int  update_ptnormals = 0,
GEO_Delta geodelta = 0,
bool  updateaffectednormals = false,
const char *  attribpattern = nullptr,
const GA_RWHandleF falloff_output = nullptr,
bool *  falloff_written = nullptr 
)
void GEO_Detail::softTransformPoints ( const UT_XformOrder order,
float  tx,
float  ty,
float  tz,
float  rx,
float  ry,
float  rz,
float  sx,
float  sy,
float  sz,
float  s_xy,
float  s_xz,
float  s_yz,
float  px,
float  py,
float  pz,
float  prx,
float  pry,
float  prz,
const GEO_Rolloff rolloff,
const GA_PointGroup ptgroup = 0,
const SoftSymmetryParms symmetry = 0,
int  just_P = 0,
int  keep_vector_lengths = 1,
int  check_pasting = 1,
int  neg_determinant_flipvector = 1,
int  update_ptnormals = 0,
GEO_Delta geodelta = 0,
bool  updateaffectednormals = false,
const char *  attribpattern = nullptr,
const GA_RWHandleF falloff_output = nullptr,
bool *  falloff_written = nullptr 
)

Transform points using soft-selections (proportional xform): symmetry - the soft falloff from any points not directly on the plane of symmetry will be clamped to that plane of symmetry when provided falloff_output - any non-zero falloffs used during this call will be written to this attribute when provided falloff_written - will be set to true when provided if falloff_output is provided, and this call did not skip processing any non-zero falloffs. If not set, you must call computeSoftPointFalloff() to obtain the falloffs.

void GEO_Detail::softTransformPoints ( const LocalXformContextF local,
const UT_XformOrder order,
float  tx,
float  ty,
float  tz,
float  rx,
float  ry,
float  rz,
float  sx,
float  sy,
float  sz,
float  s_xy,
float  s_xz,
float  s_yz,
float  px,
float  py,
float  pz,
float  prx,
float  pry,
float  prz,
const GEO_Rolloff rolloff,
const GA_PointGroup ptgroup = 0,
const SoftSymmetryParms symmetry = 0,
int  just_P = 0,
int  keep_vector_lengths = 1,
int  check_pasting = 1,
int  neg_determinant_flipvector = 1,
int  update_ptnormals = 0,
GEO_Delta geodelta = 0,
bool  updateaffectednormals = false,
const char *  attribpattern = nullptr,
const GA_RWHandleF falloff_output = nullptr,
bool *  falloff_written = nullptr 
)
void GEO_Detail::softTranslateEdges ( const UT_Vector3 delta,
const GEO_Rolloff rolloff,
const GA_EdgeGroup edgegrp = 0,
const SoftSymmetryParms symmetry = 0,
int  check_pasting = 1,
int  update_ptnormals = 0,
GEO_Delta geodelta = 0,
bool  updateaffectednormals = false,
const char *  attribpattern = nullptr,
const GA_RWHandleF falloff_output = nullptr,
bool *  falloff_written = nullptr 
)
void GEO_Detail::softTranslatePoints ( const UT_Vector3 delta,
const GEO_Rolloff rolloff,
const GA_PointGroup ptgroup = 0,
const SoftSymmetryParms symmetry = 0,
int  check_pasting = 1,
int  update_ptnormals = 0,
GEO_Delta geodelta = 0,
bool  updateaffectednormals = false,
const char *  attribpattern = nullptr,
const GA_RWHandleF falloff_output = nullptr,
bool *  falloff_written = nullptr 
)

Translate points using soft-selections (proportional xlate): symmetry - the soft falloff from any points not directly on the plane of symmetry will be clamped to that plane of symmetry when provided falloff_output - any non-zero falloffs used during this call will be written to this attribute when provided falloff_written - will be set to true when provided if falloff_output is provided, and this call did not skip processing any non-zero falloffs. If not set, you must call computeSoftPointFalloff() to obtain the falloffs.

static GA_Detail::IOStatus GEO_Detail::statH9Basic ( UT_IStream is,
GA_Stat sbuf,
bool  binstream 
)
staticprotected

Simple stat of an H9 file. This only fills out the point/prim counts This assumes the magic number (32-bits) has already been read from the file.

template<typename FLOAT_T >
void GEO_Detail::transform ( const UT_Matrix4T< FLOAT_T > &  mat,
const GA_Range primitives,
bool  just_P,
bool  keep_vector_lengths = true,
bool  check_pasting = true,
bool  neg_determinant_flip_vector = true,
bool  update_ptnormals = false,
GEO_Delta geodelta = nullptr,
bool  updateaffectednormals = false,
const char *  attribpattern = nullptr 
)

Transform a range of primitives. Note that this will only transform the points used by the primitives. Don't use update_ptnormals, except for compatibility; use updateaffectednormals.

Examples:
SOP/SOP_HDKObject.C.
template<typename FLOAT_T >
void GEO_Detail::transform ( const UT_Matrix4T< FLOAT_T > &  mat,
const GA_Range primitives,
const GA_Range points,
bool  just_P,
bool  keep_vector_lengths = true,
bool  check_pasting = true,
bool  neg_determinant_flip_vector = true,
bool  update_ptnormals = false,
GEO_Delta geodelta = nullptr,
bool  updateaffectednormals = false,
const char *  attribpattern = nullptr 
)

Transform a range of primitives & points. Don't use update_ptnormals, except for compatibility; use updateaffectednormals.

template<typename FLOAT_T >
void GEO_Detail::transform ( const UT_Matrix4T< FLOAT_T > &  mat,
const GA_PrimitiveGroup primGrp = 0,
const GA_PointGroup pointClosure = 0,
bool  just_P = false,
bool  keep_vector_lengths = true,
bool  check_pasting = true,
bool  neg_determinant_flipvector = true,
bool  update_ptnormals = false,
GEO_Delta geodelta = 0,
bool  updateaffectednormals = false,
const char *  attribpattern = nullptr 
)

Transform/translate all or some of the primitives. The methods will run more efficiently if you happen to know the point closure apriori. If 'just_P' is true, we only transform P, and not other attributes, and don't check for reflection matrix. Don't use update_ptnormals, except for compatibility; use updateaffectednormals.

template<typename FLOAT_T >
void GEO_Detail::transformBreakpoints ( const UT_Matrix4T< FLOAT_T > &  mat,
const GA_BreakpointGroup grp = 0,
bool  just_P = false,
bool  update_ptnormals = false,
GEO_Delta geodelta = 0,
bool  updateaffectednormals = false,
const char *  attribpattern = nullptr 
)

Transforms breakpoints Don't use update_ptnormals, except for compatibility; use updateaffectednormals.

template<typename FLOAT_T >
void GEO_Detail::transformEdges ( const UT_Matrix4T< FLOAT_T > &  mat,
const GA_EdgeGroup edgegrp = 0,
const GA_PrimitiveGroup primclosure = 0,
bool  just_P = false,
bool  keep_vector_lengths = true,
bool  check_pasting = true,
bool  neg_determinant_flipvector = true,
bool  update_ptnormals = false,
GEO_Delta geodelta = 0,
bool  updateaffectednormals = false,
const char *  attribpattern = nullptr 
)

Transforms edges, calls transformPoints on the point closure of the edges. Don't use update_ptnormals, except for compatibility; use updateaffectednormals.

template<typename FLOAT_T >
void GEO_Detail::transformGroup ( const UT_Matrix4T< FLOAT_T > &  mat,
const GA_Group grp,
bool  just_P = false,
bool  keep_vector_lengths = true,
bool  check_pasting = true,
bool  neg_determinant_flipvector = true,
const GA_PointGroup ptclosure = 0,
const GA_PrimitiveGroup primclosure = 0,
bool  update_ptnormals = false,
GEO_Delta geodelta = 0,
bool  updateaffectednormals = false,
const char *  attribpattern = nullptr 
)

Convenience function, will call the appropriate transform/translate depending on the type of group Don't use update_ptnormals, except for compatibility; use updateaffectednormals.

template<typename FLOAT_T >
void GEO_Detail::transformInternal ( const UT_Matrix4T< FLOAT_T > &  mat,
const GA_Range prim_range,
const GA_Range pt_range,
bool  just_P,
bool  keep_vector_lengths,
bool  check_pasting,
bool  neg_determinant_flipvector,
bool  update_ptnormals,
GEO_Delta geodelta,
bool  updateaffectednormals,
const char *  attribpattern 
)
protected
template<typename FLOAT_T >
void GEO_Detail::transformPoints ( const UT_Matrix4T< FLOAT_T > &  mat,
const GA_Range points,
bool  just_P = false,
bool  keep_vector_lengths = true,
bool  check_pasting = true,
bool  neg_determinant_flipvector = true,
bool  update_ptnormals = false,
GEO_Delta geodelta = 0,
bool  updateaffectednormals = false,
const char *  attribpattern = nullptr 
)

Transform all range of the points. Don't use update_ptnormals, except for compatibility; use updateaffectednormals.

template<typename FLOAT_T >
void GEO_Detail::transformPoints ( const UT_Matrix4T< FLOAT_T > &  mat,
const GA_PointGroup pointGroup = 0,
const GA_PrimitiveGroup primClosure = 0,
bool  just_P = false,
bool  keep_vector_lengths = true,
bool  check_pasting = true,
bool  neg_determinant_flipvector = true,
bool  update_ptnormals = false,
GEO_Delta geodelta = 0,
bool  updateaffectednormals = false,
const char *  attribpattern = nullptr 
)

Transform/translate all or some of the points. Don't use update_ptnormals, except for compatibility; use updateaffectednormals.

template<typename FLOAT_T , bool INVERT = false>
void GEO_Detail::transformPointsByAttribute ( const GA_ROHandleT< UT_Matrix4T< FLOAT_T > > &  xformhandle,
const GA_Range points,
bool  keep_vector_lengths = true,
bool  updateaffectednormals = true,
const char *  attribpattern = nullptr 
)

Transform a range of points by an attrib which stores a matrix4 for each point.

template<typename FLOAT_T , bool INVERT = false>
void GEO_Detail::transformPointsByAttribute ( const GA_ROHandleT< UT_Matrix3T< FLOAT_T > > &  xformhandle,
const GA_Range points,
bool  keep_vector_lengths = true,
bool  updateaffectednormals = true,
const char *  attribpattern = nullptr 
)

Rotates/shears all the attributes by a matrix3 for each point. Note: Does not scale/rotate GA_TYPE_POINT/GA_TYPE_HPOINT.

template<typename FLOAT_T , bool INVERT = false>
void GEO_Detail::transformPointsByAttribute ( const GA_ROHandleT< UT_QuaternionT< FLOAT_T > > &  xformhandle,
const GA_Range points,
bool  keep_vector_lengths = true,
bool  updateaffectednormals = true,
const char *  attribpattern = nullptr 
)

Rotates all the attributes by a quaternion for each point. Note: Does not rotate GA_TYPE_POINT/GA_TYPE_HPOINT.

template<typename FLOAT_T >
void GEO_Detail::transformRange ( const UT_Matrix4T< FLOAT_T > &  mat,
GA_Index  min_ptnum,
GA_Index  max_ptnum,
GA_Index  min_primnum,
GA_Index  max_primnum,
bool  just_P = false,
bool  keep_vector_lengths = true,
bool  check_pasting = true,
bool  neg_determinant_flipvector = true,
bool  update_ptnormals = false,
GEO_Delta geodelta = 0,
bool  updateaffectednormals = false,
const char *  attribpattern = nullptr 
)

Don't use update_ptnormals, except for compatibility; use updateaffectednormals.

template<typename FLOAT_T >
void GEO_Detail::translate ( const UT_Vector3T< FLOAT_T > &  delta,
const GA_PrimitiveGroup primGrp = 0,
const GA_PointGroup pointClosure = 0,
bool  check_pasting = true,
bool  update_ptnormals = false,
GEO_Delta geodelta = 0,
bool  updateaffectednormals = false,
const char *  attribpattern = nullptr 
)

Don't use update_ptnormals, except for compatibility; use updateaffectednormals.

template<typename FLOAT_T >
void GEO_Detail::translateBreakpoints ( const UT_Vector3T< FLOAT_T > &  delta,
const GA_BreakpointGroup grp = 0,
bool  update_ptnormals = false,
GEO_Delta geodelta = 0,
bool  updateaffectednormals = false,
const char *  attribpattern = nullptr 
)

Don't use update_ptnormals, except for compatibility; use updateaffectednormals.

template<typename FLOAT_T >
void GEO_Detail::translateEdges ( const UT_Vector3T< FLOAT_T > &  delta,
const GA_EdgeGroup edgegrp = 0,
bool  check_pasting = true,
bool  update_ptnormals = false,
GEO_Delta geodelta = 0,
bool  updateaffectednormals = false,
const char *  attribpattern = nullptr 
)

Don't use update_ptnormals, except for compatibility; use updateaffectednormals.

template<typename FLOAT_T >
void GEO_Detail::translateGroup ( const UT_Vector3T< FLOAT_T > &  delta,
const GA_Group grp,
bool  check_pasting = true,
const GA_PointGroup ptclosure = 0,
bool  update_ptnormals = false,
GEO_Delta geodelta = 0,
bool  updateaffectednormals = false,
const char *  attribpattern = nullptr 
)

Don't use update_ptnormals, except for compatibility; use updateaffectednormals.

template<typename FLOAT_T >
void GEO_Detail::translatePoints ( const UT_Vector3T< FLOAT_T > &  delta,
const GA_PointGroup pointGroup = 0,
bool  check_pasting = true,
bool  update_ptnormals = false,
GEO_Delta geodelta = 0,
bool  updateaffectednormals = false,
const char *  attribpattern = nullptr 
)

Don't use update_ptnormals, except for compatibility; use updateaffectednormals.

template<typename FLOAT_T , bool INVERT = false>
void GEO_Detail::translatePointsByAttribute ( const GA_ROHandleT< UT_Vector3T< FLOAT_T > > &  xformhandle,
const GA_Range points,
bool  keep_vector_lengths = true,
bool  updateaffectednormals = true,
const char *  attribpattern = nullptr 
)

Translates all the attributes by a displacement for each point. Note: Only affects GA_TYPE_POINT/GA_TYPE_HPOINT.

void GEO_Detail::traverseVariableNames ( int(*)(const char *attr, const char *varname, void *data function,
void data 
) const

Traverses the variable name mappings currently present:

void GEO_Detail::updateAffectedNormals ( const GA_Range ptrange,
GEO_Delta geodelta = 0,
bool  allsametransform = false 
)

Update the point normals that are affected by a transform applied to a given point group. If the transform is the same everywhere, only points on the boundary will be recomputed. Also recomputes vertex normals. See GEOcomputeNormals() as well.

SYS_FORCE_INLINE const GA_AttributeDict& GEO_Detail::vertexAttribs ( ) const
inline

Definition at line 1947 of file GEO_Detail.h.

void GEO_Detail::visualizeSoftPoints ( const GEO_Rolloff rolloff,
const GA_PointGroup ptgroup,
UT_ColorRamp  ramp 
)

Friends And Related Function Documentation

friend class GEO_IOTable
friend

Definition at line 2857 of file GEO_Detail.h.

friend class GU_IOClassic
friend

Definition at line 2858 of file GEO_Detail.h.

std::ostream& operator<< ( std::ostream &  os,
const GEO_Detail d 
)
friend

Definition at line 2850 of file GEO_Detail.h.


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