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