1use super::class_requires::*;
2use super::*;
3#[allow(non_upper_case_globals, non_snake_case)]
10#[cfg_attr(feature = "json_schema", derive(schemars::JsonSchema))]
11#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
12#[derive(educe::Educe)]
13#[educe(Debug, Clone, Default, PartialEq)]
14pub struct hkpMassProperties {
15 #[cfg_attr(
22 feature = "serde",
23 serde(skip_serializing_if = "Option::is_none", default)
24 )]
25 pub __ptr: Option<Pointer>,
26 #[cfg_attr(feature = "json_schema", schemars(rename = "volume"))]
31 #[cfg_attr(feature = "serde", serde(rename = "volume"))]
32 pub m_volume: f32,
33 #[cfg_attr(feature = "json_schema", schemars(rename = "mass"))]
38 #[cfg_attr(feature = "serde", serde(rename = "mass"))]
39 pub m_mass: f32,
40 #[cfg_attr(feature = "json_schema", schemars(rename = "centerOfMass"))]
45 #[cfg_attr(feature = "serde", serde(rename = "centerOfMass"))]
46 pub m_centerOfMass: Vector4,
47 #[cfg_attr(feature = "json_schema", schemars(rename = "inertiaTensor"))]
52 #[cfg_attr(feature = "serde", serde(rename = "inertiaTensor"))]
53 pub m_inertiaTensor: Matrix3,
54}
55const _: () = {
56 use havok_serde as _serde;
57 impl _serde::HavokClass for hkpMassProperties {
58 #[inline]
59 fn name(&self) -> &'static str {
60 "hkpMassProperties"
61 }
62 #[inline]
63 fn signature(&self) -> _serde::__private::Signature {
64 _serde::__private::Signature::new(0x68a56834)
65 }
66 #[allow(clippy::let_and_return, clippy::vec_init_then_push)]
67 fn deps_indexes(&self) -> Vec<usize> {
68 let mut v = Vec::new();
69 v
70 }
71 }
72 impl _serde::Serialize for hkpMassProperties {
73 fn serialize<S>(&self, __serializer: S) -> Result<S::Ok, S::Error>
74 where
75 S: _serde::ser::Serializer,
76 {
77 let class_meta = self
78 .__ptr
79 .map(|name| (name, _serde::__private::Signature::new(0x68a56834)));
80 let mut serializer = __serializer
81 .serialize_struct("hkpMassProperties", class_meta, (80u64, 80u64))?;
82 serializer.serialize_field("volume", &self.m_volume)?;
83 serializer.serialize_field("mass", &self.m_mass)?;
84 serializer.pad_field([0u8; 8usize].as_slice(), [0u8; 8usize].as_slice())?;
85 serializer.serialize_field("centerOfMass", &self.m_centerOfMass)?;
86 serializer.serialize_field("inertiaTensor", &self.m_inertiaTensor)?;
87 serializer.end()
88 }
89 }
90};
91#[doc(hidden)]
92#[allow(non_upper_case_globals, unused_attributes, unused_qualifications)]
93const _: () = {
94 use havok_serde as _serde;
95 #[automatically_derived]
96 impl<'de> _serde::Deserialize<'de> for hkpMassProperties {
97 fn deserialize<__D>(deserializer: __D) -> core::result::Result<Self, __D::Error>
98 where
99 __D: _serde::Deserializer<'de>,
100 {
101 #[allow(non_camel_case_types)]
102 enum __Field {
103 m_volume,
104 m_mass,
105 m_centerOfMass,
106 m_inertiaTensor,
107 __ignore,
108 }
109 struct __FieldVisitor;
110 impl<'de> _serde::de::Visitor<'de> for __FieldVisitor {
111 type Value = __Field;
112 fn expecting(
113 &self,
114 __formatter: &mut core::fmt::Formatter,
115 ) -> core::fmt::Result {
116 core::fmt::Formatter::write_str(__formatter, "field identifier")
117 }
118 #[allow(clippy::match_single_binding)]
120 #[allow(clippy::reversed_empty_ranges)]
121 #[allow(clippy::single_match)]
122 fn visit_key<__E>(
123 self,
124 __value: &str,
125 ) -> core::result::Result<Self::Value, __E>
126 where
127 __E: _serde::de::Error,
128 {
129 match __value {
130 "volume" => Ok(__Field::m_volume),
131 "mass" => Ok(__Field::m_mass),
132 "centerOfMass" => Ok(__Field::m_centerOfMass),
133 "inertiaTensor" => Ok(__Field::m_inertiaTensor),
134 _ => Ok(__Field::__ignore),
135 }
136 }
137 }
138 impl<'de> _serde::Deserialize<'de> for __Field {
139 #[inline]
140 fn deserialize<__D>(
141 __deserializer: __D,
142 ) -> core::result::Result<Self, __D::Error>
143 where
144 __D: _serde::Deserializer<'de>,
145 {
146 _serde::Deserializer::deserialize_key(__deserializer, __FieldVisitor)
147 }
148 }
149 struct __hkpMassPropertiesVisitor<'de> {
150 marker: _serde::__private::PhantomData<hkpMassProperties>,
151 lifetime: _serde::__private::PhantomData<&'de ()>,
152 }
153 #[allow(clippy::match_single_binding)]
154 #[allow(clippy::reversed_empty_ranges)]
155 #[allow(clippy::single_match)]
156 impl<'de> _serde::de::Visitor<'de> for __hkpMassPropertiesVisitor<'de> {
157 type Value = hkpMassProperties;
158 fn expecting(
159 &self,
160 __formatter: &mut core::fmt::Formatter,
161 ) -> core::fmt::Result {
162 core::fmt::Formatter::write_str(
163 __formatter,
164 "struct hkpMassProperties",
165 )
166 }
167 fn visit_struct_for_bytes<__A>(
168 self,
169 mut __map: __A,
170 ) -> _serde::__private::Result<Self::Value, __A::Error>
171 where
172 __A: _serde::de::MapAccess<'de>,
173 {
174 let __ptr = __A::class_ptr(&mut __map);
175 let mut m_volume: _serde::__private::Option<f32> = _serde::__private::None;
176 let mut m_mass: _serde::__private::Option<f32> = _serde::__private::None;
177 let mut m_centerOfMass: _serde::__private::Option<Vector4> = _serde::__private::None;
178 let mut m_inertiaTensor: _serde::__private::Option<Matrix3> = _serde::__private::None;
179 for i in 0..4usize {
180 match i {
181 0usize => {
182 if _serde::__private::Option::is_some(&m_volume) {
183 return _serde::__private::Err(
184 <__A::Error as _serde::de::Error>::duplicate_field("volume"),
185 );
186 }
187 m_volume = _serde::__private::Some(
188 match __A::next_value::<f32>(&mut __map) {
189 _serde::__private::Ok(__val) => __val,
190 _serde::__private::Err(__err) => {
191 return _serde::__private::Err(__err);
192 }
193 },
194 );
195 }
196 1usize => {
197 if _serde::__private::Option::is_some(&m_mass) {
198 return _serde::__private::Err(
199 <__A::Error as _serde::de::Error>::duplicate_field("mass"),
200 );
201 }
202 m_mass = _serde::__private::Some(
203 match __A::next_value::<f32>(&mut __map) {
204 _serde::__private::Ok(__val) => __val,
205 _serde::__private::Err(__err) => {
206 return _serde::__private::Err(__err);
207 }
208 },
209 );
210 }
211 2usize => {
212 if _serde::__private::Option::is_some(&m_centerOfMass) {
213 return _serde::__private::Err(
214 <__A::Error as _serde::de::Error>::duplicate_field(
215 "centerOfMass",
216 ),
217 );
218 }
219 __A::pad(&mut __map, 8usize, 8usize)?;
220 m_centerOfMass = _serde::__private::Some(
221 match __A::next_value::<Vector4>(&mut __map) {
222 _serde::__private::Ok(__val) => __val,
223 _serde::__private::Err(__err) => {
224 return _serde::__private::Err(__err);
225 }
226 },
227 );
228 }
229 3usize => {
230 if _serde::__private::Option::is_some(&m_inertiaTensor) {
231 return _serde::__private::Err(
232 <__A::Error as _serde::de::Error>::duplicate_field(
233 "inertiaTensor",
234 ),
235 );
236 }
237 m_inertiaTensor = _serde::__private::Some(
238 match __A::next_value::<Matrix3>(&mut __map) {
239 _serde::__private::Ok(__val) => __val,
240 _serde::__private::Err(__err) => {
241 return _serde::__private::Err(__err);
242 }
243 },
244 );
245 }
246 _ => {}
247 }
248 }
249 let m_volume = match m_volume {
250 _serde::__private::Some(__field) => __field,
251 _serde::__private::None => {
252 return _serde::__private::Err(
253 <__A::Error as _serde::de::Error>::missing_field("volume"),
254 );
255 }
256 };
257 let m_mass = match m_mass {
258 _serde::__private::Some(__field) => __field,
259 _serde::__private::None => {
260 return _serde::__private::Err(
261 <__A::Error as _serde::de::Error>::missing_field("mass"),
262 );
263 }
264 };
265 let m_centerOfMass = match m_centerOfMass {
266 _serde::__private::Some(__field) => __field,
267 _serde::__private::None => {
268 return _serde::__private::Err(
269 <__A::Error as _serde::de::Error>::missing_field(
270 "centerOfMass",
271 ),
272 );
273 }
274 };
275 let m_inertiaTensor = match m_inertiaTensor {
276 _serde::__private::Some(__field) => __field,
277 _serde::__private::None => {
278 return _serde::__private::Err(
279 <__A::Error as _serde::de::Error>::missing_field(
280 "inertiaTensor",
281 ),
282 );
283 }
284 };
285 _serde::__private::Ok(hkpMassProperties {
286 __ptr,
287 m_volume,
288 m_mass,
289 m_centerOfMass,
290 m_inertiaTensor,
291 })
292 }
293 #[allow(clippy::manual_unwrap_or_default)]
294 fn visit_struct<__A>(
295 self,
296 mut __map: __A,
297 ) -> _serde::__private::Result<Self::Value, __A::Error>
298 where
299 __A: _serde::de::MapAccess<'de>,
300 {
301 let mut m_volume: _serde::__private::Option<f32> = _serde::__private::None;
302 let mut m_mass: _serde::__private::Option<f32> = _serde::__private::None;
303 let mut m_centerOfMass: _serde::__private::Option<Vector4> = _serde::__private::None;
304 let mut m_inertiaTensor: _serde::__private::Option<Matrix3> = _serde::__private::None;
305 while let _serde::__private::Some(__key) = {
306 __A::next_key::<__Field>(&mut __map)?
307 } {
308 match __key {
309 __Field::m_volume => {
310 #[cfg(
311 any(feature = "strict", feature = "ignore_duplicates")
312 )]
313 if _serde::__private::Option::is_some(&m_volume) {
314 #[cfg(feature = "ignore_duplicates")]
315 {
316 __A::skip_value(&mut __map)?;
317 continue;
318 }
319 #[cfg(feature = "strict")]
320 return _serde::__private::Err(
321 <__A::Error as _serde::de::Error>::duplicate_field("volume"),
322 );
323 }
324 m_volume = _serde::__private::Some(
325 match __A::next_value::<f32>(&mut __map) {
326 _serde::__private::Ok(__val) => __val,
327 _serde::__private::Err(__err) => {
328 return _serde::__private::Err(__err);
329 }
330 },
331 );
332 }
333 __Field::m_mass => {
334 #[cfg(
335 any(feature = "strict", feature = "ignore_duplicates")
336 )]
337 if _serde::__private::Option::is_some(&m_mass) {
338 #[cfg(feature = "ignore_duplicates")]
339 {
340 __A::skip_value(&mut __map)?;
341 continue;
342 }
343 #[cfg(feature = "strict")]
344 return _serde::__private::Err(
345 <__A::Error as _serde::de::Error>::duplicate_field("mass"),
346 );
347 }
348 m_mass = _serde::__private::Some(
349 match __A::next_value::<f32>(&mut __map) {
350 _serde::__private::Ok(__val) => __val,
351 _serde::__private::Err(__err) => {
352 return _serde::__private::Err(__err);
353 }
354 },
355 );
356 }
357 __Field::m_centerOfMass => {
358 #[cfg(
359 any(feature = "strict", feature = "ignore_duplicates")
360 )]
361 if _serde::__private::Option::is_some(&m_centerOfMass) {
362 #[cfg(feature = "ignore_duplicates")]
363 {
364 __A::skip_value(&mut __map)?;
365 continue;
366 }
367 #[cfg(feature = "strict")]
368 return _serde::__private::Err(
369 <__A::Error as _serde::de::Error>::duplicate_field(
370 "centerOfMass",
371 ),
372 );
373 }
374 m_centerOfMass = _serde::__private::Some(
375 match __A::next_value::<Vector4>(&mut __map) {
376 _serde::__private::Ok(__val) => __val,
377 _serde::__private::Err(__err) => {
378 return _serde::__private::Err(__err);
379 }
380 },
381 );
382 }
383 __Field::m_inertiaTensor => {
384 #[cfg(
385 any(feature = "strict", feature = "ignore_duplicates")
386 )]
387 if _serde::__private::Option::is_some(&m_inertiaTensor) {
388 #[cfg(feature = "ignore_duplicates")]
389 {
390 __A::skip_value(&mut __map)?;
391 continue;
392 }
393 #[cfg(feature = "strict")]
394 return _serde::__private::Err(
395 <__A::Error as _serde::de::Error>::duplicate_field(
396 "inertiaTensor",
397 ),
398 );
399 }
400 m_inertiaTensor = _serde::__private::Some(
401 match __A::next_value::<Matrix3>(&mut __map) {
402 _serde::__private::Ok(__val) => __val,
403 _serde::__private::Err(__err) => {
404 return _serde::__private::Err(__err);
405 }
406 },
407 );
408 }
409 _ => __A::skip_value(&mut __map)?,
410 }
411 }
412 let m_volume = match m_volume {
413 _serde::__private::Some(__field) => __field,
414 _serde::__private::None => {
415 #[cfg(feature = "strict")]
416 return _serde::__private::Err(
417 <__A::Error as _serde::de::Error>::missing_field("volume"),
418 );
419 #[cfg(not(feature = "strict"))] Default::default()
420 }
421 };
422 let m_mass = match m_mass {
423 _serde::__private::Some(__field) => __field,
424 _serde::__private::None => {
425 #[cfg(feature = "strict")]
426 return _serde::__private::Err(
427 <__A::Error as _serde::de::Error>::missing_field("mass"),
428 );
429 #[cfg(not(feature = "strict"))] Default::default()
430 }
431 };
432 let m_centerOfMass = match m_centerOfMass {
433 _serde::__private::Some(__field) => __field,
434 _serde::__private::None => {
435 #[cfg(feature = "strict")]
436 return _serde::__private::Err(
437 <__A::Error as _serde::de::Error>::missing_field(
438 "centerOfMass",
439 ),
440 );
441 #[cfg(not(feature = "strict"))] Default::default()
442 }
443 };
444 let m_inertiaTensor = match m_inertiaTensor {
445 _serde::__private::Some(__field) => __field,
446 _serde::__private::None => {
447 #[cfg(feature = "strict")]
448 return _serde::__private::Err(
449 <__A::Error as _serde::de::Error>::missing_field(
450 "inertiaTensor",
451 ),
452 );
453 #[cfg(not(feature = "strict"))] Default::default()
454 }
455 };
456 let __ptr = __A::class_ptr(&mut __map);
457 _serde::__private::Ok(hkpMassProperties {
458 __ptr,
459 m_volume,
460 m_mass,
461 m_centerOfMass,
462 m_inertiaTensor,
463 })
464 }
465 }
466 const FIELDS: &[&str] = &["volume", "mass", "centerOfMass", "inertiaTensor"];
467 _serde::Deserializer::deserialize_struct(
468 deserializer,
469 "hkpMassProperties",
470 FIELDS,
471 __hkpMassPropertiesVisitor {
472 marker: _serde::__private::PhantomData::<hkpMassProperties>,
473 lifetime: _serde::__private::PhantomData,
474 },
475 )
476 }
477 }
478};