havok_classes/generated/
hkbCharacterControllerModifierInternalState_.rs

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