11 Eigen::Index samples_per_segment = 32);
16 void initialize(
const std::vector<LineVertex>& vertices);
23 void initialize_paths(
24 const std::vector<std::vector<LineVertex>>& paths,
33 const std::vector<LineVertex>& control_vertices,
36 void process(
float dt)
override;
38 [[nodiscard]] std::span<const uint8_t> get_vertex_data()
const override;
39 [[nodiscard]] std::span<const uint8_t> get_vertex_data_for_collection(uint32_t idx)
const override;
41 [[nodiscard]]
size_t get_vertex_count()
const override;
42 [[nodiscard]]
bool is_vertex_data_dirty()
const override;
43 void mark_vertex_data_clean()
override;
49 [[nodiscard]] std::vector<LineVertex> extract_vertices()
const;
51 void set_parameter(std::string_view param,
double value)
override;
52 [[nodiscard]] std::optional<double> query_state(std::string_view query)
const override;
53 [[nodiscard]] std::string_view
get_type_name()
const override {
return "Path"; }
54 [[nodiscard]]
size_t get_point_count()
const override;
60 void set_samples_per_segment(Eigen::Index samples);
66 void set_tension(
double tension);
72 void set_global_thickness(
float thickness);
78 void set_global_color(
const glm::vec3& color);
89 void* get_data_at(
size_t global_index)
override;
92 std::vector<std::shared_ptr<GpuSync::PathGeneratorNode>>
m_paths;
98 float m_default_thickness { 2.0F };