|
Rumba C++ SDK
|
This interface gives a high level access to the document structure. More...
#include <NodeDelegate.h>
Classes | |
| class | AttributeDelegate |
| A node attribute delegate. More... | |
| class | AttributeIterator |
| A node attribute iterator. More... | |
| class | AttributeIteratorDelegate |
| A node attribute iterator delegate to implement in the plugin. More... | |
| struct | Attributes |
| A node attributes iteration. More... | |
| class | ChildIterator |
| A node attribute iterator. More... | |
| class | ChildIteratorDelegate |
| A node attribute iterator delegate to implement a child iterator in the plugin. More... | |
| class | Children |
| A node children iteration. More... | |
| class | Observer |
| An object to keep an observer alive. More... | |
| class | TransformUserData |
| A blind data provided by the start_transform's implementation and passed to set_scale, set_rotation and set_translation. More... | |
Public Types | |
| enum | MutableFlags { ScaleX = 0x001, ScaleY = 0x002, ScaleZ = 0x004, Scale = ScaleX|ScaleY|ScaleZ, RotateX = 0x008, RotateY = 0x010, RotateZ = 0x020, Rotate = RotateX|RotateY|RotateZ, TranslateX = 0x040, TranslateY = 0x080, TranslateZ = 0x100, Translate = TranslateX|TranslateY|TranslateZ, AllComponents = Scale|Rotate|Translate } |
Public Member Functions | |
| virtual | ~NodeDelegate () |
| virtual StringView | type_name () const =0 |
| virtual std::shared_ptr< NodeDelegate > | parent () const =0 |
| Returns the parent node. More... | |
| virtual maquina::StringView | name () const =0 |
| The node's name. More... | |
| virtual std::string | path () const =0 |
| Returns the full path to the node. More... | |
| virtual std::string | document_path () const |
| Returns the document path to the node. More... | |
| virtual Imath::Box3d | bounding_box () const |
| Returns the bounding_box of the node. More... | |
| virtual bool | is_node () const |
| Return true if this node delegate is a Rumba Node. More... | |
| virtual std::shared_ptr< class AttributeDescriptor > | description () const |
| Returns the node's description, always returns a valid pointer. More... | |
| virtual Node | node () const |
| Return the node behind this node delegate. More... | |
| virtual bool | operator== (const NodeDelegate &o) const =0 |
| Return true if both nodes are the same or both nodes are invalid. More... | |
| virtual bool | operator!= (const NodeDelegate &o) const =0 |
| Return true if the nodes are different or if one is invalid. More... | |
| virtual std::shared_ptr< NodeDelegate > | find (const StringView &path) |
| Returns descendent node_delegate using a path starting at this node. More... | |
| virtual int | child_count () const |
| Returns the number of children in the node. More... | |
| virtual std::shared_ptr< NodeDelegate > | child (const StringView &name) |
| Return a node child using its name. More... | |
| Children | children () |
| virtual int | attribute_count () const |
| Returns the number of attributes. More... | |
| virtual std::shared_ptr< AttributeDelegate > | attribute (const StringView &name) |
| Return a node attribute using its name. More... | |
| virtual bool | add_attribute (const StringView &name, const Value &value) |
| Add a node attribute with the given name and value. More... | |
| virtual std::shared_ptr< Channel > | channel (const ChannelType sc) |
| Return the specified channel if available, return nullptr otherwise. More... | |
| virtual std::vector< Channel > | channels () |
| Return all the node's channels. More... | |
| virtual void | channel_plugs (std::unordered_set< Plug > &set) const |
| virtual void | animate () |
| Called when the node delegate is assigned to an animation system layer. More... | |
| Attributes | attributes () |
| virtual bool | has_transform () const |
| Return true if this node is has a transformation matrix. More... | |
| virtual Imath::M44d | matrix (const QueryContext &qc=QueryContext::at_current_frame) const |
| Return the node's local matrix which transforms a point from the local node space to the parent space. More... | |
| virtual Imath::M44d | world_matrix (const QueryContext &qc=QueryContext::at_current_frame) const |
| Return the node's world matrix which transforms a point from the local node space to the world space. More... | |
| virtual Imath::M44d | parent_world_matrix (const QueryContext &qc=QueryContext::at_current_frame) const |
| Return the node parent's world matrix which transforms a point from the parent space to the world space. More... | |
| virtual Imath::V3d | rotate_pivot (const QueryContext &qc=QueryContext::at_current_frame) const |
| virtual Imath::V3d | scale_pivot (const QueryContext &qc=QueryContext::at_current_frame) const |
| virtual Imath::V3d | joint_orient (const QueryContext &qc=QueryContext::at_current_frame) const |
| virtual Imath::V3d | rotate_axis (const QueryContext &qc=QueryContext::at_current_frame) const |
| virtual int | mutable_flags () const |
| Returns the mutable transformation component. More... | |
| virtual std::unique_ptr< TransformUserData > | start_transform (const QueryContext &qc=QueryContext::at_current_frame) |
| Start a transform modification, time to backup an initial state. More... | |
| virtual void | end_transform (const ModificationContext &mc=ModificationContext::default_mc(), TransformUserData *user_data=nullptr) |
| End a transform modification, time to backup an initial state. More... | |
| virtual void | set_matrix (const Imath::M44d &matrix, const ModificationContext &mc=ModificationContext::default_mc(), TransformUserData *user_data=nullptr) |
| Set the node matrix. More... | |
| virtual Imath::V3d | scale (const QueryContext &qc=QueryContext::at_current_frame) const |
| Return the scale of the node matrix. More... | |
| virtual void | set_scale (const Imath::V3d &scale, const ModificationContext &mc=ModificationContext::default_mc(), TransformUserData *user_data=nullptr) |
| Set the scale of the node matrix. More... | |
| virtual Imath::V3d | rotation (const QueryContext &qc=QueryContext::at_current_frame) const |
| Return the node matrix's rotation as euler radians angles in the order returned by rotation_order. More... | |
| virtual Imath::Eulerd::Order | rotate_order (const QueryContext &qc=QueryContext::at_current_frame) const |
| Return the node rotate order. More... | |
| virtual void | set_rotation (const Imath::V3d &rotation, const ModificationContext &mc=ModificationContext::default_mc(), TransformUserData *user_data=nullptr) |
| Set the transformation rotation. More... | |
| virtual Imath::V3d | translation (const QueryContext &qc=QueryContext::at_current_frame) const |
| Return the node's translation. More... | |
| virtual void | set_translation (const Imath::V3d &translation, const ModificationContext &mc=ModificationContext::default_mc(), TransformUserData *user_data=nullptr) |
| Set the translation of the node matrix. More... | |
| Imath::V3d | extract_translation (const Imath::M44d &local_matrix, const QueryContext &mc=QueryContext::at_current_frame) const |
| A helper function to extract the node delegate translation component out of a local matrix, regarding the different pivots. More... | |
| Imath::V3d | extract_rotation (Imath::M44d local_matrix, const QueryContext &mc=QueryContext::at_current_frame) const |
| A helper function to extract the node delegate rotation component out of a local matrix, regarding the joint_orient and rotate_axis. More... | |
| virtual std::shared_ptr< Observer > | create_transform_observer (const std::function< void()> &func, bool in_interactive=true) |
| Create an observer notified when the NodeDelegate transform attributes have changed. More... | |
| virtual bool | is_camera () const |
| Returns true if this node is a camera. More... | |
| virtual bool | is_locked () const |
| Return true if the camera can't be moved. More... | |
| virtual void | set_locked (bool locked, const ModificationContext &mc=ModificationContext::default_mc()) |
| Set the locked attribute. More... | |
| virtual bool | is_orthographic (const QueryContext &qc=QueryContext::at_current_frame) const |
| Does this camera has an orthographic projection. More... | |
| virtual float | orthographic_width (const QueryContext &qc=QueryContext::at_current_frame) const |
| Return the orthographic width, the length projected in the width of the camera image. More... | |
| virtual void | set_orthographic_width (float width, const ModificationContext &mc=ModificationContext::default_mc()) |
| Set the orthographic width. More... | |
| virtual float | center_of_interest (const QueryContext &qc=QueryContext::at_current_frame) const |
| Return the center of interest, the distance of the point the camera is looking at. More... | |
| virtual void | set_center_of_interest (float coi, const ModificationContext &mc=ModificationContext::default_mc()) |
| Set the center of interest. More... | |
| virtual float | near_clipping_plane (const QueryContext &qc=QueryContext::at_current_frame) const |
| Return the near clipping plane. More... | |
| virtual void | set_near_clipping_plane (float near_clipping_plane, const ModificationContext &mc=ModificationContext::default_mc()) |
| Set the near clipping plane. More... | |
| virtual float | far_clipping_plane (const QueryContext &qc=QueryContext::at_current_frame) const |
| Return the far clipping plane. More... | |
| virtual void | set_far_clipping_plane (float far_clipping_plane, const ModificationContext &mc=ModificationContext::default_mc()) |
| Set the far clipping plane. More... | |
| virtual Imath::M44d | projection_matrix (const QueryContext &qc=QueryContext::at_current_frame) const |
| Return the camera's projection matrix. More... | |
| virtual float | aspect_ratio () const |
| Return the camera's aspect ratio, width over height. This aspect ratio is used to shape the viewport's frame. More... | |
| virtual std::shared_ptr< NodeDelegate > | aim () const |
| Return the aim target node if available. More... | |
| virtual std::shared_ptr< NodeDelegate > | up () const |
| Return the up target node if available. More... | |
| virtual std::shared_ptr< Observer > | create_camera_observer (const std::function< void()> &func, bool in_interactive=true) |
| Create an observer notified when the NodeDelegate camera attributes have changed. More... | |
| virtual bool | has_geometry () const |
| Return true if this node has a geometry. More... | |
| virtual Shape | geometry () const |
| Returns the node's geometry. More... | |
| virtual bool | is_sculpt () const |
| This node is a sculpt node, i-e, displaces the vertices of the input scene's geometries using sparse buffers of delta position. More... | |
| virtual BufferConstV3f | input_points (const StringView &path, const QueryContext &qc=QueryContext::at_current_frame) const |
| Return the points of the input scene node at the given path. More... | |
| virtual SparseBufferConstV3f | delta_points (const StringView &path, const QueryContext &qc=QueryContext::at_current_frame) const |
| Return the delta points fot the scene node at the given path. More... | |
| virtual void | set_delta_points (const SparseBufferConstV3f &delta_points, const StringView &path, const ModificationContext &mc=ModificationContext::default_mc()) const |
| Set the delta points fot the scene node at the given path. More... | |
| virtual std::shared_ptr< maquina::NodeDelegate::Observer > | create_sculpt_observer (const std::function< void()> &func, bool in_interactive) |
| Create an observer notified when the NodeDelegate sculpt attributes have changed. More... | |
Protected Member Functions | |
| virtual std::shared_ptr< ChildIteratorDelegate > | _children_begin () |
| Return the begin iterator of the attributes. More... | |
| virtual std::shared_ptr< ChildIteratorDelegate > | _children_end () |
| Return the end iterator of the attributes. More... | |
| virtual std::shared_ptr< AttributeIteratorDelegate > | _attributes_begin () |
| Return the begin iterator of the attributes. More... | |
| virtual std::shared_ptr< AttributeIteratorDelegate > | _attributes_end () |
| Return the end iterator of the attributes. More... | |
Friends | |
| class | NodeDelegateWrapper |
This interface gives a high level access to the document structure.
Using this class, not only the API nodes structure can be traversed but also the values.
The values can present a hierarchical structure which is managed by the value itself.
For exemple, a USD reader Rumba node exposes the USD file structure to the Rumba user interface with special USD values and a specialized NodeDelegate.
This class can be used to traverse the document in a user interface.
Deriving this class, one can also define a value internal hierarchy.
Those objects are invalid if the document structure changes. So they shall be keeped only during the traversal and not used if the current node has been destroyed.
If you need to keep references on a node, use a path on this node. The path is a string like "/nodeA/nodeB/nodeC.plugA/nodeD/nodeE". Here "nodeA", "nodeB" and "nodeC" are valid rumba:Node objects. "plugA" is the name of a plug of "nodeC". "nodeD" and "nodeE" are nodes served by the value stored in "plugA". "nodeD" and "nodeE" do not really exist in the document.
The matrix of the node delegate is decomposed in different components: scale, shear, rotation, translation, scale_pivots, rotate_pivot and joint_orient.
The formula to get the local matrix is (using post multiplication) : matrix = [-scale_pivot] * [scale] * [shear] * [scale_pivot] * [-rotate_pivot] * [rotate] * [joint_orient] * [rotate_pivot] * [translation]
The formula to get the world matrix is (using post multiplication) : world_matrix = matrix * parent_world_matrix
|
inlinevirtual |
|
virtual |
Returns the bounding_box of the node.
Reimplemented in maquina::NodeDelegateRumba, and maquina::NodeDelegateWrapper.
|
virtual |
Returns the node's description, always returns a valid pointer.
Reimplemented in maquina::VirtualAttributeNodeDelegate, maquina::NodeDelegateRumba, maquina::NodeDelegateGroup, and maquina::NodeDelegateWrapper.
|
virtual |
Returns the document path to the node.
Reimplemented in maquina::NodeDelegateWrapper.
|
virtual |
Returns descendent node_delegate using a path starting at this node.
If the node_delegate does not exist, returns nullptr.
Reimplemented in maquina::NodeDelegateRumba, and maquina::NodeDelegateWrapper.
|
virtual |
Return true if this node delegate is a Rumba Node.
Reimplemented in maquina::NodeDelegateRumba, and maquina::NodeDelegateWrapper.
|
pure virtual |
The node's name.
Implemented by the plug-in.
Implemented in maquina::NodeDelegateRumba, maquina::NodeDelegateGroup, and maquina::NodeDelegateWrapper.
|
virtual |
Return the node behind this node delegate.
| std::runtime_error | if the node delegate is not mapped to a Node |
Reimplemented in maquina::NodeDelegateRumba, and maquina::NodeDelegateWrapper.
|
pure virtual |
Return true if the nodes are different or if one is invalid.
Implemented by the plug-in.
Implemented in maquina::NodeDelegateRumba, maquina::NodeDelegateWrapper, and maquina::NodeDelegateGroup.
|
pure virtual |
Return true if both nodes are the same or both nodes are invalid.
Implemented by the plug-in.
Implemented in maquina::NodeDelegateRumba, maquina::NodeDelegateWrapper, and maquina::NodeDelegateGroup.
|
pure virtual |
Returns the parent node.
Implemented by the plug-in.
Implemented in maquina::NodeDelegateRumba, maquina::NodeDelegateGroup, maquina::NodeDelegateSimpleList, and maquina::NodeDelegateWrapper.
|
pure virtual |
Returns the full path to the node.
Implemented by the plug-in.
Implemented in maquina::NodeDelegateRumba, maquina::NodeDelegateGroup, and maquina::NodeDelegateWrapper.
|
pure virtual |
Implemented in maquina::NodeDelegateRumba, maquina::NodeDelegateGroup, and maquina::NodeDelegateWrapper.
|
friend |