7#include "structure/tracks/channel_track.h"
9namespace zrythm::structure::tracks
17class GroupTargetTrack :
virtual public ChannelTrack
20 GroupTargetTrack ()
noexcept { }
23 ~GroupTargetTrack ()
override =
default;
24 Z_DISABLE_COPY_MOVE (GroupTargetTrack)
40 bool pub_events) final;
73 friend
void init_from (
74 GroupTargetTrack &obj,
75 const GroupTargetTrack &other,
76 utils::ObjectCloneType clone_type);
79 static constexpr auto kChildrenKey =
"children"sv;
80 friend
void to_json (nlohmann::json &j, const GroupTargetTrack &track)
82 j[kChildrenKey] = track.children_;
86 j.at (kChildrenKey).get_to (track.
children_);
92 static void update_child_output (
93 ChannelTrack &ch_track,
94 GroupTargetTrack * output,
98 bool contains_child (Track::Uuid child_name_hash);
Abstract base class for a track that can be routed to.
virtual void remove_child(Track::Uuid child_id, bool disconnect, bool recalc_graph, bool pub_events) final
Removes a child track from the list of children.
void add_child(Track::Uuid child_id, bool connect, bool recalc_graph, bool pub_events)
Adds a child track to the list of children.
int find_child(Track::Uuid track_name_hash)
Returns the index of the child matching the given hash.
std::vector< Track::Uuid > children_
Name hashes of tracks that are routed to this track, if group track.
virtual void update_children() final
Updates the track's children.
void remove_all_children(bool disconnect, bool recalc_graph, bool pub_events)
Remove all known children.
Represents a track in the project.