|
|
| 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.
|
| |
| std::shared_ptr< attr::Attribute > | addAttribute (attr::AttributeOwner owner, std::string name, attr::AttributeType type, bool intrinsic=false, bool isInternal=false) |
| | Returns the attribute of this name and type, adding one when the name is free.
|
| |
| std::shared_ptr< attr::Attribute > | tryAddAttribute (attr::AttributeOwner owner, std::string name, attr::AttributeType type, bool intrinsic=false, bool isInternal=false) |
| | Returns the attribute of this name and type, adding one when the name is free.
|
| |
| template<typename T > |
| attr::AttributeHandle< T > | addAttribute (attr::AttributeOwner owner, std::string name, bool intrinsic=false, bool isInternal=false) |
| | Returns a handle to the attribute of this type stored under this name, adding one when the name is free.
|
| |
| template<typename T > |
| std::optional< attr::AttributeHandle< T > > | tryAddAttribute (attr::AttributeOwner owner, std::string name, bool intrinsic=false, bool isInternal=false) |
| | Returns a handle to the attribute of this type stored under this name, adding one when the name is free.
|
| |
|
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 |
| |
| std::vector< std::shared_ptr< const attr::Attribute > > | getAttributes (attr::AttributeOwner owner, bool includeIntrinsics=false) const |
| | Returns every attribute on the owner.
|
| |
|
bool | attributeExists (attr::AttributeOwner owner, std::string name) |
| |
| attr::AttributeHandleBool | addGroup (attr::AttributeOwner owner, std::string name) |
| | Returns the group of this name on the given owner, adding one when the name is free.
|
| |
|
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.
|
| |
|
std::vector< std::shared_ptr< const attr::Attribute > > | getGroups (attr::AttributeOwner owner) const |
| | Returns every group on the owner.
|
| |
| void | addAttributesFrom (const Primitive &source, attr::AttributeOwner owner) |
| | Adds each attribute and group of the source to this primitive, keeping its name and type.
|
| |
|
attr::AttributeHandleBool | addPointGroup (std::string name) |
| | Returns the point group of this name, adding one when the name is free.
|
| |
|
attr::AttributeHandleBool | addPrimitiveGroup (std::string name) |
| | Returns the primitive group of this name, adding one when the name is free.
|
| |
|
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) |
| |
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.