Remove write access to ConvexPolygon.vertices (#15965)
				
					
				
			# Objective - Fixes #15963 ## Solution - Implement `TryFrom<Polygon<N> for ConvexPolygon<N>` - Implement `From<ConvexPolygon<N>> for Polygon<N>` - Remove `pub` from `vertices` - Add `ConvexPolygon::vertices()` to get read only access to the vertices of a convex polygon.
This commit is contained in:
		
							parent
							
								
									76744bf58c
								
							
						
					
					
						commit
						b4e04f9d9f
					
				| @ -1592,6 +1592,14 @@ impl<const N: usize> Polygon<N> { | ||||
|     } | ||||
| } | ||||
| 
 | ||||
| impl<const N: usize> From<ConvexPolygon<N>> for Polygon<N> { | ||||
|     fn from(val: ConvexPolygon<N>) -> Self { | ||||
|         Polygon { | ||||
|             vertices: val.vertices, | ||||
|         } | ||||
|     } | ||||
| } | ||||
| 
 | ||||
| /// A convex polygon with `N` vertices.
 | ||||
| #[derive(Clone, Debug, PartialEq)] | ||||
| #[cfg_attr(feature = "serialize", derive(serde::Serialize, serde::Deserialize))] | ||||
| @ -1603,7 +1611,7 @@ impl<const N: usize> Polygon<N> { | ||||
| pub struct ConvexPolygon<const N: usize> { | ||||
|     /// The vertices of the [`ConvexPolygon`].
 | ||||
|     #[cfg_attr(feature = "serialize", serde(with = "super::serde::array"))] | ||||
|     pub vertices: [Vec2; N], | ||||
|     vertices: [Vec2; N], | ||||
| } | ||||
| impl<const N: usize> Primitive2d for ConvexPolygon<N> {} | ||||
| 
 | ||||
| @ -1651,6 +1659,20 @@ impl<const N: usize> ConvexPolygon<N> { | ||||
|     pub fn new_unchecked(vertices: [Vec2; N]) -> Self { | ||||
|         Self { vertices } | ||||
|     } | ||||
| 
 | ||||
|     /// Get the vertices of this polygon
 | ||||
|     #[inline(always)] | ||||
|     pub fn vertices(&self) -> &[Vec2; N] { | ||||
|         &self.vertices | ||||
|     } | ||||
| } | ||||
| 
 | ||||
| impl<const N: usize> TryFrom<Polygon<N>> for ConvexPolygon<N> { | ||||
|     type Error = ConvexPolygonError; | ||||
| 
 | ||||
|     fn try_from(val: Polygon<N>) -> Result<Self, Self::Error> { | ||||
|         ConvexPolygon::new(val.vertices) | ||||
|     } | ||||
| } | ||||
| 
 | ||||
| /// A polygon with a variable number of vertices, allocated on the heap
 | ||||
|  | ||||
| @ -408,7 +408,7 @@ impl<const N: usize> Meshable for ConvexPolygon<N> { | ||||
| 
 | ||||
|     fn mesh(&self) -> Self::Output { | ||||
|         Self::Output { | ||||
|             vertices: self.vertices, | ||||
|             vertices: *self.vertices(), | ||||
|         } | ||||
|     } | ||||
| } | ||||
|  | ||||
		Loading…
	
		Reference in New Issue
	
	Block a user
	 Lynn
						Lynn