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