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