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