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 hkbHandIkModifier<'a> {
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 #[cfg_attr(feature = "serde", serde(borrow))]
30 pub parent: hkbModifier<'a>,
31 #[cfg_attr(feature = "serde", serde(borrow))]
36 #[cfg_attr(feature = "json_schema", schemars(rename = "hands"))]
37 #[cfg_attr(feature = "serde", serde(rename = "hands"))]
38 pub m_hands: Vec<hkbHandIkModifierHand<'a>>,
39 #[cfg_attr(feature = "json_schema", schemars(rename = "fadeInOutCurve"))]
44 #[cfg_attr(feature = "serde", serde(rename = "fadeInOutCurve"))]
45 pub m_fadeInOutCurve: BlendCurve,
46 #[cfg_attr(feature = "json_schema", schemars(rename = "internalHandData"))]
52 #[cfg_attr(feature = "serde", serde(rename = "internalHandData"))]
53 pub m_internalHandData: Vec<()>,
54}
55const _: () = {
56 use havok_serde as _serde;
57 impl<'a> _serde::HavokClass for hkbHandIkModifier<'a> {
58 #[inline]
59 fn name(&self) -> &'static str {
60 "hkbHandIkModifier"
61 }
62 #[inline]
63 fn signature(&self) -> _serde::__private::Signature {
64 _serde::__private::Signature::new(0xef8bc2f7)
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.push(self.parent.parent.parent.m_variableBindingSet.get());
70 v.extend(
71 self
72 .m_hands
73 .iter()
74 .flat_map(|class| class.deps_indexes())
75 .collect::<Vec<usize>>(),
76 );
77 v
78 }
79 }
80 impl<'a> _serde::Serialize for hkbHandIkModifier<'a> {
81 fn serialize<S>(&self, __serializer: S) -> Result<S::Ok, S::Error>
82 where
83 S: _serde::ser::Serializer,
84 {
85 let class_meta = self
86 .__ptr
87 .map(|name| (name, _serde::__private::Signature::new(0xef8bc2f7)));
88 let mut serializer = __serializer
89 .serialize_struct("hkbHandIkModifier", class_meta, (72u64, 120u64))?;
90 serializer.pad_field([0u8; 4usize].as_slice(), [0u8; 8usize].as_slice())?;
91 serializer
92 .skip_field(
93 "memSizeAndFlags",
94 &self.parent.parent.parent.parent.m_memSizeAndFlags,
95 )?;
96 serializer
97 .skip_field(
98 "referenceCount",
99 &self.parent.parent.parent.parent.m_referenceCount,
100 )?;
101 serializer.pad_field([0u8; 0usize].as_slice(), [0u8; 4usize].as_slice())?;
102 serializer
103 .serialize_field(
104 "variableBindingSet",
105 &self.parent.parent.parent.m_variableBindingSet,
106 )?;
107 serializer
108 .skip_array_field(
109 "cachedBindables",
110 &self.parent.parent.parent.m_cachedBindables,
111 TypeSize::NonPtr,
112 )?;
113 serializer
114 .skip_field(
115 "areBindablesCached",
116 &self.parent.parent.parent.m_areBindablesCached,
117 )?;
118 serializer.pad_field([0u8; 3usize].as_slice(), [0u8; 7usize].as_slice())?;
119 serializer.serialize_field("userData", &self.parent.parent.m_userData)?;
120 serializer.serialize_field("name", &self.parent.parent.m_name)?;
121 serializer.skip_field("id", &self.parent.parent.m_id)?;
122 serializer.skip_field("cloneState", &self.parent.parent.m_cloneState)?;
123 serializer
124 .skip_fixed_array_field(
125 "padNode",
126 self.parent.parent.m_padNode.as_slice(),
127 TypeSize::NonPtr,
128 )?;
129 serializer.pad_field([0u8; 0usize].as_slice(), [0u8; 4usize].as_slice())?;
130 serializer.serialize_field("enable", &self.parent.m_enable)?;
131 serializer
132 .skip_fixed_array_field(
133 "padModifier",
134 self.parent.m_padModifier.as_slice(),
135 TypeSize::NonPtr,
136 )?;
137 serializer.pad_field([0u8; 0usize].as_slice(), [0u8; 4usize].as_slice())?;
138 serializer
139 .serialize_array_field(
140 "hands",
141 &self.m_hands,
142 TypeSize::Struct {
143 size_x86: 96u64,
144 size_x86_64: 96u64,
145 },
146 )?;
147 serializer.serialize_field("fadeInOutCurve", &self.m_fadeInOutCurve)?;
148 serializer.pad_field([0u8; 3usize].as_slice(), [0u8; 7usize].as_slice())?;
149 serializer
150 .skip_array_field(
151 "internalHandData",
152 &self.m_internalHandData,
153 TypeSize::NonPtr,
154 )?;
155 serializer.end()
156 }
157 }
158};
159#[doc(hidden)]
160#[allow(non_upper_case_globals, unused_attributes, unused_qualifications)]
161const _: () = {
162 use havok_serde as _serde;
163 #[automatically_derived]
164 impl<'de> _serde::Deserialize<'de> for hkbHandIkModifier<'de> {
165 fn deserialize<__D>(deserializer: __D) -> core::result::Result<Self, __D::Error>
166 where
167 __D: _serde::Deserializer<'de>,
168 {
169 #[allow(non_camel_case_types)]
170 enum __Field {
171 m_variableBindingSet,
172 m_userData,
173 m_name,
174 m_enable,
175 m_hands,
176 m_fadeInOutCurve,
177 __ignore,
178 }
179 struct __FieldVisitor;
180 impl<'de> _serde::de::Visitor<'de> for __FieldVisitor {
181 type Value = __Field;
182 fn expecting(
183 &self,
184 __formatter: &mut core::fmt::Formatter,
185 ) -> core::fmt::Result {
186 core::fmt::Formatter::write_str(__formatter, "field identifier")
187 }
188 #[allow(clippy::match_single_binding)]
190 #[allow(clippy::reversed_empty_ranges)]
191 #[allow(clippy::single_match)]
192 fn visit_key<__E>(
193 self,
194 __value: &str,
195 ) -> core::result::Result<Self::Value, __E>
196 where
197 __E: _serde::de::Error,
198 {
199 match __value {
200 "variableBindingSet" => Ok(__Field::m_variableBindingSet),
201 "userData" => Ok(__Field::m_userData),
202 "name" => Ok(__Field::m_name),
203 "enable" => Ok(__Field::m_enable),
204 "hands" => Ok(__Field::m_hands),
205 "fadeInOutCurve" => Ok(__Field::m_fadeInOutCurve),
206 _ => Ok(__Field::__ignore),
207 }
208 }
209 }
210 impl<'de> _serde::Deserialize<'de> for __Field {
211 #[inline]
212 fn deserialize<__D>(
213 __deserializer: __D,
214 ) -> core::result::Result<Self, __D::Error>
215 where
216 __D: _serde::Deserializer<'de>,
217 {
218 _serde::Deserializer::deserialize_key(__deserializer, __FieldVisitor)
219 }
220 }
221 struct __hkbHandIkModifierVisitor<'de> {
222 marker: _serde::__private::PhantomData<hkbHandIkModifier<'de>>,
223 lifetime: _serde::__private::PhantomData<&'de ()>,
224 }
225 #[allow(clippy::match_single_binding)]
226 #[allow(clippy::reversed_empty_ranges)]
227 #[allow(clippy::single_match)]
228 impl<'de> _serde::de::Visitor<'de> for __hkbHandIkModifierVisitor<'de> {
229 type Value = hkbHandIkModifier<'de>;
230 fn expecting(
231 &self,
232 __formatter: &mut core::fmt::Formatter,
233 ) -> core::fmt::Result {
234 core::fmt::Formatter::write_str(
235 __formatter,
236 "struct hkbHandIkModifier",
237 )
238 }
239 fn visit_struct_for_bytes<__A>(
240 self,
241 mut __map: __A,
242 ) -> _serde::__private::Result<Self::Value, __A::Error>
243 where
244 __A: _serde::de::MapAccess<'de>,
245 {
246 let __ptr = __A::class_ptr(&mut __map);
247 let parent = __A::parent_value(&mut __map)?;
248 let mut m_hands: _serde::__private::Option<
249 Vec<hkbHandIkModifierHand<'de>>,
250 > = _serde::__private::None;
251 let mut m_fadeInOutCurve: _serde::__private::Option<BlendCurve> = _serde::__private::None;
252 let mut m_internalHandData: _serde::__private::Option<Vec<()>> = _serde::__private::None;
253 for i in 0..3usize {
254 match i {
255 0usize => {
256 if _serde::__private::Option::is_some(&m_hands) {
257 return _serde::__private::Err(
258 <__A::Error as _serde::de::Error>::duplicate_field("hands"),
259 );
260 }
261 m_hands = _serde::__private::Some(
262 match __A::next_value::<
263 Vec<hkbHandIkModifierHand<'de>>,
264 >(&mut __map) {
265 _serde::__private::Ok(__val) => __val,
266 _serde::__private::Err(__err) => {
267 return _serde::__private::Err(__err);
268 }
269 },
270 );
271 }
272 1usize => {
273 if _serde::__private::Option::is_some(&m_fadeInOutCurve) {
274 return _serde::__private::Err(
275 <__A::Error as _serde::de::Error>::duplicate_field(
276 "fadeInOutCurve",
277 ),
278 );
279 }
280 m_fadeInOutCurve = _serde::__private::Some(
281 match __A::next_value::<BlendCurve>(&mut __map) {
282 _serde::__private::Ok(__val) => __val,
283 _serde::__private::Err(__err) => {
284 return _serde::__private::Err(__err);
285 }
286 },
287 );
288 }
289 2usize => {
290 if _serde::__private::Option::is_some(&m_internalHandData) {
291 return _serde::__private::Err(
292 <__A::Error as _serde::de::Error>::duplicate_field(
293 "internalHandData",
294 ),
295 );
296 }
297 __A::pad(&mut __map, 3usize, 7usize)?;
298 m_internalHandData = _serde::__private::Some(
299 match __A::next_value::<Vec<()>>(&mut __map) {
300 _serde::__private::Ok(__val) => __val,
301 _serde::__private::Err(__err) => {
302 return _serde::__private::Err(__err);
303 }
304 },
305 );
306 }
307 _ => {}
308 }
309 }
310 let m_hands = match m_hands {
311 _serde::__private::Some(__field) => __field,
312 _serde::__private::None => {
313 return _serde::__private::Err(
314 <__A::Error as _serde::de::Error>::missing_field("hands"),
315 );
316 }
317 };
318 let m_fadeInOutCurve = match m_fadeInOutCurve {
319 _serde::__private::Some(__field) => __field,
320 _serde::__private::None => {
321 return _serde::__private::Err(
322 <__A::Error as _serde::de::Error>::missing_field(
323 "fadeInOutCurve",
324 ),
325 );
326 }
327 };
328 let m_internalHandData = match m_internalHandData {
329 _serde::__private::Some(__field) => __field,
330 _serde::__private::None => {
331 return _serde::__private::Err(
332 <__A::Error as _serde::de::Error>::missing_field(
333 "internalHandData",
334 ),
335 );
336 }
337 };
338 _serde::__private::Ok(hkbHandIkModifier {
339 __ptr,
340 parent,
341 m_hands,
342 m_fadeInOutCurve,
343 m_internalHandData,
344 })
345 }
346 #[allow(clippy::manual_unwrap_or_default)]
347 fn visit_struct<__A>(
348 self,
349 mut __map: __A,
350 ) -> _serde::__private::Result<Self::Value, __A::Error>
351 where
352 __A: _serde::de::MapAccess<'de>,
353 {
354 let mut m_variableBindingSet: _serde::__private::Option<Pointer> = _serde::__private::None;
355 let mut m_userData: _serde::__private::Option<Ulong> = _serde::__private::None;
356 let mut m_name: _serde::__private::Option<StringPtr<'de>> = _serde::__private::None;
357 let mut m_enable: _serde::__private::Option<bool> = _serde::__private::None;
358 let mut m_hands: _serde::__private::Option<
359 Vec<hkbHandIkModifierHand<'de>>,
360 > = _serde::__private::None;
361 let mut m_fadeInOutCurve: _serde::__private::Option<BlendCurve> = _serde::__private::None;
362 while let _serde::__private::Some(__key) = {
363 __A::next_key::<__Field>(&mut __map)?
364 } {
365 match __key {
366 __Field::m_variableBindingSet => {
367 #[cfg(
368 any(feature = "strict", feature = "ignore_duplicates")
369 )]
370 if _serde::__private::Option::is_some(
371 &m_variableBindingSet,
372 ) {
373 #[cfg(feature = "ignore_duplicates")]
374 {
375 __A::skip_value(&mut __map)?;
376 continue;
377 }
378 #[cfg(feature = "strict")]
379 return _serde::__private::Err(
380 <__A::Error as _serde::de::Error>::duplicate_field(
381 "variableBindingSet",
382 ),
383 );
384 }
385 m_variableBindingSet = _serde::__private::Some(
386 match __A::next_value::<Pointer>(&mut __map) {
387 _serde::__private::Ok(__val) => __val,
388 _serde::__private::Err(__err) => {
389 return _serde::__private::Err(__err);
390 }
391 },
392 );
393 }
394 __Field::m_userData => {
395 #[cfg(
396 any(feature = "strict", feature = "ignore_duplicates")
397 )]
398 if _serde::__private::Option::is_some(&m_userData) {
399 #[cfg(feature = "ignore_duplicates")]
400 {
401 __A::skip_value(&mut __map)?;
402 continue;
403 }
404 #[cfg(feature = "strict")]
405 return _serde::__private::Err(
406 <__A::Error as _serde::de::Error>::duplicate_field(
407 "userData",
408 ),
409 );
410 }
411 m_userData = _serde::__private::Some(
412 match __A::next_value::<Ulong>(&mut __map) {
413 _serde::__private::Ok(__val) => __val,
414 _serde::__private::Err(__err) => {
415 return _serde::__private::Err(__err);
416 }
417 },
418 );
419 }
420 __Field::m_name => {
421 #[cfg(
422 any(feature = "strict", feature = "ignore_duplicates")
423 )]
424 if _serde::__private::Option::is_some(&m_name) {
425 #[cfg(feature = "ignore_duplicates")]
426 {
427 __A::skip_value(&mut __map)?;
428 continue;
429 }
430 #[cfg(feature = "strict")]
431 return _serde::__private::Err(
432 <__A::Error as _serde::de::Error>::duplicate_field("name"),
433 );
434 }
435 m_name = _serde::__private::Some(
436 match __A::next_value::<StringPtr<'de>>(&mut __map) {
437 _serde::__private::Ok(__val) => __val,
438 _serde::__private::Err(__err) => {
439 return _serde::__private::Err(__err);
440 }
441 },
442 );
443 }
444 __Field::m_enable => {
445 #[cfg(
446 any(feature = "strict", feature = "ignore_duplicates")
447 )]
448 if _serde::__private::Option::is_some(&m_enable) {
449 #[cfg(feature = "ignore_duplicates")]
450 {
451 __A::skip_value(&mut __map)?;
452 continue;
453 }
454 #[cfg(feature = "strict")]
455 return _serde::__private::Err(
456 <__A::Error as _serde::de::Error>::duplicate_field("enable"),
457 );
458 }
459 m_enable = _serde::__private::Some(
460 match __A::next_value::<bool>(&mut __map) {
461 _serde::__private::Ok(__val) => __val,
462 _serde::__private::Err(__err) => {
463 return _serde::__private::Err(__err);
464 }
465 },
466 );
467 }
468 __Field::m_hands => {
469 #[cfg(
470 any(feature = "strict", feature = "ignore_duplicates")
471 )]
472 if _serde::__private::Option::is_some(&m_hands) {
473 #[cfg(feature = "ignore_duplicates")]
474 {
475 __A::skip_value(&mut __map)?;
476 continue;
477 }
478 #[cfg(feature = "strict")]
479 return _serde::__private::Err(
480 <__A::Error as _serde::de::Error>::duplicate_field("hands"),
481 );
482 }
483 m_hands = _serde::__private::Some(
484 match __A::next_value::<
485 Vec<hkbHandIkModifierHand<'de>>,
486 >(&mut __map) {
487 _serde::__private::Ok(__val) => __val,
488 _serde::__private::Err(__err) => {
489 return _serde::__private::Err(__err);
490 }
491 },
492 );
493 }
494 __Field::m_fadeInOutCurve => {
495 #[cfg(
496 any(feature = "strict", feature = "ignore_duplicates")
497 )]
498 if _serde::__private::Option::is_some(&m_fadeInOutCurve) {
499 #[cfg(feature = "ignore_duplicates")]
500 {
501 __A::skip_value(&mut __map)?;
502 continue;
503 }
504 #[cfg(feature = "strict")]
505 return _serde::__private::Err(
506 <__A::Error as _serde::de::Error>::duplicate_field(
507 "fadeInOutCurve",
508 ),
509 );
510 }
511 m_fadeInOutCurve = _serde::__private::Some(
512 match __A::next_value::<BlendCurve>(&mut __map) {
513 _serde::__private::Ok(__val) => __val,
514 _serde::__private::Err(__err) => {
515 return _serde::__private::Err(__err);
516 }
517 },
518 );
519 }
520 _ => __A::skip_value(&mut __map)?,
521 }
522 }
523 let m_variableBindingSet = match m_variableBindingSet {
524 _serde::__private::Some(__field) => __field,
525 _serde::__private::None => {
526 #[cfg(feature = "strict")]
527 return _serde::__private::Err(
528 <__A::Error as _serde::de::Error>::missing_field(
529 "variableBindingSet",
530 ),
531 );
532 #[cfg(not(feature = "strict"))] Default::default()
533 }
534 };
535 let m_userData = match m_userData {
536 _serde::__private::Some(__field) => __field,
537 _serde::__private::None => {
538 #[cfg(feature = "strict")]
539 return _serde::__private::Err(
540 <__A::Error as _serde::de::Error>::missing_field("userData"),
541 );
542 #[cfg(not(feature = "strict"))] Default::default()
543 }
544 };
545 let m_name = match m_name {
546 _serde::__private::Some(__field) => __field,
547 _serde::__private::None => {
548 #[cfg(feature = "strict")]
549 return _serde::__private::Err(
550 <__A::Error as _serde::de::Error>::missing_field("name"),
551 );
552 #[cfg(not(feature = "strict"))] Default::default()
553 }
554 };
555 let m_enable = match m_enable {
556 _serde::__private::Some(__field) => __field,
557 _serde::__private::None => {
558 #[cfg(feature = "strict")]
559 return _serde::__private::Err(
560 <__A::Error as _serde::de::Error>::missing_field("enable"),
561 );
562 #[cfg(not(feature = "strict"))] Default::default()
563 }
564 };
565 let m_hands = match m_hands {
566 _serde::__private::Some(__field) => __field,
567 _serde::__private::None => {
568 #[cfg(feature = "strict")]
569 return _serde::__private::Err(
570 <__A::Error as _serde::de::Error>::missing_field("hands"),
571 );
572 #[cfg(not(feature = "strict"))] Default::default()
573 }
574 };
575 let m_fadeInOutCurve = match m_fadeInOutCurve {
576 _serde::__private::Some(__field) => __field,
577 _serde::__private::None => {
578 #[cfg(feature = "strict")]
579 return _serde::__private::Err(
580 <__A::Error as _serde::de::Error>::missing_field(
581 "fadeInOutCurve",
582 ),
583 );
584 #[cfg(not(feature = "strict"))] Default::default()
585 }
586 };
587 let __ptr = None;
588 let parent = hkBaseObject { __ptr };
589 let parent = hkReferencedObject {
590 __ptr,
591 parent,
592 ..Default::default()
593 };
594 let parent = hkbBindable {
595 __ptr,
596 parent,
597 m_variableBindingSet,
598 ..Default::default()
599 };
600 let parent = hkbNode {
601 __ptr,
602 parent,
603 m_userData,
604 m_name,
605 ..Default::default()
606 };
607 let parent = hkbModifier {
608 __ptr,
609 parent,
610 m_enable,
611 ..Default::default()
612 };
613 let __ptr = __A::class_ptr(&mut __map);
614 _serde::__private::Ok(hkbHandIkModifier {
615 __ptr,
616 parent,
617 m_hands,
618 m_fadeInOutCurve,
619 ..Default::default()
620 })
621 }
622 }
623 const FIELDS: &[&str] = &["hands", "fadeInOutCurve", "internalHandData"];
624 _serde::Deserializer::deserialize_struct(
625 deserializer,
626 "hkbHandIkModifier",
627 FIELDS,
628 __hkbHandIkModifierVisitor {
629 marker: _serde::__private::PhantomData::<hkbHandIkModifier>,
630 lifetime: _serde::__private::PhantomData,
631 },
632 )
633 }
634 }
635};