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.
 | /// A convex polygon with `N` vertices.
 | ||||||
| #[derive(Clone, Debug, PartialEq)] | #[derive(Clone, Debug, PartialEq)] | ||||||
| #[cfg_attr(feature = "serialize", derive(serde::Serialize, serde::Deserialize))] | #[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> { | pub struct ConvexPolygon<const N: usize> { | ||||||
|     /// The vertices of the [`ConvexPolygon`].
 |     /// The vertices of the [`ConvexPolygon`].
 | ||||||
|     #[cfg_attr(feature = "serialize", serde(with = "super::serde::array"))] |     #[cfg_attr(feature = "serialize", serde(with = "super::serde::array"))] | ||||||
|     pub vertices: [Vec2; N], |     vertices: [Vec2; N], | ||||||
| } | } | ||||||
| impl<const N: usize> Primitive2d for ConvexPolygon<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 { |     pub fn new_unchecked(vertices: [Vec2; N]) -> Self { | ||||||
|         Self { vertices } |         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
 | /// 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 { |     fn mesh(&self) -> Self::Output { | ||||||
|         Self::Output { |         Self::Output { | ||||||
|             vertices: self.vertices, |             vertices: *self.vertices(), | ||||||
|         } |         } | ||||||
|     } |     } | ||||||
| } | } | ||||||
|  | |||||||
		Loading…
	
		Reference in New Issue
	
	Block a user
	 Lynn
						Lynn