21 #include <unordered_map> 22 #include <unordered_set> 34 struct GeometryComponentSelection;
35 struct LastSelectedComponent;
43 const std::string_view& path,
58 static void set_class_name(std::string class_name);
97 const char* modification_name,
98 const gsl::span<const float>& interactive_frames = {}
145 bool layer_value=
false,
166 bool skip_disabled=
true 223 std::vector<Plug> channels,
224 bool all_layers=
false 232 const std::string_view& srt_class_name =
"SRTToTransformNode" 281 const std::vector<Node>& nodes,
287 std::vector<std::string> paths,
297 std::vector<GeometryComponentSelection>&&
selection,
299 bool keep_sub_components =
true 336 const Value& to_match
355 const std::unordered_set<std::string>& channels_to_match,
356 const std::unordered_set<std::string>& selected_channels,
369 const Value& to_paste,
370 const std::vector< std::pair<std::string, std::string> >& matched_channels,
380 const Value& to_paste,
381 const std::vector< std::pair<std::string, std::string> >& matched_channels,
396 Node& anim_curve_node,
397 const AnimCurve& curve,
434 const std::vector<Node>& layers
449 std::vector<Node>& layers,
450 const char* layer_type,
451 bool recursive =
false 467 int all_frames_interval = 1,
468 int all_frames_offset = 0,
469 int all_frames_tangents_mode = 1
477 int all_frames_interval=1,
478 int all_frames_offset=0,
479 int all_frames_tangents_mode=1
487 int tangents_mode = 1
493 const Plug& value_plug,
496 int tangents_mode = 1
506 const std::wstring& filepath,
507 const std::string& reference_root_name =
"",
515 const std::wstring& filepath
525 const std::wstring& filepath,
526 const std::string& root_name =
"",
533 const std::vector<std::string>& channels,
540 const Dict& from_pose,
549 const std::vector<std::string>& channels,
563 MAQUINA_EXPORT void init_crash_handler(
const std::string& message,
bool send_report,
const std::wstring& app_name,
const std::wstring& app_version,
const std::string& recovery_file_extension,
const std::string& post_dump_url);
640 const std::string_view& path,
647 const std::string& path,
656 const std::string& path,
657 bool comparable=
false);
707 MAQUINA_EXPORT Value
weighted_sum(
const gsl::span<const Value>& values,
const gsl::span<const double>& weights,
int quat_iter = 15,
double quat_eps = 1e-12);
732 MAQUINA_EXPORT bool delete_orphan_alb(Node& node,
bool undo_stack);
741 MAQUINA_EXPORT void pick(
const std::function<
void(
const std::optional<std::string_view>& path)>& picking_callback);
MAQUINA_EXPORT void flush_observers()
Make sure all the observers have been called.
PasteType
Definition: Workspace.h:360
MAQUINA_EXPORT void set_current_frame(float frame)
set the current frame
MAQUINA_EXPORT Node manipulator_controller(Node &manipulator)
Get the controller related to this manipulator.
MAQUINA_EXPORT Node asset_child_manipulator(Node &asset, const Node &child)
Get the manipulator associated to the asset child.
MAQUINA_EXPORT void background_wait()
Wait for the baground evaluation engine.
MAQUINA_EXPORT void create_type_alias(const std::string &previous_type_name, std::string new_type_name)
Create a type alias. When reading an object of type 'previous_type_name', creates an object of type '...
MAQUINA_EXPORT bool is_left(Node &asset, const std::string &name)
Return true if the name is left using the asset mirroring rules.
MAQUINA_EXPORT Dict blend_poses(const Dict &from_pose, const Dict &to_pose, float weight)
Blend from pose to pose using weight factor.
MAQUINA_EXPORT void set_document_factory(const std::function< maquina::Node()> &factory)
Set a factory to create document plugin.
MAQUINA_EXPORT bool is_picking()
Return true if the picking is started.
MAQUINA_EXPORT Node load_node(Node &root, const std::wstring &filepath, const std::string &root_name="", const ProgressCallback &progress={})
Load the content of a file into the project.
MAQUINA_EXPORT bool has_animated_plug_in_layer(const Plug &plug, Node &layer)
Check if the plug has an animated plug in the layer.
MAQUINA_EXPORT bool can_be_flatten(Node &layer)
MAQUINA_EXPORT Value weighted_sum(const gsl::span< const Value > &values, const gsl::span< const double > &weights, int quat_iter=15, double quat_eps=1e-12)
Computes the weighted sum of a set of values.
MAQUINA_EXPORT void background_start()
Start the background evaluation engine.
MAQUINA_EXPORT void notify_picking(const std::string_view &node_delegate_path)
Call the picking callback.
MAQUINA_EXPORT void move_layer(Node &layer, int dest_id)
Re-order layers.
MAQUINA_EXPORT Node active_document()
Return the active Document node.
MAQUINA_EXPORT void modify_begin(const char *modification_name, const gsl::span< const float > &interactive_frames={})
Begin a modification of the current document.
MAQUINA_EXPORT bool is_demo_mode()
Test if Rumba/Guerilla is in demo mode.
Add to the active selection.
MAQUINA_EXPORT Plug animated_plug_in_layer(const Plug &plug, Node &layer)
Return the animated plug in the specific layer.
MAQUINA_EXPORT Node workspace()
Return the workspace node.
MAQUINA_EXPORT Dict matching_pose(const Dict &pose, const std::vector< std::string > &channels, MatchMirrorMode mirror_mode)
Match a pose to a set of channels.
MAQUINA_EXPORT bool rig_matrix(Plug &plug, const std::string_view &srt_class_name="SRTToTransformNode")
Rig a matrix plug.
MAQUINA_EXPORT Value default_rig_value(Plug &plug)
Return the default value if available.
MAQUINA_EXPORT Plug background_progress()
Use this plug to be notified on background engine progress.
MAQUINA_EXPORT std::vector< Node > asset_controllers(Node &asset)
Get the asset controllers.
FlattenMode
Specify a way to flatten a layer into another.
Definition: Workspace.h:455
MAQUINA_EXPORT bool asset_has_child(Node &asset, const std::string &name)
Return true if the asset contain a child named name.
Definition: ImathFrame.h:43
Keep both destination and origin layers key to perform the merge.
MAQUINA_EXPORT std::string asset_mirror_path(Node &asset, const std::string &path)
Return the mirrored path using the asset mirroring rules.
MAQUINA_EXPORT bool is_rig_mode_on()
Returns true if the rig mode is active, false otherwise.
MAQUINA_EXPORT bool is_right(Node &asset, const std::string &name)
Return true if the name is right using the asset mirroring rules.
MAQUINA_EXPORT void add_modify_action(const std::shared_ptr< maquina::CustomAction > &custom_action)
Add a custom action to the current modifier.
MAQUINA_EXPORT maquina::Plug widget_setting_plug(const std::string &setting_name, const std::string &widget_name, const maquina::Value &default_value)
MatchMirrorMode
Mirror mode used in match_to_channels.
Definition: Workspace.h:340
Do not try to match the selection controller's mirrored channels.
MAQUINA_EXPORT bool has_animated_channel(Plug &animated_plug)
Check if the animated plug has an animated channel.
MAQUINA_EXPORT std::optional< Node > asset_controller(Node &asset, const std::string_view &controller_name)
Get an asset controller if it exists, else return null.
MAQUINA_EXPORT void bake_layer(Node &layer, int interval=1, int offset=0, int tangents_mode=1)
Bake the layer.
MAQUINA_EXPORT void paste_keys_on_curve(Node &anim_curve_node, const AnimCurve &curve, float frame_in, float frame_out, float to_frame, PasteMode mode=PasteMode::Merge)
Paste the curve keys into an animation curve node.
MAQUINA_EXPORT void remove_keys(Node &anim_layer, bool normalize=true)
Remove the active key selection in a layer.
Insert the clipboard at the destination frame.
MAQUINA_EXPORT Array trigger_event(const std::string_view &event_type, const Value &value=Value::default_value)
Trigger an event, return an Array value with the triggered event returned values. ...
Derive this class to create your own Node type.
Definition: NodePlugin.h:28
PasteMode
Specify a way to paste the clipboard.
Definition: Workspace.h:320
MAQUINA_EXPORT Node create_tool_geometry(const char *name, Node &parent)
Create a geometry node for tools, i-e, not in a document.
MAQUINA_EXPORT void time_warp_keys(Node &anim_layer)
Time warp the active key selection using the selection rubberband.
MAQUINA_EXPORT Node duplicate_layer(Node &layer)
Duplicate the layer and its animation.
MAQUINA_EXPORT bool has_target_layer(const Plug &plug)
Check if the plug has a layer that can receive the plug animation.
MAQUINA_EXPORT void redo()
Make a redo step.
MAQUINA_EXPORT std::vector< Node > in_animated_layers(const Plug &plug, bool skip_disabled=true)
Return the animation layers that are modifying this plug.
MAQUINA_EXPORT void pick(const std::function< void(const std::optional< std::string_view > &path)> &picking_callback)
Start the picking process: register a function to call the next time a node delegate is selected or t...
MAQUINA_EXPORT void select(const std::vector< Node > &nodes, SelectionMode mode=SelectionMode::Replace)
Update the active selection with a list of nodes according to the selection mode. ...
MAQUINA_EXPORT bool asset_has_manipulator(Node &asset, const std::string &manipulator_name)
Return true if the asset contain the manipulator.
MAQUINA_EXPORT void ungroup_layer(Node &layer_group)
Ungroup layer.
MAQUINA_EXPORT Plug animated_channel(Plug &animated_plug)
Return the animated channel connected to a layer.
MAQUINA_EXPORT void transform_keys(Node &anim_layer)
Transform the active key selection using the selection rubberband.
MAQUINA_EXPORT Node asset_mirror_node(Node &asset, const Node &node)
Return the mirrored node using the asset mirroring rules.
This version of the SDK is unstable, i-e, it may change with no warning.
Definition: AddCurveAction.h:20
MAQUINA_EXPORT void frame_camera(maquina::NodeDelegate &camera, const std::vector< std::shared_ptr< maquina::NodeDelegate >> &selection)
Move a camera to contain a node selection.
MAQUINA_EXPORT bool has_controller(const Plug &plug)
Test if a controller is associated to a plug.
MAQUINA_EXPORT std::unordered_set< std::string > selected_keys_channels(Node &anim_layer)
Return the channels associated with the active key selection in a layer.
MAQUINA_EXPORT std::vector< std::string > selection_paths()
Return the paths of the active node delegate selection.
MAQUINA_EXPORT std::vector< std::shared_ptr< maquina::NodeDelegate > > cameras()
Return the available cameras.
MAQUINA_EXPORT std::string asset_mirror(Node &asset, const std::string &name)
Return the mirrored name using the asset mirroring rules.
Only keep the destination layers key to perform the merge.
MAQUINA_EXPORT Value default_value(const maquina::StringView &type_name)
Return the default value of a type.
static const Value default_value
The default value.
Definition: Value.h:245
MAQUINA_EXPORT Node asset_display(const Node &asset)
MAQUINA_EXPORT Value animated_plug_value_in_layer(const Plug &plug, const Node &layer, float frame)
Return the animated plug value in the specific layer.
MAQUINA_EXPORT void delete_channels_animation(std::vector< Plug > channels, bool all_layers=false)
Reset the channels value in their target layer without removing the channel from the layer...
MAQUINA_EXPORT Node controller(const Plug &plug)
Return the controller associated to a plug.
ChannelMode
The channel modes.
Definition: ChannelMode.h:23
MAQUINA_EXPORT void unregister_event_callback(int callback_id)
Unregister an event callback.
MAQUINA_EXPORT PasteType is_paste_valid(const Value &to_paste, const std::vector< std::pair< std::string, std::string > > &matched_channels, Node &dest_layer)
Test if the targeted channels are open to be modified by the clipboard in a layer.
MAQUINA_EXPORT void constrain_node(Node &constraint, Node &node)
Constrain the node to the constraint.
Definition: Workspace.h:37
MAQUINA_EXPORT void start_profiling()
Start an interactive profiling session.
MAQUINA_EXPORT std::string active_document_filename()
Return the active document filename.
MAQUINA_EXPORT std::vector< std::pair< std::string, Imath::V2f > > end_profiling()
Stop the interactive profiling session.
MAQUINA_EXPORT const std::vector< GeometryComponentSelection > & sub_component_selection()
Return the selected geometry components.
MAQUINA_EXPORT std::optional< Node > add_document(const std::string &path, const ProgressCallback &progress={})
Add a new document in the current project and return it. Do not close any opened document.
MAQUINA_EXPORT Node reference(Node &root, const std::wstring &filepath, const std::string &reference_root_name="", const ProgressCallback &progress={})
Reference the content of a file into the project.
#define MAQUINA_EXPORT
Definition: Export.h:31
MAQUINA_EXPORT std::vector< std::shared_ptr< NodeDelegate > > tool_selection()
Return the active tool delegate selection.
MAQUINA_EXPORT bool modify_abort()
Cancel and rollback current modification.
A node plug.
Definition: Plug.h:59
std::function< bool(float, const char *)> ProgressCallback
Definition: Progress.h:22
MAQUINA_EXPORT void undo_blend(float undo_blend)
Set the undo blend factor of the last modification.
Invert the active selection.
MAQUINA_EXPORT void group_child_layers(Node &layer_group, std::vector< Node > &layers, const char *layer_type, bool recursive=false)
MAQUINA_EXPORT void paste_keys(const Value &to_paste, const std::vector< std::pair< std::string, std::string > > &matched_channels, Node &dest_layer, float frame_in, float frame_out, float to_frame, PasteMode mode=PasteMode::Merge, PasteType type=PasteType::Hard)
Paste values onto matching channels in a targeted layer.
MAQUINA_EXPORT void enable_plug_listener(bool enable)
If enable is false, stop flushing the plug listener handlers.
SelectionMode
Specify a way to alter the active selection.
Definition: Workspace.h:271
MAQUINA_EXPORT void undo()
Make a undo step.
MAQUINA_EXPORT void select_delegate(std::vector< std::string > paths, SelectionMode mode=SelectionMode::Replace)
Update the active selection with a list of node paths according to the selection mode.
Replace the active selection.
MAQUINA_EXPORT Value copy_keys(Node &anim_layer)
Return a copy of the active key selection in a layer.
MAQUINA_EXPORT bool has_loader(const std::wstring &filepath)
Is there a loader for this file type ?
MAQUINA_EXPORT float current_frame()
Shortcut for the active document current frame.
Force to match the selection controller's mirrored channels.
Remove from the active selection.
MAQUINA_EXPORT bool asset_child_has_manipulator(Node &asset, const Node &child)
Return true if the asset child has a manipulator.
MAQUINA_EXPORT Plug animated_plug(const Plug &plug)
Return the animated plug, regarding the current layer.
MAQUINA_EXPORT Dict extract_pose(const std::vector< std::string > &channels, float frame)
Extract a pose from a selection of plugs.
MAQUINA_EXPORT void init_crash_handler(const std::string &message, bool send_report, const std::wstring &app_name, const std::wstring &app_version, const std::string &recovery_file_extension, const std::string &post_dump_url)
Init the crash handler with the message to attach to the crash reports.
MAQUINA_EXPORT std::vector< Node > selection()
Return the active selected maquina::Node objects.
MAQUINA_EXPORT Node target_layer(const Plug &plug)
Return the layer receiving the plug animation.
MAQUINA_EXPORT Node add_new_document()
Add a new, empty document in the current project and return it. Do not close any opened document...
MAQUINA_EXPORT std::vector< std::pair< std::string, std::string > > match_channels(const Value &to_match)
Return the best match between the channels to be pasted and the active selection. ...
MAQUINA_EXPORT Node flatten_group(Node &layer_group, FlattenMode mode=FlattenMode::Union_Keys, int all_frames_interval=1, int all_frames_offset=0, int all_frames_tangents_mode=1)
Flatten a group layer.
MAQUINA_EXPORT std::string beautify(const std::string &s)
Format the label to a nice string.
MAQUINA_EXPORT Node asset_child(Node &asset, const std::string &name)
Get the first child node named name of this asset.
MAQUINA_EXPORT bool is_modifying()
Return true if modify_begin has been called but not modify_end yet.
MAQUINA_EXPORT void reparent_layers(Node &parent, const std::vector< Node > &layers)
Move layers.
MAQUINA_EXPORT void load_document(const std::string_view &path, const ProgressCallback &progress={})
Open a new Rumba/Guerilla project.
MAQUINA_EXPORT void modify_curve_begin(const char *modification_name)
Begin a modification of the current document.
MAQUINA_EXPORT std::optional< Node > node_asset(const Node &node)
Return the asset node associated with another node.
MAQUINA_EXPORT std::vector< Channel > channel_selection(ChannelMode channel_mode_filter)
Return the selected channels. Selected channels are the selected nodes channels, filtered by the Chan...
If no match found, try to match the selection controller's mirrored channels.
MAQUINA_EXPORT Node asset_manipulator(Node &asset, const std::string &manipulator_name)
Get the manipulator with the name manipulator name from this asset.
MAQUINA_EXPORT std::vector< std::shared_ptr< NodeDelegate > > delegate_selection()
Return the active node delegate selection.
This interface gives a high level access to the document structure.
Definition: NodeDelegate.h:72
MAQUINA_EXPORT LastSelectedComponent last_selected_components()
Return the last selected components.
Create a key at all frame to bake the whole animation of two layers into a single layer...
MAQUINA_EXPORT bool has_active_document()
Return true if there is an active Document node.
MAQUINA_EXPORT void stop_picking()
End the picking process, unregister the callback and call it with an empty value to signal the abort...
MAQUINA_EXPORT bool modify_end()
End a modification of the current document.
MAQUINA_EXPORT void transform_curve_keys(const Plug &plug, std::unordered_map< float, float > &original_to_transformed_keys)
MAQUINA_EXPORT bool delete_animation_graph(Node &node_to_delete, bool undo_stack=true)
Delete properly the node animation graph.
MAQUINA_EXPORT void select_sub_component(std::vector< GeometryComponentSelection > &&selection, SelectionMode mode=SelectionMode::Replace, bool keep_sub_components=true)
Update the active sub component selection with a node paths associated to selection weights...
MAQUINA_EXPORT Plug animation_node_channel_plug(Node &node)
Get the channel plug (input of the rig) from an animation node (like an AnimCurveFloat node) ...
MAQUINA_EXPORT void bake_curve(Node &curve, const Plug &value_plug, int interval=1, int offset=0, int tangents_mode=1)
Bake curve.
MAQUINA_EXPORT void flatten_layer(Node &layer, Node &dest_layer, FlattenMode mode=FlattenMode::Union_Keys, int all_frames_interval=1, int all_frames_offset=0, int all_frames_tangents_mode=1)
Flatten a layer into the previous one.
Clear destination before paste.
MAQUINA_EXPORT void set_animated_plug_value(Plug &plug, const Value &value, float frame, bool create_curve, bool layer_value=false, int tangent_mode=-1)
Set a value to plug, regarding the target layer and the current plug animation.
MAQUINA_EXPORT void set_active_document(Node &document)
Set the active Document node.
MAQUINA_EXPORT bool has_animated_plug(const Plug &plug)
Check if the plug has an animated plug.
Merge the clipboard with the destination.
MAQUINA_EXPORT std::optional< Node > document(const std::string &path, bool comparable=false)
Return the document node associated to that file path.
MAQUINA_EXPORT bool can_undo_blend()
Check if it's possible to undo blend.
MAQUINA_EXPORT int insert_key(const Plug &plug, float t, float v)
MAQUINA_EXPORT void key_layer(Node &layer, float frame, bool default_value=false)
Add a key frame on a layer.
MAQUINA_EXPORT int register_event_callback(const std::string_view &event_type, std::function< Value(const Value &)> callback)
Register an event callback, returns its ID for unregistering.
MAQUINA_EXPORT void clear_profiling()
Clear the profiling session data.
MAQUINA_EXPORT void remove_key(Plug &plug, const float frame)
Remove the key at frame in the active layer.
MAQUINA_EXPORT void new_document()
Close the current documents and create a new document.
Base class of all Rumba nodes.
Definition: Node.h:37
Base class of all Rumba values.
Definition: Value.h:34
MAQUINA_EXPORT std::pair< std::vector< std::pair< std::string, std::string > >, bool > match_to_channels(const std::unordered_set< std::string > &channels_to_match, const std::unordered_set< std::string > &selected_channels, MatchMirrorMode mirror_mode)
Return the best match between the channels to be pasted and the active selection. ...