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 hkpMeshShapeSubpart {
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 = "vertexBase"))]
32 #[cfg_attr(feature = "serde", serde(rename = "vertexBase"))]
33 pub m_vertexBase: Pointer,
34 #[cfg_attr(feature = "json_schema", schemars(rename = "vertexStriding"))]
39 #[cfg_attr(feature = "serde", serde(rename = "vertexStriding"))]
40 pub m_vertexStriding: i32,
41 #[cfg_attr(feature = "json_schema", schemars(rename = "numVertices"))]
46 #[cfg_attr(feature = "serde", serde(rename = "numVertices"))]
47 pub m_numVertices: i32,
48 #[cfg_attr(feature = "json_schema", schemars(rename = "indexBase"))]
54 #[cfg_attr(feature = "serde", serde(rename = "indexBase"))]
55 pub m_indexBase: Pointer,
56 #[cfg_attr(feature = "json_schema", schemars(rename = "stridingType"))]
61 #[cfg_attr(feature = "serde", serde(rename = "stridingType"))]
62 pub m_stridingType: MeshShapeIndexStridingType,
63 #[cfg_attr(feature = "json_schema", schemars(rename = "materialIndexStridingType"))]
68 #[cfg_attr(feature = "serde", serde(rename = "materialIndexStridingType"))]
69 pub m_materialIndexStridingType: MeshShapeMaterialIndexStridingType,
70 #[cfg_attr(feature = "json_schema", schemars(rename = "indexStriding"))]
75 #[cfg_attr(feature = "serde", serde(rename = "indexStriding"))]
76 pub m_indexStriding: i32,
77 #[cfg_attr(feature = "json_schema", schemars(rename = "flipAlternateTriangles"))]
82 #[cfg_attr(feature = "serde", serde(rename = "flipAlternateTriangles"))]
83 pub m_flipAlternateTriangles: i32,
84 #[cfg_attr(feature = "json_schema", schemars(rename = "numTriangles"))]
89 #[cfg_attr(feature = "serde", serde(rename = "numTriangles"))]
90 pub m_numTriangles: i32,
91 #[cfg_attr(feature = "json_schema", schemars(rename = "materialIndexBase"))]
97 #[cfg_attr(feature = "serde", serde(rename = "materialIndexBase"))]
98 pub m_materialIndexBase: Pointer,
99 #[cfg_attr(feature = "json_schema", schemars(rename = "materialIndexStriding"))]
104 #[cfg_attr(feature = "serde", serde(rename = "materialIndexStriding"))]
105 pub m_materialIndexStriding: i32,
106 #[cfg_attr(feature = "json_schema", schemars(rename = "materialBase"))]
112 #[cfg_attr(feature = "serde", serde(rename = "materialBase"))]
113 pub m_materialBase: Pointer,
114 #[cfg_attr(feature = "json_schema", schemars(rename = "materialStriding"))]
119 #[cfg_attr(feature = "serde", serde(rename = "materialStriding"))]
120 pub m_materialStriding: i32,
121 #[cfg_attr(feature = "json_schema", schemars(rename = "numMaterials"))]
126 #[cfg_attr(feature = "serde", serde(rename = "numMaterials"))]
127 pub m_numMaterials: i32,
128 #[cfg_attr(feature = "json_schema", schemars(rename = "triangleOffset"))]
133 #[cfg_attr(feature = "serde", serde(rename = "triangleOffset"))]
134 pub m_triangleOffset: i32,
135}
136const _: () = {
137 use havok_serde as _serde;
138 impl _serde::HavokClass for hkpMeshShapeSubpart {
139 #[inline]
140 fn name(&self) -> &'static str {
141 "hkpMeshShapeSubpart"
142 }
143 #[inline]
144 fn signature(&self) -> _serde::__private::Signature {
145 _serde::__private::Signature::new(0x27336e5d)
146 }
147 #[allow(clippy::let_and_return, clippy::vec_init_then_push)]
148 fn deps_indexes(&self) -> Vec<usize> {
149 let mut v = Vec::new();
150 v.push(self.m_vertexBase.get());
151 v.push(self.m_indexBase.get());
152 v.push(self.m_materialIndexBase.get());
153 v.push(self.m_materialBase.get());
154 v
155 }
156 }
157 impl _serde::Serialize for hkpMeshShapeSubpart {
158 fn serialize<S>(&self, __serializer: S) -> Result<S::Ok, S::Error>
159 where
160 S: _serde::ser::Serializer,
161 {
162 let class_meta = self
163 .__ptr
164 .map(|name| (name, _serde::__private::Signature::new(0x27336e5d)));
165 let mut serializer = __serializer
166 .serialize_struct("hkpMeshShapeSubpart", class_meta, (56u64, 80u64))?;
167 serializer.skip_field("vertexBase", &self.m_vertexBase)?;
168 serializer.serialize_field("vertexStriding", &self.m_vertexStriding)?;
169 serializer.serialize_field("numVertices", &self.m_numVertices)?;
170 serializer.skip_field("indexBase", &self.m_indexBase)?;
171 serializer.serialize_field("stridingType", &self.m_stridingType)?;
172 serializer
173 .serialize_field(
174 "materialIndexStridingType",
175 &self.m_materialIndexStridingType,
176 )?;
177 serializer.pad_field([0u8; 2usize].as_slice(), [0u8; 2usize].as_slice())?;
178 serializer.serialize_field("indexStriding", &self.m_indexStriding)?;
179 serializer
180 .serialize_field(
181 "flipAlternateTriangles",
182 &self.m_flipAlternateTriangles,
183 )?;
184 serializer.serialize_field("numTriangles", &self.m_numTriangles)?;
185 serializer.skip_field("materialIndexBase", &self.m_materialIndexBase)?;
186 serializer
187 .serialize_field(
188 "materialIndexStriding",
189 &self.m_materialIndexStriding,
190 )?;
191 serializer.pad_field([0u8; 0usize].as_slice(), [0u8; 4usize].as_slice())?;
192 serializer.skip_field("materialBase", &self.m_materialBase)?;
193 serializer.serialize_field("materialStriding", &self.m_materialStriding)?;
194 serializer.serialize_field("numMaterials", &self.m_numMaterials)?;
195 serializer.serialize_field("triangleOffset", &self.m_triangleOffset)?;
196 serializer.pad_field([0u8; 0usize].as_slice(), [0u8; 4usize].as_slice())?;
197 serializer.end()
198 }
199 }
200};
201#[doc(hidden)]
202#[allow(non_upper_case_globals, unused_attributes, unused_qualifications)]
203const _: () = {
204 use havok_serde as _serde;
205 #[automatically_derived]
206 impl<'de> _serde::Deserialize<'de> for hkpMeshShapeSubpart {
207 fn deserialize<__D>(deserializer: __D) -> core::result::Result<Self, __D::Error>
208 where
209 __D: _serde::Deserializer<'de>,
210 {
211 #[allow(non_camel_case_types)]
212 enum __Field {
213 m_vertexStriding,
214 m_numVertices,
215 m_stridingType,
216 m_materialIndexStridingType,
217 m_indexStriding,
218 m_flipAlternateTriangles,
219 m_numTriangles,
220 m_materialIndexStriding,
221 m_materialStriding,
222 m_numMaterials,
223 m_triangleOffset,
224 __ignore,
225 }
226 struct __FieldVisitor;
227 impl<'de> _serde::de::Visitor<'de> for __FieldVisitor {
228 type Value = __Field;
229 fn expecting(
230 &self,
231 __formatter: &mut core::fmt::Formatter,
232 ) -> core::fmt::Result {
233 core::fmt::Formatter::write_str(__formatter, "field identifier")
234 }
235 #[allow(clippy::match_single_binding)]
237 #[allow(clippy::reversed_empty_ranges)]
238 #[allow(clippy::single_match)]
239 fn visit_key<__E>(
240 self,
241 __value: &str,
242 ) -> core::result::Result<Self::Value, __E>
243 where
244 __E: _serde::de::Error,
245 {
246 match __value {
247 "vertexStriding" => Ok(__Field::m_vertexStriding),
248 "numVertices" => Ok(__Field::m_numVertices),
249 "stridingType" => Ok(__Field::m_stridingType),
250 "materialIndexStridingType" => {
251 Ok(__Field::m_materialIndexStridingType)
252 }
253 "indexStriding" => Ok(__Field::m_indexStriding),
254 "flipAlternateTriangles" => Ok(__Field::m_flipAlternateTriangles),
255 "numTriangles" => Ok(__Field::m_numTriangles),
256 "materialIndexStriding" => Ok(__Field::m_materialIndexStriding),
257 "materialStriding" => Ok(__Field::m_materialStriding),
258 "numMaterials" => Ok(__Field::m_numMaterials),
259 "triangleOffset" => Ok(__Field::m_triangleOffset),
260 _ => Ok(__Field::__ignore),
261 }
262 }
263 }
264 impl<'de> _serde::Deserialize<'de> for __Field {
265 #[inline]
266 fn deserialize<__D>(
267 __deserializer: __D,
268 ) -> core::result::Result<Self, __D::Error>
269 where
270 __D: _serde::Deserializer<'de>,
271 {
272 _serde::Deserializer::deserialize_key(__deserializer, __FieldVisitor)
273 }
274 }
275 struct __hkpMeshShapeSubpartVisitor<'de> {
276 marker: _serde::__private::PhantomData<hkpMeshShapeSubpart>,
277 lifetime: _serde::__private::PhantomData<&'de ()>,
278 }
279 #[allow(clippy::match_single_binding)]
280 #[allow(clippy::reversed_empty_ranges)]
281 #[allow(clippy::single_match)]
282 impl<'de> _serde::de::Visitor<'de> for __hkpMeshShapeSubpartVisitor<'de> {
283 type Value = hkpMeshShapeSubpart;
284 fn expecting(
285 &self,
286 __formatter: &mut core::fmt::Formatter,
287 ) -> core::fmt::Result {
288 core::fmt::Formatter::write_str(
289 __formatter,
290 "struct hkpMeshShapeSubpart",
291 )
292 }
293 fn visit_struct_for_bytes<__A>(
294 self,
295 mut __map: __A,
296 ) -> _serde::__private::Result<Self::Value, __A::Error>
297 where
298 __A: _serde::de::MapAccess<'de>,
299 {
300 let __ptr = __A::class_ptr(&mut __map);
301 let mut m_vertexBase: _serde::__private::Option<Pointer> = _serde::__private::None;
302 let mut m_vertexStriding: _serde::__private::Option<i32> = _serde::__private::None;
303 let mut m_numVertices: _serde::__private::Option<i32> = _serde::__private::None;
304 let mut m_indexBase: _serde::__private::Option<Pointer> = _serde::__private::None;
305 let mut m_stridingType: _serde::__private::Option<
306 MeshShapeIndexStridingType,
307 > = _serde::__private::None;
308 let mut m_materialIndexStridingType: _serde::__private::Option<
309 MeshShapeMaterialIndexStridingType,
310 > = _serde::__private::None;
311 let mut m_indexStriding: _serde::__private::Option<i32> = _serde::__private::None;
312 let mut m_flipAlternateTriangles: _serde::__private::Option<i32> = _serde::__private::None;
313 let mut m_numTriangles: _serde::__private::Option<i32> = _serde::__private::None;
314 let mut m_materialIndexBase: _serde::__private::Option<Pointer> = _serde::__private::None;
315 let mut m_materialIndexStriding: _serde::__private::Option<i32> = _serde::__private::None;
316 let mut m_materialBase: _serde::__private::Option<Pointer> = _serde::__private::None;
317 let mut m_materialStriding: _serde::__private::Option<i32> = _serde::__private::None;
318 let mut m_numMaterials: _serde::__private::Option<i32> = _serde::__private::None;
319 let mut m_triangleOffset: _serde::__private::Option<i32> = _serde::__private::None;
320 for i in 0..15usize {
321 match i {
322 0usize => {
323 if _serde::__private::Option::is_some(&m_vertexBase) {
324 return _serde::__private::Err(
325 <__A::Error as _serde::de::Error>::duplicate_field(
326 "vertexBase",
327 ),
328 );
329 }
330 m_vertexBase = _serde::__private::Some(
331 match __A::next_value::<Pointer>(&mut __map) {
332 _serde::__private::Ok(__val) => __val,
333 _serde::__private::Err(__err) => {
334 return _serde::__private::Err(__err);
335 }
336 },
337 );
338 }
339 1usize => {
340 if _serde::__private::Option::is_some(&m_vertexStriding) {
341 return _serde::__private::Err(
342 <__A::Error as _serde::de::Error>::duplicate_field(
343 "vertexStriding",
344 ),
345 );
346 }
347 m_vertexStriding = _serde::__private::Some(
348 match __A::next_value::<i32>(&mut __map) {
349 _serde::__private::Ok(__val) => __val,
350 _serde::__private::Err(__err) => {
351 return _serde::__private::Err(__err);
352 }
353 },
354 );
355 }
356 2usize => {
357 if _serde::__private::Option::is_some(&m_numVertices) {
358 return _serde::__private::Err(
359 <__A::Error as _serde::de::Error>::duplicate_field(
360 "numVertices",
361 ),
362 );
363 }
364 m_numVertices = _serde::__private::Some(
365 match __A::next_value::<i32>(&mut __map) {
366 _serde::__private::Ok(__val) => __val,
367 _serde::__private::Err(__err) => {
368 return _serde::__private::Err(__err);
369 }
370 },
371 );
372 }
373 3usize => {
374 if _serde::__private::Option::is_some(&m_indexBase) {
375 return _serde::__private::Err(
376 <__A::Error as _serde::de::Error>::duplicate_field(
377 "indexBase",
378 ),
379 );
380 }
381 m_indexBase = _serde::__private::Some(
382 match __A::next_value::<Pointer>(&mut __map) {
383 _serde::__private::Ok(__val) => __val,
384 _serde::__private::Err(__err) => {
385 return _serde::__private::Err(__err);
386 }
387 },
388 );
389 }
390 4usize => {
391 if _serde::__private::Option::is_some(&m_stridingType) {
392 return _serde::__private::Err(
393 <__A::Error as _serde::de::Error>::duplicate_field(
394 "stridingType",
395 ),
396 );
397 }
398 m_stridingType = _serde::__private::Some(
399 match __A::next_value::<
400 MeshShapeIndexStridingType,
401 >(&mut __map) {
402 _serde::__private::Ok(__val) => __val,
403 _serde::__private::Err(__err) => {
404 return _serde::__private::Err(__err);
405 }
406 },
407 );
408 }
409 5usize => {
410 if _serde::__private::Option::is_some(
411 &m_materialIndexStridingType,
412 ) {
413 return _serde::__private::Err(
414 <__A::Error as _serde::de::Error>::duplicate_field(
415 "materialIndexStridingType",
416 ),
417 );
418 }
419 m_materialIndexStridingType = _serde::__private::Some(
420 match __A::next_value::<
421 MeshShapeMaterialIndexStridingType,
422 >(&mut __map) {
423 _serde::__private::Ok(__val) => __val,
424 _serde::__private::Err(__err) => {
425 return _serde::__private::Err(__err);
426 }
427 },
428 );
429 }
430 6usize => {
431 if _serde::__private::Option::is_some(&m_indexStriding) {
432 return _serde::__private::Err(
433 <__A::Error as _serde::de::Error>::duplicate_field(
434 "indexStriding",
435 ),
436 );
437 }
438 __A::pad(&mut __map, 2usize, 2usize)?;
439 m_indexStriding = _serde::__private::Some(
440 match __A::next_value::<i32>(&mut __map) {
441 _serde::__private::Ok(__val) => __val,
442 _serde::__private::Err(__err) => {
443 return _serde::__private::Err(__err);
444 }
445 },
446 );
447 }
448 7usize => {
449 if _serde::__private::Option::is_some(
450 &m_flipAlternateTriangles,
451 ) {
452 return _serde::__private::Err(
453 <__A::Error as _serde::de::Error>::duplicate_field(
454 "flipAlternateTriangles",
455 ),
456 );
457 }
458 m_flipAlternateTriangles = _serde::__private::Some(
459 match __A::next_value::<i32>(&mut __map) {
460 _serde::__private::Ok(__val) => __val,
461 _serde::__private::Err(__err) => {
462 return _serde::__private::Err(__err);
463 }
464 },
465 );
466 }
467 8usize => {
468 if _serde::__private::Option::is_some(&m_numTriangles) {
469 return _serde::__private::Err(
470 <__A::Error as _serde::de::Error>::duplicate_field(
471 "numTriangles",
472 ),
473 );
474 }
475 m_numTriangles = _serde::__private::Some(
476 match __A::next_value::<i32>(&mut __map) {
477 _serde::__private::Ok(__val) => __val,
478 _serde::__private::Err(__err) => {
479 return _serde::__private::Err(__err);
480 }
481 },
482 );
483 }
484 9usize => {
485 if _serde::__private::Option::is_some(
486 &m_materialIndexBase,
487 ) {
488 return _serde::__private::Err(
489 <__A::Error as _serde::de::Error>::duplicate_field(
490 "materialIndexBase",
491 ),
492 );
493 }
494 m_materialIndexBase = _serde::__private::Some(
495 match __A::next_value::<Pointer>(&mut __map) {
496 _serde::__private::Ok(__val) => __val,
497 _serde::__private::Err(__err) => {
498 return _serde::__private::Err(__err);
499 }
500 },
501 );
502 }
503 10usize => {
504 if _serde::__private::Option::is_some(
505 &m_materialIndexStriding,
506 ) {
507 return _serde::__private::Err(
508 <__A::Error as _serde::de::Error>::duplicate_field(
509 "materialIndexStriding",
510 ),
511 );
512 }
513 m_materialIndexStriding = _serde::__private::Some(
514 match __A::next_value::<i32>(&mut __map) {
515 _serde::__private::Ok(__val) => __val,
516 _serde::__private::Err(__err) => {
517 return _serde::__private::Err(__err);
518 }
519 },
520 );
521 }
522 11usize => {
523 if _serde::__private::Option::is_some(&m_materialBase) {
524 return _serde::__private::Err(
525 <__A::Error as _serde::de::Error>::duplicate_field(
526 "materialBase",
527 ),
528 );
529 }
530 __A::pad(&mut __map, 0usize, 4usize)?;
531 m_materialBase = _serde::__private::Some(
532 match __A::next_value::<Pointer>(&mut __map) {
533 _serde::__private::Ok(__val) => __val,
534 _serde::__private::Err(__err) => {
535 return _serde::__private::Err(__err);
536 }
537 },
538 );
539 }
540 12usize => {
541 if _serde::__private::Option::is_some(&m_materialStriding) {
542 return _serde::__private::Err(
543 <__A::Error as _serde::de::Error>::duplicate_field(
544 "materialStriding",
545 ),
546 );
547 }
548 m_materialStriding = _serde::__private::Some(
549 match __A::next_value::<i32>(&mut __map) {
550 _serde::__private::Ok(__val) => __val,
551 _serde::__private::Err(__err) => {
552 return _serde::__private::Err(__err);
553 }
554 },
555 );
556 }
557 13usize => {
558 if _serde::__private::Option::is_some(&m_numMaterials) {
559 return _serde::__private::Err(
560 <__A::Error as _serde::de::Error>::duplicate_field(
561 "numMaterials",
562 ),
563 );
564 }
565 m_numMaterials = _serde::__private::Some(
566 match __A::next_value::<i32>(&mut __map) {
567 _serde::__private::Ok(__val) => __val,
568 _serde::__private::Err(__err) => {
569 return _serde::__private::Err(__err);
570 }
571 },
572 );
573 }
574 14usize => {
575 if _serde::__private::Option::is_some(&m_triangleOffset) {
576 return _serde::__private::Err(
577 <__A::Error as _serde::de::Error>::duplicate_field(
578 "triangleOffset",
579 ),
580 );
581 }
582 m_triangleOffset = _serde::__private::Some(
583 match __A::next_value::<i32>(&mut __map) {
584 _serde::__private::Ok(__val) => __val,
585 _serde::__private::Err(__err) => {
586 return _serde::__private::Err(__err);
587 }
588 },
589 );
590 }
591 _ => {}
592 }
593 }
594 __A::pad(&mut __map, 0usize, 4usize)?;
595 let m_vertexBase = match m_vertexBase {
596 _serde::__private::Some(__field) => __field,
597 _serde::__private::None => {
598 return _serde::__private::Err(
599 <__A::Error as _serde::de::Error>::missing_field(
600 "vertexBase",
601 ),
602 );
603 }
604 };
605 let m_vertexStriding = match m_vertexStriding {
606 _serde::__private::Some(__field) => __field,
607 _serde::__private::None => {
608 return _serde::__private::Err(
609 <__A::Error as _serde::de::Error>::missing_field(
610 "vertexStriding",
611 ),
612 );
613 }
614 };
615 let m_numVertices = match m_numVertices {
616 _serde::__private::Some(__field) => __field,
617 _serde::__private::None => {
618 return _serde::__private::Err(
619 <__A::Error as _serde::de::Error>::missing_field(
620 "numVertices",
621 ),
622 );
623 }
624 };
625 let m_indexBase = match m_indexBase {
626 _serde::__private::Some(__field) => __field,
627 _serde::__private::None => {
628 return _serde::__private::Err(
629 <__A::Error as _serde::de::Error>::missing_field(
630 "indexBase",
631 ),
632 );
633 }
634 };
635 let m_stridingType = match m_stridingType {
636 _serde::__private::Some(__field) => __field,
637 _serde::__private::None => {
638 return _serde::__private::Err(
639 <__A::Error as _serde::de::Error>::missing_field(
640 "stridingType",
641 ),
642 );
643 }
644 };
645 let m_materialIndexStridingType = match m_materialIndexStridingType {
646 _serde::__private::Some(__field) => __field,
647 _serde::__private::None => {
648 return _serde::__private::Err(
649 <__A::Error as _serde::de::Error>::missing_field(
650 "materialIndexStridingType",
651 ),
652 );
653 }
654 };
655 let m_indexStriding = match m_indexStriding {
656 _serde::__private::Some(__field) => __field,
657 _serde::__private::None => {
658 return _serde::__private::Err(
659 <__A::Error as _serde::de::Error>::missing_field(
660 "indexStriding",
661 ),
662 );
663 }
664 };
665 let m_flipAlternateTriangles = match m_flipAlternateTriangles {
666 _serde::__private::Some(__field) => __field,
667 _serde::__private::None => {
668 return _serde::__private::Err(
669 <__A::Error as _serde::de::Error>::missing_field(
670 "flipAlternateTriangles",
671 ),
672 );
673 }
674 };
675 let m_numTriangles = match m_numTriangles {
676 _serde::__private::Some(__field) => __field,
677 _serde::__private::None => {
678 return _serde::__private::Err(
679 <__A::Error as _serde::de::Error>::missing_field(
680 "numTriangles",
681 ),
682 );
683 }
684 };
685 let m_materialIndexBase = match m_materialIndexBase {
686 _serde::__private::Some(__field) => __field,
687 _serde::__private::None => {
688 return _serde::__private::Err(
689 <__A::Error as _serde::de::Error>::missing_field(
690 "materialIndexBase",
691 ),
692 );
693 }
694 };
695 let m_materialIndexStriding = match m_materialIndexStriding {
696 _serde::__private::Some(__field) => __field,
697 _serde::__private::None => {
698 return _serde::__private::Err(
699 <__A::Error as _serde::de::Error>::missing_field(
700 "materialIndexStriding",
701 ),
702 );
703 }
704 };
705 let m_materialBase = match m_materialBase {
706 _serde::__private::Some(__field) => __field,
707 _serde::__private::None => {
708 return _serde::__private::Err(
709 <__A::Error as _serde::de::Error>::missing_field(
710 "materialBase",
711 ),
712 );
713 }
714 };
715 let m_materialStriding = match m_materialStriding {
716 _serde::__private::Some(__field) => __field,
717 _serde::__private::None => {
718 return _serde::__private::Err(
719 <__A::Error as _serde::de::Error>::missing_field(
720 "materialStriding",
721 ),
722 );
723 }
724 };
725 let m_numMaterials = match m_numMaterials {
726 _serde::__private::Some(__field) => __field,
727 _serde::__private::None => {
728 return _serde::__private::Err(
729 <__A::Error as _serde::de::Error>::missing_field(
730 "numMaterials",
731 ),
732 );
733 }
734 };
735 let m_triangleOffset = match m_triangleOffset {
736 _serde::__private::Some(__field) => __field,
737 _serde::__private::None => {
738 return _serde::__private::Err(
739 <__A::Error as _serde::de::Error>::missing_field(
740 "triangleOffset",
741 ),
742 );
743 }
744 };
745 _serde::__private::Ok(hkpMeshShapeSubpart {
746 __ptr,
747 m_vertexBase,
748 m_vertexStriding,
749 m_numVertices,
750 m_indexBase,
751 m_stridingType,
752 m_materialIndexStridingType,
753 m_indexStriding,
754 m_flipAlternateTriangles,
755 m_numTriangles,
756 m_materialIndexBase,
757 m_materialIndexStriding,
758 m_materialBase,
759 m_materialStriding,
760 m_numMaterials,
761 m_triangleOffset,
762 })
763 }
764 #[allow(clippy::manual_unwrap_or_default)]
765 fn visit_struct<__A>(
766 self,
767 mut __map: __A,
768 ) -> _serde::__private::Result<Self::Value, __A::Error>
769 where
770 __A: _serde::de::MapAccess<'de>,
771 {
772 let mut m_vertexStriding: _serde::__private::Option<i32> = _serde::__private::None;
773 let mut m_numVertices: _serde::__private::Option<i32> = _serde::__private::None;
774 let mut m_stridingType: _serde::__private::Option<
775 MeshShapeIndexStridingType,
776 > = _serde::__private::None;
777 let mut m_materialIndexStridingType: _serde::__private::Option<
778 MeshShapeMaterialIndexStridingType,
779 > = _serde::__private::None;
780 let mut m_indexStriding: _serde::__private::Option<i32> = _serde::__private::None;
781 let mut m_flipAlternateTriangles: _serde::__private::Option<i32> = _serde::__private::None;
782 let mut m_numTriangles: _serde::__private::Option<i32> = _serde::__private::None;
783 let mut m_materialIndexStriding: _serde::__private::Option<i32> = _serde::__private::None;
784 let mut m_materialStriding: _serde::__private::Option<i32> = _serde::__private::None;
785 let mut m_numMaterials: _serde::__private::Option<i32> = _serde::__private::None;
786 let mut m_triangleOffset: _serde::__private::Option<i32> = _serde::__private::None;
787 while let _serde::__private::Some(__key) = {
788 __A::next_key::<__Field>(&mut __map)?
789 } {
790 match __key {
791 __Field::m_vertexStriding => {
792 #[cfg(
793 any(feature = "strict", feature = "ignore_duplicates")
794 )]
795 if _serde::__private::Option::is_some(&m_vertexStriding) {
796 #[cfg(feature = "ignore_duplicates")]
797 {
798 __A::skip_value(&mut __map)?;
799 continue;
800 }
801 #[cfg(feature = "strict")]
802 return _serde::__private::Err(
803 <__A::Error as _serde::de::Error>::duplicate_field(
804 "vertexStriding",
805 ),
806 );
807 }
808 m_vertexStriding = _serde::__private::Some(
809 match __A::next_value::<i32>(&mut __map) {
810 _serde::__private::Ok(__val) => __val,
811 _serde::__private::Err(__err) => {
812 return _serde::__private::Err(__err);
813 }
814 },
815 );
816 }
817 __Field::m_numVertices => {
818 #[cfg(
819 any(feature = "strict", feature = "ignore_duplicates")
820 )]
821 if _serde::__private::Option::is_some(&m_numVertices) {
822 #[cfg(feature = "ignore_duplicates")]
823 {
824 __A::skip_value(&mut __map)?;
825 continue;
826 }
827 #[cfg(feature = "strict")]
828 return _serde::__private::Err(
829 <__A::Error as _serde::de::Error>::duplicate_field(
830 "numVertices",
831 ),
832 );
833 }
834 m_numVertices = _serde::__private::Some(
835 match __A::next_value::<i32>(&mut __map) {
836 _serde::__private::Ok(__val) => __val,
837 _serde::__private::Err(__err) => {
838 return _serde::__private::Err(__err);
839 }
840 },
841 );
842 }
843 __Field::m_stridingType => {
844 #[cfg(
845 any(feature = "strict", feature = "ignore_duplicates")
846 )]
847 if _serde::__private::Option::is_some(&m_stridingType) {
848 #[cfg(feature = "ignore_duplicates")]
849 {
850 __A::skip_value(&mut __map)?;
851 continue;
852 }
853 #[cfg(feature = "strict")]
854 return _serde::__private::Err(
855 <__A::Error as _serde::de::Error>::duplicate_field(
856 "stridingType",
857 ),
858 );
859 }
860 m_stridingType = _serde::__private::Some(
861 match __A::next_value::<
862 MeshShapeIndexStridingType,
863 >(&mut __map) {
864 _serde::__private::Ok(__val) => __val,
865 _serde::__private::Err(__err) => {
866 return _serde::__private::Err(__err);
867 }
868 },
869 );
870 }
871 __Field::m_materialIndexStridingType => {
872 #[cfg(
873 any(feature = "strict", feature = "ignore_duplicates")
874 )]
875 if _serde::__private::Option::is_some(
876 &m_materialIndexStridingType,
877 ) {
878 #[cfg(feature = "ignore_duplicates")]
879 {
880 __A::skip_value(&mut __map)?;
881 continue;
882 }
883 #[cfg(feature = "strict")]
884 return _serde::__private::Err(
885 <__A::Error as _serde::de::Error>::duplicate_field(
886 "materialIndexStridingType",
887 ),
888 );
889 }
890 m_materialIndexStridingType = _serde::__private::Some(
891 match __A::next_value::<
892 MeshShapeMaterialIndexStridingType,
893 >(&mut __map) {
894 _serde::__private::Ok(__val) => __val,
895 _serde::__private::Err(__err) => {
896 return _serde::__private::Err(__err);
897 }
898 },
899 );
900 }
901 __Field::m_indexStriding => {
902 #[cfg(
903 any(feature = "strict", feature = "ignore_duplicates")
904 )]
905 if _serde::__private::Option::is_some(&m_indexStriding) {
906 #[cfg(feature = "ignore_duplicates")]
907 {
908 __A::skip_value(&mut __map)?;
909 continue;
910 }
911 #[cfg(feature = "strict")]
912 return _serde::__private::Err(
913 <__A::Error as _serde::de::Error>::duplicate_field(
914 "indexStriding",
915 ),
916 );
917 }
918 m_indexStriding = _serde::__private::Some(
919 match __A::next_value::<i32>(&mut __map) {
920 _serde::__private::Ok(__val) => __val,
921 _serde::__private::Err(__err) => {
922 return _serde::__private::Err(__err);
923 }
924 },
925 );
926 }
927 __Field::m_flipAlternateTriangles => {
928 #[cfg(
929 any(feature = "strict", feature = "ignore_duplicates")
930 )]
931 if _serde::__private::Option::is_some(
932 &m_flipAlternateTriangles,
933 ) {
934 #[cfg(feature = "ignore_duplicates")]
935 {
936 __A::skip_value(&mut __map)?;
937 continue;
938 }
939 #[cfg(feature = "strict")]
940 return _serde::__private::Err(
941 <__A::Error as _serde::de::Error>::duplicate_field(
942 "flipAlternateTriangles",
943 ),
944 );
945 }
946 m_flipAlternateTriangles = _serde::__private::Some(
947 match __A::next_value::<i32>(&mut __map) {
948 _serde::__private::Ok(__val) => __val,
949 _serde::__private::Err(__err) => {
950 return _serde::__private::Err(__err);
951 }
952 },
953 );
954 }
955 __Field::m_numTriangles => {
956 #[cfg(
957 any(feature = "strict", feature = "ignore_duplicates")
958 )]
959 if _serde::__private::Option::is_some(&m_numTriangles) {
960 #[cfg(feature = "ignore_duplicates")]
961 {
962 __A::skip_value(&mut __map)?;
963 continue;
964 }
965 #[cfg(feature = "strict")]
966 return _serde::__private::Err(
967 <__A::Error as _serde::de::Error>::duplicate_field(
968 "numTriangles",
969 ),
970 );
971 }
972 m_numTriangles = _serde::__private::Some(
973 match __A::next_value::<i32>(&mut __map) {
974 _serde::__private::Ok(__val) => __val,
975 _serde::__private::Err(__err) => {
976 return _serde::__private::Err(__err);
977 }
978 },
979 );
980 }
981 __Field::m_materialIndexStriding => {
982 #[cfg(
983 any(feature = "strict", feature = "ignore_duplicates")
984 )]
985 if _serde::__private::Option::is_some(
986 &m_materialIndexStriding,
987 ) {
988 #[cfg(feature = "ignore_duplicates")]
989 {
990 __A::skip_value(&mut __map)?;
991 continue;
992 }
993 #[cfg(feature = "strict")]
994 return _serde::__private::Err(
995 <__A::Error as _serde::de::Error>::duplicate_field(
996 "materialIndexStriding",
997 ),
998 );
999 }
1000 m_materialIndexStriding = _serde::__private::Some(
1001 match __A::next_value::<i32>(&mut __map) {
1002 _serde::__private::Ok(__val) => __val,
1003 _serde::__private::Err(__err) => {
1004 return _serde::__private::Err(__err);
1005 }
1006 },
1007 );
1008 }
1009 __Field::m_materialStriding => {
1010 #[cfg(
1011 any(feature = "strict", feature = "ignore_duplicates")
1012 )]
1013 if _serde::__private::Option::is_some(&m_materialStriding) {
1014 #[cfg(feature = "ignore_duplicates")]
1015 {
1016 __A::skip_value(&mut __map)?;
1017 continue;
1018 }
1019 #[cfg(feature = "strict")]
1020 return _serde::__private::Err(
1021 <__A::Error as _serde::de::Error>::duplicate_field(
1022 "materialStriding",
1023 ),
1024 );
1025 }
1026 m_materialStriding = _serde::__private::Some(
1027 match __A::next_value::<i32>(&mut __map) {
1028 _serde::__private::Ok(__val) => __val,
1029 _serde::__private::Err(__err) => {
1030 return _serde::__private::Err(__err);
1031 }
1032 },
1033 );
1034 }
1035 __Field::m_numMaterials => {
1036 #[cfg(
1037 any(feature = "strict", feature = "ignore_duplicates")
1038 )]
1039 if _serde::__private::Option::is_some(&m_numMaterials) {
1040 #[cfg(feature = "ignore_duplicates")]
1041 {
1042 __A::skip_value(&mut __map)?;
1043 continue;
1044 }
1045 #[cfg(feature = "strict")]
1046 return _serde::__private::Err(
1047 <__A::Error as _serde::de::Error>::duplicate_field(
1048 "numMaterials",
1049 ),
1050 );
1051 }
1052 m_numMaterials = _serde::__private::Some(
1053 match __A::next_value::<i32>(&mut __map) {
1054 _serde::__private::Ok(__val) => __val,
1055 _serde::__private::Err(__err) => {
1056 return _serde::__private::Err(__err);
1057 }
1058 },
1059 );
1060 }
1061 __Field::m_triangleOffset => {
1062 #[cfg(
1063 any(feature = "strict", feature = "ignore_duplicates")
1064 )]
1065 if _serde::__private::Option::is_some(&m_triangleOffset) {
1066 #[cfg(feature = "ignore_duplicates")]
1067 {
1068 __A::skip_value(&mut __map)?;
1069 continue;
1070 }
1071 #[cfg(feature = "strict")]
1072 return _serde::__private::Err(
1073 <__A::Error as _serde::de::Error>::duplicate_field(
1074 "triangleOffset",
1075 ),
1076 );
1077 }
1078 m_triangleOffset = _serde::__private::Some(
1079 match __A::next_value::<i32>(&mut __map) {
1080 _serde::__private::Ok(__val) => __val,
1081 _serde::__private::Err(__err) => {
1082 return _serde::__private::Err(__err);
1083 }
1084 },
1085 );
1086 }
1087 _ => __A::skip_value(&mut __map)?,
1088 }
1089 }
1090 let m_vertexStriding = match m_vertexStriding {
1091 _serde::__private::Some(__field) => __field,
1092 _serde::__private::None => {
1093 #[cfg(feature = "strict")]
1094 return _serde::__private::Err(
1095 <__A::Error as _serde::de::Error>::missing_field(
1096 "vertexStriding",
1097 ),
1098 );
1099 #[cfg(not(feature = "strict"))] Default::default()
1100 }
1101 };
1102 let m_numVertices = match m_numVertices {
1103 _serde::__private::Some(__field) => __field,
1104 _serde::__private::None => {
1105 #[cfg(feature = "strict")]
1106 return _serde::__private::Err(
1107 <__A::Error as _serde::de::Error>::missing_field(
1108 "numVertices",
1109 ),
1110 );
1111 #[cfg(not(feature = "strict"))] Default::default()
1112 }
1113 };
1114 let m_stridingType = match m_stridingType {
1115 _serde::__private::Some(__field) => __field,
1116 _serde::__private::None => {
1117 #[cfg(feature = "strict")]
1118 return _serde::__private::Err(
1119 <__A::Error as _serde::de::Error>::missing_field(
1120 "stridingType",
1121 ),
1122 );
1123 #[cfg(not(feature = "strict"))] Default::default()
1124 }
1125 };
1126 let m_materialIndexStridingType = match m_materialIndexStridingType {
1127 _serde::__private::Some(__field) => __field,
1128 _serde::__private::None => {
1129 #[cfg(feature = "strict")]
1130 return _serde::__private::Err(
1131 <__A::Error as _serde::de::Error>::missing_field(
1132 "materialIndexStridingType",
1133 ),
1134 );
1135 #[cfg(not(feature = "strict"))] Default::default()
1136 }
1137 };
1138 let m_indexStriding = match m_indexStriding {
1139 _serde::__private::Some(__field) => __field,
1140 _serde::__private::None => {
1141 #[cfg(feature = "strict")]
1142 return _serde::__private::Err(
1143 <__A::Error as _serde::de::Error>::missing_field(
1144 "indexStriding",
1145 ),
1146 );
1147 #[cfg(not(feature = "strict"))] Default::default()
1148 }
1149 };
1150 let m_flipAlternateTriangles = match m_flipAlternateTriangles {
1151 _serde::__private::Some(__field) => __field,
1152 _serde::__private::None => {
1153 #[cfg(feature = "strict")]
1154 return _serde::__private::Err(
1155 <__A::Error as _serde::de::Error>::missing_field(
1156 "flipAlternateTriangles",
1157 ),
1158 );
1159 #[cfg(not(feature = "strict"))] Default::default()
1160 }
1161 };
1162 let m_numTriangles = match m_numTriangles {
1163 _serde::__private::Some(__field) => __field,
1164 _serde::__private::None => {
1165 #[cfg(feature = "strict")]
1166 return _serde::__private::Err(
1167 <__A::Error as _serde::de::Error>::missing_field(
1168 "numTriangles",
1169 ),
1170 );
1171 #[cfg(not(feature = "strict"))] Default::default()
1172 }
1173 };
1174 let m_materialIndexStriding = match m_materialIndexStriding {
1175 _serde::__private::Some(__field) => __field,
1176 _serde::__private::None => {
1177 #[cfg(feature = "strict")]
1178 return _serde::__private::Err(
1179 <__A::Error as _serde::de::Error>::missing_field(
1180 "materialIndexStriding",
1181 ),
1182 );
1183 #[cfg(not(feature = "strict"))] Default::default()
1184 }
1185 };
1186 let m_materialStriding = match m_materialStriding {
1187 _serde::__private::Some(__field) => __field,
1188 _serde::__private::None => {
1189 #[cfg(feature = "strict")]
1190 return _serde::__private::Err(
1191 <__A::Error as _serde::de::Error>::missing_field(
1192 "materialStriding",
1193 ),
1194 );
1195 #[cfg(not(feature = "strict"))] Default::default()
1196 }
1197 };
1198 let m_numMaterials = match m_numMaterials {
1199 _serde::__private::Some(__field) => __field,
1200 _serde::__private::None => {
1201 #[cfg(feature = "strict")]
1202 return _serde::__private::Err(
1203 <__A::Error as _serde::de::Error>::missing_field(
1204 "numMaterials",
1205 ),
1206 );
1207 #[cfg(not(feature = "strict"))] Default::default()
1208 }
1209 };
1210 let m_triangleOffset = match m_triangleOffset {
1211 _serde::__private::Some(__field) => __field,
1212 _serde::__private::None => {
1213 #[cfg(feature = "strict")]
1214 return _serde::__private::Err(
1215 <__A::Error as _serde::de::Error>::missing_field(
1216 "triangleOffset",
1217 ),
1218 );
1219 #[cfg(not(feature = "strict"))] Default::default()
1220 }
1221 };
1222 let __ptr = __A::class_ptr(&mut __map);
1223 _serde::__private::Ok(hkpMeshShapeSubpart {
1224 __ptr,
1225 m_vertexStriding,
1226 m_numVertices,
1227 m_stridingType,
1228 m_materialIndexStridingType,
1229 m_indexStriding,
1230 m_flipAlternateTriangles,
1231 m_numTriangles,
1232 m_materialIndexStriding,
1233 m_materialStriding,
1234 m_numMaterials,
1235 m_triangleOffset,
1236 ..Default::default()
1237 })
1238 }
1239 }
1240 const FIELDS: &[&str] = &[
1241 "vertexBase",
1242 "vertexStriding",
1243 "numVertices",
1244 "indexBase",
1245 "stridingType",
1246 "materialIndexStridingType",
1247 "indexStriding",
1248 "flipAlternateTriangles",
1249 "numTriangles",
1250 "materialIndexBase",
1251 "materialIndexStriding",
1252 "materialBase",
1253 "materialStriding",
1254 "numMaterials",
1255 "triangleOffset",
1256 ];
1257 _serde::Deserializer::deserialize_struct(
1258 deserializer,
1259 "hkpMeshShapeSubpart",
1260 FIELDS,
1261 __hkpMeshShapeSubpartVisitor {
1262 marker: _serde::__private::PhantomData::<hkpMeshShapeSubpart>,
1263 lifetime: _serde::__private::PhantomData,
1264 },
1265 )
1266 }
1267 }
1268};