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