havok_classes/generated/
hkpMeshShapeSubpart_.rs

1use super::class_requires::*;
2use super::*;
3/// # C++ Info
4/// - name: `hkpMeshShapeSubpart`
5/// - version: `0`
6/// - signature: `0x27336e5d`
7/// - size: ` 56`(x86)/` 80`(x86_64)
8/// -  vtable: `false`
9#[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    /// # Unique index for this class
16    /// - Represents a pointer on XML (`<hkobject name="#0001"></hkobject>`)
17    /// - [`Option::None`] => This class is `class in field`.(`<hkobject></hkobject>`)
18    ///
19    /// # Note
20    /// Not present in the binary & Not exist actual C++ field.
21    #[cfg_attr(
22        feature = "serde",
23        serde(skip_serializing_if = "Option::is_none", default)
24    )]
25    pub __ptr: Option<Pointer>,
26    /// # C++ Info
27    /// - name: `vertexBase`(ctype: `void*`)
28    /// - offset: `  0`(x86)/`  0`(x86_64)
29    /// - type_size: `  4`(x86)/`  8`(x86_64)
30    /// - flags: `SERIALIZE_IGNORED`
31    #[cfg_attr(feature = "json_schema", schemars(rename = "vertexBase"))]
32    #[cfg_attr(feature = "serde", serde(rename = "vertexBase"))]
33    pub m_vertexBase: Pointer,
34    /// # C++ Info
35    /// - name: `vertexStriding`(ctype: `hkInt32`)
36    /// - offset: `  4`(x86)/`  8`(x86_64)
37    /// - type_size: `  4`(x86)/`  4`(x86_64)
38    #[cfg_attr(feature = "json_schema", schemars(rename = "vertexStriding"))]
39    #[cfg_attr(feature = "serde", serde(rename = "vertexStriding"))]
40    pub m_vertexStriding: i32,
41    /// # C++ Info
42    /// - name: `numVertices`(ctype: `hkInt32`)
43    /// - offset: `  8`(x86)/` 12`(x86_64)
44    /// - type_size: `  4`(x86)/`  4`(x86_64)
45    #[cfg_attr(feature = "json_schema", schemars(rename = "numVertices"))]
46    #[cfg_attr(feature = "serde", serde(rename = "numVertices"))]
47    pub m_numVertices: i32,
48    /// # C++ Info
49    /// - name: `indexBase`(ctype: `void*`)
50    /// - offset: ` 12`(x86)/` 16`(x86_64)
51    /// - type_size: `  4`(x86)/`  8`(x86_64)
52    /// - flags: `SERIALIZE_IGNORED`
53    #[cfg_attr(feature = "json_schema", schemars(rename = "indexBase"))]
54    #[cfg_attr(feature = "serde", serde(rename = "indexBase"))]
55    pub m_indexBase: Pointer,
56    /// # C++ Info
57    /// - name: `stridingType`(ctype: `enum MeshShapeIndexStridingType`)
58    /// - offset: ` 16`(x86)/` 24`(x86_64)
59    /// - type_size: `  1`(x86)/`  1`(x86_64)
60    #[cfg_attr(feature = "json_schema", schemars(rename = "stridingType"))]
61    #[cfg_attr(feature = "serde", serde(rename = "stridingType"))]
62    pub m_stridingType: MeshShapeIndexStridingType,
63    /// # C++ Info
64    /// - name: `materialIndexStridingType`(ctype: `enum MeshShapeMaterialIndexStridingType`)
65    /// - offset: ` 17`(x86)/` 25`(x86_64)
66    /// - type_size: `  1`(x86)/`  1`(x86_64)
67    #[cfg_attr(feature = "json_schema", schemars(rename = "materialIndexStridingType"))]
68    #[cfg_attr(feature = "serde", serde(rename = "materialIndexStridingType"))]
69    pub m_materialIndexStridingType: MeshShapeMaterialIndexStridingType,
70    /// # C++ Info
71    /// - name: `indexStriding`(ctype: `hkInt32`)
72    /// - offset: ` 20`(x86)/` 28`(x86_64)
73    /// - type_size: `  4`(x86)/`  4`(x86_64)
74    #[cfg_attr(feature = "json_schema", schemars(rename = "indexStriding"))]
75    #[cfg_attr(feature = "serde", serde(rename = "indexStriding"))]
76    pub m_indexStriding: i32,
77    /// # C++ Info
78    /// - name: `flipAlternateTriangles`(ctype: `hkInt32`)
79    /// - offset: ` 24`(x86)/` 32`(x86_64)
80    /// - type_size: `  4`(x86)/`  4`(x86_64)
81    #[cfg_attr(feature = "json_schema", schemars(rename = "flipAlternateTriangles"))]
82    #[cfg_attr(feature = "serde", serde(rename = "flipAlternateTriangles"))]
83    pub m_flipAlternateTriangles: i32,
84    /// # C++ Info
85    /// - name: `numTriangles`(ctype: `hkInt32`)
86    /// - offset: ` 28`(x86)/` 36`(x86_64)
87    /// - type_size: `  4`(x86)/`  4`(x86_64)
88    #[cfg_attr(feature = "json_schema", schemars(rename = "numTriangles"))]
89    #[cfg_attr(feature = "serde", serde(rename = "numTriangles"))]
90    pub m_numTriangles: i32,
91    /// # C++ Info
92    /// - name: `materialIndexBase`(ctype: `void*`)
93    /// - offset: ` 32`(x86)/` 40`(x86_64)
94    /// - type_size: `  4`(x86)/`  8`(x86_64)
95    /// - flags: `SERIALIZE_IGNORED`
96    #[cfg_attr(feature = "json_schema", schemars(rename = "materialIndexBase"))]
97    #[cfg_attr(feature = "serde", serde(rename = "materialIndexBase"))]
98    pub m_materialIndexBase: Pointer,
99    /// # C++ Info
100    /// - name: `materialIndexStriding`(ctype: `hkInt32`)
101    /// - offset: ` 36`(x86)/` 48`(x86_64)
102    /// - type_size: `  4`(x86)/`  4`(x86_64)
103    #[cfg_attr(feature = "json_schema", schemars(rename = "materialIndexStriding"))]
104    #[cfg_attr(feature = "serde", serde(rename = "materialIndexStriding"))]
105    pub m_materialIndexStriding: i32,
106    /// # C++ Info
107    /// - name: `materialBase`(ctype: `void*`)
108    /// - offset: ` 40`(x86)/` 56`(x86_64)
109    /// - type_size: `  4`(x86)/`  8`(x86_64)
110    /// - flags: `SERIALIZE_IGNORED`
111    #[cfg_attr(feature = "json_schema", schemars(rename = "materialBase"))]
112    #[cfg_attr(feature = "serde", serde(rename = "materialBase"))]
113    pub m_materialBase: Pointer,
114    /// # C++ Info
115    /// - name: `materialStriding`(ctype: `hkInt32`)
116    /// - offset: ` 44`(x86)/` 64`(x86_64)
117    /// - type_size: `  4`(x86)/`  4`(x86_64)
118    #[cfg_attr(feature = "json_schema", schemars(rename = "materialStriding"))]
119    #[cfg_attr(feature = "serde", serde(rename = "materialStriding"))]
120    pub m_materialStriding: i32,
121    /// # C++ Info
122    /// - name: `numMaterials`(ctype: `hkInt32`)
123    /// - offset: ` 48`(x86)/` 68`(x86_64)
124    /// - type_size: `  4`(x86)/`  4`(x86_64)
125    #[cfg_attr(feature = "json_schema", schemars(rename = "numMaterials"))]
126    #[cfg_attr(feature = "serde", serde(rename = "numMaterials"))]
127    pub m_numMaterials: i32,
128    /// # C++ Info
129    /// - name: `triangleOffset`(ctype: `hkInt32`)
130    /// - offset: ` 52`(x86)/` 72`(x86_64)
131    /// - type_size: `  4`(x86)/`  4`(x86_64)
132    #[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                /// Intended for use in XML.
236                #[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};