15 #ifndef __GU_Detail_h__
16 #define __GU_Detail_h__
48 template<
typename K,
typename H,
typename P>
class UT_Set;
100 class GU_ClothMatchSeamsParms;
130 class gu_ValueLookupCache;
151 merge(*src, primGroup,
188 void duplicate(
const GU_Detail& gdp,
int = 0,
201 : myRingZero(ringzero)
202 , myRingValence(ringvalence)
207 {
return myRingZero; }
209 {
return myRingValence; }
224 void findBoundaryPoints(
227 const RingRef *ringref =
nullptr,
234 void findSelectionBoundaryPoints(
245 void buildRingZeroPoints(
262 void buildRingZeroPoints(
270 void buildRingZeroVertices(
274 void buildRingZeroPrimitives(
287 float ymin = -1,
float ymax = 1,
288 float zmin = -1,
float zmax = 1,
289 int xdiv = 0,
int ydiv = 0,
int zdiv = 0,
290 int enforcementBars = 0,
291 int doConsolidatePoints = 0);
294 int orderx = 4,
int ordery = 4,
int orderz=4,
295 float xmin = -0.5F,
float xmax = 0.5F,
296 float ymin = -0.5F,
float ymax = 0.5F,
297 float zmin = -0.5F,
float zmax = 0.5F,
299 bool consolidate =
false);
302 int orderx = 4,
int ordery = 4,
int orderz=4,
303 float xmin = -0.5F,
float xmax = 0.5F,
304 float ymin = -0.5F,
float ymax = 0.5F,
305 float zmin = -0.5F,
float zmax = 0.5F,
307 bool consolidate =
false);
309 GU_PrimMesh *meshCube(
int xdiv,
int ydiv,
int zdiv,
310 float xmin = -0.5F,
float xmax = 0.5F,
311 float ymin = -0.5F,
float ymax = 0.5F,
312 float zmin = -0.5F,
float zmax = 0.5F,
314 bool consolidate =
false);
316 GU_PrimPoly *polymeshCube(
int xdiv,
int ydiv,
int zdiv,
317 float xmin = -0.5F,
float xmax = 0.5F,
318 float ymin = -0.5F,
float ymax = 0.5F,
319 float zmin = -0.5F,
float zmax = 0.5F,
321 bool consolidate =
false);
336 float xsize=1,
float ysize=1,
337 float xc = 0,
float yc = 0,
float zc = 0,
343 float xsize=1,
float ysize=1,
344 float xc = 0,
float yc = 0,
float zc = 0,
349 float xsize=1,
float ysize=1,
350 float xc = 0,
float yc = 0,
float zc = 0,
354 float xsize=1,
float ysize=1,
355 float xc = 0,
float yc = 0,
float zc = 0,
358 int wrapu = 0,
int wrapv = 0);
360 int orderu = 4,
int orderv = 4,
361 int interpEndsU = 1,
int interpEndsV = 1,
362 float xsize=1,
float ysize=1,
363 float xc = 0,
float yc = 0,
float zc = 0,
366 int wrapu = 0,
int wrapv = 0);
368 int orderu = 4,
int orderv = 4,
369 float xsize=1,
float ysize=1,
370 float xc = 0,
float yc = 0,
float zc = 0,
373 int wrapu = 0,
int wrapv = 0);
386 float (*ptOutside)(
const UT_Vector3 &,
void *),
389 int xdiv,
int ydiv,
int zdiv,
390 bool makepolysoup =
false);
396 bool makepolysoup =
false);
399 int divx,
int divy,
int divz,
401 bool makepolysoup =
false);
405 void buildMetaXsection(
const GU_Detail *
src,
int nsections,
406 int axis = 2,
int maxdepth = 4,
424 bool doPos,
bool doClr,
bool doNml,
bool doTxt,
425 bool doVoxels,
bool doSlerp,
426 const char *ptidattr,
const char *primidattr);
434 int blend(
const GU_Detail *gdps[],
const float weights[],
435 int size,
bool doPos,
bool doClr,
436 bool doNml,
bool doTxt,
437 bool doVoxels,
bool doSlerp,
438 const char *ptidattr,
const char *primidattr,
451 bool forceConsAll =
false,
453 bool accurate =
false);
461 bool accurate =
false);
475 ONLYCONS_GRP_PROP_LEAST = 0,
477 ONLYCONS_GRP_PROP_INTERSECT
487 bool deleteconsolidated =
false,
488 OnlyConsGroupPropagateType
490 ONLYCONS_GRP_PROP_LEAST,
491 bool accurate =
false);
495 bool forceConsAll =
false,
496 bool accurate =
false);
499 bool accurate =
false);
510 int fastConsolidatePointUVs(
float distance,
521 int fastConsolidateVertexUVs(
float distance,
548 bool snapptpos =
true,
550 bool accurate =
true);
559 SNAP_ATTRIBUTES_AVERAGE = 0,
560 SNAP_ATTRIBUTES_INDEX
568 void snapGrid(
int type,
569 float xlines,
float ylines,
float zlines,
570 float xoff,
float yoff,
float zoff,
574 void snapGridPointUVs(
int type,
575 float xlines,
float ylines,
float zlines,
576 float xoff,
float yoff,
float zoff,
579 void snapGridPointUVs(
581 float xlines,
float ylines,
float zlines,
582 float xoff,
float yoff,
float zoff,
585 void snapGridVertexUVs(
int type,
586 float xlines,
float ylines,
float zlines,
587 float xoff,
float yoff,
float zoff,
590 void snapGridVertexUVs(
592 float xlines,
float ylines,
float zlines,
593 float xoff,
float yoff,
float zoff,
600 int buildHoles(
float dist = 0.001F,
float angle = 0.2F,
623 bool removeRepPoints =
false,
625 bool deleteDegenPrimPoints =
false,
626 bool deleteOrphanedPoints =
false);
634 bool checkRepPoints =
false,
642 int applyToVertex = -1,
int fixPolySeams = 0,
650 int applyToVertex = -1,
int fixPolySeams = 0,
656 bool scaleTexture(
float umult = 1,
float uoff = 0,
657 float vmult = 1,
float voff = 0,
658 float wmult = 1,
float woff = 0,
661 float umult = 1,
float uoff = 0,
662 float vmult = 1,
float voff = 0,
663 float wmult = 1,
float woff = 0,
665 bool rotateTexture(
float angle,
672 void transformPointTexture(
const UT_Matrix4& mat,
676 void transformPointTexture(
685 void computeSoftTransformPointTextureCache(
694 void computeSoftTransformPointTextureCache(
707 void softTransformPointTexture(
709 float tx,
float ty,
float tz,
710 float rx,
float ry,
float rz,
711 float sx,
float sy,
float sz,
712 float s_xy,
float s_xz,
float s_yz,
713 float px,
float py,
float pz,
718 bool *falloff_written = NULL);
726 void softTransformPointTexture(
729 float tx,
float ty,
float tz,
730 float rx,
float ry,
float rz,
731 float sx,
float sy,
float sz,
732 float s_xy,
float s_xz,
float s_yz,
733 float px,
float py,
float pz,
738 bool *falloff_written = NULL);
740 void transformVertexTexture(
const UT_Matrix4& mat,
744 void transformVertexTexture(
755 void computeSoftTransformVertexTextureCache(
760 bool ignore_uv_connectivity)
const;
767 void computeSoftTransformVertexTextureCache(
773 bool ignore_uv_connectivity)
const;
781 void softTransformVertexTexture(
783 float tx,
float ty,
float tz,
784 float rx,
float ry,
float rz,
785 float sx,
float sy,
float sz,
786 float s_xy,
float s_xz,
float s_yz,
787 float px,
float py,
float pz,
792 bool *falloff_written = NULL);
800 void softTransformVertexTexture(
803 float tx,
float ty,
float tz,
804 float rx,
float ry,
float rz,
805 float sx,
float sy,
float sz,
806 float s_xy,
float s_xz,
float s_yz,
807 float px,
float py,
float pz,
812 bool *falloff_written = NULL);
821 bool computeAvgNormal(
825 bool computeAvgNormal(
865 void sortPointsSpatial();
866 void sortPrimsSpatial();
903 void shift(
int uoffset,
int voffset,
963 bool flipedges =
false,
bool avoiddegeneracy =
false);
973 bool flipedges =
false,
974 bool avoiddegeneracy =
false);
983 const GA_Detail *restgdp=0,
bool flipedges =
false,
984 bool avoiddegeneracy =
false);
994 bool clippts =
false);
999 int normlize = 0,
int outputGroups = 0,
1005 void fractalize(
int seed = 1,
float roughness = 0.6F,
1006 float scaleby=1,
int divs=1,
1007 int fixedBoundry = 1,
int useVtxNorms = 0,
1008 float nx = 0,
float ny = 0,
float nz = 1,
1018 fpreal clip_tolerance = 0.0001,
1019 fpreal consilidate_tolerance = 0.001);
1022 bool tetrahedralizeForShrink(
const GA_PointGroup *ptGroup = 0,
1048 int reparameterize = 0);
1053 int reparameterize = 0);
1083 unsigned vorder = 0,
int vwrap = 0,
1084 int doskin = 1,
int nprims = -1,
1089 unsigned vorder = 0,
int vwrap = 0,
1090 int doskin = 1,
int nprims = -1,
1167 const GU_Detail *deform,
int xdiv,
int ydiv,
int zdiv,
1181 void applyTraceTexture(
float xres,
float yres,
float resolution);
1196 int order=4,
int wrapped=0,
1200 int order=4,
int wrapped=0,
1213 int order=4,
int wrapped=0,
1218 int order=4,
int wrapped=0,
1223 int order=4,
int wrapped=0,
1228 int order = 4,
int corner=0);
1231 int order = 4,
int wrapped=0,
int corner=0);
1234 int order = 4,
int wrapped=0,
int corner=0);
1238 int uOrder=4,
int vOrder=4,
1249 int uOrder=4,
int vOrder=4,
1250 bool uWrapped=
false,
bool vWrapped=
false,
1261 int uOrder=4,
int vOrder=4,
1272 int uOrder=4,
int vOrder=4,
1273 bool uWrapped=
false,
bool vWrapped=
false,
1289 float tol=1e-1F,
float smooth=0.0F,
1290 int noMultipleKnots=1);
1293 int order=4,
int wrapped=0,
1294 float tol=1e-1F,
float smooth=0.0F,
1295 int noMultipleKnots=1);
1299 int uOrder=4,
int vOrder=4,
1301 float tol=1e-1F,
float smooth=0.0F,
1302 int uNoMultipleKnots=1,
1303 int vNoMultipleKnots=1);
1306 int uOrder=4,
int vOrder=4,
1307 int uWrapped=0,
int vWrapped=0,
1309 float tol=1e-1F,
float smooth=0.0F,
1310 int uNoMultipleKnots=1,
1311 int vNoMultipleKnots=1);
1316 void refine(
float *uunit,
int ulen,
1317 float *vunit,
int vlen,
1318 int countu=1,
int countv=1,
1322 void unrefine(
float umin,
float umax,
1323 float vmin,
float vmax,
1324 int countu=1,
int countv=1,
1325 float utol=0.001F,
float vtol=0.001F,
1328 void subdivide(
float *uunit,
int ulen,
1329 float *vunit,
int vlen,
1334 int extract(
float *uunit,
int ulen,
1335 float *vunit,
int vlen,
1338 int op = 0,
int keepOriginal = 0,
1339 int atbreakpoints = 0,
int use_arc_length = 0);
1341 void extractIsoParms(
float *uunit,
int ulen,
1342 float *vunit,
int vlen,
1346 void extractPoints(
float *uunit,
int ulen,
1347 float *vunit,
int vlen,
1351 void extractProfiles(
float *uunit,
int ulen,
1352 float *vunit,
int vlen,
1355 void extractIsoParmsAtBreak(
float *uunit,
int ulen,
1356 float *vunit,
int vlen,
1360 void extractPointsAtBreak(
float *uunit,
int ulen,
1361 float *vunit,
int vlen,
1365 void extractProfilesAtBreak(
float *uunit,
int ulen,
1366 float *vunit,
int vlen,
1370 int cut(
float *uunit,
int ulen,
1371 float *vunit,
int vlen,
1373 int keepin=1,
int keepout=0,
int atbreakpoints = 0,
1374 int allU = 0,
int allV = 0,
int use_arc_length = 0);
1382 bool deleteAll =
true);
1392 int *pointIndexTable = 0);
1404 int info(std::ostream &os,
1405 int max_group_lines=15,
1408 bool instanced=
false)
const;
1412 int max_group_lines=15,
1415 bool instanced=
false)
const;
1450 float tmax = 1E17F,
float tol = 1E-12F,
1453 float *u = 0,
float *
v = 0,
1454 int ignoretrim = 1)
const;
1461 int commonFaceConfig(
1463 GA_PrimCompat::TypeMask &
type,
int &order,
1464 bool &
open,
bool &ends) const;
1465 int commonFaceConfig(
1467 GA_PrimCompat::TypeMask &type,
int &order,
1468 bool &open,
bool &ends) const;
1470 GA_PrimCompat::TypeMask &type,
1471 int &orderu,
int &orderv,
1472 bool &openu,
bool &openv,
1473 bool &endsu,
bool &endsv) const;
1483 int makeFacesCompatible(
1486 bool mustopen = false,
1487 bool mustends = false,
1488 bool nonrational = false,
1489 GA_PrimCompat::TypeMask *extratype = 0,
1490 bool equalcvs = true);
1491 int makeFacesCompatible(
1494 bool mustopen = false,
1495 bool mustends = false,
1496 bool nonrational = false,
1497 GA_PrimCompat::TypeMask *extratype = 0,
1498 bool equalcvs = true);
1499 int makeFacesCompatible(
1504 bool mustopen = false,
1505 bool mustends = false,
1506 bool nonrational = false,
1507 GA_PrimCompat::TypeMask *extratype = 0,
1508 bool equalcvs = true);
1509 int makeFacesCompatible(
1514 bool mustopen = false,
1515 bool mustends = false,
1516 bool nonrational = false,
1517 GA_PrimCompat::TypeMask *extratype = 0,
1518 bool equalcvs = true);
1525 float lwidth1,
float lwidth2,
1526 float rwidth1,
float rwidth2,
1527 int sharp,
int &lstart,
int &rstart,
1528 int &lmax,
int &rmax,
1534 static
int getSubdividedCV(
GEO_Hull *hull,
int udir,
float unit);
1535 static
int getSubdividedCV(
GEO_Face *face,
float unit);
1542 static
exint getIOTranslatorCount();
1546 GA_Detail::IOStatus saveH9File(const
char *filename,
1548 static
GA_Detail::IOStatus statH9File(const
char *filename,
1552 static
bool isFormatSupported(const
char *filename);
1577 int makeSurfacesCompatible(
1580 bool mustopenu=false,
bool mustopenv=false,
1581 bool mustendsu=false,
bool mustendsv=false,
1582 bool equalcvsu=true,
bool equalcvsv=true,
1583 GA_PrimCompat::TypeMask *extratype = 0);
1592 const
char *
n = "__gu_all_pasted__",
1593 const
char *u = "__gu_used_pasted__");
1594 void updatePastedDisplacement(
GA_Offset ptoff,
1597 int updatePastedDisplacements(
void);
1610 const char *msg = 0)
const
1615 const char *msg = 0)
const
1633 bool ordered =
false,
1634 bool clear_matching =
false);
1654 bool hasShallowCookSelectionReference(
1670 void removeUserSelection();
1678 void removeCookSelection();
1691 void removeInlinePoints(
float tol,
1698 bool ignoreOpenFaces = false,
1699 float tolerance = 0.001F,
1700 bool onlyPolys = true);
1702 bool ignoreOpenFaces = false,
1703 float tolerance = 0.001F,
1704 bool onlyPolys = true);
1709 void deleteGroupGeometry(const
GA_Group &group);
1714 bool del_inline_points,
1716 bool del_unused_points = true,
1717 bool del_bridges = true);
1731 GU_BRIDGEMODE_DELETE
1734 bool del_inline_points,
1736 bool del_unused_points,
1737 BridgeMode bridge_mode,
1738 bool del_degenerate_bridges,
1739 bool boundary_curves);
1744 bool rotattribs =
false,
1761 bool quadcut =
false,
1762 bool forcecut =
true,
1765 bool quadcomplete =
false,
1766 bool modifyGdp =
true,
1768 bool fixEnds =
false);
1772 void divideEdges(
const GA_EdgeGroup &edgegroup,
int numdivs = 1,
1773 bool applytoall =
true,
1774 bool use_shared_points =
false,
1777 bool preserve_edge_dir =
false);
1781 bool use_shared_points,
1784 bool preserve_edge_dir,
1796 int quickxform = 0);
1804 bool removedegen =
true,
1805 bool updatenmls =
true,
1813 float insetdist,
float nmldist);
1839 void clearCachedBounds();
1844 static void loadIODSOs();
1851 static bool matchBinaryFileExtension(
const UT_StringRef &filename);
1855 static bool matchASCIIFileExtension(
const UT_StringRef &filename);
1861 int getUniqueValueCount(
const GA_Attribute *attrib)
const;
1862 int getUniqueIntegerValue(
const GA_Attribute *attrib,
int idx)
const;
1863 const char *getUniqueStringValue(
const GA_Attribute *attrib,
int idx)
const;
1868 class AttribValueLookupTable;
1869 class AttribSingleValueLookupTable;
1871 const AttribValueLookupTable *getLookupTable(
const GA_Attribute *attrib)
const;
1872 const AttribSingleValueLookupTable *getSingleLookupTable(
const GA_Attribute *attrib)
const;
1881 void appendString(
const char *str,
GA_Offset offset);
1887 if (idx < 0 || idx >= myIntValues.size())
1889 return myIntValues(idx);
1893 if (idx < 0 || idx >= myStringValues.size())
1895 return myStringValues(idx);
1901 if (it == myIntTable.end())
1908 if (!myStringTable.findSymbol(v, &list))
1915 int64 mem = inclusive ?
sizeof(*this) : 0;
1917 mem += myStringValues.getMemoryUsage(
false);
1918 mem += myIntValues.getMemoryUsage(
false);
1920 mem += myStringTable.getMemoryUsage(
false);
1922 mem += it->second->getMemoryUsage(
true);
1926 mem += it->second->getMemoryUsage(
true);
1947 void setString(
const char *str,
GA_Offset offset);
1955 if (it == myIntTable.end())
1962 if (!myStringTable.findSymbol(v, &off))
1969 int64 mem = inclusive ?
sizeof(*this) : 0;
1971 mem += myStringTable.getMemoryUsage(
false);
1996 template <
typename ArrayType>
1998 const ArrayType &gpData,
2000 int order,
int wrapped,
2004 void fillGrid(
GEO_Hull &hull,
int rows,
int cols,
2005 float x_size,
float y_size,
2006 float x_center,
float y_center,
2010 void convertPolysToHull(
2012 bool keep_original);
2013 void convertToSoups(
2015 bool keep_original);
2016 void convertVolumesToVDBs(
2018 bool keep_original);
2019 void convertVDBsToVolumes(
2021 bool keep_original);
2022 void convertVolumesToPolys(
2024 bool keep_original);
2025 void convertMetasToPolys(
2027 bool keep_original);
2028 void convertTetsToPolys(
2030 bool keep_original);
2033 bool keep_original);
2040 int orderx,
int ordery,
int orderz,
2041 float xmin,
float xmax,
2042 float ymin,
float ymax,
2043 float zmin,
float zmax,
2049 bool checkRepPoints,
2054 bool makepolysoup =
false);
2058 bool makepolysoup =
false);
2059 int adjustStepBox(
float &
min,
float &
max,
float step);
2063 bool makepolysoup =
false);
2074 friend class GU_PrimitiveFactory;
2078 myBoundingCache = NULL;
2079 myValueLookupCache = NULL;
2089 class BoundingCache;
2090 BoundingCache *myBoundingCache;
2092 mutable gu_ValueLookupCache *myValueLookupCache;
virtual void clearCaches()
const GA_OffsetList * getStringOffsets(const UT_StringRef &v) const
A class to manage an ordered array which has fixed offset handles.
UT_ErrorSeverity getSeverity()
GA_API const UT_StringHolder dist
Definition of a geometry attribute.
SYS_VISIBILITY_EXPORT void newGeometryIO(void *)
int getIntValue(int idx) const
#define SYS_DEPRECATED(__V__)
FromType find(ToType value, FromType s=FromType(0)) const
void merge(const GEO_Detail &src, const GA_PrimitiveGroup *primGrp=0, int mergePrimGroup=1, int insertPrimsAtHead=0, GA_GBPointRedirectArray *dest_to_src_ptarray=0, bool keep_internal_groups=true, GA_DataIdStrategy data_id_strategy=GA_DATA_ID_BUMP)
MatType shear(Axis axis0, Axis axis1, typename MatType::value_type shear)
Set the matrix to a shear along axis0 by a fraction of axis1.
#define SYS_VISIBILITY_EXPORT
const UT_IntArray & ringValence() const
virtual GA_Detail * cloneEmptyDetail(bool clone_attributes) const =0
SYS_VISIBILITY_EXPORT void newGeometryPrim(GA_PrimitiveFactory *factory)
void reversePrimitiveList()
Arbitrarily Oriented Bounding (OBB)
OnlyConsGroupPropagateType
GA_Offset getStringOffset(const UT_StringRef &v) const
void shiftPrimitiveList(GA_Size aoffset)
int64 getMemoryUsage(bool inclusive) const
UT_API UT_ErrorManager * UTgetErrorManager()
void addWarning(GU_ErrorCodes code, const char *msg=0) const
Structure for the PolySouping code.
UT_ErrorSeverity addError(const char *type, int code, const char *msg=0, const UT_SourceLocation *loc=0)
exint GA_Size
Defines the bit width for index and offset types in GA.
const UT_Array< GA_OffsetArray > & myRingZero
#define GA_INVALID_OFFSET
MapType::const_iterator const_map_iterator
png_infop png_bytep * trans
A range of elements in an index-map.
GR_API RE_Geometry * buildGrid(RE_Render *r, UT_Vector3F center, UT_Vector2F size, Orientation orient, const char *cache_name=NULL)
GU_Detail(const GU_Detail *src, GA_DataIdStrategy data_id_strategy=GA_DATA_ID_BUMP)
T distance(const UT_Vector4T< T > &v1, const UT_Vector4T< T > &v2)
virtual void countMemory(UT_MemoryCounter &counter, bool inclusive) const
static const UT_StringHolder theEmptyString
GLsizei GLsizei GLchar * source
const GA_IndexMap & getIndexMap(GA_AttributeOwner owner) const
NURBS basis classes which maintain knot vectors.
void shiftPointList(GA_Size aoffset)
virtual void statVolumes(GA_Stat &stat, uint level=0xffff) const
Fill out only the volume information.
T angle(const Vec2< T > &v1, const Vec2< T > &v2)
void sortPointList(fpreal *order)
void sortPointList(int seed)
int64 UTgetMemoryUsage(const UT_ConcurrentHashMap< K, V, H, A > &map, const bool inclusive)
#define SYS_DEPRECATED_HDK(__V__)
void sortPrimitiveList(const UT_Vector3 &o, const UT_Vector3 &d)
void sortPointList(const UT_Vector3 &o, const UT_Vector3 &d)
UT_Array< GU_SplitLoc * > GU_SplitLocArray
GA_API const UT_StringHolder transform
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)
GA_API const UT_StringHolder orient
GU_Detail(bool full_topology)
void addMessage(GU_ErrorCodes code, const char *msg=0) const
Class to return information about a GA_Detail.
virtual bool smooth(GA_AttributeOperand &d, GA_AttributeOperand &min, GA_AttributeOperand &max, GA_AttributeOperand &t) const
d = SYSsmooth(min, max, t);
IMATH_INTERNAL_NAMESPACE_HEADER_ENTER T clip(const T &p, const Box< T > &box)
const UT_IntArray & myRingValence
void sortPrimitiveList(int seed)
UT_ErrorSeverity addWarning(const char *type, int code, const char *msg=0, const UT_SourceLocation *loc=0)
virtual int64 getMemoryUsage(bool inclusive) const
Compute memory usage (includes all shared memory)
GA_GroupType
An ordinal enum for the different types of groups in GA.
RingRef(const UT_Array< GA_OffsetArray > &ringzero, const UT_IntArray &ringvalence)
void proximityToPointList(const UT_Vector3 &point)
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=NULL)
static GA_IntrinsicManager::Registrar registerIntrinsics(GA_PrimitiveFactory &factory)
GU_API GA_PrimitiveFactory & GUgetFactory()
void sortPrimitiveList(GU_AxisType axis)
GLint GLint GLsizei GLint GLenum GLenum type
Container class for all geometry.
const UT_Array< GA_OffsetArray > & ringZero() const
const UT_StringHolder & getStringHolder(int idx) const
void proximityToPrimitiveList(const UT_Vector3 &point)
void sortPointList(GU_AxisType axis)
GU_Detail(const GU_Detail *src, GA_PrimitiveGroup *primGroup, GA_DataIdStrategy data_id_strategy=GA_DATA_ID_BUMP)
int64 getMemoryUsage(bool inclusive) const
void sortPrimitiveList(fpreal *order)
GA_Offset getIntOffset(int v) const
GA_API const UT_StringHolder rest
Base::const_iterator const_iterator
void addError(GU_ErrorCodes code, const char *msg=0) const
UT_ErrorSeverity addMessage(const char *type, int code, const char *msg=0, const UT_SourceLocation *loc=0)
const GA_OffsetList * getIntOffsets(int v) const