1use super::class_requires::*;
2use super::*;
3#[allow(non_upper_case_globals, non_snake_case)]
10#[cfg_attr(feature = "json_schema", derive(schemars::JsonSchema))]
11#[cfg_attr(feature = "serde", derive(serde::Serialize, serde::Deserialize))]
12#[derive(educe::Educe)]
13#[educe(Debug, Clone, Default, PartialEq)]
14pub struct hkpHingeConstraintData {
15 #[cfg_attr(
22 feature = "serde",
23 serde(skip_serializing_if = "Option::is_none", default)
24 )]
25 pub __ptr: Option<Pointer>,
26 #[cfg_attr(feature = "json_schema", schemars(flatten))]
28 #[cfg_attr(feature = "serde", serde(flatten))]
29 pub parent: hkpConstraintData,
30 #[cfg_attr(feature = "json_schema", schemars(rename = "atoms"))]
36 #[cfg_attr(feature = "serde", serde(rename = "atoms"))]
37 pub m_atoms: hkpHingeConstraintDataAtoms,
38}
39const _: () = {
40 use havok_serde as _serde;
41 impl _serde::HavokClass for hkpHingeConstraintData {
42 #[inline]
43 fn name(&self) -> &'static str {
44 "hkpHingeConstraintData"
45 }
46 #[inline]
47 fn signature(&self) -> _serde::__private::Signature {
48 _serde::__private::Signature::new(0x9590f046)
49 }
50 #[allow(clippy::let_and_return, clippy::vec_init_then_push)]
51 fn deps_indexes(&self) -> Vec<usize> {
52 let mut v = Vec::new();
53 v.extend(self.m_atoms.deps_indexes());
54 v
55 }
56 }
57 impl _serde::Serialize for hkpHingeConstraintData {
58 fn serialize<S>(&self, __serializer: S) -> Result<S::Ok, S::Error>
59 where
60 S: _serde::ser::Serializer,
61 {
62 let class_meta = self
63 .__ptr
64 .map(|name| (name, _serde::__private::Signature::new(0x9590f046)));
65 let mut serializer = __serializer
66 .serialize_struct(
67 "hkpHingeConstraintData",
68 class_meta,
69 (208u64, 224u64),
70 )?;
71 serializer.pad_field([0u8; 4usize].as_slice(), [0u8; 8usize].as_slice())?;
72 serializer
73 .skip_field("memSizeAndFlags", &self.parent.parent.m_memSizeAndFlags)?;
74 serializer
75 .skip_field("referenceCount", &self.parent.parent.m_referenceCount)?;
76 serializer.pad_field([0u8; 0usize].as_slice(), [0u8; 4usize].as_slice())?;
77 serializer.serialize_field("userData", &self.parent.m_userData)?;
78 serializer.pad_field([0u8; 4usize].as_slice(), [0u8; 8usize].as_slice())?;
79 serializer.serialize_field("atoms", &self.m_atoms)?;
80 serializer.end()
81 }
82 }
83};
84#[doc(hidden)]
85#[allow(non_upper_case_globals, unused_attributes, unused_qualifications)]
86const _: () = {
87 use havok_serde as _serde;
88 #[automatically_derived]
89 impl<'de> _serde::Deserialize<'de> for hkpHingeConstraintData {
90 fn deserialize<__D>(deserializer: __D) -> core::result::Result<Self, __D::Error>
91 where
92 __D: _serde::Deserializer<'de>,
93 {
94 #[allow(non_camel_case_types)]
95 enum __Field {
96 m_userData,
97 m_atoms,
98 __ignore,
99 }
100 struct __FieldVisitor;
101 impl<'de> _serde::de::Visitor<'de> for __FieldVisitor {
102 type Value = __Field;
103 fn expecting(
104 &self,
105 __formatter: &mut core::fmt::Formatter,
106 ) -> core::fmt::Result {
107 core::fmt::Formatter::write_str(__formatter, "field identifier")
108 }
109 #[allow(clippy::match_single_binding)]
111 #[allow(clippy::reversed_empty_ranges)]
112 #[allow(clippy::single_match)]
113 fn visit_key<__E>(
114 self,
115 __value: &str,
116 ) -> core::result::Result<Self::Value, __E>
117 where
118 __E: _serde::de::Error,
119 {
120 match __value {
121 "userData" => Ok(__Field::m_userData),
122 "atoms" => Ok(__Field::m_atoms),
123 _ => Ok(__Field::__ignore),
124 }
125 }
126 }
127 impl<'de> _serde::Deserialize<'de> for __Field {
128 #[inline]
129 fn deserialize<__D>(
130 __deserializer: __D,
131 ) -> core::result::Result<Self, __D::Error>
132 where
133 __D: _serde::Deserializer<'de>,
134 {
135 _serde::Deserializer::deserialize_key(__deserializer, __FieldVisitor)
136 }
137 }
138 struct __hkpHingeConstraintDataVisitor<'de> {
139 marker: _serde::__private::PhantomData<hkpHingeConstraintData>,
140 lifetime: _serde::__private::PhantomData<&'de ()>,
141 }
142 #[allow(clippy::match_single_binding)]
143 #[allow(clippy::reversed_empty_ranges)]
144 #[allow(clippy::single_match)]
145 impl<'de> _serde::de::Visitor<'de> for __hkpHingeConstraintDataVisitor<'de> {
146 type Value = hkpHingeConstraintData;
147 fn expecting(
148 &self,
149 __formatter: &mut core::fmt::Formatter,
150 ) -> core::fmt::Result {
151 core::fmt::Formatter::write_str(
152 __formatter,
153 "struct hkpHingeConstraintData",
154 )
155 }
156 fn visit_struct_for_bytes<__A>(
157 self,
158 mut __map: __A,
159 ) -> _serde::__private::Result<Self::Value, __A::Error>
160 where
161 __A: _serde::de::MapAccess<'de>,
162 {
163 let __ptr = __A::class_ptr(&mut __map);
164 let parent = __A::parent_value(&mut __map)?;
165 let mut m_atoms: _serde::__private::Option<
166 hkpHingeConstraintDataAtoms,
167 > = _serde::__private::None;
168 for i in 0..1usize {
169 match i {
170 0usize => {
171 if _serde::__private::Option::is_some(&m_atoms) {
172 return _serde::__private::Err(
173 <__A::Error as _serde::de::Error>::duplicate_field("atoms"),
174 );
175 }
176 __A::pad(&mut __map, 4usize, 8usize)?;
177 m_atoms = _serde::__private::Some(
178 match __A::next_value::<
179 hkpHingeConstraintDataAtoms,
180 >(&mut __map) {
181 _serde::__private::Ok(__val) => __val,
182 _serde::__private::Err(__err) => {
183 return _serde::__private::Err(__err);
184 }
185 },
186 );
187 }
188 _ => {}
189 }
190 }
191 let m_atoms = match m_atoms {
192 _serde::__private::Some(__field) => __field,
193 _serde::__private::None => {
194 return _serde::__private::Err(
195 <__A::Error as _serde::de::Error>::missing_field("atoms"),
196 );
197 }
198 };
199 _serde::__private::Ok(hkpHingeConstraintData {
200 __ptr,
201 parent,
202 m_atoms,
203 })
204 }
205 #[allow(clippy::manual_unwrap_or_default)]
206 fn visit_struct<__A>(
207 self,
208 mut __map: __A,
209 ) -> _serde::__private::Result<Self::Value, __A::Error>
210 where
211 __A: _serde::de::MapAccess<'de>,
212 {
213 let mut m_userData: _serde::__private::Option<Ulong> = _serde::__private::None;
214 let mut m_atoms: _serde::__private::Option<
215 hkpHingeConstraintDataAtoms,
216 > = _serde::__private::None;
217 while let _serde::__private::Some(__key) = {
218 __A::next_key::<__Field>(&mut __map)?
219 } {
220 match __key {
221 __Field::m_userData => {
222 #[cfg(
223 any(feature = "strict", feature = "ignore_duplicates")
224 )]
225 if _serde::__private::Option::is_some(&m_userData) {
226 #[cfg(feature = "ignore_duplicates")]
227 {
228 __A::skip_value(&mut __map)?;
229 continue;
230 }
231 #[cfg(feature = "strict")]
232 return _serde::__private::Err(
233 <__A::Error as _serde::de::Error>::duplicate_field(
234 "userData",
235 ),
236 );
237 }
238 m_userData = _serde::__private::Some(
239 match __A::next_value::<Ulong>(&mut __map) {
240 _serde::__private::Ok(__val) => __val,
241 _serde::__private::Err(__err) => {
242 return _serde::__private::Err(__err);
243 }
244 },
245 );
246 }
247 __Field::m_atoms => {
248 #[cfg(
249 any(feature = "strict", feature = "ignore_duplicates")
250 )]
251 if _serde::__private::Option::is_some(&m_atoms) {
252 #[cfg(feature = "ignore_duplicates")]
253 {
254 __A::skip_value(&mut __map)?;
255 continue;
256 }
257 #[cfg(feature = "strict")]
258 return _serde::__private::Err(
259 <__A::Error as _serde::de::Error>::duplicate_field("atoms"),
260 );
261 }
262 m_atoms = _serde::__private::Some(
263 match __A::next_value::<
264 hkpHingeConstraintDataAtoms,
265 >(&mut __map) {
266 _serde::__private::Ok(__val) => __val,
267 _serde::__private::Err(__err) => {
268 return _serde::__private::Err(__err);
269 }
270 },
271 );
272 }
273 _ => __A::skip_value(&mut __map)?,
274 }
275 }
276 let m_userData = match m_userData {
277 _serde::__private::Some(__field) => __field,
278 _serde::__private::None => {
279 #[cfg(feature = "strict")]
280 return _serde::__private::Err(
281 <__A::Error as _serde::de::Error>::missing_field("userData"),
282 );
283 #[cfg(not(feature = "strict"))] Default::default()
284 }
285 };
286 let m_atoms = match m_atoms {
287 _serde::__private::Some(__field) => __field,
288 _serde::__private::None => {
289 #[cfg(feature = "strict")]
290 return _serde::__private::Err(
291 <__A::Error as _serde::de::Error>::missing_field("atoms"),
292 );
293 #[cfg(not(feature = "strict"))] Default::default()
294 }
295 };
296 let __ptr = None;
297 let parent = hkBaseObject { __ptr };
298 let parent = hkReferencedObject {
299 __ptr,
300 parent,
301 ..Default::default()
302 };
303 let parent = hkpConstraintData {
304 __ptr,
305 parent,
306 m_userData,
307 };
308 let __ptr = __A::class_ptr(&mut __map);
309 _serde::__private::Ok(hkpHingeConstraintData {
310 __ptr,
311 parent,
312 m_atoms,
313 })
314 }
315 }
316 const FIELDS: &[&str] = &["atoms"];
317 _serde::Deserializer::deserialize_struct(
318 deserializer,
319 "hkpHingeConstraintData",
320 FIELDS,
321 __hkpHingeConstraintDataVisitor {
322 marker: _serde::__private::PhantomData::<hkpHingeConstraintData>,
323 lifetime: _serde::__private::PhantomData,
324 },
325 )
326 }
327 }
328};