diff --git a/crates/bevy_core/src/bytes.rs b/crates/bevy_core/src/bytes.rs index 109c523eb4..f5846c67bc 100644 --- a/crates/bevy_core/src/bytes.rs +++ b/crates/bevy_core/src/bytes.rs @@ -83,10 +83,8 @@ where T: Byteable, { } -unsafe impl Byteable for [T; 2] where T: Byteable {} -unsafe impl Byteable for [T; 3] where T: Byteable {} -unsafe impl Byteable for [T; 4] where T: Byteable {} -unsafe impl Byteable for [T; 16] where T: Byteable {} + +unsafe impl Byteable for [T; N] where T: Byteable {} unsafe impl Byteable for u8 {} unsafe impl Byteable for u16 {} @@ -233,4 +231,10 @@ mod tests { fn test_mat4_round_trip() { test_round_trip(Mat4::IDENTITY); } + + #[test] + fn test_array_round_trip() { + test_round_trip([-10i32; 200]); + test_round_trip([Vec2::ZERO, Vec2::ONE, Vec2::Y, Vec2::X]); + } } diff --git a/crates/bevy_render/src/renderer/render_resource/render_resource.rs b/crates/bevy_render/src/renderer/render_resource/render_resource.rs index c7bdf5905e..e6acfdd98f 100644 --- a/crates/bevy_render/src/renderer/render_resource/render_resource.rs +++ b/crates/bevy_render/src/renderer/render_resource/render_resource.rs @@ -187,6 +187,27 @@ where } } +impl RenderResource for [T; N] +where + T: Sized + Byteable, +{ + fn resource_type(&self) -> Option { + Some(RenderResourceType::Buffer) + } + + fn write_buffer_bytes(&self, buffer: &mut [u8]) { + self.write_bytes(buffer); + } + + fn buffer_byte_len(&self) -> Option { + Some(self.byte_len()) + } + + fn texture(&self) -> Option<&Handle> { + None + } +} + impl RenderResource for GlobalTransform { fn resource_type(&self) -> Option { Some(RenderResourceType::Buffer)