Rumba C++ SDK
maquina::BrushID Class Reference

#include <BrushID.h>

Inheritance diagram for maquina::BrushID:
maquina::BrushPlugin maquina::ToolPlugin maquina::NodePlugin

Public Member Functions

 BrushID (Node *node)
 
void on_mouse_move (const CameraContext &camera, const InteractionContext &interaction) final
 
void on_mouse_press (const CameraContext &camera, const InteractionContext &interaction) final
 
void on_mouse_release (const CameraContext &camera, const InteractionContext &interaction) final
 
void activate () override
 
void deactivate () override
 
Array get_help (const char *tool) override
 
Array get_status (const char *tool) override
 
bool on_key_press (int32_t key, int32_t modifiers) final
 Called when a key is pressed while the tool is active. More...
 
bool on_key_release (int32_t key, int32_t modifiers) final
 Called when a key is released while the tool is active. More...
 
void stroke_begin (int modifiers) override
 Called when the stroke is beginning. More...
 
void stroke_update (bool first, bool finished) override
 Called when the brush moves or have been released. More...
 
void update_weights (bool first, const Imath::M44f &previous_brush_matrix) final
 Update the brush weights. More...
 
float weight (float distance) final
 Convert a distance in weight. More...
 
float flow () final
 Get the brush accumulation flow. More...
 
- Public Member Functions inherited from maquina::BrushPlugin
 BrushPlugin (Node *node)
 
BrushPlugin operator= (const BrushPlugin &)=delete
 
void activate () override
 From ToolPlugin. More...
 
void deactivate () override
 
void on_mouse_press (const CameraContext &camera, const InteractionContext &interaction) override
 
void on_mouse_move (const CameraContext &camera, const InteractionContext &interaction) override
 
void on_mouse_release (const CameraContext &camera, const InteractionContext &interaction) override
 
bool override_selection () override
 
bool track_mouse () override
 
bool manipulates () override
 
virtual bool do_update_weights ()
 Does the weights have to be updated at every stroke_update() ? More...
 
virtual void update_brush_matrix (const CameraContext &camera, const InteractionContext &interaction, bool &visible, Imath::M44f &brush_matrix, bool on_press)
 Update the brush position and visibility. More...
 
virtual float radius ()
 Get the brush radius. More...
 
void set_radius (float radius)
 Set the brush radius. More...
 
virtual bool multi_objects ()
 Get the multi objects state. More...
 
virtual float geodesic_dt ()
 Get the geodesic dt. More...
 
virtual SceneConst scene ()
 Get the displayed scene. More...
 
virtual BrushType brush_type ()
 Get the brush type. More...
 
gsl::span< GeometryDatageometry_data ()
 Return the brush's geometry data. More...
 
Imath::V3f hit_pos_world () const
 Return the brush position in world space. More...
 
const Imath::V3fhit_normal_world () const
 Return the brush normal in world space. More...
 
Imath::V3f hit_pos_world_orig () const
 Returns the world space brush position at the beginning of the stroke. More...
 
const Imath::V3fhit_normal_world_orig () const
 Return the brush normal in world space at the beginning of the stroke. More...
 
const Imath::M44fbrush_matrix () const
 Return the brush matrix which transforms from the brush local space to the world space. More...
 
const Imath::M44fbrush_matrix_orig () const
 Return the brush matrix which transforms from the brush local space to the world space at the beginning of the stroke. More...
 
bool is_brush_visible () const
 Returns true is the brush is visible. More...
 
bool is_pressed () const
 Returns true is the brush is pressed by the user. More...
 
- Public Member Functions inherited from maquina::ToolPlugin
 ToolPlugin (Node *node)
 
- Public Member Functions inherited from maquina::NodePlugin
 NodePlugin (Node *node)
 
virtual ~NodePlugin ()
 
virtual void on_first_init (bool)
 Perform the one shot initialization tasks for this node. More...
 
virtual void on_delete (bool)
 Prepare the node to be deleted. More...
 
virtual void on_add_to_document ()
 Callback called when the node is added to the document. More...
 
virtual void on_remove_from_document ()
 Callback called when the node is removed from the document. More...
 
virtual void on_input_connection (const Plug &, const Plug &, bool)
 Callback called when an a connection has been done between an output plug and a plug of this node as input. More...
 
virtual void on_output_connection (const Plug &, const Plug &, bool)
 Callback called when an a connection has been done between a plug of this node as output and an input plug. More...
 
virtual void on_input_disconnection (const Plug &, const Plug &)
 Callback called when an a connection has been broken between an output plug and a plug of this node as input. More...
 
virtual void on_output_disconnection (const Plug &, const Plug &)
 Callback called when an a connection has been broken between a plug of this node as output and an input plug. More...
 
virtual void relationship (NodeSet &set) const
 Return the node relationships. More...
 
virtual std::shared_ptr< NodeDelegatenode_delegate () const
 Return a node delegate for this node. More...
 
virtual std::optional< Plugchannel_switch_output () const
 If that not is a channel switch node, return the output channel plug. More...
 
virtual std::vector< Plugchannel_switch_inputs () const
 Return the input channel plugs. More...
 
virtual std::optional< Plugchannel_switch_sub_channel (const std::string_view &sub_channel) const
 Return the plug for the sub channel name if available. More...
 
Node node () const
 Returns the Node interface for this object. More...
 
virtual std::string selection_path () const
 Returns the node delegate path to use to select that node. More...
 

Protected Member Functions

virtual void _stroke_init_data (GeometryData &geometry)
 
virtual void _stroke_update (GeometryData &geometry)
 

Protected Attributes

SetBrushAttribute __attribute_change = SetBrushAttribute::none
 
Scene _ids
 
int _modifiers
 
std::string _input_path
 
std::string _attrib_name
 
std::string _source_path
 
M44d _source_matrix_inv
 
Mesh _source_mesh
 
BufferV3i _source_topo
 
std::vector< uint32_t > _source_tri_to_face
 
SpanSpan< const uint32_t, const uint32_t > _source_topo_face
 
BVHTriangle _source_bvh_triangle
 
SparseBufferConstUInt32 _source_ids = SparseBufferConstUInt32::default_value
 

Additional Inherited Members

- Public Types inherited from maquina::BrushPlugin
enum  BrushType { BrushType::surface = 0, BrushType::geodesic, BrushType::volume, BrushType::fill }
 The different brush types. More...
 

Constructor & Destructor Documentation

◆ BrushID()

maquina::BrushID::BrushID ( Node node)

Member Function Documentation

◆ _stroke_init_data()

virtual void maquina::BrushID::_stroke_init_data ( GeometryData geometry)
protectedvirtual

◆ _stroke_update()

virtual void maquina::BrushID::_stroke_update ( GeometryData geometry)
protectedvirtual

◆ activate()

void maquina::BrushID::activate ( )
overridevirtual

Reimplemented from maquina::ToolPlugin.

◆ deactivate()

void maquina::BrushID::deactivate ( )
overridevirtual

Reimplemented from maquina::ToolPlugin.

◆ flow()

float maquina::BrushID::flow ( )
finalvirtual

Get the brush accumulation flow.

The flow value must be between ]0, 1].

The flow control how fast the accumulation buffer saturates to one along the strokes. A value of 1 fill the accumulation buffer after a single stroke.

A value close to 0 fill the accumulation buffer slowly.

The default implementation returns the value of the flow plug.

Called by BrushPlugin. To be implemented by the plug-in.

Reimplemented from maquina::BrushPlugin.

◆ get_help()

Array maquina::BrushID::get_help ( const char *  tool)
overridevirtual

Reimplemented from maquina::ToolPlugin.

◆ get_status()

Array maquina::BrushID::get_status ( const char *  tool)
overridevirtual

Reimplemented from maquina::ToolPlugin.

◆ on_key_press()

bool maquina::BrushID::on_key_press ( int32_t  key,
int32_t  modifiers 
)
finalvirtual

Called when a key is pressed while the tool is active.

Returns true if the key event is accepted. The key code is a Qt::Key enum.

Reimplemented from maquina::ToolPlugin.

◆ on_key_release()

bool maquina::BrushID::on_key_release ( int32_t  key,
int32_t  modifiers 
)
finalvirtual

Called when a key is released while the tool is active.

Returns true if the key event is accepted. The key code is a Qt::Key enum.

Reimplemented from maquina::ToolPlugin.

◆ on_mouse_move()

void maquina::BrushID::on_mouse_move ( const CameraContext camera,
const InteractionContext interaction 
)
finalvirtual

Reimplemented from maquina::ToolPlugin.

◆ on_mouse_press()

void maquina::BrushID::on_mouse_press ( const CameraContext camera,
const InteractionContext interaction 
)
finalvirtual

Reimplemented from maquina::ToolPlugin.

◆ on_mouse_release()

void maquina::BrushID::on_mouse_release ( const CameraContext camera,
const InteractionContext interaction 
)
finalvirtual

Reimplemented from maquina::ToolPlugin.

◆ stroke_begin()

void maquina::BrushID::stroke_begin ( int  modifiers)
overridevirtual

Called when the stroke is beginning.

Called by BrushPlugin::on_mouse_move. To be implemented by the plug-in.

Reimplemented from maquina::BrushPlugin.

◆ stroke_update()

void maquina::BrushID::stroke_update ( bool  first,
bool  finished 
)
overridevirtual

Called when the brush moves or have been released.

finished is true if the stroke is over.

Called by BrushPlugin::on_mouse_press and BrushPlugin::on_mouse_move. To be implemented by the plug-in.

Reimplemented from maquina::BrushPlugin.

◆ update_weights()

void maquina::BrushID::update_weights ( bool  first,
const Imath::M44f previous_brush_matrix 
)
finalvirtual

Update the brush weights.

A plug-in can override this call to pre-compute data before the weight() calls.

Called by BrushPlugin::on_mouse_press and BrushPlugin::on_mouse_move. To be implemented by the plug-in.

Reimplemented from maquina::BrushPlugin.

◆ weight()

float maquina::BrushID::weight ( float  )
finalvirtual

Convert a distance in weight.

The distance is in the same units than the radius. The plug-in can override the default behavior to propose complex weight functions to the user.

The default implementation returns 1.

Called by BrushPlugin::update_weights. To be implemented by the plug-in.

Reimplemented from maquina::BrushPlugin.

Member Data Documentation

◆ __attribute_change

SetBrushAttribute maquina::BrushID::__attribute_change = SetBrushAttribute::none
protected

◆ _attrib_name

std::string maquina::BrushID::_attrib_name
protected

◆ _ids

Scene maquina::BrushID::_ids
protected

◆ _input_path

std::string maquina::BrushID::_input_path
protected

◆ _modifiers

int maquina::BrushID::_modifiers
protected

◆ _source_bvh_triangle

BVHTriangle maquina::BrushID::_source_bvh_triangle
protected

◆ _source_ids

SparseBufferConstUInt32 maquina::BrushID::_source_ids = SparseBufferConstUInt32::default_value
protected

◆ _source_matrix_inv

M44d maquina::BrushID::_source_matrix_inv
protected

◆ _source_mesh

Mesh maquina::BrushID::_source_mesh
protected

◆ _source_path

std::string maquina::BrushID::_source_path
protected

◆ _source_topo

BufferV3i maquina::BrushID::_source_topo
protected

◆ _source_topo_face

SpanSpan<const uint32_t, const uint32_t> maquina::BrushID::_source_topo_face
protected

◆ _source_tri_to_face

std::vector<uint32_t> maquina::BrushID::_source_tri_to_face
protected

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