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