|
Enzo
|
Base class for all primitive types in the engine. More...
#include <Primitive.h>
Classes | |
| struct | PointOffsets |
Public Member Functions | |
| Primitive (std::string_view path="/prim") | |
| Primitive (const Primitive &other) | |
| Primitive & | operator= (const Primitive &rhs) |
| virtual PrimType | getType () const =0 |
| virtual std::shared_ptr< Primitive > | clone () const =0 |
| virtual TransformClass | transformType () const =0 |
| virtual void | applyTransform (const Matrix4 &mat, TransformClass transformClass)=0 |
| void | applyTransform (const Transform &transform, TransformClass transformClass) |
| virtual bool | canMerge () const |
| virtual void | merge (std::shared_ptr< Primitive > other) |
| void | incrementVersion () |
| virtual bool | hasPoints () const |
| Offset | getNumPoints () const |
| virtual PointOffsets | getPoints () |
| virtual bool | isValidPoint (Offset offset) const |
| virtual void | deletePoints (const std::vector< Offset > &pointOffsets) |
| virtual void | defragment () |
| Compacts storage, removing entries marked invalid so offsets are contiguous again. | |
| attr::AttributeHandle< intT > | addIntAttribute (attr::AttributeOwner owner, std::string name, bool intrinsic=false) |
| attr::AttributeHandleBool | addBoolAttribute (attr::AttributeOwner owner, std::string name, bool intrinsic=false, bool isPrivate=false) |
| attr::AttributeHandle< Vector3 > | addVector3Attribute (attr::AttributeOwner owner, std::string name, bool intrinsic=false) |
| attr::AttributeHandle< Matrix4 > | addMatrix4Attribute (attr::AttributeOwner owner, std::string name, bool intrinsic=false) |
| std::shared_ptr< attr::Attribute > | getAttribByName (attr::AttributeOwner owner, std::string name, bool includeIntrinsics=false) |
| std::shared_ptr< const attr::Attribute > | getAttribByName (attr::AttributeOwner owner, std::string name, bool includeIntrinsics=false) const |
| Const counterpart of getAttribByName. | |
| const size_t | getNumAttributes (const attr::AttributeOwner owner) const |
| std::weak_ptr< const attr::Attribute > | getAttributeByIndex (attr::AttributeOwner owner, unsigned int index) const |
| bool | attributeExists (attr::AttributeOwner owner, std::string name) |
| attr::AttributeHandleBool | createGroup (attr::AttributeOwner owner, std::string name) |
| Creates a group on the given owner. | |
| void | addToGroup (attr::AttributeOwner owner, const std::string &name, const std::vector< Offset > &offsets) |
| Marks the given offsets as members of the group. | |
| std::shared_ptr< attr::Attribute > | getGroupByName (attr::AttributeOwner owner, const std::string &name) const |
| Looks up a group by name. | |
| size_t | getNumGroups (attr::AttributeOwner owner) const |
| Returns how many groups live on the given owner. | |
| std::weak_ptr< const attr::Attribute > | getGroupByIndex (attr::AttributeOwner owner, unsigned int index) const |
| Returns the group at the given index in the owner's group store. | |
| attr::AttributeHandleBool | createPointGroup (std::string name) |
| Creates a point group. | |
| attr::AttributeHandleBool | createPrimitiveGroup (std::string name) |
| Creates a primitive group. | |
| void | addToPointGroup (const std::string &name, const std::vector< Offset > &offsets) |
| Marks the given offsets as members of the point group. | |
| void | addToPrimitiveGroup (const std::string &name, const std::vector< Offset > &offsets) |
| Marks the given offsets as members of the primitive group. | |
| String | getPath () const |
| void | setPath (const String &path) |
Protected Member Functions | |
| virtual attr::attribVector & | getAttributeStore (const attr::AttributeOwner &owner) |
| virtual const attr::attribVector & | getAttributeStore (const attr::AttributeOwner &owner) const |
| virtual attr::attribVector & | getGroupStore (const attr::AttributeOwner &owner) |
| virtual const attr::attribVector & | getGroupStore (const attr::AttributeOwner &owner) const |
| attr::attribVector | deepCopyAttributes (attr::attribVector source) |
| size_t | getElementCount (const attr::AttributeOwner &owner) const |
| Returns the number of elements in the given owner's store. | |
Protected Attributes | |
| std::string | path_ = "/prim" |
| attr::attribVector | pointAttributes_ |
| attr::attribVector | primitiveAttributes_ |
| attr::attribVector | pointGroups_ |
| attr::attribVector | primitiveGroups_ |
Base class for all primitive types in the engine.
A Primitive is the unit of geometry exchanged between nodes. It holds primitive-level attributes (one value per object) and provides the attribute management API shared by all primitive types.
Point attributes are stored on the base class since many primitive types have points. Use hasPoints() to check before accessing them.
Subclasses (e.g. Mesh) add their own attribute owners and geometry.
| attr::AttributeHandleBool enzo::geo::Primitive::createGroup | ( | attr::AttributeOwner | owner, |
| std::string | name ) |
Creates a group on the given owner.
Groups are boolean flags that mark elements as members. A group and a regular attribute can share a name without colliding.
|
inline |
Creates a point group.
|
inline |
Creates a primitive group.
|
inlinevirtual |
Compacts storage, removing entries marked invalid so offsets are contiguous again.
Reimplemented in enzo::geo::Mesh.
| std::shared_ptr< const attr::Attribute > enzo::geo::Primitive::getAttribByName | ( | attr::AttributeOwner | owner, |
| std::string | name, | ||
| bool | includeIntrinsics = false ) const |
Const counterpart of getAttribByName.
Returns a read only shared pointer so the caller cannot mutate the attribute through a const Primitive.
|
protected |
Returns the number of elements in the given owner's store.
| std::shared_ptr< attr::Attribute > enzo::geo::Primitive::getGroupByName | ( | attr::AttributeOwner | owner, |
| const std::string & | name ) const |
Looks up a group by name.