17 void initialize(
const std::vector<LineVertex>& vertices);
24 void initialize_topologies(
25 const std::vector<std::vector<LineVertex>>& topologies,
34 const std::vector<LineVertex>& vertices,
37 void process(
float dt)
override;
39 [[nodiscard]] std::span<const uint8_t> get_vertex_data()
const override;
40 [[nodiscard]] std::span<const uint8_t> get_vertex_data_for_collection(uint32_t idx)
const override;
42 [[nodiscard]]
size_t get_vertex_count()
const override;
43 [[nodiscard]]
bool is_vertex_data_dirty()
const override;
44 void mark_vertex_data_clean()
override;
50 [[nodiscard]] std::vector<LineVertex> extract_vertices()
const;
52 void set_parameter(std::string_view param,
double value)
override;
53 [[nodiscard]] std::optional<double> query_state(std::string_view query)
const override;
54 [[nodiscard]] std::string_view
get_type_name()
const override {
return "Topology"; }
55 [[nodiscard]]
size_t get_point_count()
const override;
62 [[nodiscard]] std::shared_ptr<GpuSync::TopologyGeneratorNode>
get_topology(
size_t i)
const
64 if (i >= m_topologies.size()) {
67 return m_topologies[i];
74 void set_connection_radius(
float radius);
80 void set_global_line_thickness(
float thickness);
86 void set_global_line_color(
const glm::vec3& color);
94 void set_samples_per_segment(
size_t samples);
105 void* get_data_at(
size_t global_index)
override;
108 std::vector<std::shared_ptr<GpuSync::TopologyGeneratorNode>>
m_topologies;
113 float m_default_thickness { 2.0F };
115 mutable std::atomic<uint32_t> m_access_token { 0 };
116 std::atomic<bool> m_shutdown {
false };