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