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