Path: blob/main/crates/bevy_mesh/src/primitives/dim3/polyline3d.rs
6598 views
use crate::{Indices, Mesh, MeshBuilder, Meshable, PrimitiveTopology};1use bevy_asset::RenderAssetUsages;2use bevy_math::primitives::Polyline3d;3use bevy_reflect::prelude::*;45/// A builder used for creating a [`Mesh`] with a [`Polyline3d`] shape.6#[derive(Clone, Debug, Default, Reflect)]7#[reflect(Default, Debug, Clone)]8pub struct Polyline3dMeshBuilder {9polyline: Polyline3d,10}1112impl MeshBuilder for Polyline3dMeshBuilder {13fn build(&self) -> Mesh {14let positions: Vec<_> = self.polyline.vertices.clone();1516let indices = Indices::U32(17(0..self.polyline.vertices.len() as u32 - 1)18.flat_map(|i| [i, i + 1])19.collect(),20);2122Mesh::new(PrimitiveTopology::LineList, RenderAssetUsages::default())23.with_inserted_indices(indices)24.with_inserted_attribute(Mesh::ATTRIBUTE_POSITION, positions)25}26}2728impl Meshable for Polyline3d {29type Output = Polyline3dMeshBuilder;3031fn mesh(&self) -> Self::Output {32Polyline3dMeshBuilder {33polyline: self.clone(),34}35}36}3738impl From<Polyline3d> for Mesh {39fn from(polyline: Polyline3d) -> Self {40polyline.mesh().build()41}42}434445