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 8 13 #[repr(transparent)] 14 #[derive(Clone, Copy, PartialEq)] 15 pub struct Vec3(pub [u8; 32]); 16 impl Default for Vec3 { default() -> Self17 fn default() -> Self { 18 Self([0; 32]) 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 .field("test1", &self.test1()) 28 .field("test2", &self.test2()) 29 .field("test3", &self.test3()) 30 .finish() 31 } 32 } 33 34 impl flatbuffers::SimpleToVerifyInSlice for Vec3 {} 35 impl<'a> flatbuffers::Follow<'a> for Vec3 { 36 type Inner = &'a Vec3; 37 #[inline] follow(buf: &'a [u8], loc: usize) -> Self::Inner38 unsafe fn follow(buf: &'a [u8], loc: usize) -> Self::Inner { 39 <&'a Vec3>::follow(buf, loc) 40 } 41 } 42 impl<'a> flatbuffers::Follow<'a> for &'a Vec3 { 43 type Inner = &'a Vec3; 44 #[inline] follow(buf: &'a [u8], loc: usize) -> Self::Inner45 unsafe fn follow(buf: &'a [u8], loc: usize) -> Self::Inner { 46 flatbuffers::follow_cast_ref::<Vec3>(buf, loc) 47 } 48 } 49 impl<'b> flatbuffers::Push for Vec3 { 50 type Output = Vec3; 51 #[inline] push(&self, dst: &mut [u8], _written_len: usize)52 unsafe fn push(&self, dst: &mut [u8], _written_len: usize) { 53 let src = ::core::slice::from_raw_parts(self as *const Vec3 as *const u8, <Self as flatbuffers::Push>::size()); 54 dst.copy_from_slice(src); 55 } 56 #[inline] alignment() -> flatbuffers::PushAlignment57 fn alignment() -> flatbuffers::PushAlignment { 58 flatbuffers::PushAlignment::new(8) 59 } 60 } 61 62 impl<'a> flatbuffers::Verifiable for Vec3 { 63 #[inline] run_verifier( v: &mut flatbuffers::Verifier, pos: usize ) -> Result<(), flatbuffers::InvalidFlatbuffer>64 fn run_verifier( 65 v: &mut flatbuffers::Verifier, pos: usize 66 ) -> Result<(), flatbuffers::InvalidFlatbuffer> { 67 use self::flatbuffers::Verifiable; 68 v.in_buffer::<Self>(pos) 69 } 70 } 71 72 impl<'a> Vec3 { 73 #[allow(clippy::too_many_arguments)] new( x: f32, y: f32, z: f32, test1: f64, test2: Color, test3: &Test, ) -> Self74 pub fn new( 75 x: f32, 76 y: f32, 77 z: f32, 78 test1: f64, 79 test2: Color, 80 test3: &Test, 81 ) -> Self { 82 let mut s = Self([0; 32]); 83 s.set_x(x); 84 s.set_y(y); 85 s.set_z(z); 86 s.set_test1(test1); 87 s.set_test2(test2); 88 s.set_test3(test3); 89 s 90 } 91 get_fully_qualified_name() -> &'static str92 pub const fn get_fully_qualified_name() -> &'static str { 93 "MyGame.Example.Vec3" 94 } 95 x(&self) -> f3296 pub fn x(&self) -> f32 { 97 let mut mem = core::mem::MaybeUninit::<<f32 as EndianScalar>::Scalar>::uninit(); 98 // Safety: 99 // Created from a valid Table for this object 100 // Which contains a valid value in this slot 101 EndianScalar::from_little_endian(unsafe { 102 core::ptr::copy_nonoverlapping( 103 self.0[0..].as_ptr(), 104 mem.as_mut_ptr() as *mut u8, 105 core::mem::size_of::<<f32 as EndianScalar>::Scalar>(), 106 ); 107 mem.assume_init() 108 }) 109 } 110 set_x(&mut self, x: f32)111 pub fn set_x(&mut self, x: f32) { 112 let x_le = x.to_little_endian(); 113 // Safety: 114 // Created from a valid Table for this object 115 // Which contains a valid value in this slot 116 unsafe { 117 core::ptr::copy_nonoverlapping( 118 &x_le as *const _ as *const u8, 119 self.0[0..].as_mut_ptr(), 120 core::mem::size_of::<<f32 as EndianScalar>::Scalar>(), 121 ); 122 } 123 } 124 y(&self) -> f32125 pub fn y(&self) -> f32 { 126 let mut mem = core::mem::MaybeUninit::<<f32 as EndianScalar>::Scalar>::uninit(); 127 // Safety: 128 // Created from a valid Table for this object 129 // Which contains a valid value in this slot 130 EndianScalar::from_little_endian(unsafe { 131 core::ptr::copy_nonoverlapping( 132 self.0[4..].as_ptr(), 133 mem.as_mut_ptr() as *mut u8, 134 core::mem::size_of::<<f32 as EndianScalar>::Scalar>(), 135 ); 136 mem.assume_init() 137 }) 138 } 139 set_y(&mut self, x: f32)140 pub fn set_y(&mut self, x: f32) { 141 let x_le = x.to_little_endian(); 142 // Safety: 143 // Created from a valid Table for this object 144 // Which contains a valid value in this slot 145 unsafe { 146 core::ptr::copy_nonoverlapping( 147 &x_le as *const _ as *const u8, 148 self.0[4..].as_mut_ptr(), 149 core::mem::size_of::<<f32 as EndianScalar>::Scalar>(), 150 ); 151 } 152 } 153 z(&self) -> f32154 pub fn z(&self) -> f32 { 155 let mut mem = core::mem::MaybeUninit::<<f32 as EndianScalar>::Scalar>::uninit(); 156 // Safety: 157 // Created from a valid Table for this object 158 // Which contains a valid value in this slot 159 EndianScalar::from_little_endian(unsafe { 160 core::ptr::copy_nonoverlapping( 161 self.0[8..].as_ptr(), 162 mem.as_mut_ptr() as *mut u8, 163 core::mem::size_of::<<f32 as EndianScalar>::Scalar>(), 164 ); 165 mem.assume_init() 166 }) 167 } 168 set_z(&mut self, x: f32)169 pub fn set_z(&mut self, x: f32) { 170 let x_le = x.to_little_endian(); 171 // Safety: 172 // Created from a valid Table for this object 173 // Which contains a valid value in this slot 174 unsafe { 175 core::ptr::copy_nonoverlapping( 176 &x_le as *const _ as *const u8, 177 self.0[8..].as_mut_ptr(), 178 core::mem::size_of::<<f32 as EndianScalar>::Scalar>(), 179 ); 180 } 181 } 182 test1(&self) -> f64183 pub fn test1(&self) -> f64 { 184 let mut mem = core::mem::MaybeUninit::<<f64 as EndianScalar>::Scalar>::uninit(); 185 // Safety: 186 // Created from a valid Table for this object 187 // Which contains a valid value in this slot 188 EndianScalar::from_little_endian(unsafe { 189 core::ptr::copy_nonoverlapping( 190 self.0[16..].as_ptr(), 191 mem.as_mut_ptr() as *mut u8, 192 core::mem::size_of::<<f64 as EndianScalar>::Scalar>(), 193 ); 194 mem.assume_init() 195 }) 196 } 197 set_test1(&mut self, x: f64)198 pub fn set_test1(&mut self, x: f64) { 199 let x_le = x.to_little_endian(); 200 // Safety: 201 // Created from a valid Table for this object 202 // Which contains a valid value in this slot 203 unsafe { 204 core::ptr::copy_nonoverlapping( 205 &x_le as *const _ as *const u8, 206 self.0[16..].as_mut_ptr(), 207 core::mem::size_of::<<f64 as EndianScalar>::Scalar>(), 208 ); 209 } 210 } 211 test2(&self) -> Color212 pub fn test2(&self) -> Color { 213 let mut mem = core::mem::MaybeUninit::<<Color as EndianScalar>::Scalar>::uninit(); 214 // Safety: 215 // Created from a valid Table for this object 216 // Which contains a valid value in this slot 217 EndianScalar::from_little_endian(unsafe { 218 core::ptr::copy_nonoverlapping( 219 self.0[24..].as_ptr(), 220 mem.as_mut_ptr() as *mut u8, 221 core::mem::size_of::<<Color as EndianScalar>::Scalar>(), 222 ); 223 mem.assume_init() 224 }) 225 } 226 set_test2(&mut self, x: Color)227 pub fn set_test2(&mut self, x: Color) { 228 let x_le = x.to_little_endian(); 229 // Safety: 230 // Created from a valid Table for this object 231 // Which contains a valid value in this slot 232 unsafe { 233 core::ptr::copy_nonoverlapping( 234 &x_le as *const _ as *const u8, 235 self.0[24..].as_mut_ptr(), 236 core::mem::size_of::<<Color as EndianScalar>::Scalar>(), 237 ); 238 } 239 } 240 test3(&self) -> &Test241 pub fn test3(&self) -> &Test { 242 // Safety: 243 // Created from a valid Table for this object 244 // Which contains a valid struct in this slot 245 unsafe { &*(self.0[26..].as_ptr() as *const Test) } 246 } 247 248 #[allow(clippy::identity_op)] set_test3(&mut self, x: &Test)249 pub fn set_test3(&mut self, x: &Test) { 250 self.0[26..26 + 4].copy_from_slice(&x.0) 251 } 252 unpack(&self) -> Vec3T253 pub fn unpack(&self) -> Vec3T { 254 Vec3T { 255 x: self.x(), 256 y: self.y(), 257 z: self.z(), 258 test1: self.test1(), 259 test2: self.test2(), 260 test3: self.test3().unpack(), 261 } 262 } 263 } 264 265 #[derive(Debug, Clone, PartialEq, Default)] 266 pub struct Vec3T { 267 pub x: f32, 268 pub y: f32, 269 pub z: f32, 270 pub test1: f64, 271 pub test2: Color, 272 pub test3: TestT, 273 } 274 impl Vec3T { pack(&self) -> Vec3275 pub fn pack(&self) -> Vec3 { 276 Vec3::new( 277 self.x, 278 self.y, 279 self.z, 280 self.test1, 281 self.test2, 282 &self.test3.pack(), 283 ) 284 } 285 } 286 287