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 BSLookAtModifierBoneData {
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 = "index"))]
31 #[cfg_attr(feature = "serde", serde(rename = "index"))]
32 pub m_index: i16,
33 #[cfg_attr(feature = "json_schema", schemars(rename = "fwdAxisLS"))]
38 #[cfg_attr(feature = "serde", serde(rename = "fwdAxisLS"))]
39 pub m_fwdAxisLS: Vector4,
40 #[cfg_attr(feature = "json_schema", schemars(rename = "limitAngleDegrees"))]
45 #[cfg_attr(feature = "serde", serde(rename = "limitAngleDegrees"))]
46 pub m_limitAngleDegrees: f32,
47 #[cfg_attr(feature = "json_schema", schemars(rename = "onGain"))]
52 #[cfg_attr(feature = "serde", serde(rename = "onGain"))]
53 pub m_onGain: f32,
54 #[cfg_attr(feature = "json_schema", schemars(rename = "offGain"))]
59 #[cfg_attr(feature = "serde", serde(rename = "offGain"))]
60 pub m_offGain: f32,
61 #[cfg_attr(feature = "json_schema", schemars(rename = "enabled"))]
66 #[cfg_attr(feature = "serde", serde(rename = "enabled"))]
67 pub m_enabled: bool,
68 #[cfg_attr(feature = "json_schema", schemars(rename = "currentFwdAxisLS"))]
74 #[cfg_attr(feature = "serde", serde(rename = "currentFwdAxisLS"))]
75 pub m_currentFwdAxisLS: Vector4,
76}
77const _: () = {
78 use havok_serde as _serde;
79 impl _serde::HavokClass for BSLookAtModifierBoneData {
80 #[inline]
81 fn name(&self) -> &'static str {
82 "BSLookAtModifierBoneData"
83 }
84 #[inline]
85 fn signature(&self) -> _serde::__private::Signature {
86 _serde::__private::Signature::new(0x29efee59)
87 }
88 #[allow(clippy::let_and_return, clippy::vec_init_then_push)]
89 fn deps_indexes(&self) -> Vec<usize> {
90 let mut v = Vec::new();
91 v
92 }
93 }
94 impl _serde::Serialize for BSLookAtModifierBoneData {
95 fn serialize<S>(&self, __serializer: S) -> Result<S::Ok, S::Error>
96 where
97 S: _serde::ser::Serializer,
98 {
99 let class_meta = self
100 .__ptr
101 .map(|name| (name, _serde::__private::Signature::new(0x29efee59)));
102 let mut serializer = __serializer
103 .serialize_struct(
104 "BSLookAtModifierBoneData",
105 class_meta,
106 (64u64, 64u64),
107 )?;
108 serializer.serialize_field("index", &self.m_index)?;
109 serializer.pad_field([0u8; 14usize].as_slice(), [0u8; 14usize].as_slice())?;
110 serializer.serialize_field("fwdAxisLS", &self.m_fwdAxisLS)?;
111 serializer.serialize_field("limitAngleDegrees", &self.m_limitAngleDegrees)?;
112 serializer.serialize_field("onGain", &self.m_onGain)?;
113 serializer.serialize_field("offGain", &self.m_offGain)?;
114 serializer.serialize_field("enabled", &self.m_enabled)?;
115 serializer.pad_field([0u8; 3usize].as_slice(), [0u8; 3usize].as_slice())?;
116 serializer.skip_field("currentFwdAxisLS", &self.m_currentFwdAxisLS)?;
117 serializer.end()
118 }
119 }
120};
121#[doc(hidden)]
122#[allow(non_upper_case_globals, unused_attributes, unused_qualifications)]
123const _: () = {
124 use havok_serde as _serde;
125 #[automatically_derived]
126 impl<'de> _serde::Deserialize<'de> for BSLookAtModifierBoneData {
127 fn deserialize<__D>(deserializer: __D) -> core::result::Result<Self, __D::Error>
128 where
129 __D: _serde::Deserializer<'de>,
130 {
131 #[allow(non_camel_case_types)]
132 enum __Field {
133 m_index,
134 m_fwdAxisLS,
135 m_limitAngleDegrees,
136 m_onGain,
137 m_offGain,
138 m_enabled,
139 __ignore,
140 }
141 struct __FieldVisitor;
142 impl<'de> _serde::de::Visitor<'de> for __FieldVisitor {
143 type Value = __Field;
144 fn expecting(
145 &self,
146 __formatter: &mut core::fmt::Formatter,
147 ) -> core::fmt::Result {
148 core::fmt::Formatter::write_str(__formatter, "field identifier")
149 }
150 #[allow(clippy::match_single_binding)]
152 #[allow(clippy::reversed_empty_ranges)]
153 #[allow(clippy::single_match)]
154 fn visit_key<__E>(
155 self,
156 __value: &str,
157 ) -> core::result::Result<Self::Value, __E>
158 where
159 __E: _serde::de::Error,
160 {
161 match __value {
162 "index" => Ok(__Field::m_index),
163 "fwdAxisLS" => Ok(__Field::m_fwdAxisLS),
164 "limitAngleDegrees" => Ok(__Field::m_limitAngleDegrees),
165 "onGain" => Ok(__Field::m_onGain),
166 "offGain" => Ok(__Field::m_offGain),
167 "enabled" => Ok(__Field::m_enabled),
168 _ => Ok(__Field::__ignore),
169 }
170 }
171 }
172 impl<'de> _serde::Deserialize<'de> for __Field {
173 #[inline]
174 fn deserialize<__D>(
175 __deserializer: __D,
176 ) -> core::result::Result<Self, __D::Error>
177 where
178 __D: _serde::Deserializer<'de>,
179 {
180 _serde::Deserializer::deserialize_key(__deserializer, __FieldVisitor)
181 }
182 }
183 struct __BSLookAtModifierBoneDataVisitor<'de> {
184 marker: _serde::__private::PhantomData<BSLookAtModifierBoneData>,
185 lifetime: _serde::__private::PhantomData<&'de ()>,
186 }
187 #[allow(clippy::match_single_binding)]
188 #[allow(clippy::reversed_empty_ranges)]
189 #[allow(clippy::single_match)]
190 impl<'de> _serde::de::Visitor<'de>
191 for __BSLookAtModifierBoneDataVisitor<'de> {
192 type Value = BSLookAtModifierBoneData;
193 fn expecting(
194 &self,
195 __formatter: &mut core::fmt::Formatter,
196 ) -> core::fmt::Result {
197 core::fmt::Formatter::write_str(
198 __formatter,
199 "struct BSLookAtModifierBoneData",
200 )
201 }
202 fn visit_struct_for_bytes<__A>(
203 self,
204 mut __map: __A,
205 ) -> _serde::__private::Result<Self::Value, __A::Error>
206 where
207 __A: _serde::de::MapAccess<'de>,
208 {
209 let __ptr = __A::class_ptr(&mut __map);
210 let mut m_index: _serde::__private::Option<i16> = _serde::__private::None;
211 let mut m_fwdAxisLS: _serde::__private::Option<Vector4> = _serde::__private::None;
212 let mut m_limitAngleDegrees: _serde::__private::Option<f32> = _serde::__private::None;
213 let mut m_onGain: _serde::__private::Option<f32> = _serde::__private::None;
214 let mut m_offGain: _serde::__private::Option<f32> = _serde::__private::None;
215 let mut m_enabled: _serde::__private::Option<bool> = _serde::__private::None;
216 let mut m_currentFwdAxisLS: _serde::__private::Option<Vector4> = _serde::__private::None;
217 for i in 0..7usize {
218 match i {
219 0usize => {
220 if _serde::__private::Option::is_some(&m_index) {
221 return _serde::__private::Err(
222 <__A::Error as _serde::de::Error>::duplicate_field("index"),
223 );
224 }
225 m_index = _serde::__private::Some(
226 match __A::next_value::<i16>(&mut __map) {
227 _serde::__private::Ok(__val) => __val,
228 _serde::__private::Err(__err) => {
229 return _serde::__private::Err(__err);
230 }
231 },
232 );
233 }
234 1usize => {
235 if _serde::__private::Option::is_some(&m_fwdAxisLS) {
236 return _serde::__private::Err(
237 <__A::Error as _serde::de::Error>::duplicate_field(
238 "fwdAxisLS",
239 ),
240 );
241 }
242 __A::pad(&mut __map, 14usize, 14usize)?;
243 m_fwdAxisLS = _serde::__private::Some(
244 match __A::next_value::<Vector4>(&mut __map) {
245 _serde::__private::Ok(__val) => __val,
246 _serde::__private::Err(__err) => {
247 return _serde::__private::Err(__err);
248 }
249 },
250 );
251 }
252 2usize => {
253 if _serde::__private::Option::is_some(
254 &m_limitAngleDegrees,
255 ) {
256 return _serde::__private::Err(
257 <__A::Error as _serde::de::Error>::duplicate_field(
258 "limitAngleDegrees",
259 ),
260 );
261 }
262 m_limitAngleDegrees = _serde::__private::Some(
263 match __A::next_value::<f32>(&mut __map) {
264 _serde::__private::Ok(__val) => __val,
265 _serde::__private::Err(__err) => {
266 return _serde::__private::Err(__err);
267 }
268 },
269 );
270 }
271 3usize => {
272 if _serde::__private::Option::is_some(&m_onGain) {
273 return _serde::__private::Err(
274 <__A::Error as _serde::de::Error>::duplicate_field("onGain"),
275 );
276 }
277 m_onGain = _serde::__private::Some(
278 match __A::next_value::<f32>(&mut __map) {
279 _serde::__private::Ok(__val) => __val,
280 _serde::__private::Err(__err) => {
281 return _serde::__private::Err(__err);
282 }
283 },
284 );
285 }
286 4usize => {
287 if _serde::__private::Option::is_some(&m_offGain) {
288 return _serde::__private::Err(
289 <__A::Error as _serde::de::Error>::duplicate_field(
290 "offGain",
291 ),
292 );
293 }
294 m_offGain = _serde::__private::Some(
295 match __A::next_value::<f32>(&mut __map) {
296 _serde::__private::Ok(__val) => __val,
297 _serde::__private::Err(__err) => {
298 return _serde::__private::Err(__err);
299 }
300 },
301 );
302 }
303 5usize => {
304 if _serde::__private::Option::is_some(&m_enabled) {
305 return _serde::__private::Err(
306 <__A::Error as _serde::de::Error>::duplicate_field(
307 "enabled",
308 ),
309 );
310 }
311 m_enabled = _serde::__private::Some(
312 match __A::next_value::<bool>(&mut __map) {
313 _serde::__private::Ok(__val) => __val,
314 _serde::__private::Err(__err) => {
315 return _serde::__private::Err(__err);
316 }
317 },
318 );
319 }
320 6usize => {
321 if _serde::__private::Option::is_some(&m_currentFwdAxisLS) {
322 return _serde::__private::Err(
323 <__A::Error as _serde::de::Error>::duplicate_field(
324 "currentFwdAxisLS",
325 ),
326 );
327 }
328 __A::pad(&mut __map, 3usize, 3usize)?;
329 m_currentFwdAxisLS = _serde::__private::Some(
330 match __A::next_value::<Vector4>(&mut __map) {
331 _serde::__private::Ok(__val) => __val,
332 _serde::__private::Err(__err) => {
333 return _serde::__private::Err(__err);
334 }
335 },
336 );
337 }
338 _ => {}
339 }
340 }
341 let m_index = match m_index {
342 _serde::__private::Some(__field) => __field,
343 _serde::__private::None => {
344 return _serde::__private::Err(
345 <__A::Error as _serde::de::Error>::missing_field("index"),
346 );
347 }
348 };
349 let m_fwdAxisLS = match m_fwdAxisLS {
350 _serde::__private::Some(__field) => __field,
351 _serde::__private::None => {
352 return _serde::__private::Err(
353 <__A::Error as _serde::de::Error>::missing_field(
354 "fwdAxisLS",
355 ),
356 );
357 }
358 };
359 let m_limitAngleDegrees = match m_limitAngleDegrees {
360 _serde::__private::Some(__field) => __field,
361 _serde::__private::None => {
362 return _serde::__private::Err(
363 <__A::Error as _serde::de::Error>::missing_field(
364 "limitAngleDegrees",
365 ),
366 );
367 }
368 };
369 let m_onGain = match m_onGain {
370 _serde::__private::Some(__field) => __field,
371 _serde::__private::None => {
372 return _serde::__private::Err(
373 <__A::Error as _serde::de::Error>::missing_field("onGain"),
374 );
375 }
376 };
377 let m_offGain = match m_offGain {
378 _serde::__private::Some(__field) => __field,
379 _serde::__private::None => {
380 return _serde::__private::Err(
381 <__A::Error as _serde::de::Error>::missing_field("offGain"),
382 );
383 }
384 };
385 let m_enabled = match m_enabled {
386 _serde::__private::Some(__field) => __field,
387 _serde::__private::None => {
388 return _serde::__private::Err(
389 <__A::Error as _serde::de::Error>::missing_field("enabled"),
390 );
391 }
392 };
393 let m_currentFwdAxisLS = match m_currentFwdAxisLS {
394 _serde::__private::Some(__field) => __field,
395 _serde::__private::None => {
396 return _serde::__private::Err(
397 <__A::Error as _serde::de::Error>::missing_field(
398 "currentFwdAxisLS",
399 ),
400 );
401 }
402 };
403 _serde::__private::Ok(BSLookAtModifierBoneData {
404 __ptr,
405 m_index,
406 m_fwdAxisLS,
407 m_limitAngleDegrees,
408 m_onGain,
409 m_offGain,
410 m_enabled,
411 m_currentFwdAxisLS,
412 })
413 }
414 #[allow(clippy::manual_unwrap_or_default)]
415 fn visit_struct<__A>(
416 self,
417 mut __map: __A,
418 ) -> _serde::__private::Result<Self::Value, __A::Error>
419 where
420 __A: _serde::de::MapAccess<'de>,
421 {
422 let mut m_index: _serde::__private::Option<i16> = _serde::__private::None;
423 let mut m_fwdAxisLS: _serde::__private::Option<Vector4> = _serde::__private::None;
424 let mut m_limitAngleDegrees: _serde::__private::Option<f32> = _serde::__private::None;
425 let mut m_onGain: _serde::__private::Option<f32> = _serde::__private::None;
426 let mut m_offGain: _serde::__private::Option<f32> = _serde::__private::None;
427 let mut m_enabled: _serde::__private::Option<bool> = _serde::__private::None;
428 while let _serde::__private::Some(__key) = {
429 __A::next_key::<__Field>(&mut __map)?
430 } {
431 match __key {
432 __Field::m_index => {
433 #[cfg(
434 any(feature = "strict", feature = "ignore_duplicates")
435 )]
436 if _serde::__private::Option::is_some(&m_index) {
437 #[cfg(feature = "ignore_duplicates")]
438 {
439 __A::skip_value(&mut __map)?;
440 continue;
441 }
442 #[cfg(feature = "strict")]
443 return _serde::__private::Err(
444 <__A::Error as _serde::de::Error>::duplicate_field("index"),
445 );
446 }
447 m_index = _serde::__private::Some(
448 match __A::next_value::<i16>(&mut __map) {
449 _serde::__private::Ok(__val) => __val,
450 _serde::__private::Err(__err) => {
451 return _serde::__private::Err(__err);
452 }
453 },
454 );
455 }
456 __Field::m_fwdAxisLS => {
457 #[cfg(
458 any(feature = "strict", feature = "ignore_duplicates")
459 )]
460 if _serde::__private::Option::is_some(&m_fwdAxisLS) {
461 #[cfg(feature = "ignore_duplicates")]
462 {
463 __A::skip_value(&mut __map)?;
464 continue;
465 }
466 #[cfg(feature = "strict")]
467 return _serde::__private::Err(
468 <__A::Error as _serde::de::Error>::duplicate_field(
469 "fwdAxisLS",
470 ),
471 );
472 }
473 m_fwdAxisLS = _serde::__private::Some(
474 match __A::next_value::<Vector4>(&mut __map) {
475 _serde::__private::Ok(__val) => __val,
476 _serde::__private::Err(__err) => {
477 return _serde::__private::Err(__err);
478 }
479 },
480 );
481 }
482 __Field::m_limitAngleDegrees => {
483 #[cfg(
484 any(feature = "strict", feature = "ignore_duplicates")
485 )]
486 if _serde::__private::Option::is_some(
487 &m_limitAngleDegrees,
488 ) {
489 #[cfg(feature = "ignore_duplicates")]
490 {
491 __A::skip_value(&mut __map)?;
492 continue;
493 }
494 #[cfg(feature = "strict")]
495 return _serde::__private::Err(
496 <__A::Error as _serde::de::Error>::duplicate_field(
497 "limitAngleDegrees",
498 ),
499 );
500 }
501 m_limitAngleDegrees = _serde::__private::Some(
502 match __A::next_value::<f32>(&mut __map) {
503 _serde::__private::Ok(__val) => __val,
504 _serde::__private::Err(__err) => {
505 return _serde::__private::Err(__err);
506 }
507 },
508 );
509 }
510 __Field::m_onGain => {
511 #[cfg(
512 any(feature = "strict", feature = "ignore_duplicates")
513 )]
514 if _serde::__private::Option::is_some(&m_onGain) {
515 #[cfg(feature = "ignore_duplicates")]
516 {
517 __A::skip_value(&mut __map)?;
518 continue;
519 }
520 #[cfg(feature = "strict")]
521 return _serde::__private::Err(
522 <__A::Error as _serde::de::Error>::duplicate_field("onGain"),
523 );
524 }
525 m_onGain = _serde::__private::Some(
526 match __A::next_value::<f32>(&mut __map) {
527 _serde::__private::Ok(__val) => __val,
528 _serde::__private::Err(__err) => {
529 return _serde::__private::Err(__err);
530 }
531 },
532 );
533 }
534 __Field::m_offGain => {
535 #[cfg(
536 any(feature = "strict", feature = "ignore_duplicates")
537 )]
538 if _serde::__private::Option::is_some(&m_offGain) {
539 #[cfg(feature = "ignore_duplicates")]
540 {
541 __A::skip_value(&mut __map)?;
542 continue;
543 }
544 #[cfg(feature = "strict")]
545 return _serde::__private::Err(
546 <__A::Error as _serde::de::Error>::duplicate_field(
547 "offGain",
548 ),
549 );
550 }
551 m_offGain = _serde::__private::Some(
552 match __A::next_value::<f32>(&mut __map) {
553 _serde::__private::Ok(__val) => __val,
554 _serde::__private::Err(__err) => {
555 return _serde::__private::Err(__err);
556 }
557 },
558 );
559 }
560 __Field::m_enabled => {
561 #[cfg(
562 any(feature = "strict", feature = "ignore_duplicates")
563 )]
564 if _serde::__private::Option::is_some(&m_enabled) {
565 #[cfg(feature = "ignore_duplicates")]
566 {
567 __A::skip_value(&mut __map)?;
568 continue;
569 }
570 #[cfg(feature = "strict")]
571 return _serde::__private::Err(
572 <__A::Error as _serde::de::Error>::duplicate_field(
573 "enabled",
574 ),
575 );
576 }
577 m_enabled = _serde::__private::Some(
578 match __A::next_value::<bool>(&mut __map) {
579 _serde::__private::Ok(__val) => __val,
580 _serde::__private::Err(__err) => {
581 return _serde::__private::Err(__err);
582 }
583 },
584 );
585 }
586 _ => __A::skip_value(&mut __map)?,
587 }
588 }
589 let m_index = match m_index {
590 _serde::__private::Some(__field) => __field,
591 _serde::__private::None => {
592 #[cfg(feature = "strict")]
593 return _serde::__private::Err(
594 <__A::Error as _serde::de::Error>::missing_field("index"),
595 );
596 #[cfg(not(feature = "strict"))] Default::default()
597 }
598 };
599 let m_fwdAxisLS = match m_fwdAxisLS {
600 _serde::__private::Some(__field) => __field,
601 _serde::__private::None => {
602 #[cfg(feature = "strict")]
603 return _serde::__private::Err(
604 <__A::Error as _serde::de::Error>::missing_field(
605 "fwdAxisLS",
606 ),
607 );
608 #[cfg(not(feature = "strict"))] Default::default()
609 }
610 };
611 let m_limitAngleDegrees = match m_limitAngleDegrees {
612 _serde::__private::Some(__field) => __field,
613 _serde::__private::None => {
614 #[cfg(feature = "strict")]
615 return _serde::__private::Err(
616 <__A::Error as _serde::de::Error>::missing_field(
617 "limitAngleDegrees",
618 ),
619 );
620 #[cfg(not(feature = "strict"))] Default::default()
621 }
622 };
623 let m_onGain = match m_onGain {
624 _serde::__private::Some(__field) => __field,
625 _serde::__private::None => {
626 #[cfg(feature = "strict")]
627 return _serde::__private::Err(
628 <__A::Error as _serde::de::Error>::missing_field("onGain"),
629 );
630 #[cfg(not(feature = "strict"))] Default::default()
631 }
632 };
633 let m_offGain = match m_offGain {
634 _serde::__private::Some(__field) => __field,
635 _serde::__private::None => {
636 #[cfg(feature = "strict")]
637 return _serde::__private::Err(
638 <__A::Error as _serde::de::Error>::missing_field("offGain"),
639 );
640 #[cfg(not(feature = "strict"))] Default::default()
641 }
642 };
643 let m_enabled = match m_enabled {
644 _serde::__private::Some(__field) => __field,
645 _serde::__private::None => {
646 #[cfg(feature = "strict")]
647 return _serde::__private::Err(
648 <__A::Error as _serde::de::Error>::missing_field("enabled"),
649 );
650 #[cfg(not(feature = "strict"))] Default::default()
651 }
652 };
653 let __ptr = __A::class_ptr(&mut __map);
654 _serde::__private::Ok(BSLookAtModifierBoneData {
655 __ptr,
656 m_index,
657 m_fwdAxisLS,
658 m_limitAngleDegrees,
659 m_onGain,
660 m_offGain,
661 m_enabled,
662 ..Default::default()
663 })
664 }
665 }
666 const FIELDS: &[&str] = &[
667 "index",
668 "fwdAxisLS",
669 "limitAngleDegrees",
670 "onGain",
671 "offGain",
672 "enabled",
673 "currentFwdAxisLS",
674 ];
675 _serde::Deserializer::deserialize_struct(
676 deserializer,
677 "BSLookAtModifierBoneData",
678 FIELDS,
679 __BSLookAtModifierBoneDataVisitor {
680 marker: _serde::__private::PhantomData::<BSLookAtModifierBoneData>,
681 lifetime: _serde::__private::PhantomData,
682 },
683 )
684 }
685 }
686};