34 std::shared_ptr<GpuSync::GeometryLeafNode> add_geometry(
35 std::vector<glm::vec3> positions,
39 std::shared_ptr<GpuSync::GeometryLeafNode> add_geometry(
40 std::vector<Kakshya::Vertex> vertices,
44 std::shared_ptr<GpuSync::MeshWriterNode> add_geometry(
const Kakshya::MeshData& mesh);
47 void add_geometry(std::shared_ptr<GpuSync::GeometryWriterNode> node);
53 bool remove_geometry(
const std::shared_ptr<GpuSync::GeometryWriterNode>& node);
55 [[nodiscard]]
size_t item_count()
const {
return m_items.size(); }
57 void process(
float dt)
override;
59 [[nodiscard]] std::span<const uint8_t> get_vertex_data()
const override;
60 [[nodiscard]] std::span<const uint8_t> get_vertex_data_for_collection(uint32_t idx)
const override;
71 [[nodiscard]]
size_t get_vertex_count()
const override;
72 [[nodiscard]]
bool is_vertex_data_dirty()
const override;
73 void mark_vertex_data_clean()
override;
79 [[nodiscard]] std::vector<DirtyVertexRange> dirty_vertex_ranges()
const override;
82 [[nodiscard]]
size_t get_point_count()
const override;
88 [[nodiscard]] std::vector<uint32_t> build_cluster_ids()
const override;
91 [[nodiscard]] std::optional<Portal::Graphics::PrimitiveTopology> declared_topology()
const override;
97 [[nodiscard]] std::vector<DrawRun> topology_runs()
const override;
99 void set_parameter(std::string_view param,
double value)
override;
100 [[nodiscard]] std::optional<double> query_state(std::string_view query)
const override;
101 [[nodiscard]] std::string_view
get_type_name()
const override {
return "Assembly"; }
105 void* get_data_at(
size_t global_index)
override;
108 std::vector<std::shared_ptr<GpuSync::GeometryWriterNode>>
m_items;