@@ -177,8 +177,9 @@ Graph<Dim>::Graph(const Graph &other)
177177 is_directed_(other.is_directed_) {}
178178
179179template <int Dim>
180- thrust::host_vector<int > Graph<Dim>::GetEdgeIndexOffsets() const {
181- thrust::host_vector<int > edge_index_offsets = edge_index_offsets_;
180+ std::vector<int > Graph<Dim>::GetEdgeIndexOffsets() const {
181+ std::vector<int > edge_index_offsets (edge_index_offsets_.size ());
182+ copy_device_to_host (edge_index_offsets_, edge_index_offsets);
182183 return edge_index_offsets;
183184}
184185
@@ -189,8 +190,9 @@ void Graph<Dim>::SetEdgeIndexOffsets(
189190}
190191
191192template <int Dim>
192- thrust::host_vector<float > Graph<Dim>::GetEdgeWeights() const {
193- thrust::host_vector<float > edge_weights = edge_weights_;
193+ std::vector<float > Graph<Dim>::GetEdgeWeights() const {
194+ std::vector<float > edge_weights (edge_weights_.size ());
195+ copy_device_to_host (edge_weights_, edge_weights);
194196 return edge_weights;
195197}
196198
@@ -390,6 +392,18 @@ Graph<Dim> &Graph<Dim>::AddEdges(
390392 return AddEdges (d_edges, d_weights, lazy_add);
391393}
392394
395+ template <int Dim>
396+ Graph<Dim> &Graph<Dim>::AddEdges(
397+ const std::vector<Eigen::Vector2i> &edges,
398+ const std::vector<float > &weights,
399+ bool lazy_add) {
400+ utility::device_vector<Eigen::Vector2i> d_edges (edges.size ());
401+ copy_host_to_device (edges, d_edges);
402+ utility::device_vector<float > d_weights (weights.size ());
403+ copy_host_to_device (weights, d_weights);
404+ return AddEdges (d_edges, d_weights, lazy_add);
405+ }
406+
393407template <int Dim>
394408Graph<Dim> &Graph<Dim>::RemoveEdge(const Eigen::Vector2i &edge) {
395409 bool has_colors = this ->HasColors ();
@@ -510,6 +524,13 @@ Graph<Dim> &Graph<Dim>::RemoveEdges(
510524 return RemoveEdges (d_edges);
511525}
512526
527+ template <int Dim>
528+ Graph<Dim> &Graph<Dim>::RemoveEdges(const std::vector<Eigen::Vector2i> &edges) {
529+ utility::device_vector<Eigen::Vector2i> d_edges (edges.size ());
530+ copy_host_to_device (edges, d_edges);
531+ return RemoveEdges (d_edges);
532+ }
533+
513534template <int Dim>
514535Graph<Dim> &Graph<Dim>::PaintEdgeColor(const Eigen::Vector2i &edge,
515536 const Eigen::Vector3f &color) {
@@ -574,6 +595,15 @@ Graph<Dim> &Graph<Dim>::PaintEdgesColor(
574595 return PaintEdgesColor (d_edges, color);
575596}
576597
598+ template <int Dim>
599+ Graph<Dim> &Graph<Dim>::PaintEdgesColor(
600+ const std::vector<Eigen::Vector2i> &edges,
601+ const Eigen::Vector3f &color) {
602+ utility::device_vector<Eigen::Vector2i> d_edges (edges.size ());
603+ copy_host_to_device (edges, d_edges);
604+ return PaintEdgesColor (d_edges, color);
605+ }
606+
577607template <int Dim>
578608Graph<Dim> &Graph<Dim>::PaintNodeColor(int node, const Eigen::Vector3f &color) {
579609 if (!HasNodeColors ()) {
@@ -602,6 +632,14 @@ Graph<Dim> &Graph<Dim>::PaintNodesColor(const thrust::host_vector<int> &nodes,
602632 return PaintNodesColor (d_nodes, color);
603633}
604634
635+ template <int Dim>
636+ Graph<Dim> &Graph<Dim>::PaintNodesColor(const std::vector<int > &nodes,
637+ const Eigen::Vector3f &color) {
638+ utility::device_vector<int > d_nodes (nodes.size ());
639+ copy_host_to_device (nodes, d_nodes);
640+ return PaintNodesColor (d_nodes, color);
641+ }
642+
605643template <int Dim>
606644Graph<Dim> &Graph<Dim>::SetEdgeWeightsFromDistance() {
607645 edge_weights_.resize (this ->lines_ .size ());
0 commit comments