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