1 // automatically generated by the FlatBuffers compiler, do not modify 2 // @generated 3 extern crate alloc; 4 extern crate flatbuffers; 5 use alloc::boxed::Box; 6 use alloc::string::{String, ToString}; 7 use alloc::vec::Vec; 8 use core::mem; 9 use core::cmp::Ordering; 10 use self::flatbuffers::{EndianScalar, Follow}; 11 use super::*; 12 // struct Vec3, aligned to 4 13 #[repr(transparent)] 14 #[derive(Clone, Copy, PartialEq)] 15 pub struct Vec3(pub [u8; 12]); 16 impl Default for Vec3 { default() -> Self17 fn default() -> Self { 18 Self([0; 12]) 19 } 20 } 21 impl core::fmt::Debug for Vec3 { fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result22 fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result { 23 f.debug_struct("Vec3") 24 .field("x", &self.x()) 25 .field("y", &self.y()) 26 .field("z", &self.z()) 27 .finish() 28 } 29 } 30 31 impl flatbuffers::SimpleToVerifyInSlice for Vec3 {} 32 impl<'a> flatbuffers::Follow<'a> for Vec3 { 33 type Inner = &'a Vec3; 34 #[inline] follow(buf: &'a [u8], loc: usize) -> Self::Inner35 unsafe fn follow(buf: &'a [u8], loc: usize) -> Self::Inner { 36 <&'a Vec3>::follow(buf, loc) 37 } 38 } 39 impl<'a> flatbuffers::Follow<'a> for &'a Vec3 { 40 type Inner = &'a Vec3; 41 #[inline] follow(buf: &'a [u8], loc: usize) -> Self::Inner42 unsafe fn follow(buf: &'a [u8], loc: usize) -> Self::Inner { 43 flatbuffers::follow_cast_ref::<Vec3>(buf, loc) 44 } 45 } 46 impl<'b> flatbuffers::Push for Vec3 { 47 type Output = Vec3; 48 #[inline] push(&self, dst: &mut [u8], _written_len: usize)49 unsafe fn push(&self, dst: &mut [u8], _written_len: usize) { 50 let src = ::core::slice::from_raw_parts(self as *const Vec3 as *const u8, <Self as flatbuffers::Push>::size()); 51 dst.copy_from_slice(src); 52 } 53 #[inline] alignment() -> flatbuffers::PushAlignment54 fn alignment() -> flatbuffers::PushAlignment { 55 flatbuffers::PushAlignment::new(4) 56 } 57 } 58 59 impl<'a> flatbuffers::Verifiable for Vec3 { 60 #[inline] run_verifier( v: &mut flatbuffers::Verifier, pos: usize ) -> Result<(), flatbuffers::InvalidFlatbuffer>61 fn run_verifier( 62 v: &mut flatbuffers::Verifier, pos: usize 63 ) -> Result<(), flatbuffers::InvalidFlatbuffer> { 64 use self::flatbuffers::Verifiable; 65 v.in_buffer::<Self>(pos) 66 } 67 } 68 69 impl<'a> Vec3 { 70 #[allow(clippy::too_many_arguments)] new( x: f32, y: f32, z: f32, ) -> Self71 pub fn new( 72 x: f32, 73 y: f32, 74 z: f32, 75 ) -> Self { 76 let mut s = Self([0; 12]); 77 s.set_x(x); 78 s.set_y(y); 79 s.set_z(z); 80 s 81 } 82 get_fully_qualified_name() -> &'static str83 pub const fn get_fully_qualified_name() -> &'static str { 84 "MyGame.Sample.Vec3" 85 } 86 x(&self) -> f3287 pub fn x(&self) -> f32 { 88 let mut mem = core::mem::MaybeUninit::<<f32 as EndianScalar>::Scalar>::uninit(); 89 // Safety: 90 // Created from a valid Table for this object 91 // Which contains a valid value in this slot 92 EndianScalar::from_little_endian(unsafe { 93 core::ptr::copy_nonoverlapping( 94 self.0[0..].as_ptr(), 95 mem.as_mut_ptr() as *mut u8, 96 core::mem::size_of::<<f32 as EndianScalar>::Scalar>(), 97 ); 98 mem.assume_init() 99 }) 100 } 101 set_x(&mut self, x: f32)102 pub fn set_x(&mut self, x: f32) { 103 let x_le = x.to_little_endian(); 104 // Safety: 105 // Created from a valid Table for this object 106 // Which contains a valid value in this slot 107 unsafe { 108 core::ptr::copy_nonoverlapping( 109 &x_le as *const _ as *const u8, 110 self.0[0..].as_mut_ptr(), 111 core::mem::size_of::<<f32 as EndianScalar>::Scalar>(), 112 ); 113 } 114 } 115 y(&self) -> f32116 pub fn y(&self) -> f32 { 117 let mut mem = core::mem::MaybeUninit::<<f32 as EndianScalar>::Scalar>::uninit(); 118 // Safety: 119 // Created from a valid Table for this object 120 // Which contains a valid value in this slot 121 EndianScalar::from_little_endian(unsafe { 122 core::ptr::copy_nonoverlapping( 123 self.0[4..].as_ptr(), 124 mem.as_mut_ptr() as *mut u8, 125 core::mem::size_of::<<f32 as EndianScalar>::Scalar>(), 126 ); 127 mem.assume_init() 128 }) 129 } 130 set_y(&mut self, x: f32)131 pub fn set_y(&mut self, x: f32) { 132 let x_le = x.to_little_endian(); 133 // Safety: 134 // Created from a valid Table for this object 135 // Which contains a valid value in this slot 136 unsafe { 137 core::ptr::copy_nonoverlapping( 138 &x_le as *const _ as *const u8, 139 self.0[4..].as_mut_ptr(), 140 core::mem::size_of::<<f32 as EndianScalar>::Scalar>(), 141 ); 142 } 143 } 144 z(&self) -> f32145 pub fn z(&self) -> f32 { 146 let mut mem = core::mem::MaybeUninit::<<f32 as EndianScalar>::Scalar>::uninit(); 147 // Safety: 148 // Created from a valid Table for this object 149 // Which contains a valid value in this slot 150 EndianScalar::from_little_endian(unsafe { 151 core::ptr::copy_nonoverlapping( 152 self.0[8..].as_ptr(), 153 mem.as_mut_ptr() as *mut u8, 154 core::mem::size_of::<<f32 as EndianScalar>::Scalar>(), 155 ); 156 mem.assume_init() 157 }) 158 } 159 set_z(&mut self, x: f32)160 pub fn set_z(&mut self, x: f32) { 161 let x_le = x.to_little_endian(); 162 // Safety: 163 // Created from a valid Table for this object 164 // Which contains a valid value in this slot 165 unsafe { 166 core::ptr::copy_nonoverlapping( 167 &x_le as *const _ as *const u8, 168 self.0[8..].as_mut_ptr(), 169 core::mem::size_of::<<f32 as EndianScalar>::Scalar>(), 170 ); 171 } 172 } 173 unpack(&self) -> Vec3T174 pub fn unpack(&self) -> Vec3T { 175 Vec3T { 176 x: self.x(), 177 y: self.y(), 178 z: self.z(), 179 } 180 } 181 } 182 183 #[derive(Debug, Clone, PartialEq, Default)] 184 pub struct Vec3T { 185 pub x: f32, 186 pub y: f32, 187 pub z: f32, 188 } 189 impl Vec3T { pack(&self) -> Vec3190 pub fn pack(&self) -> Vec3 { 191 Vec3::new( 192 self.x, 193 self.y, 194 self.z, 195 ) 196 } 197 } 198 199