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