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;
58 [[nodiscard]] std::vector<DirtyVertexRange> dirty_vertex_ranges()
const override;
72 [[nodiscard]] std::vector<LineVertex> extract_vertices()
const;
74 void set_parameter(std::string_view param,
double value)
override;
75 [[nodiscard]] std::optional<double> query_state(std::string_view query)
const override;
76 [[nodiscard]] std::string_view
get_type_name()
const override {
return "Topology"; }
77 [[nodiscard]]
size_t get_point_count()
const override;
96 [[nodiscard]] std::vector<uint32_t> build_cluster_ids()
const override;
107 [[nodiscard]] std::optional<Portal::Graphics::PrimitiveTopology> declared_topology()
const override;
113 std::vector<DrawRun> topology_runs()
const override;
120 [[nodiscard]] std::shared_ptr<GpuSync::TopologyGeneratorNode>
get_topology(
size_t i)
const
122 if (i >= m_topologies.size()) {
125 return m_topologies[i];
132 void set_connection_radius(
float radius);
138 void set_global_line_thickness(
float thickness);
144 void set_global_line_color(
const glm::vec3&
color);
152 void set_vertices(
const std::vector<LineVertex>& vertices);
160 void set_samples_per_segment(
size_t samples);
171 void* get_data_at(
size_t global_index)
override;
174 std::vector<std::shared_ptr<GpuSync::TopologyGeneratorNode>>
m_topologies;
180 mutable std::atomic<uint32_t> m_access_token { 0 };
181 std::atomic<bool> m_shutdown {
false };