1#![allow(clippy::too_many_arguments)]
7
8#[allow(unused_imports)]
11use crate::support::{BorrowedSlice, Bytes};
12
13#[derive(Clone, Copy, PartialEq, Eq, Hash, Default)]
18pub struct VertexFormatFlag(pub i32);
19
20impl VertexFormatFlag {
21 pub const NONE: Self = Self(0);
22 pub const VERTEX_COLOR: Self = Self(512);
24 pub const UV_1: Self = Self(131072);
26 pub const UV_2: Self = Self(262144);
28 pub const UV_3: Self = Self(524288);
30 pub const UV_4: Self = Self(1048576);
32 pub const UV_5: Self = Self(536870912);
34
35 #[inline]
36 pub const fn contains(self, other: Self) -> bool {
37 (self.0 & other.0) == other.0
38 }
39
40 #[inline]
41 pub const fn is_empty(self) -> bool {
42 self.0 == 0
43 }
44}
45
46impl core::ops::BitOr for VertexFormatFlag {
47 type Output = Self;
48 #[inline]
49 fn bitor(self, rhs: Self) -> Self {
50 Self(self.0 | rhs.0)
51 }
52}
53
54impl core::ops::BitAnd for VertexFormatFlag {
55 type Output = Self;
56 #[inline]
57 fn bitand(self, rhs: Self) -> Self {
58 Self(self.0 & rhs.0)
59 }
60}
61
62impl core::ops::Not for VertexFormatFlag {
63 type Output = Self;
64 #[inline]
65 fn not(self) -> Self {
66 Self(!self.0)
67 }
68}
69
70impl core::fmt::Debug for VertexFormatFlag {
71 fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
72 write!(f, "VertexFormatFlag({:#x})", self.0)
73 }
74}
75
76#[repr(i32)]
78#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash)]
79pub enum MaterialType {
80 Standard = 1,
82 Displacement = 2,
84 Composite = 3,
86 Terrain = 4,
88 Volume = 5,
90 VolumeNoise = 6,
92 Creep = 7,
94 Hair = 8,
96 SplatTerrainBake = 9,
98 Reflection = 10,
100 LensFlare = 11,
102 BufferMaterial = 12,
104}
105
106impl TryFrom<i32> for MaterialType {
107 type Error = crate::Error;
108 fn try_from(v: i32) -> Result<Self, crate::Error> {
109 match v {
110 1 => Ok(MaterialType::Standard),
111 2 => Ok(MaterialType::Displacement),
112 3 => Ok(MaterialType::Composite),
113 4 => Ok(MaterialType::Terrain),
114 5 => Ok(MaterialType::Volume),
115 6 => Ok(MaterialType::VolumeNoise),
116 7 => Ok(MaterialType::Creep),
117 8 => Ok(MaterialType::Hair),
118 9 => Ok(MaterialType::SplatTerrainBake),
119 10 => Ok(MaterialType::Reflection),
120 11 => Ok(MaterialType::LensFlare),
121 12 => Ok(MaterialType::BufferMaterial),
122 other => Err(crate::Error::UnknownEnum {
123 name: "MaterialType",
124 value: other,
125 }),
126 }
127 }
128}
129
130#[repr(i32)]
132#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash)]
133pub enum LightType {
134 Omni = 0,
136 Spot = 1,
138 Directional = 2,
140}
141
142impl TryFrom<i32> for LightType {
143 type Error = crate::Error;
144 fn try_from(v: i32) -> Result<Self, crate::Error> {
145 match v {
146 0 => Ok(LightType::Omni),
147 1 => Ok(LightType::Spot),
148 2 => Ok(LightType::Directional),
149 other => Err(crate::Error::UnknownEnum {
150 name: "LightType",
151 value: other,
152 }),
153 }
154 }
155}
156
157#[repr(i32)]
159#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash)]
160pub enum PhysicsShapeType {
161 Box = 0,
163 Sphere = 1,
165 Capsule = 2,
167 Cylinder = 3,
169 ConvexHull = 4,
171 Mesh = 5,
173}
174
175impl TryFrom<i32> for PhysicsShapeType {
176 type Error = crate::Error;
177 fn try_from(v: i32) -> Result<Self, crate::Error> {
178 match v {
179 0 => Ok(PhysicsShapeType::Box),
180 1 => Ok(PhysicsShapeType::Sphere),
181 2 => Ok(PhysicsShapeType::Capsule),
182 3 => Ok(PhysicsShapeType::Cylinder),
183 4 => Ok(PhysicsShapeType::ConvexHull),
184 5 => Ok(PhysicsShapeType::Mesh),
185 other => Err(crate::Error::UnknownEnum {
186 name: "PhysicsShapeType",
187 value: other,
188 }),
189 }
190 }
191}
192
193#[repr(i32)]
195#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash)]
196pub enum HitTestShapeType {
197 Box = 0,
198 Sphere = 1,
199 Capsule = 2,
200 Cylinder = 3,
201 Mesh = 4,
202}
203
204impl TryFrom<i32> for HitTestShapeType {
205 type Error = crate::Error;
206 fn try_from(v: i32) -> Result<Self, crate::Error> {
207 match v {
208 0 => Ok(HitTestShapeType::Box),
209 1 => Ok(HitTestShapeType::Sphere),
210 2 => Ok(HitTestShapeType::Capsule),
211 3 => Ok(HitTestShapeType::Cylinder),
212 4 => Ok(HitTestShapeType::Mesh),
213 other => Err(crate::Error::UnknownEnum {
214 name: "HitTestShapeType",
215 value: other,
216 }),
217 }
218 }
219}
220
221#[repr(i32)]
223#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash)]
224pub enum EmitterShape {
225 Point = 0,
227 Plane = 1,
229 Sphere = 2,
231 Box = 3,
233 Cylinder = 4,
235 Disc = 5,
237 Spline = 6,
239 Mesh = 7,
241}
242
243impl TryFrom<i32> for EmitterShape {
244 type Error = crate::Error;
245 fn try_from(v: i32) -> Result<Self, crate::Error> {
246 match v {
247 0 => Ok(EmitterShape::Point),
248 1 => Ok(EmitterShape::Plane),
249 2 => Ok(EmitterShape::Sphere),
250 3 => Ok(EmitterShape::Box),
251 4 => Ok(EmitterShape::Cylinder),
252 5 => Ok(EmitterShape::Disc),
253 6 => Ok(EmitterShape::Spline),
254 7 => Ok(EmitterShape::Mesh),
255 other => Err(crate::Error::UnknownEnum {
256 name: "EmitterShape",
257 value: other,
258 }),
259 }
260 }
261}
262
263#[repr(i32)]
265#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash)]
266pub enum ParticleInstanceType {
267 Billboard = 0,
269 Tail = 1,
271 FaceTravelDir = 2,
273 FaceWorldDir = 3,
275 SingleAxis = 4,
277 TerrainOriented = 5,
279 TerrainDirOriented = 6,
281 EmitterOriented = 7,
283 PhysicsOriented = 8,
285 Pinned = 9,
287 Trail = 10,
289}
290
291impl TryFrom<i32> for ParticleInstanceType {
292 type Error = crate::Error;
293 fn try_from(v: i32) -> Result<Self, crate::Error> {
294 match v {
295 0 => Ok(ParticleInstanceType::Billboard),
296 1 => Ok(ParticleInstanceType::Tail),
297 2 => Ok(ParticleInstanceType::FaceTravelDir),
298 3 => Ok(ParticleInstanceType::FaceWorldDir),
299 4 => Ok(ParticleInstanceType::SingleAxis),
300 5 => Ok(ParticleInstanceType::TerrainOriented),
301 6 => Ok(ParticleInstanceType::TerrainDirOriented),
302 7 => Ok(ParticleInstanceType::EmitterOriented),
303 8 => Ok(ParticleInstanceType::PhysicsOriented),
304 9 => Ok(ParticleInstanceType::Pinned),
305 10 => Ok(ParticleInstanceType::Trail),
306 other => Err(crate::Error::UnknownEnum {
307 name: "ParticleInstanceType",
308 value: other,
309 }),
310 }
311 }
312}
313
314#[repr(i32)]
316#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash)]
317pub enum ForceType {
318 Radial = 0,
320 Wind = 1,
322 Explosion = 2,
324}
325
326impl TryFrom<i32> for ForceType {
327 type Error = crate::Error;
328 fn try_from(v: i32) -> Result<Self, crate::Error> {
329 match v {
330 0 => Ok(ForceType::Radial),
331 1 => Ok(ForceType::Wind),
332 2 => Ok(ForceType::Explosion),
333 other => Err(crate::Error::UnknownEnum {
334 name: "ForceType",
335 value: other,
336 }),
337 }
338 }
339}
340
341#[repr(i32)]
343#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash)]
344pub enum ForceShape {
345 Sphere = 0,
347 Cylinder = 1,
349 Box = 2,
351 Hemisphere = 3,
353}
354
355impl TryFrom<i32> for ForceShape {
356 type Error = crate::Error;
357 fn try_from(v: i32) -> Result<Self, crate::Error> {
358 match v {
359 0 => Ok(ForceShape::Sphere),
360 1 => Ok(ForceShape::Cylinder),
361 2 => Ok(ForceShape::Box),
362 3 => Ok(ForceShape::Hemisphere),
363 other => Err(crate::Error::UnknownEnum {
364 name: "ForceShape",
365 value: other,
366 }),
367 }
368 }
369}
370
371#[repr(i32)]
373#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash)]
374pub enum RibbonType {
375 Billboard = 0,
377 Planar = 1,
379 Cylinder = 2,
381 Star = 3,
383}
384
385impl TryFrom<i32> for RibbonType {
386 type Error = crate::Error;
387 fn try_from(v: i32) -> Result<Self, crate::Error> {
388 match v {
389 0 => Ok(RibbonType::Billboard),
390 1 => Ok(RibbonType::Planar),
391 2 => Ok(RibbonType::Cylinder),
392 3 => Ok(RibbonType::Star),
393 other => Err(crate::Error::UnknownEnum {
394 name: "RibbonType",
395 value: other,
396 }),
397 }
398 }
399}
400
401#[repr(i32)]
403#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash)]
404pub enum ProjectionType {
405 Orthographic = 0,
407 Perspective = 1,
409}
410
411impl TryFrom<i32> for ProjectionType {
412 type Error = crate::Error;
413 fn try_from(v: i32) -> Result<Self, crate::Error> {
414 match v {
415 0 => Ok(ProjectionType::Orthographic),
416 1 => Ok(ProjectionType::Perspective),
417 other => Err(crate::Error::UnknownEnum {
418 name: "ProjectionType",
419 value: other,
420 }),
421 }
422 }
423}
424
425#[repr(i32)]
427#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash)]
428pub enum VolumeType {
429 Box = 0,
430 Sphere = 1,
431 Capsule = 2,
432}
433
434impl TryFrom<i32> for VolumeType {
435 type Error = crate::Error;
436 fn try_from(v: i32) -> Result<Self, crate::Error> {
437 match v {
438 0 => Ok(VolumeType::Box),
439 1 => Ok(VolumeType::Sphere),
440 2 => Ok(VolumeType::Capsule),
441 other => Err(crate::Error::UnknownEnum {
442 name: "VolumeType",
443 value: other,
444 }),
445 }
446 }
447}
448
449#[repr(i32)]
453#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash)]
454pub enum InterpolationMode {
455 Linear = 0,
457 LinearSmooth = 1,
459 Bezier = 2,
461 LinearWithHold = 3,
463 BezierWithHold = 4,
465}
466
467impl TryFrom<i32> for InterpolationMode {
468 type Error = crate::Error;
469 fn try_from(v: i32) -> Result<Self, crate::Error> {
470 match v {
471 0 => Ok(InterpolationMode::Linear),
472 1 => Ok(InterpolationMode::LinearSmooth),
473 2 => Ok(InterpolationMode::Bezier),
474 3 => Ok(InterpolationMode::LinearWithHold),
475 4 => Ok(InterpolationMode::BezierWithHold),
476 other => Err(crate::Error::UnknownEnum {
477 name: "InterpolationMode",
478 value: other,
479 }),
480 }
481 }
482}
483
484#[derive(Clone, Copy, PartialEq, Eq, Hash, Default)]
487pub struct ModelFlag(pub i32);
488
489impl ModelFlag {
490 pub const NONE: Self = Self(0);
491 pub const TANGENTS: Self = Self(1);
493 pub const BONES_FIXED: Self = Self(2);
495 pub const UV_DENSITIES_COMPUTED: Self = Self(4);
497 pub const RELATIVE_BOUNDS: Self = Self(8);
499 pub const SECTION_BOUNDS_FIXED: Self = Self(16);
501 pub const TRACK_SETS_COMPUTED: Self = Self(32);
503 pub const TRACK_COLLECTION_SORTED: Self = Self(64);
505 pub const ACCEPTS_SPLATS: Self = Self(128);
507 pub const TRACK_ANIMATED_BASE_FLAG_VALID: Self = Self(2048);
509 pub const FILE_DIRTY: Self = Self(4096);
511 pub const FOW_DO_NOT_USE_TINT: Self = Self(16384);
513 pub const INSTANCED_VB: Self = Self(32768);
515 pub const FORCE_SAMPLED_FOW: Self = Self(65536);
517 pub const INSTANCED_MODEL: Self = Self(131072);
519 pub const NEVER_USE_FOW: Self = Self(262144);
521 pub const BONE_ANIMATED_FLAG_SOLVED: Self = Self(524288);
523 pub const ALLOW_LOCAL_LIGHT_SHADOWS: Self = Self(1048576);
525 pub const AVOID_SAMPLED_FOW: Self = Self(2097152);
527
528 #[inline]
529 pub const fn contains(self, other: Self) -> bool {
530 (self.0 & other.0) == other.0
531 }
532
533 #[inline]
534 pub const fn is_empty(self) -> bool {
535 self.0 == 0
536 }
537}
538
539impl core::ops::BitOr for ModelFlag {
540 type Output = Self;
541 #[inline]
542 fn bitor(self, rhs: Self) -> Self {
543 Self(self.0 | rhs.0)
544 }
545}
546
547impl core::ops::BitAnd for ModelFlag {
548 type Output = Self;
549 #[inline]
550 fn bitand(self, rhs: Self) -> Self {
551 Self(self.0 & rhs.0)
552 }
553}
554
555impl core::ops::Not for ModelFlag {
556 type Output = Self;
557 #[inline]
558 fn not(self) -> Self {
559 Self(!self.0)
560 }
561}
562
563impl core::fmt::Debug for ModelFlag {
564 fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
565 write!(f, "ModelFlag({:#x})", self.0)
566 }
567}
568
569#[derive(Clone, Copy, PartialEq, Eq, Hash, Default)]
572pub struct SequenceFlag(pub i32);
573
574impl SequenceFlag {
575 pub const NONE: Self = Self(0);
576 pub const NOT_LOOPING: Self = Self(1);
578 pub const ALWAYS_GLOBAL: Self = Self(2);
580 pub const UNKNOWN_0X_4: Self = Self(4);
582 pub const GLOBAL_IN_PREVIEWER: Self = Self(8);
584
585 #[inline]
586 pub const fn contains(self, other: Self) -> bool {
587 (self.0 & other.0) == other.0
588 }
589
590 #[inline]
591 pub const fn is_empty(self) -> bool {
592 self.0 == 0
593 }
594}
595
596impl core::ops::BitOr for SequenceFlag {
597 type Output = Self;
598 #[inline]
599 fn bitor(self, rhs: Self) -> Self {
600 Self(self.0 | rhs.0)
601 }
602}
603
604impl core::ops::BitAnd for SequenceFlag {
605 type Output = Self;
606 #[inline]
607 fn bitand(self, rhs: Self) -> Self {
608 Self(self.0 & rhs.0)
609 }
610}
611
612impl core::ops::Not for SequenceFlag {
613 type Output = Self;
614 #[inline]
615 fn not(self) -> Self {
616 Self(!self.0)
617 }
618}
619
620impl core::fmt::Debug for SequenceFlag {
621 fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
622 write!(f, "SequenceFlag({:#x})", self.0)
623 }
624}
625
626#[derive(Clone, Copy, PartialEq, Eq, Hash, Default)]
629pub struct BoneFlag(pub i32);
630
631impl BoneFlag {
632 pub const NONE: Self = Self(0);
633 pub const INHERIT_TRANSLATION: Self = Self(1);
635 pub const INHERIT_SCALE: Self = Self(2);
637 pub const INHERIT_ROTATION: Self = Self(4);
639 pub const BILLBOARD_1: Self = Self(16);
641 pub const BILLBOARD_2: Self = Self(64);
643 pub const PROJECT_2D: Self = Self(256);
645 pub const ANIMATED: Self = Self(512);
647 pub const INVERSE_KINEMATICS: Self = Self(1024);
649 pub const SKINNED: Self = Self(2048);
651 pub const REAL: Self = Self(8192);
653 pub const BATCH_1: Self = Self(16384);
655 pub const BATCH_2: Self = Self(32768);
657
658 #[inline]
659 pub const fn contains(self, other: Self) -> bool {
660 (self.0 & other.0) == other.0
661 }
662
663 #[inline]
664 pub const fn is_empty(self) -> bool {
665 self.0 == 0
666 }
667}
668
669impl core::ops::BitOr for BoneFlag {
670 type Output = Self;
671 #[inline]
672 fn bitor(self, rhs: Self) -> Self {
673 Self(self.0 | rhs.0)
674 }
675}
676
677impl core::ops::BitAnd for BoneFlag {
678 type Output = Self;
679 #[inline]
680 fn bitand(self, rhs: Self) -> Self {
681 Self(self.0 & rhs.0)
682 }
683}
684
685impl core::ops::Not for BoneFlag {
686 type Output = Self;
687 #[inline]
688 fn not(self) -> Self {
689 Self(!self.0)
690 }
691}
692
693impl core::fmt::Debug for BoneFlag {
694 fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
695 write!(f, "BoneFlag({:#x})", self.0)
696 }
697}
698
699#[derive(Clone, Copy, PartialEq, Eq, Hash, Default)]
702pub struct RegionFlag(pub i32);
703
704impl RegionFlag {
705 pub const NONE: Self = Self(0);
706 pub const HIDDEN: Self = Self(1);
708 pub const PLACEHOLDER: Self = Self(2);
710 pub const CLOTH_SIMULATED: Self = Self(4);
712 pub const CLOTH_INFLUENCED: Self = Self(8);
714
715 #[inline]
716 pub const fn contains(self, other: Self) -> bool {
717 (self.0 & other.0) == other.0
718 }
719
720 #[inline]
721 pub const fn is_empty(self) -> bool {
722 self.0 == 0
723 }
724}
725
726impl core::ops::BitOr for RegionFlag {
727 type Output = Self;
728 #[inline]
729 fn bitor(self, rhs: Self) -> Self {
730 Self(self.0 | rhs.0)
731 }
732}
733
734impl core::ops::BitAnd for RegionFlag {
735 type Output = Self;
736 #[inline]
737 fn bitand(self, rhs: Self) -> Self {
738 Self(self.0 & rhs.0)
739 }
740}
741
742impl core::ops::Not for RegionFlag {
743 type Output = Self;
744 #[inline]
745 fn not(self) -> Self {
746 Self(!self.0)
747 }
748}
749
750impl core::fmt::Debug for RegionFlag {
751 fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
752 write!(f, "RegionFlag({:#x})", self.0)
753 }
754}
755
756#[derive(Clone, Copy, PartialEq, Eq, Hash, Default)]
759pub struct MaterialAdditionalFlag(pub i32);
760
761impl MaterialAdditionalFlag {
762 pub const NONE: Self = Self(0);
763 pub const DEPTH_BLEND_FALLOFF: Self = Self(1);
765 pub const VERTEX_COLOR: Self = Self(4);
767 pub const VERTEX_ALPHA: Self = Self(8);
769
770 #[inline]
771 pub const fn contains(self, other: Self) -> bool {
772 (self.0 & other.0) == other.0
773 }
774
775 #[inline]
776 pub const fn is_empty(self) -> bool {
777 self.0 == 0
778 }
779}
780
781impl core::ops::BitOr for MaterialAdditionalFlag {
782 type Output = Self;
783 #[inline]
784 fn bitor(self, rhs: Self) -> Self {
785 Self(self.0 | rhs.0)
786 }
787}
788
789impl core::ops::BitAnd for MaterialAdditionalFlag {
790 type Output = Self;
791 #[inline]
792 fn bitand(self, rhs: Self) -> Self {
793 Self(self.0 & rhs.0)
794 }
795}
796
797impl core::ops::Not for MaterialAdditionalFlag {
798 type Output = Self;
799 #[inline]
800 fn not(self) -> Self {
801 Self(!self.0)
802 }
803}
804
805impl core::fmt::Debug for MaterialAdditionalFlag {
806 fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
807 write!(f, "MaterialAdditionalFlag({:#x})", self.0)
808 }
809}
810
811#[derive(Clone, Copy, PartialEq, Eq, Hash, Default)]
814pub struct MaterialFlag(pub i32);
815
816impl MaterialFlag {
817 pub const NONE: Self = Self(0);
818 pub const VERTEX_COLOR: Self = Self(1);
820 pub const VERTEX_ALPHA: Self = Self(2);
822 pub const UNFOGGED: Self = Self(4);
824 pub const TWO_SIDED: Self = Self(8);
826 pub const UNSHADED: Self = Self(16);
828 pub const NO_SHADOWS_CAST: Self = Self(32);
830 pub const NO_HIT_TEST: Self = Self(64);
832 pub const NO_SHADOWS_RECEIVE: Self = Self(128);
834 pub const DEPTH_PREPASS: Self = Self(256);
836 pub const TERRAIN_HDR: Self = Self(512);
838 pub const SIMULATE_ROUGHNESS: Self = Self(2048);
840 pub const PIXEL_FORWARD_LIGHTING: Self = Self(4096);
842 pub const DEPTH_FOG: Self = Self(8192);
844 pub const TRANSPARENT_SHADOWS: Self = Self(16384);
846 pub const DECAL_LIGHTING: Self = Self(32768);
848 pub const TRANSPARENT_DEPTH_EFFECTS: Self = Self(65536);
850 pub const TRANSPARENT_LOCAL_LIGHTS: Self = Self(131072);
852 pub const DISABLE_SOFT: Self = Self(262144);
854 pub const DOUBLE_LAMBERT: Self = Self(524288);
856 pub const HAIR_LAYER_SORTING: Self = Self(1048576);
858 pub const ACCEPT_SPLATS: Self = Self(2097152);
860 pub const DECAL_LOW_REQUIRED: Self = Self(4194304);
862 pub const EMIS_LOW_REQUIRED: Self = Self(8388608);
864 pub const SPEC_LOW_REQUIRED: Self = Self(16777216);
866 pub const ACCEPT_SPLATS_ONLY: Self = Self(33554432);
868 pub const BACKGROUND_OBJECT: Self = Self(67108864);
870 pub const DEPTH_PREPASS_LOW_REQUIRED: Self = Self(268435456);
872 pub const NO_HIGHLIGHTING: Self = Self(536870912);
874 pub const CLAMP_OUTPUT: Self = Self(1073741824);
876 pub const GEOMETRY_VISIBLE: Self = Self(-2147483648);
878
879 #[inline]
880 pub const fn contains(self, other: Self) -> bool {
881 (self.0 & other.0) == other.0
882 }
883
884 #[inline]
885 pub const fn is_empty(self) -> bool {
886 self.0 == 0
887 }
888}
889
890impl core::ops::BitOr for MaterialFlag {
891 type Output = Self;
892 #[inline]
893 fn bitor(self, rhs: Self) -> Self {
894 Self(self.0 | rhs.0)
895 }
896}
897
898impl core::ops::BitAnd for MaterialFlag {
899 type Output = Self;
900 #[inline]
901 fn bitand(self, rhs: Self) -> Self {
902 Self(self.0 & rhs.0)
903 }
904}
905
906impl core::ops::Not for MaterialFlag {
907 type Output = Self;
908 #[inline]
909 fn not(self) -> Self {
910 Self(!self.0)
911 }
912}
913
914impl core::fmt::Debug for MaterialFlag {
915 fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
916 write!(f, "MaterialFlag({:#x})", self.0)
917 }
918}
919
920#[derive(Clone, Copy, PartialEq, Eq, Hash, Default)]
923pub struct TextureLayerFlag(pub i32);
924
925impl TextureLayerFlag {
926 pub const NONE: Self = Self(0);
927 pub const UV_WRAP_X: Self = Self(4);
929 pub const UV_WRAP_Y: Self = Self(8);
931 pub const COLOR_INVERT: Self = Self(16);
933 pub const COLOR_CLAMP: Self = Self(32);
935 pub const COLOR_ADD: Self = Self(64);
937 pub const COLOR_MULTIPLY: Self = Self(128);
939 pub const PARTICLE_UV_FLIPBOOK: Self = Self(256);
941 pub const VIDEO: Self = Self(512);
943 pub const COLOR: Self = Self(1024);
945 pub const REPLACE_TEXTURE_SOURCE: Self = Self(2048);
947 pub const FRESNEL_TRANSFORM: Self = Self(16384);
949 pub const FRESNEL_NORMALIZE: Self = Self(32768);
951
952 #[inline]
953 pub const fn contains(self, other: Self) -> bool {
954 (self.0 & other.0) == other.0
955 }
956
957 #[inline]
958 pub const fn is_empty(self) -> bool {
959 self.0 == 0
960 }
961}
962
963impl core::ops::BitOr for TextureLayerFlag {
964 type Output = Self;
965 #[inline]
966 fn bitor(self, rhs: Self) -> Self {
967 Self(self.0 | rhs.0)
968 }
969}
970
971impl core::ops::BitAnd for TextureLayerFlag {
972 type Output = Self;
973 #[inline]
974 fn bitand(self, rhs: Self) -> Self {
975 Self(self.0 & rhs.0)
976 }
977}
978
979impl core::ops::Not for TextureLayerFlag {
980 type Output = Self;
981 #[inline]
982 fn not(self) -> Self {
983 Self(!self.0)
984 }
985}
986
987impl core::fmt::Debug for TextureLayerFlag {
988 fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
989 write!(f, "TextureLayerFlag({:#x})", self.0)
990 }
991}
992
993#[repr(i32)]
995#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash)]
996pub enum BlendMode {
997 Opaque = 0,
999 AlphaBlend = 1,
1001 Add = 2,
1003 AlphaAdd = 3,
1005 Mod = 4,
1007 Mod2x = 5,
1009}
1010
1011impl TryFrom<i32> for BlendMode {
1012 type Error = crate::Error;
1013 fn try_from(v: i32) -> Result<Self, crate::Error> {
1014 match v {
1015 0 => Ok(BlendMode::Opaque),
1016 1 => Ok(BlendMode::AlphaBlend),
1017 2 => Ok(BlendMode::Add),
1018 3 => Ok(BlendMode::AlphaAdd),
1019 4 => Ok(BlendMode::Mod),
1020 5 => Ok(BlendMode::Mod2x),
1021 other => Err(crate::Error::UnknownEnum {
1022 name: "BlendMode",
1023 value: other,
1024 }),
1025 }
1026 }
1027}
1028
1029#[repr(i32)]
1031#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash)]
1032pub enum MaterialClass {
1033 Unit = 0,
1035 Building = 1,
1037 Doodad = 2,
1039 SpecialFX = 3,
1041}
1042
1043impl TryFrom<i32> for MaterialClass {
1044 type Error = crate::Error;
1045 fn try_from(v: i32) -> Result<Self, crate::Error> {
1046 match v {
1047 0 => Ok(MaterialClass::Unit),
1048 1 => Ok(MaterialClass::Building),
1049 2 => Ok(MaterialClass::Doodad),
1050 3 => Ok(MaterialClass::SpecialFX),
1051 other => Err(crate::Error::UnknownEnum {
1052 name: "MaterialClass",
1053 value: other,
1054 }),
1055 }
1056 }
1057}
1058
1059#[repr(i32)]
1061#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash)]
1062pub enum LayerBlendOp {
1063 Mod = 0,
1065 Mod2x = 1,
1067 Add = 2,
1069 Lerp = 3,
1071 TeamColorEmissiveAdd = 4,
1073 TeamColorDiffuseAdd = 5,
1075 AddNoAlpha = 6,
1077}
1078
1079impl TryFrom<i32> for LayerBlendOp {
1080 type Error = crate::Error;
1081 fn try_from(v: i32) -> Result<Self, crate::Error> {
1082 match v {
1083 0 => Ok(LayerBlendOp::Mod),
1084 1 => Ok(LayerBlendOp::Mod2x),
1085 2 => Ok(LayerBlendOp::Add),
1086 3 => Ok(LayerBlendOp::Lerp),
1087 4 => Ok(LayerBlendOp::TeamColorEmissiveAdd),
1088 5 => Ok(LayerBlendOp::TeamColorDiffuseAdd),
1089 6 => Ok(LayerBlendOp::AddNoAlpha),
1090 other => Err(crate::Error::UnknownEnum {
1091 name: "LayerBlendOp",
1092 value: other,
1093 }),
1094 }
1095 }
1096}
1097
1098#[repr(i32)]
1100#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash)]
1101pub enum UVMappingMode {
1102 ExplicitUV0 = 0,
1104 ExplicitUV1 = 1,
1106 ReflectCubicEnvio = 2,
1108 ReflectSphericalEnvio = 3,
1110 PlanarLocalZ = 4,
1112 PlanarWorldZ = 5,
1114 ParticleFlipbook = 6,
1116 CubicEnvio = 7,
1118 SphericalEnvio = 8,
1120 ExplicitUV2 = 9,
1122 ExplicitUV3 = 10,
1124 PlanarLocalX = 11,
1126 PlanarLocalY = 12,
1128 PlanarWorldX = 13,
1130 PlanarWorldY = 14,
1132 ScreenSpace = 15,
1134 TriPlanarLocal = 16,
1136 TriPlanarWorld = 17,
1138 TriPlanarWorldLocalZ = 18,
1140}
1141
1142impl TryFrom<i32> for UVMappingMode {
1143 type Error = crate::Error;
1144 fn try_from(v: i32) -> Result<Self, crate::Error> {
1145 match v {
1146 0 => Ok(UVMappingMode::ExplicitUV0),
1147 1 => Ok(UVMappingMode::ExplicitUV1),
1148 2 => Ok(UVMappingMode::ReflectCubicEnvio),
1149 3 => Ok(UVMappingMode::ReflectSphericalEnvio),
1150 4 => Ok(UVMappingMode::PlanarLocalZ),
1151 5 => Ok(UVMappingMode::PlanarWorldZ),
1152 6 => Ok(UVMappingMode::ParticleFlipbook),
1153 7 => Ok(UVMappingMode::CubicEnvio),
1154 8 => Ok(UVMappingMode::SphericalEnvio),
1155 9 => Ok(UVMappingMode::ExplicitUV2),
1156 10 => Ok(UVMappingMode::ExplicitUV3),
1157 11 => Ok(UVMappingMode::PlanarLocalX),
1158 12 => Ok(UVMappingMode::PlanarLocalY),
1159 13 => Ok(UVMappingMode::PlanarWorldX),
1160 14 => Ok(UVMappingMode::PlanarWorldY),
1161 15 => Ok(UVMappingMode::ScreenSpace),
1162 16 => Ok(UVMappingMode::TriPlanarLocal),
1163 17 => Ok(UVMappingMode::TriPlanarWorld),
1164 18 => Ok(UVMappingMode::TriPlanarWorldLocalZ),
1165 other => Err(crate::Error::UnknownEnum {
1166 name: "UVMappingMode",
1167 value: other,
1168 }),
1169 }
1170 }
1171}
1172
1173#[repr(i32)]
1175#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash)]
1176pub enum ColorChannelSelect {
1177 RGB = 0,
1179 RGBA = 1,
1181 Alpha = 2,
1183 Red = 3,
1185 Green = 4,
1187 Blue = 5,
1189}
1190
1191impl TryFrom<i32> for ColorChannelSelect {
1192 type Error = crate::Error;
1193 fn try_from(v: i32) -> Result<Self, crate::Error> {
1194 match v {
1195 0 => Ok(ColorChannelSelect::RGB),
1196 1 => Ok(ColorChannelSelect::RGBA),
1197 2 => Ok(ColorChannelSelect::Alpha),
1198 3 => Ok(ColorChannelSelect::Red),
1199 4 => Ok(ColorChannelSelect::Green),
1200 5 => Ok(ColorChannelSelect::Blue),
1201 other => Err(crate::Error::UnknownEnum {
1202 name: "ColorChannelSelect",
1203 value: other,
1204 }),
1205 }
1206 }
1207}
1208
1209#[repr(i32)]
1211#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash)]
1212pub enum SpecularMode {
1213 RGB = 0,
1215 AlphaOnly = 1,
1217}
1218
1219impl TryFrom<i32> for SpecularMode {
1220 type Error = crate::Error;
1221 fn try_from(v: i32) -> Result<Self, crate::Error> {
1222 match v {
1223 0 => Ok(SpecularMode::RGB),
1224 1 => Ok(SpecularMode::AlphaOnly),
1225 other => Err(crate::Error::UnknownEnum {
1226 name: "SpecularMode",
1227 value: other,
1228 }),
1229 }
1230 }
1231}
1232
1233#[repr(i32)]
1235#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash)]
1236pub enum FresnelMode {
1237 None = 0,
1239 Standard = 1,
1241 Inverted = 2,
1243}
1244
1245impl TryFrom<i32> for FresnelMode {
1246 type Error = crate::Error;
1247 fn try_from(v: i32) -> Result<Self, crate::Error> {
1248 match v {
1249 0 => Ok(FresnelMode::None),
1250 1 => Ok(FresnelMode::Standard),
1251 2 => Ok(FresnelMode::Inverted),
1252 other => Err(crate::Error::UnknownEnum {
1253 name: "FresnelMode",
1254 value: other,
1255 }),
1256 }
1257 }
1258}
1259
1260#[derive(Clone, Copy, PartialEq, Eq, Hash, Default)]
1263pub struct ReflectionMaterialFlag(pub i32);
1264
1265impl ReflectionMaterialFlag {
1266 pub const NONE: Self = Self(0);
1267 pub const USE_REFLECTION_MAP: Self = Self(1);
1269 pub const USE_DISPLACEMENT_MAP: Self = Self(2);
1271 pub const RENDER_IN_TRANSPARENT_PASS: Self = Self(4);
1273 pub const BLURRING: Self = Self(8);
1275 pub const USE_BLUR_MAP: Self = Self(16);
1277
1278 #[inline]
1279 pub const fn contains(self, other: Self) -> bool {
1280 (self.0 & other.0) == other.0
1281 }
1282
1283 #[inline]
1284 pub const fn is_empty(self) -> bool {
1285 self.0 == 0
1286 }
1287}
1288
1289impl core::ops::BitOr for ReflectionMaterialFlag {
1290 type Output = Self;
1291 #[inline]
1292 fn bitor(self, rhs: Self) -> Self {
1293 Self(self.0 | rhs.0)
1294 }
1295}
1296
1297impl core::ops::BitAnd for ReflectionMaterialFlag {
1298 type Output = Self;
1299 #[inline]
1300 fn bitand(self, rhs: Self) -> Self {
1301 Self(self.0 & rhs.0)
1302 }
1303}
1304
1305impl core::ops::Not for ReflectionMaterialFlag {
1306 type Output = Self;
1307 #[inline]
1308 fn not(self) -> Self {
1309 Self(!self.0)
1310 }
1311}
1312
1313impl core::fmt::Debug for ReflectionMaterialFlag {
1314 fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
1315 write!(f, "ReflectionMaterialFlag({:#x})", self.0)
1316 }
1317}
1318
1319#[repr(i32)]
1321#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash)]
1322pub enum VolumeNoiseMaterialFlag {
1323 None = 0,
1324 DrawAfterTransparency = 1,
1326}
1327
1328impl TryFrom<i32> for VolumeNoiseMaterialFlag {
1329 type Error = crate::Error;
1330 fn try_from(v: i32) -> Result<Self, crate::Error> {
1331 match v {
1332 0 => Ok(VolumeNoiseMaterialFlag::None),
1333 1 => Ok(VolumeNoiseMaterialFlag::DrawAfterTransparency),
1334 other => Err(crate::Error::UnknownEnum {
1335 name: "VolumeNoiseMaterialFlag",
1336 value: other,
1337 }),
1338 }
1339 }
1340}
1341
1342#[repr(i32)]
1344#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash)]
1345pub enum VolumeFalloffType {
1346 Linear = 0,
1348 Exponential = 1,
1350}
1351
1352impl TryFrom<i32> for VolumeFalloffType {
1353 type Error = crate::Error;
1354 fn try_from(v: i32) -> Result<Self, crate::Error> {
1355 match v {
1356 0 => Ok(VolumeFalloffType::Linear),
1357 1 => Ok(VolumeFalloffType::Exponential),
1358 other => Err(crate::Error::UnknownEnum {
1359 name: "VolumeFalloffType",
1360 value: other,
1361 }),
1362 }
1363 }
1364}
1365
1366#[repr(i32)]
1368#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash)]
1369pub enum VolumeNoiseCameraMode {
1370 Outside = 0,
1372 Inside = 1,
1374}
1375
1376impl TryFrom<i32> for VolumeNoiseCameraMode {
1377 type Error = crate::Error;
1378 fn try_from(v: i32) -> Result<Self, crate::Error> {
1379 match v {
1380 0 => Ok(VolumeNoiseCameraMode::Outside),
1381 1 => Ok(VolumeNoiseCameraMode::Inside),
1382 other => Err(crate::Error::UnknownEnum {
1383 name: "VolumeNoiseCameraMode",
1384 value: other,
1385 }),
1386 }
1387 }
1388}
1389
1390#[derive(Clone, Copy, PartialEq, Eq, Hash, Default)]
1393pub struct LightFlag(pub i32);
1394
1395impl LightFlag {
1396 pub const NONE: Self = Self(0);
1397 pub const SHADOWS: Self = Self(1);
1399 pub const SPECULAR: Self = Self(2);
1401 pub const AMBIENT_OCCLUSION: Self = Self(4);
1403 pub const LIGHT_OPAQUE: Self = Self(8);
1405 pub const LIGHT_TRANSPARENT: Self = Self(16);
1407 pub const TEAM_COLOR: Self = Self(32);
1409
1410 #[inline]
1411 pub const fn contains(self, other: Self) -> bool {
1412 (self.0 & other.0) == other.0
1413 }
1414
1415 #[inline]
1416 pub const fn is_empty(self) -> bool {
1417 self.0 == 0
1418 }
1419}
1420
1421impl core::ops::BitOr for LightFlag {
1422 type Output = Self;
1423 #[inline]
1424 fn bitor(self, rhs: Self) -> Self {
1425 Self(self.0 | rhs.0)
1426 }
1427}
1428
1429impl core::ops::BitAnd for LightFlag {
1430 type Output = Self;
1431 #[inline]
1432 fn bitand(self, rhs: Self) -> Self {
1433 Self(self.0 & rhs.0)
1434 }
1435}
1436
1437impl core::ops::Not for LightFlag {
1438 type Output = Self;
1439 #[inline]
1440 fn not(self) -> Self {
1441 Self(!self.0)
1442 }
1443}
1444
1445impl core::fmt::Debug for LightFlag {
1446 fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
1447 write!(f, "LightFlag({:#x})", self.0)
1448 }
1449}
1450
1451#[derive(Clone, Copy, PartialEq, Eq, Hash, Default)]
1454pub struct ParticleFlag(pub i32);
1455
1456impl ParticleFlag {
1457 pub const NONE: Self = Self(0);
1458 pub const SORT: Self = Self(1);
1460 pub const COLLIDE_TERRAIN: Self = Self(2);
1462 pub const COLLIDE_OBJECTS: Self = Self(4);
1464 pub const COLLIDE_EMIT: Self = Self(8);
1466 pub const EMIT_SHAPE_CUTOUT: Self = Self(16);
1468 pub const INHERIT_EMIT_PARAMS: Self = Self(32);
1470 pub const INHERIT_PARENT_VELOCITY: Self = Self(64);
1472 pub const SORT_HEIGHT: Self = Self(128);
1474 pub const SORT_REVERSE: Self = Self(256);
1476 pub const OLD_ROTATION_SMOOTH: Self = Self(512);
1478 pub const OLD_ROTATION_BEZIER: Self = Self(1024);
1480 pub const OLD_SIZE_SMOOTH: Self = Self(2048);
1482 pub const OLD_SIZE_BEZIER: Self = Self(4096);
1484 pub const OLD_COLOR_SMOOTH: Self = Self(8192);
1486 pub const OLD_COLOR_BEZIER: Self = Self(16384);
1488 pub const LIT_PARTS: Self = Self(32768);
1490 pub const RANDOM_FLIPBOOK_START: Self = Self(65536);
1492 pub const MULTIPLY_GRAVITY_BY_MASS: Self = Self(131072);
1494 pub const CLAMP_TAIL_LENGTH: Self = Self(262144);
1496 pub const SPAWN_TRAILING_PARTICLES: Self = Self(524288);
1498 pub const FIX_TAIL_LENGTH_ON_CREATION: Self = Self(1048576);
1500 pub const USE_VERTEX_ALPHA: Self = Self(2097152);
1502 pub const MODEL_PARTICLES: Self = Self(4194304);
1504 pub const SWAP_YZ_ON_MODEL_PARTICLES: Self = Self(8388608);
1506 pub const SCALE_TIME_BY_PARENT: Self = Self(16777216);
1508 pub const USE_LOCAL_TIME: Self = Self(33554432);
1510 pub const SIMULATE_INIT: Self = Self(67108864);
1512 pub const COPY: Self = Self(134217728);
1514 pub const REQUIRES_GPU_SIM: Self = Self(268435456);
1516 pub const SHADER_PERM_30: Self = Self(1073741824);
1518 pub const FORCE_PROCEDURAL_POSITION: Self = Self(-2147483648);
1520
1521 #[inline]
1522 pub const fn contains(self, other: Self) -> bool {
1523 (self.0 & other.0) == other.0
1524 }
1525
1526 #[inline]
1527 pub const fn is_empty(self) -> bool {
1528 self.0 == 0
1529 }
1530}
1531
1532impl core::ops::BitOr for ParticleFlag {
1533 type Output = Self;
1534 #[inline]
1535 fn bitor(self, rhs: Self) -> Self {
1536 Self(self.0 | rhs.0)
1537 }
1538}
1539
1540impl core::ops::BitAnd for ParticleFlag {
1541 type Output = Self;
1542 #[inline]
1543 fn bitand(self, rhs: Self) -> Self {
1544 Self(self.0 & rhs.0)
1545 }
1546}
1547
1548impl core::ops::Not for ParticleFlag {
1549 type Output = Self;
1550 #[inline]
1551 fn not(self) -> Self {
1552 Self(!self.0)
1553 }
1554}
1555
1556impl core::fmt::Debug for ParticleFlag {
1557 fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
1558 write!(f, "ParticleFlag({:#x})", self.0)
1559 }
1560}
1561
1562#[derive(Clone, Copy, PartialEq, Eq, Hash, Default)]
1565pub struct ParticleAdditionalFlag(pub i32);
1566
1567impl ParticleAdditionalFlag {
1568 pub const NONE: Self = Self(0);
1569 pub const EMIT_SPEED_RANDOMIZE: Self = Self(1);
1571 pub const LIFESPAN_RANDOMIZE: Self = Self(2);
1573 pub const MASS_RANDOMIZE: Self = Self(4);
1575 pub const WORLD_SPACE: Self = Self(8);
1577
1578 #[inline]
1579 pub const fn contains(self, other: Self) -> bool {
1580 (self.0 & other.0) == other.0
1581 }
1582
1583 #[inline]
1584 pub const fn is_empty(self) -> bool {
1585 self.0 == 0
1586 }
1587}
1588
1589impl core::ops::BitOr for ParticleAdditionalFlag {
1590 type Output = Self;
1591 #[inline]
1592 fn bitor(self, rhs: Self) -> Self {
1593 Self(self.0 | rhs.0)
1594 }
1595}
1596
1597impl core::ops::BitAnd for ParticleAdditionalFlag {
1598 type Output = Self;
1599 #[inline]
1600 fn bitand(self, rhs: Self) -> Self {
1601 Self(self.0 & rhs.0)
1602 }
1603}
1604
1605impl core::ops::Not for ParticleAdditionalFlag {
1606 type Output = Self;
1607 #[inline]
1608 fn not(self) -> Self {
1609 Self(!self.0)
1610 }
1611}
1612
1613impl core::fmt::Debug for ParticleAdditionalFlag {
1614 fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
1615 write!(f, "ParticleAdditionalFlag({:#x})", self.0)
1616 }
1617}
1618
1619#[repr(i32)]
1621#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash)]
1622pub enum ParticleRotationFlag {
1623 None = 0,
1624 Relative = 2,
1626 AlwaysSet = 4,
1628}
1629
1630impl TryFrom<i32> for ParticleRotationFlag {
1631 type Error = crate::Error;
1632 fn try_from(v: i32) -> Result<Self, crate::Error> {
1633 match v {
1634 0 => Ok(ParticleRotationFlag::None),
1635 2 => Ok(ParticleRotationFlag::Relative),
1636 4 => Ok(ParticleRotationFlag::AlwaysSet),
1637 other => Err(crate::Error::UnknownEnum {
1638 name: "ParticleRotationFlag",
1639 value: other,
1640 }),
1641 }
1642 }
1643}
1644
1645#[derive(Clone, Copy, PartialEq, Eq, Hash, Default)]
1648pub struct RibbonFlag(pub i32);
1649
1650impl RibbonFlag {
1651 pub const NONE: Self = Self(0);
1652 pub const COLLIDE_TERRAIN: Self = Self(2);
1654 pub const COLLIDE_OBJECTS: Self = Self(4);
1656 pub const EDGE_FALLOFF: Self = Self(8);
1658 pub const INHERIT_PARENT_VELOCITY: Self = Self(16);
1660 pub const SMOOTH_SIZE: Self = Self(32);
1662 pub const BEZIER_SMOOTH_SIZE: Self = Self(64);
1664 pub const USE_VERTEX_ALPHA: Self = Self(128);
1666 pub const SCALE_TIME_BY_PARENT: Self = Self(256);
1668 pub const FORCE_CPU_SIM: Self = Self(512);
1670 pub const LOCAL_TIME: Self = Self(1024);
1672 pub const SIMULATE_INIT: Self = Self(2048);
1674 pub const USE_LENGTH_AND_TIME: Self = Self(4096);
1676 pub const ACCURATE_GPU_TANGENTS: Self = Self(8192);
1678 pub const YAW_FROM_SPEED: Self = Self(16384);
1680 pub const USE_LOCATOR: Self = Self(32768);
1682
1683 #[inline]
1684 pub const fn contains(self, other: Self) -> bool {
1685 (self.0 & other.0) == other.0
1686 }
1687
1688 #[inline]
1689 pub const fn is_empty(self) -> bool {
1690 self.0 == 0
1691 }
1692}
1693
1694impl core::ops::BitOr for RibbonFlag {
1695 type Output = Self;
1696 #[inline]
1697 fn bitor(self, rhs: Self) -> Self {
1698 Self(self.0 | rhs.0)
1699 }
1700}
1701
1702impl core::ops::BitAnd for RibbonFlag {
1703 type Output = Self;
1704 #[inline]
1705 fn bitand(self, rhs: Self) -> Self {
1706 Self(self.0 & rhs.0)
1707 }
1708}
1709
1710impl core::ops::Not for RibbonFlag {
1711 type Output = Self;
1712 #[inline]
1713 fn not(self) -> Self {
1714 Self(!self.0)
1715 }
1716}
1717
1718impl core::fmt::Debug for RibbonFlag {
1719 fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
1720 write!(f, "RibbonFlag({:#x})", self.0)
1721 }
1722}
1723
1724#[derive(Clone, Copy, PartialEq, Eq, Hash, Default)]
1727pub struct RibbonAdditionalFlag(pub i32);
1728
1729impl RibbonAdditionalFlag {
1730 pub const NONE: Self = Self(0);
1731 pub const SPEED_RANDOMIZE: Self = Self(1);
1733 pub const LIFESPAN_RANDOMIZE: Self = Self(2);
1735 pub const MASS_RANDOMIZE: Self = Self(4);
1737 pub const WORLD_SPACE: Self = Self(8);
1739
1740 #[inline]
1741 pub const fn contains(self, other: Self) -> bool {
1742 (self.0 & other.0) == other.0
1743 }
1744
1745 #[inline]
1746 pub const fn is_empty(self) -> bool {
1747 self.0 == 0
1748 }
1749}
1750
1751impl core::ops::BitOr for RibbonAdditionalFlag {
1752 type Output = Self;
1753 #[inline]
1754 fn bitor(self, rhs: Self) -> Self {
1755 Self(self.0 | rhs.0)
1756 }
1757}
1758
1759impl core::ops::BitAnd for RibbonAdditionalFlag {
1760 type Output = Self;
1761 #[inline]
1762 fn bitand(self, rhs: Self) -> Self {
1763 Self(self.0 & rhs.0)
1764 }
1765}
1766
1767impl core::ops::Not for RibbonAdditionalFlag {
1768 type Output = Self;
1769 #[inline]
1770 fn not(self) -> Self {
1771 Self(!self.0)
1772 }
1773}
1774
1775impl core::fmt::Debug for RibbonAdditionalFlag {
1776 fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
1777 write!(f, "RibbonAdditionalFlag({:#x})", self.0)
1778 }
1779}
1780
1781#[derive(Clone, Copy, PartialEq, Eq, Hash, Default)]
1784pub struct ProjectorFlag(pub i32);
1785
1786impl ProjectorFlag {
1787 pub const NONE: Self = Self(0);
1788 pub const STATIC: Self = Self(1);
1790 pub const UNKNOWN_FLAG_0X_2: Self = Self(2);
1792 pub const UNKNOWN_FLAG_0X_4: Self = Self(4);
1794 pub const UNKNOWN_FLAG_0X_8: Self = Self(8);
1796
1797 #[inline]
1798 pub const fn contains(self, other: Self) -> bool {
1799 (self.0 & other.0) == other.0
1800 }
1801
1802 #[inline]
1803 pub const fn is_empty(self) -> bool {
1804 self.0 == 0
1805 }
1806}
1807
1808impl core::ops::BitOr for ProjectorFlag {
1809 type Output = Self;
1810 #[inline]
1811 fn bitor(self, rhs: Self) -> Self {
1812 Self(self.0 | rhs.0)
1813 }
1814}
1815
1816impl core::ops::BitAnd for ProjectorFlag {
1817 type Output = Self;
1818 #[inline]
1819 fn bitand(self, rhs: Self) -> Self {
1820 Self(self.0 & rhs.0)
1821 }
1822}
1823
1824impl core::ops::Not for ProjectorFlag {
1825 type Output = Self;
1826 #[inline]
1827 fn not(self) -> Self {
1828 Self(!self.0)
1829 }
1830}
1831
1832impl core::fmt::Debug for ProjectorFlag {
1833 fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
1834 write!(f, "ProjectorFlag({:#x})", self.0)
1835 }
1836}
1837
1838#[derive(Clone, Copy, PartialEq, Eq, Hash, Default)]
1841pub struct ForceFlag(pub i32);
1842
1843impl ForceFlag {
1844 pub const NONE: Self = Self(0);
1845 pub const FALLOFF: Self = Self(1);
1847 pub const HEIGHT_GRADIENT: Self = Self(2);
1849 pub const UNBOUNDED: Self = Self(4);
1851
1852 #[inline]
1853 pub const fn contains(self, other: Self) -> bool {
1854 (self.0 & other.0) == other.0
1855 }
1856
1857 #[inline]
1858 pub const fn is_empty(self) -> bool {
1859 self.0 == 0
1860 }
1861}
1862
1863impl core::ops::BitOr for ForceFlag {
1864 type Output = Self;
1865 #[inline]
1866 fn bitor(self, rhs: Self) -> Self {
1867 Self(self.0 | rhs.0)
1868 }
1869}
1870
1871impl core::ops::BitAnd for ForceFlag {
1872 type Output = Self;
1873 #[inline]
1874 fn bitand(self, rhs: Self) -> Self {
1875 Self(self.0 & rhs.0)
1876 }
1877}
1878
1879impl core::ops::Not for ForceFlag {
1880 type Output = Self;
1881 #[inline]
1882 fn not(self) -> Self {
1883 Self(!self.0)
1884 }
1885}
1886
1887impl core::fmt::Debug for ForceFlag {
1888 fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
1889 write!(f, "ForceFlag({:#x})", self.0)
1890 }
1891}
1892
1893#[derive(Clone, Copy, PartialEq, Eq, Hash, Default)]
1896pub struct RigidBodyFlag(pub i32);
1897
1898impl RigidBodyFlag {
1899 pub const NONE: Self = Self(0);
1900 pub const COLLIDABLE: Self = Self(1);
1902 pub const WALKABLE: Self = Self(2);
1904 pub const STACKABLE: Self = Self(4);
1906 pub const SIMULATE_COLLISION: Self = Self(8);
1908 pub const IGNORE_LOCAL_BODIES: Self = Self(16);
1910 pub const ALWAYS_EXISTS: Self = Self(32);
1912 pub const UNKNOWN_6: Self = Self(64);
1914 pub const NO_SIMULATION: Self = Self(128);
1916 pub const UNKNOWN_9: Self = Self(512);
1918
1919 #[inline]
1920 pub const fn contains(self, other: Self) -> bool {
1921 (self.0 & other.0) == other.0
1922 }
1923
1924 #[inline]
1925 pub const fn is_empty(self) -> bool {
1926 self.0 == 0
1927 }
1928}
1929
1930impl core::ops::BitOr for RigidBodyFlag {
1931 type Output = Self;
1932 #[inline]
1933 fn bitor(self, rhs: Self) -> Self {
1934 Self(self.0 | rhs.0)
1935 }
1936}
1937
1938impl core::ops::BitAnd for RigidBodyFlag {
1939 type Output = Self;
1940 #[inline]
1941 fn bitand(self, rhs: Self) -> Self {
1942 Self(self.0 & rhs.0)
1943 }
1944}
1945
1946impl core::ops::Not for RigidBodyFlag {
1947 type Output = Self;
1948 #[inline]
1949 fn not(self) -> Self {
1950 Self(!self.0)
1951 }
1952}
1953
1954impl core::fmt::Debug for RigidBodyFlag {
1955 fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
1956 write!(f, "RigidBodyFlag({:#x})", self.0)
1957 }
1958}
1959
1960pub struct ColorBGRA {
1964 pub(crate) raw: core::ptr::NonNull<ffi::whiteout_M3ColorBGRA>,
1965}
1966
1967impl Drop for ColorBGRA {
1968 fn drop(&mut self) {
1969 unsafe { ffi::whiteout_m3_M3ColorBGRA_delete(self.raw.as_ptr()) }
1971 }
1972}
1973
1974impl ColorBGRA {
1975 #[allow(dead_code)] pub(crate) unsafe fn from_raw(raw: *mut ffi::whiteout_M3ColorBGRA) -> Option<Self> {
1979 core::ptr::NonNull::new(raw).map(|raw| ColorBGRA { raw })
1980 }
1981}
1982
1983unsafe impl Send for ColorBGRA {}
1988
1989impl core::fmt::Debug for ColorBGRA {
1990 fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
1991 f.debug_struct("ColorBGRA").finish_non_exhaustive()
1992 }
1993}
1994
1995impl ColorBGRA {
1996 pub fn new() -> Self {
1999 unsafe {
2002 let raw = ffi::whiteout_m3_M3ColorBGRA_new();
2003 Self::from_raw(raw).expect("native ColorBGRA allocation failed")
2004 }
2005 }
2006
2007 pub fn b(&self) -> u8 {
2009 unsafe { ffi::whiteout_m3_M3ColorBGRA_get_b(self.raw.as_ptr()) }
2011 }
2012
2013 pub fn set_b(&mut self, value: u8) {
2014 unsafe { ffi::whiteout_m3_M3ColorBGRA_set_b(self.raw.as_ptr(), value) }
2016 }
2017
2018 pub fn g(&self) -> u8 {
2020 unsafe { ffi::whiteout_m3_M3ColorBGRA_get_g(self.raw.as_ptr()) }
2022 }
2023
2024 pub fn set_g(&mut self, value: u8) {
2025 unsafe { ffi::whiteout_m3_M3ColorBGRA_set_g(self.raw.as_ptr(), value) }
2027 }
2028
2029 pub fn r(&self) -> u8 {
2031 unsafe { ffi::whiteout_m3_M3ColorBGRA_get_r(self.raw.as_ptr()) }
2033 }
2034
2035 pub fn set_r(&mut self, value: u8) {
2036 unsafe { ffi::whiteout_m3_M3ColorBGRA_set_r(self.raw.as_ptr(), value) }
2038 }
2039
2040 pub fn a(&self) -> u8 {
2042 unsafe { ffi::whiteout_m3_M3ColorBGRA_get_a(self.raw.as_ptr()) }
2044 }
2045
2046 pub fn set_a(&mut self, value: u8) {
2047 unsafe { ffi::whiteout_m3_M3ColorBGRA_set_a(self.raw.as_ptr(), value) }
2049 }
2050}
2051
2052impl Default for ColorBGRA {
2053 fn default() -> Self {
2054 Self::new()
2055 }
2056}
2057
2058pub struct ColorBGR {
2059 pub(crate) raw: core::ptr::NonNull<ffi::whiteout_M3ColorBGR>,
2060}
2061
2062impl Drop for ColorBGR {
2063 fn drop(&mut self) {
2064 unsafe { ffi::whiteout_m3_M3ColorBGR_delete(self.raw.as_ptr()) }
2066 }
2067}
2068
2069impl ColorBGR {
2070 #[allow(dead_code)] pub(crate) unsafe fn from_raw(raw: *mut ffi::whiteout_M3ColorBGR) -> Option<Self> {
2074 core::ptr::NonNull::new(raw).map(|raw| ColorBGR { raw })
2075 }
2076}
2077
2078unsafe impl Send for ColorBGR {}
2083
2084impl core::fmt::Debug for ColorBGR {
2085 fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
2086 f.debug_struct("ColorBGR").finish_non_exhaustive()
2087 }
2088}
2089
2090impl ColorBGR {
2091 pub fn new() -> Self {
2094 unsafe {
2097 let raw = ffi::whiteout_m3_M3ColorBGR_new();
2098 Self::from_raw(raw).expect("native ColorBGR allocation failed")
2099 }
2100 }
2101
2102 pub fn b(&self) -> u8 {
2104 unsafe { ffi::whiteout_m3_M3ColorBGR_get_b(self.raw.as_ptr()) }
2106 }
2107
2108 pub fn set_b(&mut self, value: u8) {
2109 unsafe { ffi::whiteout_m3_M3ColorBGR_set_b(self.raw.as_ptr(), value) }
2111 }
2112
2113 pub fn g(&self) -> u8 {
2115 unsafe { ffi::whiteout_m3_M3ColorBGR_get_g(self.raw.as_ptr()) }
2117 }
2118
2119 pub fn set_g(&mut self, value: u8) {
2120 unsafe { ffi::whiteout_m3_M3ColorBGR_set_g(self.raw.as_ptr(), value) }
2122 }
2123
2124 pub fn r(&self) -> u8 {
2126 unsafe { ffi::whiteout_m3_M3ColorBGR_get_r(self.raw.as_ptr()) }
2128 }
2129
2130 pub fn set_r(&mut self, value: u8) {
2131 unsafe { ffi::whiteout_m3_M3ColorBGR_set_r(self.raw.as_ptr(), value) }
2133 }
2134}
2135
2136impl Default for ColorBGR {
2137 fn default() -> Self {
2138 Self::new()
2139 }
2140}
2141
2142pub struct Extent {
2146 pub(crate) raw: core::ptr::NonNull<ffi::whiteout_M3Extent>,
2147}
2148
2149impl Drop for Extent {
2150 fn drop(&mut self) {
2151 unsafe { ffi::whiteout_m3_M3Extent_delete(self.raw.as_ptr()) }
2153 }
2154}
2155
2156impl Extent {
2157 #[allow(dead_code)] pub(crate) unsafe fn from_raw(raw: *mut ffi::whiteout_M3Extent) -> Option<Self> {
2161 core::ptr::NonNull::new(raw).map(|raw| Extent { raw })
2162 }
2163}
2164
2165unsafe impl Send for Extent {}
2170
2171impl core::fmt::Debug for Extent {
2172 fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
2173 f.debug_struct("Extent").finish_non_exhaustive()
2174 }
2175}
2176
2177impl Extent {
2178 pub fn new() -> Self {
2181 unsafe {
2184 let raw = ffi::whiteout_m3_M3Extent_new();
2185 Self::from_raw(raw).expect("native Extent allocation failed")
2186 }
2187 }
2188
2189 pub fn min(&self) -> crate::math::Vector3f {
2191 unsafe {
2194 *(ffi::whiteout_m3_M3Extent_get_min(self.raw.as_ptr()) as *const crate::math::Vector3f)
2195 }
2196 }
2197
2198 pub fn set_min(&mut self, value: crate::math::Vector3f) {
2199 unsafe {
2201 ffi::whiteout_m3_M3Extent_set_min(
2202 self.raw.as_ptr(),
2203 &value as *const crate::math::Vector3f as *const _,
2204 )
2205 }
2206 }
2207
2208 pub fn max(&self) -> crate::math::Vector3f {
2210 unsafe {
2213 *(ffi::whiteout_m3_M3Extent_get_max(self.raw.as_ptr()) as *const crate::math::Vector3f)
2214 }
2215 }
2216
2217 pub fn set_max(&mut self, value: crate::math::Vector3f) {
2218 unsafe {
2220 ffi::whiteout_m3_M3Extent_set_max(
2221 self.raw.as_ptr(),
2222 &value as *const crate::math::Vector3f as *const _,
2223 )
2224 }
2225 }
2226
2227 pub fn radius(&self) -> f32 {
2229 unsafe { ffi::whiteout_m3_M3Extent_get_radius(self.raw.as_ptr()) }
2231 }
2232
2233 pub fn set_radius(&mut self, value: f32) {
2234 unsafe { ffi::whiteout_m3_M3Extent_set_radius(self.raw.as_ptr(), value) }
2236 }
2237}
2238
2239impl Default for Extent {
2240 fn default() -> Self {
2241 Self::new()
2242 }
2243}
2244
2245pub struct Event {
2249 pub(crate) raw: core::ptr::NonNull<ffi::whiteout_M3Event>,
2250}
2251
2252impl Drop for Event {
2253 fn drop(&mut self) {
2254 unsafe { ffi::whiteout_m3_M3Event_delete(self.raw.as_ptr()) }
2256 }
2257}
2258
2259impl Event {
2260 #[allow(dead_code)] pub(crate) unsafe fn from_raw(raw: *mut ffi::whiteout_M3Event) -> Option<Self> {
2264 core::ptr::NonNull::new(raw).map(|raw| Event { raw })
2265 }
2266}
2267
2268unsafe impl Send for Event {}
2273
2274impl core::fmt::Debug for Event {
2275 fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
2276 f.debug_struct("Event").finish_non_exhaustive()
2277 }
2278}
2279
2280impl Event {
2281 pub fn new() -> Self {
2284 unsafe {
2287 let raw = ffi::whiteout_m3_M3Event_new();
2288 Self::from_raw(raw).expect("native Event allocation failed")
2289 }
2290 }
2291
2292 pub fn name(&self) -> String {
2294 unsafe { crate::support::take_string(ffi::whiteout_m3_M3Event_get_name(self.raw.as_ptr())) }
2296 }
2297
2298 pub fn set_name(&mut self, value: &str) {
2299 let value = std::ffi::CString::new(value).unwrap_or_default();
2300 unsafe { ffi::whiteout_m3_M3Event_set_name(self.raw.as_ptr(), value.as_ptr()) }
2302 }
2303
2304 pub fn unknown(&self) -> u32 {
2306 unsafe { ffi::whiteout_m3_M3Event_get_unknown(self.raw.as_ptr()) }
2308 }
2309
2310 pub fn set_unknown(&mut self, value: u32) {
2311 unsafe { ffi::whiteout_m3_M3Event_set_unknown(self.raw.as_ptr(), value) }
2313 }
2314
2315 pub fn bone_index(&self) -> u16 {
2317 unsafe { ffi::whiteout_m3_M3Event_get_boneIndex(self.raw.as_ptr()) }
2319 }
2320
2321 pub fn set_bone_index(&mut self, value: u16) {
2322 unsafe { ffi::whiteout_m3_M3Event_set_boneIndex(self.raw.as_ptr(), value) }
2324 }
2325
2326 pub fn padding(&self) -> u16 {
2328 unsafe { ffi::whiteout_m3_M3Event_get_padding(self.raw.as_ptr()) }
2330 }
2331
2332 pub fn set_padding(&mut self, value: u16) {
2333 unsafe { ffi::whiteout_m3_M3Event_set_padding(self.raw.as_ptr(), value) }
2335 }
2336
2337 pub fn event_type(&self) -> u32 {
2339 unsafe { ffi::whiteout_m3_M3Event_get_eventType(self.raw.as_ptr()) }
2341 }
2342
2343 pub fn set_event_type(&mut self, value: u32) {
2344 unsafe { ffi::whiteout_m3_M3Event_set_eventType(self.raw.as_ptr(), value) }
2346 }
2347
2348 pub fn option_string(&self) -> String {
2350 unsafe {
2352 crate::support::take_string(ffi::whiteout_m3_M3Event_get_optionString(
2353 self.raw.as_ptr(),
2354 ))
2355 }
2356 }
2357
2358 pub fn set_option_string(&mut self, value: &str) {
2359 let value = std::ffi::CString::new(value).unwrap_or_default();
2360 unsafe { ffi::whiteout_m3_M3Event_set_optionString(self.raw.as_ptr(), value.as_ptr()) }
2362 }
2363
2364 pub fn rtt_channel_index(&self) -> u32 {
2366 unsafe { ffi::whiteout_m3_M3Event_get_rttChannelIndex(self.raw.as_ptr()) }
2368 }
2369
2370 pub fn set_rtt_channel_index(&mut self, value: u32) {
2371 unsafe { ffi::whiteout_m3_M3Event_set_rttChannelIndex(self.raw.as_ptr(), value) }
2373 }
2374
2375 pub fn extra_parameter(&self) -> u32 {
2377 unsafe { ffi::whiteout_m3_M3Event_get_extraParameter(self.raw.as_ptr()) }
2379 }
2380
2381 pub fn set_extra_parameter(&mut self, value: u32) {
2382 unsafe { ffi::whiteout_m3_M3Event_set_extraParameter(self.raw.as_ptr(), value) }
2384 }
2385}
2386
2387impl Default for Event {
2388 fn default() -> Self {
2389 Self::new()
2390 }
2391}
2392
2393pub struct Sequence {
2397 pub(crate) raw: core::ptr::NonNull<ffi::whiteout_M3Sequence>,
2398}
2399
2400impl Drop for Sequence {
2401 fn drop(&mut self) {
2402 unsafe { ffi::whiteout_m3_M3Sequence_delete(self.raw.as_ptr()) }
2404 }
2405}
2406
2407impl Sequence {
2408 #[allow(dead_code)] pub(crate) unsafe fn from_raw(raw: *mut ffi::whiteout_M3Sequence) -> Option<Self> {
2412 core::ptr::NonNull::new(raw).map(|raw| Sequence { raw })
2413 }
2414}
2415
2416unsafe impl Send for Sequence {}
2421
2422impl core::fmt::Debug for Sequence {
2423 fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
2424 f.debug_struct("Sequence").finish_non_exhaustive()
2425 }
2426}
2427
2428impl Sequence {
2429 pub fn new() -> Self {
2432 unsafe {
2435 let raw = ffi::whiteout_m3_M3Sequence_new();
2436 Self::from_raw(raw).expect("native Sequence allocation failed")
2437 }
2438 }
2439
2440 pub fn id(&self) -> i32 {
2442 unsafe { ffi::whiteout_m3_M3Sequence_get_id(self.raw.as_ptr()) }
2444 }
2445
2446 pub fn set_id(&mut self, value: i32) {
2447 unsafe { ffi::whiteout_m3_M3Sequence_set_id(self.raw.as_ptr(), value) }
2449 }
2450
2451 pub fn index(&self) -> i32 {
2453 unsafe { ffi::whiteout_m3_M3Sequence_get_index(self.raw.as_ptr()) }
2455 }
2456
2457 pub fn set_index(&mut self, value: i32) {
2458 unsafe { ffi::whiteout_m3_M3Sequence_set_index(self.raw.as_ptr(), value) }
2460 }
2461
2462 pub fn name(&self) -> String {
2464 unsafe {
2466 crate::support::take_string(ffi::whiteout_m3_M3Sequence_get_name(self.raw.as_ptr()))
2467 }
2468 }
2469
2470 pub fn set_name(&mut self, value: &str) {
2471 let value = std::ffi::CString::new(value).unwrap_or_default();
2472 unsafe { ffi::whiteout_m3_M3Sequence_set_name(self.raw.as_ptr(), value.as_ptr()) }
2474 }
2475
2476 pub fn start_frame(&self) -> u32 {
2478 unsafe { ffi::whiteout_m3_M3Sequence_get_startFrame(self.raw.as_ptr()) }
2480 }
2481
2482 pub fn set_start_frame(&mut self, value: u32) {
2483 unsafe { ffi::whiteout_m3_M3Sequence_set_startFrame(self.raw.as_ptr(), value) }
2485 }
2486
2487 pub fn end_frame(&self) -> u32 {
2489 unsafe { ffi::whiteout_m3_M3Sequence_get_endFrame(self.raw.as_ptr()) }
2491 }
2492
2493 pub fn set_end_frame(&mut self, value: u32) {
2494 unsafe { ffi::whiteout_m3_M3Sequence_set_endFrame(self.raw.as_ptr(), value) }
2496 }
2497
2498 pub fn move_speed(&self) -> f32 {
2500 unsafe { ffi::whiteout_m3_M3Sequence_get_moveSpeed(self.raw.as_ptr()) }
2502 }
2503
2504 pub fn set_move_speed(&mut self, value: f32) {
2505 unsafe { ffi::whiteout_m3_M3Sequence_set_moveSpeed(self.raw.as_ptr(), value) }
2507 }
2508
2509 pub fn flags(&self) -> SequenceFlag {
2511 SequenceFlag(unsafe { ffi::whiteout_m3_M3Sequence_get_flags(self.raw.as_ptr()) })
2513 }
2514
2515 pub fn set_flags(&mut self, value: SequenceFlag) {
2516 unsafe { ffi::whiteout_m3_M3Sequence_set_flags(self.raw.as_ptr(), value.0) }
2518 }
2519
2520 pub fn frequency(&self) -> u32 {
2522 unsafe { ffi::whiteout_m3_M3Sequence_get_frequency(self.raw.as_ptr()) }
2524 }
2525
2526 pub fn set_frequency(&mut self, value: u32) {
2527 unsafe { ffi::whiteout_m3_M3Sequence_set_frequency(self.raw.as_ptr(), value) }
2529 }
2530
2531 pub fn replay_start(&self) -> u32 {
2533 unsafe { ffi::whiteout_m3_M3Sequence_get_replayStart(self.raw.as_ptr()) }
2535 }
2536
2537 pub fn set_replay_start(&mut self, value: u32) {
2538 unsafe { ffi::whiteout_m3_M3Sequence_set_replayStart(self.raw.as_ptr(), value) }
2540 }
2541
2542 pub fn replay_end(&self) -> u32 {
2544 unsafe { ffi::whiteout_m3_M3Sequence_get_replayEnd(self.raw.as_ptr()) }
2546 }
2547
2548 pub fn set_replay_end(&mut self, value: u32) {
2549 unsafe { ffi::whiteout_m3_M3Sequence_set_replayEnd(self.raw.as_ptr(), value) }
2551 }
2552
2553 pub fn blend_time(&self) -> u32 {
2555 unsafe { ffi::whiteout_m3_M3Sequence_get_blendTime(self.raw.as_ptr()) }
2557 }
2558
2559 pub fn set_blend_time(&mut self, value: u32) {
2560 unsafe { ffi::whiteout_m3_M3Sequence_set_blendTime(self.raw.as_ptr(), value) }
2562 }
2563
2564 pub fn bounds(&self) -> crate::support::Ref<'_, Extent> {
2567 unsafe {
2570 crate::support::Ref::new(Extent {
2571 raw: core::ptr::NonNull::new_unchecked(ffi::whiteout_m3_M3Sequence_get_bounds(
2572 self.raw.as_ptr(),
2573 )),
2574 })
2575 }
2576 }
2577
2578 pub fn bounds_mut(&mut self) -> crate::support::RefMut<'_, Extent> {
2579 unsafe {
2581 crate::support::RefMut::new(Extent {
2582 raw: core::ptr::NonNull::new_unchecked(ffi::whiteout_m3_M3Sequence_get_bounds(
2583 self.raw.as_ptr(),
2584 )),
2585 })
2586 }
2587 }
2588
2589 pub fn animation_sets(&self) -> &[u8] {
2592 unsafe {
2595 let n = ffi::whiteout_m3_M3Sequence_get_animationSets_count(self.raw.as_ptr());
2596 let p = ffi::whiteout_m3_M3Sequence_get_animationSets_data(self.raw.as_ptr());
2597 if p.is_null() || n == 0 {
2598 &[]
2599 } else {
2600 core::slice::from_raw_parts(p, n)
2601 }
2602 }
2603 }
2604
2605 pub fn animation_sets_mut(&mut self) -> &mut [u8] {
2607 unsafe {
2609 let n = ffi::whiteout_m3_M3Sequence_get_animationSets_count(self.raw.as_ptr());
2610 let p =
2611 ffi::whiteout_m3_M3Sequence_get_animationSets_data(self.raw.as_ptr()) as *mut u8;
2612 if p.is_null() || n == 0 {
2613 &mut []
2614 } else {
2615 core::slice::from_raw_parts_mut(p, n)
2616 }
2617 }
2618 }
2619
2620 pub fn set_animation_sets(&mut self, values: &[u8]) {
2621 unsafe {
2623 ffi::whiteout_m3_M3Sequence_assign_animationSets(
2624 self.raw.as_ptr(),
2625 values.as_ptr() as *const _,
2626 values.len(),
2627 )
2628 }
2629 }
2630
2631 pub fn resize_animation_sets(&mut self, count: usize) {
2632 unsafe { ffi::whiteout_m3_M3Sequence_resize_animationSets(self.raw.as_ptr(), count) }
2635 }
2636}
2637
2638impl Default for Sequence {
2639 fn default() -> Self {
2640 Self::new()
2641 }
2642}
2643
2644pub struct SubTrackContainer {
2648 pub(crate) raw: core::ptr::NonNull<ffi::whiteout_M3SubTrackContainer>,
2649}
2650
2651impl Drop for SubTrackContainer {
2652 fn drop(&mut self) {
2653 unsafe { ffi::whiteout_m3_M3SubTrackContainer_delete(self.raw.as_ptr()) }
2655 }
2656}
2657
2658impl SubTrackContainer {
2659 #[allow(dead_code)] pub(crate) unsafe fn from_raw(raw: *mut ffi::whiteout_M3SubTrackContainer) -> Option<Self> {
2663 core::ptr::NonNull::new(raw).map(|raw| SubTrackContainer { raw })
2664 }
2665}
2666
2667unsafe impl Send for SubTrackContainer {}
2672
2673impl core::fmt::Debug for SubTrackContainer {
2674 fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
2675 f.debug_struct("SubTrackContainer").finish_non_exhaustive()
2676 }
2677}
2678
2679impl SubTrackContainer {
2680 pub fn new() -> Self {
2683 unsafe {
2686 let raw = ffi::whiteout_m3_M3SubTrackContainer_new();
2687 Self::from_raw(raw).expect("native SubTrackContainer allocation failed")
2688 }
2689 }
2690
2691 pub fn name(&self) -> String {
2693 unsafe {
2695 crate::support::take_string(ffi::whiteout_m3_M3SubTrackContainer_get_name(
2696 self.raw.as_ptr(),
2697 ))
2698 }
2699 }
2700
2701 pub fn set_name(&mut self, value: &str) {
2702 let value = std::ffi::CString::new(value).unwrap_or_default();
2703 unsafe { ffi::whiteout_m3_M3SubTrackContainer_set_name(self.raw.as_ptr(), value.as_ptr()) }
2705 }
2706
2707 pub fn runs_concurrent(&self) -> u16 {
2709 unsafe { ffi::whiteout_m3_M3SubTrackContainer_get_runsConcurrent(self.raw.as_ptr()) }
2711 }
2712
2713 pub fn set_runs_concurrent(&mut self, value: u16) {
2714 unsafe { ffi::whiteout_m3_M3SubTrackContainer_set_runsConcurrent(self.raw.as_ptr(), value) }
2716 }
2717
2718 pub fn anim_priority(&self) -> u16 {
2720 unsafe { ffi::whiteout_m3_M3SubTrackContainer_get_animPriority(self.raw.as_ptr()) }
2722 }
2723
2724 pub fn set_anim_priority(&mut self, value: u16) {
2725 unsafe { ffi::whiteout_m3_M3SubTrackContainer_set_animPriority(self.raw.as_ptr(), value) }
2727 }
2728
2729 pub fn animation_state_index(&self) -> u16 {
2731 unsafe { ffi::whiteout_m3_M3SubTrackContainer_get_animationStateIndex(self.raw.as_ptr()) }
2733 }
2734
2735 pub fn set_animation_state_index(&mut self, value: u16) {
2736 unsafe {
2738 ffi::whiteout_m3_M3SubTrackContainer_set_animationStateIndex(self.raw.as_ptr(), value)
2739 }
2740 }
2741
2742 pub fn padding(&self) -> u16 {
2744 unsafe { ffi::whiteout_m3_M3SubTrackContainer_get_padding(self.raw.as_ptr()) }
2746 }
2747
2748 pub fn set_padding(&mut self, value: u16) {
2749 unsafe { ffi::whiteout_m3_M3SubTrackContainer_set_padding(self.raw.as_ptr(), value) }
2751 }
2752
2753 pub fn anim_ids(&self) -> &[u32] {
2756 unsafe {
2759 let n = ffi::whiteout_m3_M3SubTrackContainer_get_animIds_count(self.raw.as_ptr());
2760 let p = ffi::whiteout_m3_M3SubTrackContainer_get_animIds_data(self.raw.as_ptr());
2761 if p.is_null() || n == 0 {
2762 &[]
2763 } else {
2764 core::slice::from_raw_parts(p, n)
2765 }
2766 }
2767 }
2768
2769 pub fn anim_ids_mut(&mut self) -> &mut [u32] {
2771 unsafe {
2773 let n = ffi::whiteout_m3_M3SubTrackContainer_get_animIds_count(self.raw.as_ptr());
2774 let p = ffi::whiteout_m3_M3SubTrackContainer_get_animIds_data(self.raw.as_ptr())
2775 as *mut u32;
2776 if p.is_null() || n == 0 {
2777 &mut []
2778 } else {
2779 core::slice::from_raw_parts_mut(p, n)
2780 }
2781 }
2782 }
2783
2784 pub fn set_anim_ids(&mut self, values: &[u32]) {
2785 unsafe {
2787 ffi::whiteout_m3_M3SubTrackContainer_assign_animIds(
2788 self.raw.as_ptr(),
2789 values.as_ptr() as *const _,
2790 values.len(),
2791 )
2792 }
2793 }
2794
2795 pub fn resize_anim_ids(&mut self, count: usize) {
2796 unsafe { ffi::whiteout_m3_M3SubTrackContainer_resize_animIds(self.raw.as_ptr(), count) }
2799 }
2800
2801 pub fn anim_refs(&self) -> &[u32] {
2804 unsafe {
2807 let n = ffi::whiteout_m3_M3SubTrackContainer_get_animRefs_count(self.raw.as_ptr());
2808 let p = ffi::whiteout_m3_M3SubTrackContainer_get_animRefs_data(self.raw.as_ptr());
2809 if p.is_null() || n == 0 {
2810 &[]
2811 } else {
2812 core::slice::from_raw_parts(p, n)
2813 }
2814 }
2815 }
2816
2817 pub fn anim_refs_mut(&mut self) -> &mut [u32] {
2819 unsafe {
2821 let n = ffi::whiteout_m3_M3SubTrackContainer_get_animRefs_count(self.raw.as_ptr());
2822 let p = ffi::whiteout_m3_M3SubTrackContainer_get_animRefs_data(self.raw.as_ptr())
2823 as *mut u32;
2824 if p.is_null() || n == 0 {
2825 &mut []
2826 } else {
2827 core::slice::from_raw_parts_mut(p, n)
2828 }
2829 }
2830 }
2831
2832 pub fn set_anim_refs(&mut self, values: &[u32]) {
2833 unsafe {
2835 ffi::whiteout_m3_M3SubTrackContainer_assign_animRefs(
2836 self.raw.as_ptr(),
2837 values.as_ptr() as *const _,
2838 values.len(),
2839 )
2840 }
2841 }
2842
2843 pub fn resize_anim_refs(&mut self, count: usize) {
2844 unsafe { ffi::whiteout_m3_M3SubTrackContainer_resize_animRefs(self.raw.as_ptr(), count) }
2847 }
2848
2849 pub fn unknown(&self) -> u32 {
2851 unsafe { ffi::whiteout_m3_M3SubTrackContainer_get_unknown(self.raw.as_ptr()) }
2853 }
2854
2855 pub fn set_unknown(&mut self, value: u32) {
2856 unsafe { ffi::whiteout_m3_M3SubTrackContainer_set_unknown(self.raw.as_ptr(), value) }
2858 }
2859}
2860
2861impl Default for SubTrackContainer {
2862 fn default() -> Self {
2863 Self::new()
2864 }
2865}
2866
2867pub struct AnimationGroup {
2871 pub(crate) raw: core::ptr::NonNull<ffi::whiteout_M3AnimationGroup>,
2872}
2873
2874impl Drop for AnimationGroup {
2875 fn drop(&mut self) {
2876 unsafe { ffi::whiteout_m3_M3AnimationGroup_delete(self.raw.as_ptr()) }
2878 }
2879}
2880
2881impl AnimationGroup {
2882 #[allow(dead_code)] pub(crate) unsafe fn from_raw(raw: *mut ffi::whiteout_M3AnimationGroup) -> Option<Self> {
2886 core::ptr::NonNull::new(raw).map(|raw| AnimationGroup { raw })
2887 }
2888}
2889
2890unsafe impl Send for AnimationGroup {}
2895
2896impl core::fmt::Debug for AnimationGroup {
2897 fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
2898 f.debug_struct("AnimationGroup").finish_non_exhaustive()
2899 }
2900}
2901
2902impl AnimationGroup {
2903 pub fn new() -> Self {
2906 unsafe {
2909 let raw = ffi::whiteout_m3_M3AnimationGroup_new();
2910 Self::from_raw(raw).expect("native AnimationGroup allocation failed")
2911 }
2912 }
2913
2914 pub fn name(&self) -> String {
2916 unsafe {
2918 crate::support::take_string(ffi::whiteout_m3_M3AnimationGroup_get_name(
2919 self.raw.as_ptr(),
2920 ))
2921 }
2922 }
2923
2924 pub fn set_name(&mut self, value: &str) {
2925 let value = std::ffi::CString::new(value).unwrap_or_default();
2926 unsafe { ffi::whiteout_m3_M3AnimationGroup_set_name(self.raw.as_ptr(), value.as_ptr()) }
2928 }
2929
2930 pub fn subtrack_indices(&self) -> &[u32] {
2933 unsafe {
2936 let n = ffi::whiteout_m3_M3AnimationGroup_get_subtrackIndices_count(self.raw.as_ptr());
2937 let p = ffi::whiteout_m3_M3AnimationGroup_get_subtrackIndices_data(self.raw.as_ptr());
2938 if p.is_null() || n == 0 {
2939 &[]
2940 } else {
2941 core::slice::from_raw_parts(p, n)
2942 }
2943 }
2944 }
2945
2946 pub fn subtrack_indices_mut(&mut self) -> &mut [u32] {
2948 unsafe {
2950 let n = ffi::whiteout_m3_M3AnimationGroup_get_subtrackIndices_count(self.raw.as_ptr());
2951 let p = ffi::whiteout_m3_M3AnimationGroup_get_subtrackIndices_data(self.raw.as_ptr())
2952 as *mut u32;
2953 if p.is_null() || n == 0 {
2954 &mut []
2955 } else {
2956 core::slice::from_raw_parts_mut(p, n)
2957 }
2958 }
2959 }
2960
2961 pub fn set_subtrack_indices(&mut self, values: &[u32]) {
2962 unsafe {
2964 ffi::whiteout_m3_M3AnimationGroup_assign_subtrackIndices(
2965 self.raw.as_ptr(),
2966 values.as_ptr() as *const _,
2967 values.len(),
2968 )
2969 }
2970 }
2971
2972 pub fn resize_subtrack_indices(&mut self, count: usize) {
2973 unsafe {
2976 ffi::whiteout_m3_M3AnimationGroup_resize_subtrackIndices(self.raw.as_ptr(), count)
2977 }
2978 }
2979}
2980
2981impl Default for AnimationGroup {
2982 fn default() -> Self {
2983 Self::new()
2984 }
2985}
2986
2987pub struct AnimationState {
2991 pub(crate) raw: core::ptr::NonNull<ffi::whiteout_M3AnimationState>,
2992}
2993
2994impl Drop for AnimationState {
2995 fn drop(&mut self) {
2996 unsafe { ffi::whiteout_m3_M3AnimationState_delete(self.raw.as_ptr()) }
2998 }
2999}
3000
3001impl AnimationState {
3002 #[allow(dead_code)] pub(crate) unsafe fn from_raw(raw: *mut ffi::whiteout_M3AnimationState) -> Option<Self> {
3006 core::ptr::NonNull::new(raw).map(|raw| AnimationState { raw })
3007 }
3008}
3009
3010unsafe impl Send for AnimationState {}
3015
3016impl core::fmt::Debug for AnimationState {
3017 fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
3018 f.debug_struct("AnimationState").finish_non_exhaustive()
3019 }
3020}
3021
3022impl AnimationState {
3023 pub fn new() -> Self {
3026 unsafe {
3029 let raw = ffi::whiteout_m3_M3AnimationState_new();
3030 Self::from_raw(raw).expect("native AnimationState allocation failed")
3031 }
3032 }
3033
3034 pub fn anim_ids(&self) -> &[u32] {
3037 unsafe {
3040 let n = ffi::whiteout_m3_M3AnimationState_get_animIds_count(self.raw.as_ptr());
3041 let p = ffi::whiteout_m3_M3AnimationState_get_animIds_data(self.raw.as_ptr());
3042 if p.is_null() || n == 0 {
3043 &[]
3044 } else {
3045 core::slice::from_raw_parts(p, n)
3046 }
3047 }
3048 }
3049
3050 pub fn anim_ids_mut(&mut self) -> &mut [u32] {
3052 unsafe {
3054 let n = ffi::whiteout_m3_M3AnimationState_get_animIds_count(self.raw.as_ptr());
3055 let p =
3056 ffi::whiteout_m3_M3AnimationState_get_animIds_data(self.raw.as_ptr()) as *mut u32;
3057 if p.is_null() || n == 0 {
3058 &mut []
3059 } else {
3060 core::slice::from_raw_parts_mut(p, n)
3061 }
3062 }
3063 }
3064
3065 pub fn set_anim_ids(&mut self, values: &[u32]) {
3066 unsafe {
3068 ffi::whiteout_m3_M3AnimationState_assign_animIds(
3069 self.raw.as_ptr(),
3070 values.as_ptr() as *const _,
3071 values.len(),
3072 )
3073 }
3074 }
3075
3076 pub fn resize_anim_ids(&mut self, count: usize) {
3077 unsafe { ffi::whiteout_m3_M3AnimationState_resize_animIds(self.raw.as_ptr(), count) }
3080 }
3081
3082 pub const fn unknown_len() -> usize {
3085 16
3086 }
3087
3088 pub fn unknown(&self, index: usize) -> u8 {
3091 assert!(index < 16, "unknown index {index} out of range (len 16)");
3092 unsafe { ffi::whiteout_m3_M3AnimationState_get_unknown_at(self.raw.as_ptr(), index) }
3094 }
3095
3096 pub fn set_unknown(&mut self, index: usize, value: u8) {
3099 assert!(index < 16, "unknown index {index} out of range (len 16)");
3100 unsafe { ffi::whiteout_m3_M3AnimationState_set_unknown_at(self.raw.as_ptr(), index, value) }
3102 }
3103}
3104
3105impl Default for AnimationState {
3106 fn default() -> Self {
3107 Self::new()
3108 }
3109}
3110
3111pub struct BoneAnimationSet {
3115 pub(crate) raw: core::ptr::NonNull<ffi::whiteout_M3BoneAnimationSet>,
3116}
3117
3118impl Drop for BoneAnimationSet {
3119 fn drop(&mut self) {
3120 unsafe { ffi::whiteout_m3_M3BoneAnimationSet_delete(self.raw.as_ptr()) }
3122 }
3123}
3124
3125impl BoneAnimationSet {
3126 #[allow(dead_code)] pub(crate) unsafe fn from_raw(raw: *mut ffi::whiteout_M3BoneAnimationSet) -> Option<Self> {
3130 core::ptr::NonNull::new(raw).map(|raw| BoneAnimationSet { raw })
3131 }
3132}
3133
3134unsafe impl Send for BoneAnimationSet {}
3139
3140impl core::fmt::Debug for BoneAnimationSet {
3141 fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
3142 f.debug_struct("BoneAnimationSet").finish_non_exhaustive()
3143 }
3144}
3145
3146impl BoneAnimationSet {
3147 pub fn new() -> Self {
3150 unsafe {
3153 let raw = ffi::whiteout_m3_M3BoneAnimationSet_new();
3154 Self::from_raw(raw).expect("native BoneAnimationSet allocation failed")
3155 }
3156 }
3157
3158 pub fn animation_sequence_index(&self) -> u16 {
3160 unsafe { ffi::whiteout_m3_M3BoneAnimationSet_get_animationSequenceIndex(self.raw.as_ptr()) }
3162 }
3163
3164 pub fn set_animation_sequence_index(&mut self, value: u16) {
3165 unsafe {
3167 ffi::whiteout_m3_M3BoneAnimationSet_set_animationSequenceIndex(self.raw.as_ptr(), value)
3168 }
3169 }
3170
3171 pub fn fallback_sequence_index(&self) -> u16 {
3173 unsafe { ffi::whiteout_m3_M3BoneAnimationSet_get_fallbackSequenceIndex(self.raw.as_ptr()) }
3175 }
3176
3177 pub fn set_fallback_sequence_index(&mut self, value: u16) {
3178 unsafe {
3180 ffi::whiteout_m3_M3BoneAnimationSet_set_fallbackSequenceIndex(self.raw.as_ptr(), value)
3181 }
3182 }
3183
3184 pub fn name(&self) -> String {
3186 unsafe {
3188 crate::support::take_string(ffi::whiteout_m3_M3BoneAnimationSet_get_name(
3189 self.raw.as_ptr(),
3190 ))
3191 }
3192 }
3193
3194 pub fn set_name(&mut self, value: &str) {
3195 let value = std::ffi::CString::new(value).unwrap_or_default();
3196 unsafe { ffi::whiteout_m3_M3BoneAnimationSet_set_name(self.raw.as_ptr(), value.as_ptr()) }
3198 }
3199
3200 pub fn split_items(&self) -> &[u16] {
3203 unsafe {
3206 let n = ffi::whiteout_m3_M3BoneAnimationSet_get_splitItems_count(self.raw.as_ptr());
3207 let p = ffi::whiteout_m3_M3BoneAnimationSet_get_splitItems_data(self.raw.as_ptr());
3208 if p.is_null() || n == 0 {
3209 &[]
3210 } else {
3211 core::slice::from_raw_parts(p, n)
3212 }
3213 }
3214 }
3215
3216 pub fn split_items_mut(&mut self) -> &mut [u16] {
3218 unsafe {
3220 let n = ffi::whiteout_m3_M3BoneAnimationSet_get_splitItems_count(self.raw.as_ptr());
3221 let p = ffi::whiteout_m3_M3BoneAnimationSet_get_splitItems_data(self.raw.as_ptr())
3222 as *mut u16;
3223 if p.is_null() || n == 0 {
3224 &mut []
3225 } else {
3226 core::slice::from_raw_parts_mut(p, n)
3227 }
3228 }
3229 }
3230
3231 pub fn set_split_items(&mut self, values: &[u16]) {
3232 unsafe {
3234 ffi::whiteout_m3_M3BoneAnimationSet_assign_splitItems(
3235 self.raw.as_ptr(),
3236 values.as_ptr() as *const _,
3237 values.len(),
3238 )
3239 }
3240 }
3241
3242 pub fn resize_split_items(&mut self, count: usize) {
3243 unsafe { ffi::whiteout_m3_M3BoneAnimationSet_resize_splitItems(self.raw.as_ptr(), count) }
3246 }
3247}
3248
3249impl Default for BoneAnimationSet {
3250 fn default() -> Self {
3251 Self::new()
3252 }
3253}
3254
3255pub struct ParticleEmitter {
3259 pub(crate) raw: core::ptr::NonNull<ffi::whiteout_M3ParticleEmitter>,
3260}
3261
3262impl Drop for ParticleEmitter {
3263 fn drop(&mut self) {
3264 unsafe { ffi::whiteout_m3_M3ParticleEmitter_delete(self.raw.as_ptr()) }
3266 }
3267}
3268
3269impl ParticleEmitter {
3270 #[allow(dead_code)] pub(crate) unsafe fn from_raw(raw: *mut ffi::whiteout_M3ParticleEmitter) -> Option<Self> {
3274 core::ptr::NonNull::new(raw).map(|raw| ParticleEmitter { raw })
3275 }
3276}
3277
3278unsafe impl Send for ParticleEmitter {}
3283
3284impl core::fmt::Debug for ParticleEmitter {
3285 fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
3286 f.debug_struct("ParticleEmitter").finish_non_exhaustive()
3287 }
3288}
3289
3290impl ParticleEmitter {
3291 pub fn new() -> Self {
3294 unsafe {
3297 let raw = ffi::whiteout_m3_M3ParticleEmitter_new();
3298 Self::from_raw(raw).expect("native ParticleEmitter allocation failed")
3299 }
3300 }
3301
3302 pub fn bone_index(&self) -> u32 {
3304 unsafe { ffi::whiteout_m3_M3ParticleEmitter_get_boneIndex(self.raw.as_ptr()) }
3306 }
3307
3308 pub fn set_bone_index(&mut self, value: u32) {
3309 unsafe { ffi::whiteout_m3_M3ParticleEmitter_set_boneIndex(self.raw.as_ptr(), value) }
3311 }
3312
3313 pub fn material_index(&self) -> u32 {
3315 unsafe { ffi::whiteout_m3_M3ParticleEmitter_get_materialIndex(self.raw.as_ptr()) }
3317 }
3318
3319 pub fn set_material_index(&mut self, value: u32) {
3320 unsafe { ffi::whiteout_m3_M3ParticleEmitter_set_materialIndex(self.raw.as_ptr(), value) }
3322 }
3323
3324 pub fn additional_flags(&self) -> ParticleAdditionalFlag {
3325 ParticleAdditionalFlag(unsafe {
3327 ffi::whiteout_m3_M3ParticleEmitter_get_additionalFlags(self.raw.as_ptr())
3328 })
3329 }
3330
3331 pub fn set_additional_flags(&mut self, value: ParticleAdditionalFlag) {
3332 unsafe {
3334 ffi::whiteout_m3_M3ParticleEmitter_set_additionalFlags(self.raw.as_ptr(), value.0)
3335 }
3336 }
3337
3338 pub fn initial_speed(&self) -> crate::support::Ref<'_, AnimRefF32> {
3341 unsafe {
3344 crate::support::Ref::new(AnimRefF32 {
3345 raw: core::ptr::NonNull::new_unchecked(
3346 ffi::whiteout_m3_M3ParticleEmitter_get_initialSpeed(self.raw.as_ptr()),
3347 ),
3348 })
3349 }
3350 }
3351
3352 pub fn initial_speed_mut(&mut self) -> crate::support::RefMut<'_, AnimRefF32> {
3353 unsafe {
3355 crate::support::RefMut::new(AnimRefF32 {
3356 raw: core::ptr::NonNull::new_unchecked(
3357 ffi::whiteout_m3_M3ParticleEmitter_get_initialSpeed(self.raw.as_ptr()),
3358 ),
3359 })
3360 }
3361 }
3362
3363 pub fn initial_speed_random(&self) -> crate::support::Ref<'_, AnimRefF32> {
3366 unsafe {
3369 crate::support::Ref::new(AnimRefF32 {
3370 raw: core::ptr::NonNull::new_unchecked(
3371 ffi::whiteout_m3_M3ParticleEmitter_get_initialSpeedRandom(self.raw.as_ptr()),
3372 ),
3373 })
3374 }
3375 }
3376
3377 pub fn initial_speed_random_mut(&mut self) -> crate::support::RefMut<'_, AnimRefF32> {
3378 unsafe {
3380 crate::support::RefMut::new(AnimRefF32 {
3381 raw: core::ptr::NonNull::new_unchecked(
3382 ffi::whiteout_m3_M3ParticleEmitter_get_initialSpeedRandom(self.raw.as_ptr()),
3383 ),
3384 })
3385 }
3386 }
3387
3388 pub fn initial_yaw(&self) -> crate::support::Ref<'_, AnimRefF32> {
3391 unsafe {
3394 crate::support::Ref::new(AnimRefF32 {
3395 raw: core::ptr::NonNull::new_unchecked(
3396 ffi::whiteout_m3_M3ParticleEmitter_get_initialYaw(self.raw.as_ptr()),
3397 ),
3398 })
3399 }
3400 }
3401
3402 pub fn initial_yaw_mut(&mut self) -> crate::support::RefMut<'_, AnimRefF32> {
3403 unsafe {
3405 crate::support::RefMut::new(AnimRefF32 {
3406 raw: core::ptr::NonNull::new_unchecked(
3407 ffi::whiteout_m3_M3ParticleEmitter_get_initialYaw(self.raw.as_ptr()),
3408 ),
3409 })
3410 }
3411 }
3412
3413 pub fn initial_pitch(&self) -> crate::support::Ref<'_, AnimRefF32> {
3416 unsafe {
3419 crate::support::Ref::new(AnimRefF32 {
3420 raw: core::ptr::NonNull::new_unchecked(
3421 ffi::whiteout_m3_M3ParticleEmitter_get_initialPitch(self.raw.as_ptr()),
3422 ),
3423 })
3424 }
3425 }
3426
3427 pub fn initial_pitch_mut(&mut self) -> crate::support::RefMut<'_, AnimRefF32> {
3428 unsafe {
3430 crate::support::RefMut::new(AnimRefF32 {
3431 raw: core::ptr::NonNull::new_unchecked(
3432 ffi::whiteout_m3_M3ParticleEmitter_get_initialPitch(self.raw.as_ptr()),
3433 ),
3434 })
3435 }
3436 }
3437
3438 pub fn initial_horizontal(&self) -> crate::support::Ref<'_, AnimRefF32> {
3441 unsafe {
3444 crate::support::Ref::new(AnimRefF32 {
3445 raw: core::ptr::NonNull::new_unchecked(
3446 ffi::whiteout_m3_M3ParticleEmitter_get_initialHorizontal(self.raw.as_ptr()),
3447 ),
3448 })
3449 }
3450 }
3451
3452 pub fn initial_horizontal_mut(&mut self) -> crate::support::RefMut<'_, AnimRefF32> {
3453 unsafe {
3455 crate::support::RefMut::new(AnimRefF32 {
3456 raw: core::ptr::NonNull::new_unchecked(
3457 ffi::whiteout_m3_M3ParticleEmitter_get_initialHorizontal(self.raw.as_ptr()),
3458 ),
3459 })
3460 }
3461 }
3462
3463 pub fn initial_vertical(&self) -> crate::support::Ref<'_, AnimRefF32> {
3466 unsafe {
3469 crate::support::Ref::new(AnimRefF32 {
3470 raw: core::ptr::NonNull::new_unchecked(
3471 ffi::whiteout_m3_M3ParticleEmitter_get_initialVertical(self.raw.as_ptr()),
3472 ),
3473 })
3474 }
3475 }
3476
3477 pub fn initial_vertical_mut(&mut self) -> crate::support::RefMut<'_, AnimRefF32> {
3478 unsafe {
3480 crate::support::RefMut::new(AnimRefF32 {
3481 raw: core::ptr::NonNull::new_unchecked(
3482 ffi::whiteout_m3_M3ParticleEmitter_get_initialVertical(self.raw.as_ptr()),
3483 ),
3484 })
3485 }
3486 }
3487
3488 pub fn lifetime(&self) -> crate::support::Ref<'_, AnimRefF32> {
3491 unsafe {
3494 crate::support::Ref::new(AnimRefF32 {
3495 raw: core::ptr::NonNull::new_unchecked(
3496 ffi::whiteout_m3_M3ParticleEmitter_get_lifetime(self.raw.as_ptr()),
3497 ),
3498 })
3499 }
3500 }
3501
3502 pub fn lifetime_mut(&mut self) -> crate::support::RefMut<'_, AnimRefF32> {
3503 unsafe {
3505 crate::support::RefMut::new(AnimRefF32 {
3506 raw: core::ptr::NonNull::new_unchecked(
3507 ffi::whiteout_m3_M3ParticleEmitter_get_lifetime(self.raw.as_ptr()),
3508 ),
3509 })
3510 }
3511 }
3512
3513 pub fn lifetime_random(&self) -> crate::support::Ref<'_, AnimRefF32> {
3516 unsafe {
3519 crate::support::Ref::new(AnimRefF32 {
3520 raw: core::ptr::NonNull::new_unchecked(
3521 ffi::whiteout_m3_M3ParticleEmitter_get_lifetimeRandom(self.raw.as_ptr()),
3522 ),
3523 })
3524 }
3525 }
3526
3527 pub fn lifetime_random_mut(&mut self) -> crate::support::RefMut<'_, AnimRefF32> {
3528 unsafe {
3530 crate::support::RefMut::new(AnimRefF32 {
3531 raw: core::ptr::NonNull::new_unchecked(
3532 ffi::whiteout_m3_M3ParticleEmitter_get_lifetimeRandom(self.raw.as_ptr()),
3533 ),
3534 })
3535 }
3536 }
3537
3538 pub fn kill_radius(&self) -> f32 {
3540 unsafe { ffi::whiteout_m3_M3ParticleEmitter_get_killRadius(self.raw.as_ptr()) }
3542 }
3543
3544 pub fn set_kill_radius(&mut self, value: f32) {
3545 unsafe { ffi::whiteout_m3_M3ParticleEmitter_set_killRadius(self.raw.as_ptr(), value) }
3547 }
3548
3549 pub fn gravity_x(&self) -> u32 {
3551 unsafe { ffi::whiteout_m3_M3ParticleEmitter_get_gravityX(self.raw.as_ptr()) }
3553 }
3554
3555 pub fn set_gravity_x(&mut self, value: u32) {
3556 unsafe { ffi::whiteout_m3_M3ParticleEmitter_set_gravityX(self.raw.as_ptr(), value) }
3558 }
3559
3560 pub fn gravity_y(&self) -> u32 {
3562 unsafe { ffi::whiteout_m3_M3ParticleEmitter_get_gravityY(self.raw.as_ptr()) }
3564 }
3565
3566 pub fn set_gravity_y(&mut self, value: u32) {
3567 unsafe { ffi::whiteout_m3_M3ParticleEmitter_set_gravityY(self.raw.as_ptr(), value) }
3569 }
3570
3571 pub fn gravity(&self) -> f32 {
3573 unsafe { ffi::whiteout_m3_M3ParticleEmitter_get_gravity(self.raw.as_ptr()) }
3575 }
3576
3577 pub fn set_gravity(&mut self, value: f32) {
3578 unsafe { ffi::whiteout_m3_M3ParticleEmitter_set_gravity(self.raw.as_ptr(), value) }
3580 }
3581
3582 pub fn size_mid_time(&self) -> f32 {
3584 unsafe { ffi::whiteout_m3_M3ParticleEmitter_get_sizeMidTime(self.raw.as_ptr()) }
3586 }
3587
3588 pub fn set_size_mid_time(&mut self, value: f32) {
3589 unsafe { ffi::whiteout_m3_M3ParticleEmitter_set_sizeMidTime(self.raw.as_ptr(), value) }
3591 }
3592
3593 pub fn color_mid_time(&self) -> f32 {
3595 unsafe { ffi::whiteout_m3_M3ParticleEmitter_get_colorMidTime(self.raw.as_ptr()) }
3597 }
3598
3599 pub fn set_color_mid_time(&mut self, value: f32) {
3600 unsafe { ffi::whiteout_m3_M3ParticleEmitter_set_colorMidTime(self.raw.as_ptr(), value) }
3602 }
3603
3604 pub fn alpha_mid_time(&self) -> f32 {
3606 unsafe { ffi::whiteout_m3_M3ParticleEmitter_get_alphaMidTime(self.raw.as_ptr()) }
3608 }
3609
3610 pub fn set_alpha_mid_time(&mut self, value: f32) {
3611 unsafe { ffi::whiteout_m3_M3ParticleEmitter_set_alphaMidTime(self.raw.as_ptr(), value) }
3613 }
3614
3615 pub fn rotation_mid_time(&self) -> f32 {
3617 unsafe { ffi::whiteout_m3_M3ParticleEmitter_get_rotationMidTime(self.raw.as_ptr()) }
3619 }
3620
3621 pub fn set_rotation_mid_time(&mut self, value: f32) {
3622 unsafe { ffi::whiteout_m3_M3ParticleEmitter_set_rotationMidTime(self.raw.as_ptr(), value) }
3624 }
3625
3626 pub fn size_mid_hold_time(&self) -> f32 {
3628 unsafe { ffi::whiteout_m3_M3ParticleEmitter_get_sizeMidHoldTime(self.raw.as_ptr()) }
3630 }
3631
3632 pub fn set_size_mid_hold_time(&mut self, value: f32) {
3633 unsafe { ffi::whiteout_m3_M3ParticleEmitter_set_sizeMidHoldTime(self.raw.as_ptr(), value) }
3635 }
3636
3637 pub fn color_mid_hold_time(&self) -> f32 {
3639 unsafe { ffi::whiteout_m3_M3ParticleEmitter_get_colorMidHoldTime(self.raw.as_ptr()) }
3641 }
3642
3643 pub fn set_color_mid_hold_time(&mut self, value: f32) {
3644 unsafe { ffi::whiteout_m3_M3ParticleEmitter_set_colorMidHoldTime(self.raw.as_ptr(), value) }
3646 }
3647
3648 pub fn alpha_mid_hold_time(&self) -> f32 {
3650 unsafe { ffi::whiteout_m3_M3ParticleEmitter_get_alphaMidHoldTime(self.raw.as_ptr()) }
3652 }
3653
3654 pub fn set_alpha_mid_hold_time(&mut self, value: f32) {
3655 unsafe { ffi::whiteout_m3_M3ParticleEmitter_set_alphaMidHoldTime(self.raw.as_ptr(), value) }
3657 }
3658
3659 pub fn rotation_mid_hold_time(&self) -> f32 {
3661 unsafe { ffi::whiteout_m3_M3ParticleEmitter_get_rotationMidHoldTime(self.raw.as_ptr()) }
3663 }
3664
3665 pub fn set_rotation_mid_hold_time(&mut self, value: f32) {
3666 unsafe {
3668 ffi::whiteout_m3_M3ParticleEmitter_set_rotationMidHoldTime(self.raw.as_ptr(), value)
3669 }
3670 }
3671
3672 pub fn size_animation(&self) -> crate::support::Ref<'_, AnimRefVector3f> {
3675 unsafe {
3678 crate::support::Ref::new(AnimRefVector3f {
3679 raw: core::ptr::NonNull::new_unchecked(
3680 ffi::whiteout_m3_M3ParticleEmitter_get_sizeAnimation(self.raw.as_ptr()),
3681 ),
3682 })
3683 }
3684 }
3685
3686 pub fn size_animation_mut(&mut self) -> crate::support::RefMut<'_, AnimRefVector3f> {
3687 unsafe {
3689 crate::support::RefMut::new(AnimRefVector3f {
3690 raw: core::ptr::NonNull::new_unchecked(
3691 ffi::whiteout_m3_M3ParticleEmitter_get_sizeAnimation(self.raw.as_ptr()),
3692 ),
3693 })
3694 }
3695 }
3696
3697 pub fn rotation_animation(&self) -> crate::support::Ref<'_, AnimRefVector3f> {
3700 unsafe {
3703 crate::support::Ref::new(AnimRefVector3f {
3704 raw: core::ptr::NonNull::new_unchecked(
3705 ffi::whiteout_m3_M3ParticleEmitter_get_rotationAnimation(self.raw.as_ptr()),
3706 ),
3707 })
3708 }
3709 }
3710
3711 pub fn rotation_animation_mut(&mut self) -> crate::support::RefMut<'_, AnimRefVector3f> {
3712 unsafe {
3714 crate::support::RefMut::new(AnimRefVector3f {
3715 raw: core::ptr::NonNull::new_unchecked(
3716 ffi::whiteout_m3_M3ParticleEmitter_get_rotationAnimation(self.raw.as_ptr()),
3717 ),
3718 })
3719 }
3720 }
3721
3722 pub fn color_start(&self) -> crate::support::Ref<'_, AnimRefM3ColorBGRA> {
3725 unsafe {
3728 crate::support::Ref::new(AnimRefM3ColorBGRA {
3729 raw: core::ptr::NonNull::new_unchecked(
3730 ffi::whiteout_m3_M3ParticleEmitter_get_colorStart(self.raw.as_ptr()),
3731 ),
3732 })
3733 }
3734 }
3735
3736 pub fn color_start_mut(&mut self) -> crate::support::RefMut<'_, AnimRefM3ColorBGRA> {
3737 unsafe {
3739 crate::support::RefMut::new(AnimRefM3ColorBGRA {
3740 raw: core::ptr::NonNull::new_unchecked(
3741 ffi::whiteout_m3_M3ParticleEmitter_get_colorStart(self.raw.as_ptr()),
3742 ),
3743 })
3744 }
3745 }
3746
3747 pub fn color_mid(&self) -> crate::support::Ref<'_, AnimRefM3ColorBGRA> {
3750 unsafe {
3753 crate::support::Ref::new(AnimRefM3ColorBGRA {
3754 raw: core::ptr::NonNull::new_unchecked(
3755 ffi::whiteout_m3_M3ParticleEmitter_get_colorMid(self.raw.as_ptr()),
3756 ),
3757 })
3758 }
3759 }
3760
3761 pub fn color_mid_mut(&mut self) -> crate::support::RefMut<'_, AnimRefM3ColorBGRA> {
3762 unsafe {
3764 crate::support::RefMut::new(AnimRefM3ColorBGRA {
3765 raw: core::ptr::NonNull::new_unchecked(
3766 ffi::whiteout_m3_M3ParticleEmitter_get_colorMid(self.raw.as_ptr()),
3767 ),
3768 })
3769 }
3770 }
3771
3772 pub fn color_end(&self) -> crate::support::Ref<'_, AnimRefM3ColorBGRA> {
3775 unsafe {
3778 crate::support::Ref::new(AnimRefM3ColorBGRA {
3779 raw: core::ptr::NonNull::new_unchecked(
3780 ffi::whiteout_m3_M3ParticleEmitter_get_colorEnd(self.raw.as_ptr()),
3781 ),
3782 })
3783 }
3784 }
3785
3786 pub fn color_end_mut(&mut self) -> crate::support::RefMut<'_, AnimRefM3ColorBGRA> {
3787 unsafe {
3789 crate::support::RefMut::new(AnimRefM3ColorBGRA {
3790 raw: core::ptr::NonNull::new_unchecked(
3791 ffi::whiteout_m3_M3ParticleEmitter_get_colorEnd(self.raw.as_ptr()),
3792 ),
3793 })
3794 }
3795 }
3796
3797 pub fn drag(&self) -> f32 {
3799 unsafe { ffi::whiteout_m3_M3ParticleEmitter_get_drag(self.raw.as_ptr()) }
3801 }
3802
3803 pub fn set_drag(&mut self, value: f32) {
3804 unsafe { ffi::whiteout_m3_M3ParticleEmitter_set_drag(self.raw.as_ptr(), value) }
3806 }
3807
3808 pub fn mass(&self) -> f32 {
3810 unsafe { ffi::whiteout_m3_M3ParticleEmitter_get_mass(self.raw.as_ptr()) }
3812 }
3813
3814 pub fn set_mass(&mut self, value: f32) {
3815 unsafe { ffi::whiteout_m3_M3ParticleEmitter_set_mass(self.raw.as_ptr(), value) }
3817 }
3818
3819 pub fn mass_random(&self) -> f32 {
3821 unsafe { ffi::whiteout_m3_M3ParticleEmitter_get_massRandom(self.raw.as_ptr()) }
3823 }
3824
3825 pub fn set_mass_random(&mut self, value: f32) {
3826 unsafe { ffi::whiteout_m3_M3ParticleEmitter_set_massRandom(self.raw.as_ptr(), value) }
3828 }
3829
3830 pub fn mass_size_multiplier(&self) -> f32 {
3832 unsafe { ffi::whiteout_m3_M3ParticleEmitter_get_massSizeMultiplier(self.raw.as_ptr()) }
3834 }
3835
3836 pub fn set_mass_size_multiplier(&mut self, value: f32) {
3837 unsafe {
3839 ffi::whiteout_m3_M3ParticleEmitter_set_massSizeMultiplier(self.raw.as_ptr(), value)
3840 }
3841 }
3842
3843 pub fn local_forces(&self) -> u16 {
3845 unsafe { ffi::whiteout_m3_M3ParticleEmitter_get_localForces(self.raw.as_ptr()) }
3847 }
3848
3849 pub fn set_local_forces(&mut self, value: u16) {
3850 unsafe { ffi::whiteout_m3_M3ParticleEmitter_set_localForces(self.raw.as_ptr(), value) }
3852 }
3853
3854 pub fn world_forces(&self) -> u16 {
3856 unsafe { ffi::whiteout_m3_M3ParticleEmitter_get_worldForces(self.raw.as_ptr()) }
3858 }
3859
3860 pub fn set_world_forces(&mut self, value: u16) {
3861 unsafe { ffi::whiteout_m3_M3ParticleEmitter_set_worldForces(self.raw.as_ptr(), value) }
3863 }
3864
3865 pub fn local_forces_fallback(&self) -> u16 {
3867 unsafe { ffi::whiteout_m3_M3ParticleEmitter_get_localForcesFallback(self.raw.as_ptr()) }
3869 }
3870
3871 pub fn set_local_forces_fallback(&mut self, value: u16) {
3872 unsafe {
3874 ffi::whiteout_m3_M3ParticleEmitter_set_localForcesFallback(self.raw.as_ptr(), value)
3875 }
3876 }
3877
3878 pub fn world_forces_fallback(&self) -> u16 {
3880 unsafe { ffi::whiteout_m3_M3ParticleEmitter_get_worldForcesFallback(self.raw.as_ptr()) }
3882 }
3883
3884 pub fn set_world_forces_fallback(&mut self, value: u16) {
3885 unsafe {
3887 ffi::whiteout_m3_M3ParticleEmitter_set_worldForcesFallback(self.raw.as_ptr(), value)
3888 }
3889 }
3890
3891 pub fn world_forces_mass_multiplier(&self) -> f32 {
3893 unsafe {
3895 ffi::whiteout_m3_M3ParticleEmitter_get_worldForcesMassMultiplier(self.raw.as_ptr())
3896 }
3897 }
3898
3899 pub fn set_world_forces_mass_multiplier(&mut self, value: f32) {
3900 unsafe {
3902 ffi::whiteout_m3_M3ParticleEmitter_set_worldForcesMassMultiplier(
3903 self.raw.as_ptr(),
3904 value,
3905 )
3906 }
3907 }
3908
3909 pub fn noise_amplitude(&self) -> f32 {
3911 unsafe { ffi::whiteout_m3_M3ParticleEmitter_get_noiseAmplitude(self.raw.as_ptr()) }
3913 }
3914
3915 pub fn set_noise_amplitude(&mut self, value: f32) {
3916 unsafe { ffi::whiteout_m3_M3ParticleEmitter_set_noiseAmplitude(self.raw.as_ptr(), value) }
3918 }
3919
3920 pub fn noise_frequency(&self) -> f32 {
3922 unsafe { ffi::whiteout_m3_M3ParticleEmitter_get_noiseFrequency(self.raw.as_ptr()) }
3924 }
3925
3926 pub fn set_noise_frequency(&mut self, value: f32) {
3927 unsafe { ffi::whiteout_m3_M3ParticleEmitter_set_noiseFrequency(self.raw.as_ptr(), value) }
3929 }
3930
3931 pub fn noise_coherence(&self) -> f32 {
3933 unsafe { ffi::whiteout_m3_M3ParticleEmitter_get_noiseCoherence(self.raw.as_ptr()) }
3935 }
3936
3937 pub fn set_noise_coherence(&mut self, value: f32) {
3938 unsafe { ffi::whiteout_m3_M3ParticleEmitter_set_noiseCoherence(self.raw.as_ptr(), value) }
3940 }
3941
3942 pub fn noise_edge(&self) -> f32 {
3944 unsafe { ffi::whiteout_m3_M3ParticleEmitter_get_noiseEdge(self.raw.as_ptr()) }
3946 }
3947
3948 pub fn set_noise_edge(&mut self, value: f32) {
3949 unsafe { ffi::whiteout_m3_M3ParticleEmitter_set_noiseEdge(self.raw.as_ptr(), value) }
3951 }
3952
3953 pub fn index_plus_length(&self) -> u32 {
3955 unsafe { ffi::whiteout_m3_M3ParticleEmitter_get_indexPlusLength(self.raw.as_ptr()) }
3957 }
3958
3959 pub fn set_index_plus_length(&mut self, value: u32) {
3960 unsafe { ffi::whiteout_m3_M3ParticleEmitter_set_indexPlusLength(self.raw.as_ptr(), value) }
3962 }
3963
3964 pub fn max_particles(&self) -> u32 {
3966 unsafe { ffi::whiteout_m3_M3ParticleEmitter_get_maxParticles(self.raw.as_ptr()) }
3968 }
3969
3970 pub fn set_max_particles(&mut self, value: u32) {
3971 unsafe { ffi::whiteout_m3_M3ParticleEmitter_set_maxParticles(self.raw.as_ptr(), value) }
3973 }
3974
3975 pub fn emission_rate(&self) -> crate::support::Ref<'_, AnimRefF32> {
3978 unsafe {
3981 crate::support::Ref::new(AnimRefF32 {
3982 raw: core::ptr::NonNull::new_unchecked(
3983 ffi::whiteout_m3_M3ParticleEmitter_get_emissionRate(self.raw.as_ptr()),
3984 ),
3985 })
3986 }
3987 }
3988
3989 pub fn emission_rate_mut(&mut self) -> crate::support::RefMut<'_, AnimRefF32> {
3990 unsafe {
3992 crate::support::RefMut::new(AnimRefF32 {
3993 raw: core::ptr::NonNull::new_unchecked(
3994 ffi::whiteout_m3_M3ParticleEmitter_get_emissionRate(self.raw.as_ptr()),
3995 ),
3996 })
3997 }
3998 }
3999
4000 pub fn emitter_shape(&self) -> EmitterShape {
4002 unsafe { ffi::whiteout_m3_M3ParticleEmitter_get_emitterShape(self.raw.as_ptr()) }
4004 .try_into()
4005 .expect("unknown enum discriminant from the native library")
4006 }
4007
4008 pub fn set_emitter_shape(&mut self, value: EmitterShape) {
4009 unsafe {
4011 ffi::whiteout_m3_M3ParticleEmitter_set_emitterShape(self.raw.as_ptr(), value as i32)
4012 }
4013 }
4014
4015 pub fn shape_outer(&self) -> crate::support::Ref<'_, AnimRefVector3f> {
4018 unsafe {
4021 crate::support::Ref::new(AnimRefVector3f {
4022 raw: core::ptr::NonNull::new_unchecked(
4023 ffi::whiteout_m3_M3ParticleEmitter_get_shapeOuter(self.raw.as_ptr()),
4024 ),
4025 })
4026 }
4027 }
4028
4029 pub fn shape_outer_mut(&mut self) -> crate::support::RefMut<'_, AnimRefVector3f> {
4030 unsafe {
4032 crate::support::RefMut::new(AnimRefVector3f {
4033 raw: core::ptr::NonNull::new_unchecked(
4034 ffi::whiteout_m3_M3ParticleEmitter_get_shapeOuter(self.raw.as_ptr()),
4035 ),
4036 })
4037 }
4038 }
4039
4040 pub fn shape_inner(&self) -> crate::support::Ref<'_, AnimRefVector3f> {
4043 unsafe {
4046 crate::support::Ref::new(AnimRefVector3f {
4047 raw: core::ptr::NonNull::new_unchecked(
4048 ffi::whiteout_m3_M3ParticleEmitter_get_shapeInner(self.raw.as_ptr()),
4049 ),
4050 })
4051 }
4052 }
4053
4054 pub fn shape_inner_mut(&mut self) -> crate::support::RefMut<'_, AnimRefVector3f> {
4055 unsafe {
4057 crate::support::RefMut::new(AnimRefVector3f {
4058 raw: core::ptr::NonNull::new_unchecked(
4059 ffi::whiteout_m3_M3ParticleEmitter_get_shapeInner(self.raw.as_ptr()),
4060 ),
4061 })
4062 }
4063 }
4064
4065 pub fn outer_radius(&self) -> crate::support::Ref<'_, AnimRefF32> {
4068 unsafe {
4071 crate::support::Ref::new(AnimRefF32 {
4072 raw: core::ptr::NonNull::new_unchecked(
4073 ffi::whiteout_m3_M3ParticleEmitter_get_outerRadius(self.raw.as_ptr()),
4074 ),
4075 })
4076 }
4077 }
4078
4079 pub fn outer_radius_mut(&mut self) -> crate::support::RefMut<'_, AnimRefF32> {
4080 unsafe {
4082 crate::support::RefMut::new(AnimRefF32 {
4083 raw: core::ptr::NonNull::new_unchecked(
4084 ffi::whiteout_m3_M3ParticleEmitter_get_outerRadius(self.raw.as_ptr()),
4085 ),
4086 })
4087 }
4088 }
4089
4090 pub fn inner_radius(&self) -> crate::support::Ref<'_, AnimRefF32> {
4093 unsafe {
4096 crate::support::Ref::new(AnimRefF32 {
4097 raw: core::ptr::NonNull::new_unchecked(
4098 ffi::whiteout_m3_M3ParticleEmitter_get_innerRadius(self.raw.as_ptr()),
4099 ),
4100 })
4101 }
4102 }
4103
4104 pub fn inner_radius_mut(&mut self) -> crate::support::RefMut<'_, AnimRefF32> {
4105 unsafe {
4107 crate::support::RefMut::new(AnimRefF32 {
4108 raw: core::ptr::NonNull::new_unchecked(
4109 ffi::whiteout_m3_M3ParticleEmitter_get_innerRadius(self.raw.as_ptr()),
4110 ),
4111 })
4112 }
4113 }
4114
4115 pub fn shape_regions(&self) -> &[u32] {
4118 unsafe {
4121 let n = ffi::whiteout_m3_M3ParticleEmitter_get_shapeRegions_count(self.raw.as_ptr());
4122 let p = ffi::whiteout_m3_M3ParticleEmitter_get_shapeRegions_data(self.raw.as_ptr());
4123 if p.is_null() || n == 0 {
4124 &[]
4125 } else {
4126 core::slice::from_raw_parts(p, n)
4127 }
4128 }
4129 }
4130
4131 pub fn shape_regions_mut(&mut self) -> &mut [u32] {
4133 unsafe {
4135 let n = ffi::whiteout_m3_M3ParticleEmitter_get_shapeRegions_count(self.raw.as_ptr());
4136 let p = ffi::whiteout_m3_M3ParticleEmitter_get_shapeRegions_data(self.raw.as_ptr())
4137 as *mut u32;
4138 if p.is_null() || n == 0 {
4139 &mut []
4140 } else {
4141 core::slice::from_raw_parts_mut(p, n)
4142 }
4143 }
4144 }
4145
4146 pub fn set_shape_regions(&mut self, values: &[u32]) {
4147 unsafe {
4149 ffi::whiteout_m3_M3ParticleEmitter_assign_shapeRegions(
4150 self.raw.as_ptr(),
4151 values.as_ptr() as *const _,
4152 values.len(),
4153 )
4154 }
4155 }
4156
4157 pub fn resize_shape_regions(&mut self, count: usize) {
4158 unsafe { ffi::whiteout_m3_M3ParticleEmitter_resize_shapeRegions(self.raw.as_ptr(), count) }
4161 }
4162
4163 pub fn velocity_type(&self) -> u32 {
4165 unsafe { ffi::whiteout_m3_M3ParticleEmitter_get_velocityType(self.raw.as_ptr()) }
4167 }
4168
4169 pub fn set_velocity_type(&mut self, value: u32) {
4170 unsafe { ffi::whiteout_m3_M3ParticleEmitter_set_velocityType(self.raw.as_ptr(), value) }
4172 }
4173
4174 pub fn size_random_enable(&self) -> u32 {
4176 unsafe { ffi::whiteout_m3_M3ParticleEmitter_get_sizeRandomEnable(self.raw.as_ptr()) }
4178 }
4179
4180 pub fn set_size_random_enable(&mut self, value: u32) {
4181 unsafe { ffi::whiteout_m3_M3ParticleEmitter_set_sizeRandomEnable(self.raw.as_ptr(), value) }
4183 }
4184
4185 pub fn size_random_animation(&self) -> crate::support::Ref<'_, AnimRefVector3f> {
4188 unsafe {
4191 crate::support::Ref::new(AnimRefVector3f {
4192 raw: core::ptr::NonNull::new_unchecked(
4193 ffi::whiteout_m3_M3ParticleEmitter_get_sizeRandomAnimation(self.raw.as_ptr()),
4194 ),
4195 })
4196 }
4197 }
4198
4199 pub fn size_random_animation_mut(&mut self) -> crate::support::RefMut<'_, AnimRefVector3f> {
4200 unsafe {
4202 crate::support::RefMut::new(AnimRefVector3f {
4203 raw: core::ptr::NonNull::new_unchecked(
4204 ffi::whiteout_m3_M3ParticleEmitter_get_sizeRandomAnimation(self.raw.as_ptr()),
4205 ),
4206 })
4207 }
4208 }
4209
4210 pub fn rotation_random_enable(&self) -> u32 {
4212 unsafe { ffi::whiteout_m3_M3ParticleEmitter_get_rotationRandomEnable(self.raw.as_ptr()) }
4214 }
4215
4216 pub fn set_rotation_random_enable(&mut self, value: u32) {
4217 unsafe {
4219 ffi::whiteout_m3_M3ParticleEmitter_set_rotationRandomEnable(self.raw.as_ptr(), value)
4220 }
4221 }
4222
4223 pub fn rotation_random_animation(&self) -> crate::support::Ref<'_, AnimRefVector3f> {
4226 unsafe {
4229 crate::support::Ref::new(AnimRefVector3f {
4230 raw: core::ptr::NonNull::new_unchecked(
4231 ffi::whiteout_m3_M3ParticleEmitter_get_rotationRandomAnimation(
4232 self.raw.as_ptr(),
4233 ),
4234 ),
4235 })
4236 }
4237 }
4238
4239 pub fn rotation_random_animation_mut(&mut self) -> crate::support::RefMut<'_, AnimRefVector3f> {
4240 unsafe {
4242 crate::support::RefMut::new(AnimRefVector3f {
4243 raw: core::ptr::NonNull::new_unchecked(
4244 ffi::whiteout_m3_M3ParticleEmitter_get_rotationRandomAnimation(
4245 self.raw.as_ptr(),
4246 ),
4247 ),
4248 })
4249 }
4250 }
4251
4252 pub fn color_random_enable(&self) -> u32 {
4254 unsafe { ffi::whiteout_m3_M3ParticleEmitter_get_colorRandomEnable(self.raw.as_ptr()) }
4256 }
4257
4258 pub fn set_color_random_enable(&mut self, value: u32) {
4259 unsafe {
4261 ffi::whiteout_m3_M3ParticleEmitter_set_colorRandomEnable(self.raw.as_ptr(), value)
4262 }
4263 }
4264
4265 pub fn color_start_random(&self) -> crate::support::Ref<'_, AnimRefM3ColorBGRA> {
4268 unsafe {
4271 crate::support::Ref::new(AnimRefM3ColorBGRA {
4272 raw: core::ptr::NonNull::new_unchecked(
4273 ffi::whiteout_m3_M3ParticleEmitter_get_colorStartRandom(self.raw.as_ptr()),
4274 ),
4275 })
4276 }
4277 }
4278
4279 pub fn color_start_random_mut(&mut self) -> crate::support::RefMut<'_, AnimRefM3ColorBGRA> {
4280 unsafe {
4282 crate::support::RefMut::new(AnimRefM3ColorBGRA {
4283 raw: core::ptr::NonNull::new_unchecked(
4284 ffi::whiteout_m3_M3ParticleEmitter_get_colorStartRandom(self.raw.as_ptr()),
4285 ),
4286 })
4287 }
4288 }
4289
4290 pub fn color_mid_random(&self) -> crate::support::Ref<'_, AnimRefM3ColorBGRA> {
4293 unsafe {
4296 crate::support::Ref::new(AnimRefM3ColorBGRA {
4297 raw: core::ptr::NonNull::new_unchecked(
4298 ffi::whiteout_m3_M3ParticleEmitter_get_colorMidRandom(self.raw.as_ptr()),
4299 ),
4300 })
4301 }
4302 }
4303
4304 pub fn color_mid_random_mut(&mut self) -> crate::support::RefMut<'_, AnimRefM3ColorBGRA> {
4305 unsafe {
4307 crate::support::RefMut::new(AnimRefM3ColorBGRA {
4308 raw: core::ptr::NonNull::new_unchecked(
4309 ffi::whiteout_m3_M3ParticleEmitter_get_colorMidRandom(self.raw.as_ptr()),
4310 ),
4311 })
4312 }
4313 }
4314
4315 pub fn color_end_random(&self) -> crate::support::Ref<'_, AnimRefM3ColorBGRA> {
4318 unsafe {
4321 crate::support::Ref::new(AnimRefM3ColorBGRA {
4322 raw: core::ptr::NonNull::new_unchecked(
4323 ffi::whiteout_m3_M3ParticleEmitter_get_colorEndRandom(self.raw.as_ptr()),
4324 ),
4325 })
4326 }
4327 }
4328
4329 pub fn color_end_random_mut(&mut self) -> crate::support::RefMut<'_, AnimRefM3ColorBGRA> {
4330 unsafe {
4332 crate::support::RefMut::new(AnimRefM3ColorBGRA {
4333 raw: core::ptr::NonNull::new_unchecked(
4334 ffi::whiteout_m3_M3ParticleEmitter_get_colorEndRandom(self.raw.as_ptr()),
4335 ),
4336 })
4337 }
4338 }
4339
4340 pub fn alpha_random_enable(&self) -> u32 {
4342 unsafe { ffi::whiteout_m3_M3ParticleEmitter_get_alphaRandomEnable(self.raw.as_ptr()) }
4344 }
4345
4346 pub fn set_alpha_random_enable(&mut self, value: u32) {
4347 unsafe {
4349 ffi::whiteout_m3_M3ParticleEmitter_set_alphaRandomEnable(self.raw.as_ptr(), value)
4350 }
4351 }
4352
4353 pub fn squirt_amount(&self) -> crate::support::Ref<'_, AnimRefU16> {
4356 unsafe {
4359 crate::support::Ref::new(AnimRefU16 {
4360 raw: core::ptr::NonNull::new_unchecked(
4361 ffi::whiteout_m3_M3ParticleEmitter_get_squirtAmount(self.raw.as_ptr()),
4362 ),
4363 })
4364 }
4365 }
4366
4367 pub fn squirt_amount_mut(&mut self) -> crate::support::RefMut<'_, AnimRefU16> {
4368 unsafe {
4370 crate::support::RefMut::new(AnimRefU16 {
4371 raw: core::ptr::NonNull::new_unchecked(
4372 ffi::whiteout_m3_M3ParticleEmitter_get_squirtAmount(self.raw.as_ptr()),
4373 ),
4374 })
4375 }
4376 }
4377
4378 pub fn flipbook_start_init_index(&self) -> u8 {
4380 unsafe { ffi::whiteout_m3_M3ParticleEmitter_get_flipbookStartInitIndex(self.raw.as_ptr()) }
4382 }
4383
4384 pub fn set_flipbook_start_init_index(&mut self, value: u8) {
4385 unsafe {
4387 ffi::whiteout_m3_M3ParticleEmitter_set_flipbookStartInitIndex(self.raw.as_ptr(), value)
4388 }
4389 }
4390
4391 pub fn flipbook_start_stop_index(&self) -> u8 {
4393 unsafe { ffi::whiteout_m3_M3ParticleEmitter_get_flipbookStartStopIndex(self.raw.as_ptr()) }
4395 }
4396
4397 pub fn set_flipbook_start_stop_index(&mut self, value: u8) {
4398 unsafe {
4400 ffi::whiteout_m3_M3ParticleEmitter_set_flipbookStartStopIndex(self.raw.as_ptr(), value)
4401 }
4402 }
4403
4404 pub fn flipbook_end_init_index(&self) -> u8 {
4406 unsafe { ffi::whiteout_m3_M3ParticleEmitter_get_flipbookEndInitIndex(self.raw.as_ptr()) }
4408 }
4409
4410 pub fn set_flipbook_end_init_index(&mut self, value: u8) {
4411 unsafe {
4413 ffi::whiteout_m3_M3ParticleEmitter_set_flipbookEndInitIndex(self.raw.as_ptr(), value)
4414 }
4415 }
4416
4417 pub fn flipbook_end_stop_index(&self) -> u8 {
4419 unsafe { ffi::whiteout_m3_M3ParticleEmitter_get_flipbookEndStopIndex(self.raw.as_ptr()) }
4421 }
4422
4423 pub fn set_flipbook_end_stop_index(&mut self, value: u8) {
4424 unsafe {
4426 ffi::whiteout_m3_M3ParticleEmitter_set_flipbookEndStopIndex(self.raw.as_ptr(), value)
4427 }
4428 }
4429
4430 pub fn flipbook_mid_time(&self) -> f32 {
4432 unsafe { ffi::whiteout_m3_M3ParticleEmitter_get_flipbookMidTime(self.raw.as_ptr()) }
4434 }
4435
4436 pub fn set_flipbook_mid_time(&mut self, value: f32) {
4437 unsafe { ffi::whiteout_m3_M3ParticleEmitter_set_flipbookMidTime(self.raw.as_ptr(), value) }
4439 }
4440
4441 pub fn flipbook_columns(&self) -> u16 {
4443 unsafe { ffi::whiteout_m3_M3ParticleEmitter_get_flipbookColumns(self.raw.as_ptr()) }
4445 }
4446
4447 pub fn set_flipbook_columns(&mut self, value: u16) {
4448 unsafe { ffi::whiteout_m3_M3ParticleEmitter_set_flipbookColumns(self.raw.as_ptr(), value) }
4450 }
4451
4452 pub fn flipbook_rows(&self) -> u16 {
4454 unsafe { ffi::whiteout_m3_M3ParticleEmitter_get_flipbookRows(self.raw.as_ptr()) }
4456 }
4457
4458 pub fn set_flipbook_rows(&mut self, value: u16) {
4459 unsafe { ffi::whiteout_m3_M3ParticleEmitter_set_flipbookRows(self.raw.as_ptr(), value) }
4461 }
4462
4463 pub fn flipbook_column_fraction(&self) -> f32 {
4465 unsafe { ffi::whiteout_m3_M3ParticleEmitter_get_flipbookColumnFraction(self.raw.as_ptr()) }
4467 }
4468
4469 pub fn set_flipbook_column_fraction(&mut self, value: f32) {
4470 unsafe {
4472 ffi::whiteout_m3_M3ParticleEmitter_set_flipbookColumnFraction(self.raw.as_ptr(), value)
4473 }
4474 }
4475
4476 pub fn flipbook_row_fraction(&self) -> f32 {
4478 unsafe { ffi::whiteout_m3_M3ParticleEmitter_get_flipbookRowFraction(self.raw.as_ptr()) }
4480 }
4481
4482 pub fn set_flipbook_row_fraction(&mut self, value: f32) {
4483 unsafe {
4485 ffi::whiteout_m3_M3ParticleEmitter_set_flipbookRowFraction(self.raw.as_ptr(), value)
4486 }
4487 }
4488
4489 pub fn bounce(&self) -> f32 {
4491 unsafe { ffi::whiteout_m3_M3ParticleEmitter_get_bounce(self.raw.as_ptr()) }
4493 }
4494
4495 pub fn set_bounce(&mut self, value: f32) {
4496 unsafe { ffi::whiteout_m3_M3ParticleEmitter_set_bounce(self.raw.as_ptr(), value) }
4498 }
4499
4500 pub fn friction(&self) -> f32 {
4502 unsafe { ffi::whiteout_m3_M3ParticleEmitter_get_friction(self.raw.as_ptr()) }
4504 }
4505
4506 pub fn set_friction(&mut self, value: f32) {
4507 unsafe { ffi::whiteout_m3_M3ParticleEmitter_set_friction(self.raw.as_ptr(), value) }
4509 }
4510
4511 pub fn collision_spawn_index(&self) -> i32 {
4513 unsafe { ffi::whiteout_m3_M3ParticleEmitter_get_collisionSpawnIndex(self.raw.as_ptr()) }
4515 }
4516
4517 pub fn set_collision_spawn_index(&mut self, value: i32) {
4518 unsafe {
4520 ffi::whiteout_m3_M3ParticleEmitter_set_collisionSpawnIndex(self.raw.as_ptr(), value)
4521 }
4522 }
4523
4524 pub fn collision_spawn_min(&self) -> u32 {
4526 unsafe { ffi::whiteout_m3_M3ParticleEmitter_get_collisionSpawnMin(self.raw.as_ptr()) }
4528 }
4529
4530 pub fn set_collision_spawn_min(&mut self, value: u32) {
4531 unsafe {
4533 ffi::whiteout_m3_M3ParticleEmitter_set_collisionSpawnMin(self.raw.as_ptr(), value)
4534 }
4535 }
4536
4537 pub fn collision_spawn_max(&self) -> u32 {
4539 unsafe { ffi::whiteout_m3_M3ParticleEmitter_get_collisionSpawnMax(self.raw.as_ptr()) }
4541 }
4542
4543 pub fn set_collision_spawn_max(&mut self, value: u32) {
4544 unsafe {
4546 ffi::whiteout_m3_M3ParticleEmitter_set_collisionSpawnMax(self.raw.as_ptr(), value)
4547 }
4548 }
4549
4550 pub fn collision_spawn_chance(&self) -> f32 {
4552 unsafe { ffi::whiteout_m3_M3ParticleEmitter_get_collisionSpawnChance(self.raw.as_ptr()) }
4554 }
4555
4556 pub fn set_collision_spawn_chance(&mut self, value: f32) {
4557 unsafe {
4559 ffi::whiteout_m3_M3ParticleEmitter_set_collisionSpawnChance(self.raw.as_ptr(), value)
4560 }
4561 }
4562
4563 pub fn collision_spawn_energy(&self) -> f32 {
4565 unsafe { ffi::whiteout_m3_M3ParticleEmitter_get_collisionSpawnEnergy(self.raw.as_ptr()) }
4567 }
4568
4569 pub fn set_collision_spawn_energy(&mut self, value: f32) {
4570 unsafe {
4572 ffi::whiteout_m3_M3ParticleEmitter_set_collisionSpawnEnergy(self.raw.as_ptr(), value)
4573 }
4574 }
4575
4576 pub fn collision_die_bounce(&self) -> u32 {
4578 unsafe { ffi::whiteout_m3_M3ParticleEmitter_get_collisionDieBounce(self.raw.as_ptr()) }
4580 }
4581
4582 pub fn set_collision_die_bounce(&mut self, value: u32) {
4583 unsafe {
4585 ffi::whiteout_m3_M3ParticleEmitter_set_collisionDieBounce(self.raw.as_ptr(), value)
4586 }
4587 }
4588
4589 pub fn instance_type(&self) -> ParticleInstanceType {
4591 unsafe { ffi::whiteout_m3_M3ParticleEmitter_get_instanceType(self.raw.as_ptr()) }
4593 .try_into()
4594 .expect("unknown enum discriminant from the native library")
4595 }
4596
4597 pub fn set_instance_type(&mut self, value: ParticleInstanceType) {
4598 unsafe {
4600 ffi::whiteout_m3_M3ParticleEmitter_set_instanceType(self.raw.as_ptr(), value as i32)
4601 }
4602 }
4603
4604 pub fn tail_length(&self) -> f32 {
4606 unsafe { ffi::whiteout_m3_M3ParticleEmitter_get_tailLength(self.raw.as_ptr()) }
4608 }
4609
4610 pub fn set_tail_length(&mut self, value: f32) {
4611 unsafe { ffi::whiteout_m3_M3ParticleEmitter_set_tailLength(self.raw.as_ptr(), value) }
4613 }
4614
4615 pub fn instance_angle(&self) -> crate::math::Vector3f {
4617 unsafe {
4620 *(ffi::whiteout_m3_M3ParticleEmitter_get_instanceAngle(self.raw.as_ptr())
4621 as *const crate::math::Vector3f)
4622 }
4623 }
4624
4625 pub fn set_instance_angle(&mut self, value: crate::math::Vector3f) {
4626 unsafe {
4628 ffi::whiteout_m3_M3ParticleEmitter_set_instanceAngle(
4629 self.raw.as_ptr(),
4630 &value as *const crate::math::Vector3f as *const _,
4631 )
4632 }
4633 }
4634
4635 pub fn instance_distance(&self) -> f32 {
4637 unsafe { ffi::whiteout_m3_M3ParticleEmitter_get_instanceDistance(self.raw.as_ptr()) }
4639 }
4640
4641 pub fn set_instance_distance(&mut self, value: f32) {
4642 unsafe { ffi::whiteout_m3_M3ParticleEmitter_set_instanceDistance(self.raw.as_ptr(), value) }
4644 }
4645
4646 pub fn pitch_type(&self) -> u32 {
4648 unsafe { ffi::whiteout_m3_M3ParticleEmitter_get_pitchType(self.raw.as_ptr()) }
4650 }
4651
4652 pub fn set_pitch_type(&mut self, value: u32) {
4653 unsafe { ffi::whiteout_m3_M3ParticleEmitter_set_pitchType(self.raw.as_ptr(), value) }
4655 }
4656
4657 pub fn pitch_amplitude(&self) -> crate::support::Ref<'_, AnimRefF32> {
4660 unsafe {
4663 crate::support::Ref::new(AnimRefF32 {
4664 raw: core::ptr::NonNull::new_unchecked(
4665 ffi::whiteout_m3_M3ParticleEmitter_get_pitchAmplitude(self.raw.as_ptr()),
4666 ),
4667 })
4668 }
4669 }
4670
4671 pub fn pitch_amplitude_mut(&mut self) -> crate::support::RefMut<'_, AnimRefF32> {
4672 unsafe {
4674 crate::support::RefMut::new(AnimRefF32 {
4675 raw: core::ptr::NonNull::new_unchecked(
4676 ffi::whiteout_m3_M3ParticleEmitter_get_pitchAmplitude(self.raw.as_ptr()),
4677 ),
4678 })
4679 }
4680 }
4681
4682 pub fn pitch_frequency(&self) -> crate::support::Ref<'_, AnimRefF32> {
4685 unsafe {
4688 crate::support::Ref::new(AnimRefF32 {
4689 raw: core::ptr::NonNull::new_unchecked(
4690 ffi::whiteout_m3_M3ParticleEmitter_get_pitchFrequency(self.raw.as_ptr()),
4691 ),
4692 })
4693 }
4694 }
4695
4696 pub fn pitch_frequency_mut(&mut self) -> crate::support::RefMut<'_, AnimRefF32> {
4697 unsafe {
4699 crate::support::RefMut::new(AnimRefF32 {
4700 raw: core::ptr::NonNull::new_unchecked(
4701 ffi::whiteout_m3_M3ParticleEmitter_get_pitchFrequency(self.raw.as_ptr()),
4702 ),
4703 })
4704 }
4705 }
4706
4707 pub fn yaw_type(&self) -> u32 {
4709 unsafe { ffi::whiteout_m3_M3ParticleEmitter_get_yawType(self.raw.as_ptr()) }
4711 }
4712
4713 pub fn set_yaw_type(&mut self, value: u32) {
4714 unsafe { ffi::whiteout_m3_M3ParticleEmitter_set_yawType(self.raw.as_ptr(), value) }
4716 }
4717
4718 pub fn yaw_amplitude(&self) -> crate::support::Ref<'_, AnimRefF32> {
4721 unsafe {
4724 crate::support::Ref::new(AnimRefF32 {
4725 raw: core::ptr::NonNull::new_unchecked(
4726 ffi::whiteout_m3_M3ParticleEmitter_get_yawAmplitude(self.raw.as_ptr()),
4727 ),
4728 })
4729 }
4730 }
4731
4732 pub fn yaw_amplitude_mut(&mut self) -> crate::support::RefMut<'_, AnimRefF32> {
4733 unsafe {
4735 crate::support::RefMut::new(AnimRefF32 {
4736 raw: core::ptr::NonNull::new_unchecked(
4737 ffi::whiteout_m3_M3ParticleEmitter_get_yawAmplitude(self.raw.as_ptr()),
4738 ),
4739 })
4740 }
4741 }
4742
4743 pub fn yaw_frequency(&self) -> crate::support::Ref<'_, AnimRefF32> {
4746 unsafe {
4749 crate::support::Ref::new(AnimRefF32 {
4750 raw: core::ptr::NonNull::new_unchecked(
4751 ffi::whiteout_m3_M3ParticleEmitter_get_yawFrequency(self.raw.as_ptr()),
4752 ),
4753 })
4754 }
4755 }
4756
4757 pub fn yaw_frequency_mut(&mut self) -> crate::support::RefMut<'_, AnimRefF32> {
4758 unsafe {
4760 crate::support::RefMut::new(AnimRefF32 {
4761 raw: core::ptr::NonNull::new_unchecked(
4762 ffi::whiteout_m3_M3ParticleEmitter_get_yawFrequency(self.raw.as_ptr()),
4763 ),
4764 })
4765 }
4766 }
4767
4768 pub fn speed_type(&self) -> u32 {
4770 unsafe { ffi::whiteout_m3_M3ParticleEmitter_get_speedType(self.raw.as_ptr()) }
4772 }
4773
4774 pub fn set_speed_type(&mut self, value: u32) {
4775 unsafe { ffi::whiteout_m3_M3ParticleEmitter_set_speedType(self.raw.as_ptr(), value) }
4777 }
4778
4779 pub fn speed_amplitude(&self) -> crate::support::Ref<'_, AnimRefF32> {
4782 unsafe {
4785 crate::support::Ref::new(AnimRefF32 {
4786 raw: core::ptr::NonNull::new_unchecked(
4787 ffi::whiteout_m3_M3ParticleEmitter_get_speedAmplitude(self.raw.as_ptr()),
4788 ),
4789 })
4790 }
4791 }
4792
4793 pub fn speed_amplitude_mut(&mut self) -> crate::support::RefMut<'_, AnimRefF32> {
4794 unsafe {
4796 crate::support::RefMut::new(AnimRefF32 {
4797 raw: core::ptr::NonNull::new_unchecked(
4798 ffi::whiteout_m3_M3ParticleEmitter_get_speedAmplitude(self.raw.as_ptr()),
4799 ),
4800 })
4801 }
4802 }
4803
4804 pub fn speed_frequency(&self) -> crate::support::Ref<'_, AnimRefF32> {
4807 unsafe {
4810 crate::support::Ref::new(AnimRefF32 {
4811 raw: core::ptr::NonNull::new_unchecked(
4812 ffi::whiteout_m3_M3ParticleEmitter_get_speedFrequency(self.raw.as_ptr()),
4813 ),
4814 })
4815 }
4816 }
4817
4818 pub fn speed_frequency_mut(&mut self) -> crate::support::RefMut<'_, AnimRefF32> {
4819 unsafe {
4821 crate::support::RefMut::new(AnimRefF32 {
4822 raw: core::ptr::NonNull::new_unchecked(
4823 ffi::whiteout_m3_M3ParticleEmitter_get_speedFrequency(self.raw.as_ptr()),
4824 ),
4825 })
4826 }
4827 }
4828
4829 pub fn size_type(&self) -> u32 {
4831 unsafe { ffi::whiteout_m3_M3ParticleEmitter_get_sizeType(self.raw.as_ptr()) }
4833 }
4834
4835 pub fn set_size_type(&mut self, value: u32) {
4836 unsafe { ffi::whiteout_m3_M3ParticleEmitter_set_sizeType(self.raw.as_ptr(), value) }
4838 }
4839
4840 pub fn size_amplitude(&self) -> crate::support::Ref<'_, AnimRefF32> {
4843 unsafe {
4846 crate::support::Ref::new(AnimRefF32 {
4847 raw: core::ptr::NonNull::new_unchecked(
4848 ffi::whiteout_m3_M3ParticleEmitter_get_sizeAmplitude(self.raw.as_ptr()),
4849 ),
4850 })
4851 }
4852 }
4853
4854 pub fn size_amplitude_mut(&mut self) -> crate::support::RefMut<'_, AnimRefF32> {
4855 unsafe {
4857 crate::support::RefMut::new(AnimRefF32 {
4858 raw: core::ptr::NonNull::new_unchecked(
4859 ffi::whiteout_m3_M3ParticleEmitter_get_sizeAmplitude(self.raw.as_ptr()),
4860 ),
4861 })
4862 }
4863 }
4864
4865 pub fn size_frequency(&self) -> crate::support::Ref<'_, AnimRefF32> {
4868 unsafe {
4871 crate::support::Ref::new(AnimRefF32 {
4872 raw: core::ptr::NonNull::new_unchecked(
4873 ffi::whiteout_m3_M3ParticleEmitter_get_sizeFrequency(self.raw.as_ptr()),
4874 ),
4875 })
4876 }
4877 }
4878
4879 pub fn size_frequency_mut(&mut self) -> crate::support::RefMut<'_, AnimRefF32> {
4880 unsafe {
4882 crate::support::RefMut::new(AnimRefF32 {
4883 raw: core::ptr::NonNull::new_unchecked(
4884 ffi::whiteout_m3_M3ParticleEmitter_get_sizeFrequency(self.raw.as_ptr()),
4885 ),
4886 })
4887 }
4888 }
4889
4890 pub fn alpha_type(&self) -> u32 {
4892 unsafe { ffi::whiteout_m3_M3ParticleEmitter_get_alphaType(self.raw.as_ptr()) }
4894 }
4895
4896 pub fn set_alpha_type(&mut self, value: u32) {
4897 unsafe { ffi::whiteout_m3_M3ParticleEmitter_set_alphaType(self.raw.as_ptr(), value) }
4899 }
4900
4901 pub fn alpha_amplitude(&self) -> crate::support::Ref<'_, AnimRefF32> {
4904 unsafe {
4907 crate::support::Ref::new(AnimRefF32 {
4908 raw: core::ptr::NonNull::new_unchecked(
4909 ffi::whiteout_m3_M3ParticleEmitter_get_alphaAmplitude(self.raw.as_ptr()),
4910 ),
4911 })
4912 }
4913 }
4914
4915 pub fn alpha_amplitude_mut(&mut self) -> crate::support::RefMut<'_, AnimRefF32> {
4916 unsafe {
4918 crate::support::RefMut::new(AnimRefF32 {
4919 raw: core::ptr::NonNull::new_unchecked(
4920 ffi::whiteout_m3_M3ParticleEmitter_get_alphaAmplitude(self.raw.as_ptr()),
4921 ),
4922 })
4923 }
4924 }
4925
4926 pub fn alpha_frequency(&self) -> crate::support::Ref<'_, AnimRefF32> {
4929 unsafe {
4932 crate::support::Ref::new(AnimRefF32 {
4933 raw: core::ptr::NonNull::new_unchecked(
4934 ffi::whiteout_m3_M3ParticleEmitter_get_alphaFrequency(self.raw.as_ptr()),
4935 ),
4936 })
4937 }
4938 }
4939
4940 pub fn alpha_frequency_mut(&mut self) -> crate::support::RefMut<'_, AnimRefF32> {
4941 unsafe {
4943 crate::support::RefMut::new(AnimRefF32 {
4944 raw: core::ptr::NonNull::new_unchecked(
4945 ffi::whiteout_m3_M3ParticleEmitter_get_alphaFrequency(self.raw.as_ptr()),
4946 ),
4947 })
4948 }
4949 }
4950
4951 pub fn color_type(&self) -> u32 {
4953 unsafe { ffi::whiteout_m3_M3ParticleEmitter_get_colorType(self.raw.as_ptr()) }
4955 }
4956
4957 pub fn set_color_type(&mut self, value: u32) {
4958 unsafe { ffi::whiteout_m3_M3ParticleEmitter_set_colorType(self.raw.as_ptr(), value) }
4960 }
4961
4962 pub fn color_amplitude(&self) -> crate::support::Ref<'_, AnimRefF32> {
4965 unsafe {
4968 crate::support::Ref::new(AnimRefF32 {
4969 raw: core::ptr::NonNull::new_unchecked(
4970 ffi::whiteout_m3_M3ParticleEmitter_get_colorAmplitude(self.raw.as_ptr()),
4971 ),
4972 })
4973 }
4974 }
4975
4976 pub fn color_amplitude_mut(&mut self) -> crate::support::RefMut<'_, AnimRefF32> {
4977 unsafe {
4979 crate::support::RefMut::new(AnimRefF32 {
4980 raw: core::ptr::NonNull::new_unchecked(
4981 ffi::whiteout_m3_M3ParticleEmitter_get_colorAmplitude(self.raw.as_ptr()),
4982 ),
4983 })
4984 }
4985 }
4986
4987 pub fn color_frequency(&self) -> crate::support::Ref<'_, AnimRefF32> {
4990 unsafe {
4993 crate::support::Ref::new(AnimRefF32 {
4994 raw: core::ptr::NonNull::new_unchecked(
4995 ffi::whiteout_m3_M3ParticleEmitter_get_colorFrequency(self.raw.as_ptr()),
4996 ),
4997 })
4998 }
4999 }
5000
5001 pub fn color_frequency_mut(&mut self) -> crate::support::RefMut<'_, AnimRefF32> {
5002 unsafe {
5004 crate::support::RefMut::new(AnimRefF32 {
5005 raw: core::ptr::NonNull::new_unchecked(
5006 ffi::whiteout_m3_M3ParticleEmitter_get_colorFrequency(self.raw.as_ptr()),
5007 ),
5008 })
5009 }
5010 }
5011
5012 pub fn rotation_type(&self) -> u32 {
5014 unsafe { ffi::whiteout_m3_M3ParticleEmitter_get_rotationType(self.raw.as_ptr()) }
5016 }
5017
5018 pub fn set_rotation_type(&mut self, value: u32) {
5019 unsafe { ffi::whiteout_m3_M3ParticleEmitter_set_rotationType(self.raw.as_ptr(), value) }
5021 }
5022
5023 pub fn rotation_amplitude(&self) -> crate::support::Ref<'_, AnimRefF32> {
5026 unsafe {
5029 crate::support::Ref::new(AnimRefF32 {
5030 raw: core::ptr::NonNull::new_unchecked(
5031 ffi::whiteout_m3_M3ParticleEmitter_get_rotationAmplitude(self.raw.as_ptr()),
5032 ),
5033 })
5034 }
5035 }
5036
5037 pub fn rotation_amplitude_mut(&mut self) -> crate::support::RefMut<'_, AnimRefF32> {
5038 unsafe {
5040 crate::support::RefMut::new(AnimRefF32 {
5041 raw: core::ptr::NonNull::new_unchecked(
5042 ffi::whiteout_m3_M3ParticleEmitter_get_rotationAmplitude(self.raw.as_ptr()),
5043 ),
5044 })
5045 }
5046 }
5047
5048 pub fn rotation_frequency(&self) -> crate::support::Ref<'_, AnimRefF32> {
5051 unsafe {
5054 crate::support::Ref::new(AnimRefF32 {
5055 raw: core::ptr::NonNull::new_unchecked(
5056 ffi::whiteout_m3_M3ParticleEmitter_get_rotationFrequency(self.raw.as_ptr()),
5057 ),
5058 })
5059 }
5060 }
5061
5062 pub fn rotation_frequency_mut(&mut self) -> crate::support::RefMut<'_, AnimRefF32> {
5063 unsafe {
5065 crate::support::RefMut::new(AnimRefF32 {
5066 raw: core::ptr::NonNull::new_unchecked(
5067 ffi::whiteout_m3_M3ParticleEmitter_get_rotationFrequency(self.raw.as_ptr()),
5068 ),
5069 })
5070 }
5071 }
5072
5073 pub fn horizontal_type(&self) -> u32 {
5075 unsafe { ffi::whiteout_m3_M3ParticleEmitter_get_horizontalType(self.raw.as_ptr()) }
5077 }
5078
5079 pub fn set_horizontal_type(&mut self, value: u32) {
5080 unsafe { ffi::whiteout_m3_M3ParticleEmitter_set_horizontalType(self.raw.as_ptr(), value) }
5082 }
5083
5084 pub fn horizontal_amplitude(&self) -> crate::support::Ref<'_, AnimRefF32> {
5087 unsafe {
5090 crate::support::Ref::new(AnimRefF32 {
5091 raw: core::ptr::NonNull::new_unchecked(
5092 ffi::whiteout_m3_M3ParticleEmitter_get_horizontalAmplitude(self.raw.as_ptr()),
5093 ),
5094 })
5095 }
5096 }
5097
5098 pub fn horizontal_amplitude_mut(&mut self) -> crate::support::RefMut<'_, AnimRefF32> {
5099 unsafe {
5101 crate::support::RefMut::new(AnimRefF32 {
5102 raw: core::ptr::NonNull::new_unchecked(
5103 ffi::whiteout_m3_M3ParticleEmitter_get_horizontalAmplitude(self.raw.as_ptr()),
5104 ),
5105 })
5106 }
5107 }
5108
5109 pub fn horizontal_frequency(&self) -> crate::support::Ref<'_, AnimRefF32> {
5112 unsafe {
5115 crate::support::Ref::new(AnimRefF32 {
5116 raw: core::ptr::NonNull::new_unchecked(
5117 ffi::whiteout_m3_M3ParticleEmitter_get_horizontalFrequency(self.raw.as_ptr()),
5118 ),
5119 })
5120 }
5121 }
5122
5123 pub fn horizontal_frequency_mut(&mut self) -> crate::support::RefMut<'_, AnimRefF32> {
5124 unsafe {
5126 crate::support::RefMut::new(AnimRefF32 {
5127 raw: core::ptr::NonNull::new_unchecked(
5128 ffi::whiteout_m3_M3ParticleEmitter_get_horizontalFrequency(self.raw.as_ptr()),
5129 ),
5130 })
5131 }
5132 }
5133
5134 pub fn vertical_type(&self) -> u32 {
5136 unsafe { ffi::whiteout_m3_M3ParticleEmitter_get_verticalType(self.raw.as_ptr()) }
5138 }
5139
5140 pub fn set_vertical_type(&mut self, value: u32) {
5141 unsafe { ffi::whiteout_m3_M3ParticleEmitter_set_verticalType(self.raw.as_ptr(), value) }
5143 }
5144
5145 pub fn vertical_amplitude(&self) -> crate::support::Ref<'_, AnimRefF32> {
5148 unsafe {
5151 crate::support::Ref::new(AnimRefF32 {
5152 raw: core::ptr::NonNull::new_unchecked(
5153 ffi::whiteout_m3_M3ParticleEmitter_get_verticalAmplitude(self.raw.as_ptr()),
5154 ),
5155 })
5156 }
5157 }
5158
5159 pub fn vertical_amplitude_mut(&mut self) -> crate::support::RefMut<'_, AnimRefF32> {
5160 unsafe {
5162 crate::support::RefMut::new(AnimRefF32 {
5163 raw: core::ptr::NonNull::new_unchecked(
5164 ffi::whiteout_m3_M3ParticleEmitter_get_verticalAmplitude(self.raw.as_ptr()),
5165 ),
5166 })
5167 }
5168 }
5169
5170 pub fn vertical_frequency(&self) -> crate::support::Ref<'_, AnimRefF32> {
5173 unsafe {
5176 crate::support::Ref::new(AnimRefF32 {
5177 raw: core::ptr::NonNull::new_unchecked(
5178 ffi::whiteout_m3_M3ParticleEmitter_get_verticalFrequency(self.raw.as_ptr()),
5179 ),
5180 })
5181 }
5182 }
5183
5184 pub fn vertical_frequency_mut(&mut self) -> crate::support::RefMut<'_, AnimRefF32> {
5185 unsafe {
5187 crate::support::RefMut::new(AnimRefF32 {
5188 raw: core::ptr::NonNull::new_unchecked(
5189 ffi::whiteout_m3_M3ParticleEmitter_get_verticalFrequency(self.raw.as_ptr()),
5190 ),
5191 })
5192 }
5193 }
5194
5195 pub fn particle_velocity(&self) -> crate::support::Ref<'_, AnimRefF32> {
5198 unsafe {
5201 crate::support::Ref::new(AnimRefF32 {
5202 raw: core::ptr::NonNull::new_unchecked(
5203 ffi::whiteout_m3_M3ParticleEmitter_get_particleVelocity(self.raw.as_ptr()),
5204 ),
5205 })
5206 }
5207 }
5208
5209 pub fn particle_velocity_mut(&mut self) -> crate::support::RefMut<'_, AnimRefF32> {
5210 unsafe {
5212 crate::support::RefMut::new(AnimRefF32 {
5213 raw: core::ptr::NonNull::new_unchecked(
5214 ffi::whiteout_m3_M3ParticleEmitter_get_particleVelocity(self.raw.as_ptr()),
5215 ),
5216 })
5217 }
5218 }
5219
5220 pub fn phase_shift(&self) -> crate::support::Ref<'_, AnimRefF32> {
5223 unsafe {
5226 crate::support::Ref::new(AnimRefF32 {
5227 raw: core::ptr::NonNull::new_unchecked(
5228 ffi::whiteout_m3_M3ParticleEmitter_get_phaseShift(self.raw.as_ptr()),
5229 ),
5230 })
5231 }
5232 }
5233
5234 pub fn phase_shift_mut(&mut self) -> crate::support::RefMut<'_, AnimRefF32> {
5235 unsafe {
5237 crate::support::RefMut::new(AnimRefF32 {
5238 raw: core::ptr::NonNull::new_unchecked(
5239 ffi::whiteout_m3_M3ParticleEmitter_get_phaseShift(self.raw.as_ptr()),
5240 ),
5241 })
5242 }
5243 }
5244
5245 pub fn flags(&self) -> ParticleFlag {
5247 ParticleFlag(unsafe { ffi::whiteout_m3_M3ParticleEmitter_get_flags(self.raw.as_ptr()) })
5249 }
5250
5251 pub fn set_flags(&mut self, value: ParticleFlag) {
5252 unsafe { ffi::whiteout_m3_M3ParticleEmitter_set_flags(self.raw.as_ptr(), value.0) }
5254 }
5255
5256 pub fn rotation_flags(&self) -> ParticleRotationFlag {
5258 unsafe { ffi::whiteout_m3_M3ParticleEmitter_get_rotationFlags(self.raw.as_ptr()) }
5260 .try_into()
5261 .expect("unknown enum discriminant from the native library")
5262 }
5263
5264 pub fn set_rotation_flags(&mut self, value: ParticleRotationFlag) {
5265 unsafe {
5267 ffi::whiteout_m3_M3ParticleEmitter_set_rotationFlags(self.raw.as_ptr(), value as i32)
5268 }
5269 }
5270
5271 pub fn color_smoothing(&self) -> InterpolationMode {
5272 unsafe { ffi::whiteout_m3_M3ParticleEmitter_get_colorSmoothing(self.raw.as_ptr()) }
5274 .try_into()
5275 .expect("unknown enum discriminant from the native library")
5276 }
5277
5278 pub fn set_color_smoothing(&mut self, value: InterpolationMode) {
5279 unsafe {
5281 ffi::whiteout_m3_M3ParticleEmitter_set_colorSmoothing(self.raw.as_ptr(), value as i32)
5282 }
5283 }
5284
5285 pub fn size_smoothing(&self) -> InterpolationMode {
5286 unsafe { ffi::whiteout_m3_M3ParticleEmitter_get_sizeSmoothing(self.raw.as_ptr()) }
5288 .try_into()
5289 .expect("unknown enum discriminant from the native library")
5290 }
5291
5292 pub fn set_size_smoothing(&mut self, value: InterpolationMode) {
5293 unsafe {
5295 ffi::whiteout_m3_M3ParticleEmitter_set_sizeSmoothing(self.raw.as_ptr(), value as i32)
5296 }
5297 }
5298
5299 pub fn rotation_smoothing(&self) -> InterpolationMode {
5300 unsafe { ffi::whiteout_m3_M3ParticleEmitter_get_rotationSmoothing(self.raw.as_ptr()) }
5302 .try_into()
5303 .expect("unknown enum discriminant from the native library")
5304 }
5305
5306 pub fn set_rotation_smoothing(&mut self, value: InterpolationMode) {
5307 unsafe {
5309 ffi::whiteout_m3_M3ParticleEmitter_set_rotationSmoothing(
5310 self.raw.as_ptr(),
5311 value as i32,
5312 )
5313 }
5314 }
5315
5316 pub fn alpha_threshold(&self) -> crate::support::Ref<'_, AnimRefF32> {
5319 unsafe {
5322 crate::support::Ref::new(AnimRefF32 {
5323 raw: core::ptr::NonNull::new_unchecked(
5324 ffi::whiteout_m3_M3ParticleEmitter_get_alphaThreshold(self.raw.as_ptr()),
5325 ),
5326 })
5327 }
5328 }
5329
5330 pub fn alpha_threshold_mut(&mut self) -> crate::support::RefMut<'_, AnimRefF32> {
5331 unsafe {
5333 crate::support::RefMut::new(AnimRefF32 {
5334 raw: core::ptr::NonNull::new_unchecked(
5335 ffi::whiteout_m3_M3ParticleEmitter_get_alphaThreshold(self.raw.as_ptr()),
5336 ),
5337 })
5338 }
5339 }
5340
5341 pub fn uv_offset(&self) -> crate::support::Ref<'_, AnimRefVector2f> {
5344 unsafe {
5347 crate::support::Ref::new(AnimRefVector2f {
5348 raw: core::ptr::NonNull::new_unchecked(
5349 ffi::whiteout_m3_M3ParticleEmitter_get_uvOffset(self.raw.as_ptr()),
5350 ),
5351 })
5352 }
5353 }
5354
5355 pub fn uv_offset_mut(&mut self) -> crate::support::RefMut<'_, AnimRefVector2f> {
5356 unsafe {
5358 crate::support::RefMut::new(AnimRefVector2f {
5359 raw: core::ptr::NonNull::new_unchecked(
5360 ffi::whiteout_m3_M3ParticleEmitter_get_uvOffset(self.raw.as_ptr()),
5361 ),
5362 })
5363 }
5364 }
5365
5366 pub fn uv_angle(&self) -> crate::support::Ref<'_, AnimRefVector3f> {
5369 unsafe {
5372 crate::support::Ref::new(AnimRefVector3f {
5373 raw: core::ptr::NonNull::new_unchecked(
5374 ffi::whiteout_m3_M3ParticleEmitter_get_uvAngle(self.raw.as_ptr()),
5375 ),
5376 })
5377 }
5378 }
5379
5380 pub fn uv_angle_mut(&mut self) -> crate::support::RefMut<'_, AnimRefVector3f> {
5381 unsafe {
5383 crate::support::RefMut::new(AnimRefVector3f {
5384 raw: core::ptr::NonNull::new_unchecked(
5385 ffi::whiteout_m3_M3ParticleEmitter_get_uvAngle(self.raw.as_ptr()),
5386 ),
5387 })
5388 }
5389 }
5390
5391 pub fn uv_tiling(&self) -> crate::support::Ref<'_, AnimRefVector2f> {
5394 unsafe {
5397 crate::support::Ref::new(AnimRefVector2f {
5398 raw: core::ptr::NonNull::new_unchecked(
5399 ffi::whiteout_m3_M3ParticleEmitter_get_uvTiling(self.raw.as_ptr()),
5400 ),
5401 })
5402 }
5403 }
5404
5405 pub fn uv_tiling_mut(&mut self) -> crate::support::RefMut<'_, AnimRefVector2f> {
5406 unsafe {
5408 crate::support::RefMut::new(AnimRefVector2f {
5409 raw: core::ptr::NonNull::new_unchecked(
5410 ffi::whiteout_m3_M3ParticleEmitter_get_uvTiling(self.raw.as_ptr()),
5411 ),
5412 })
5413 }
5414 }
5415
5416 pub fn spline_line_data_len(&self) -> usize {
5418 unsafe { ffi::whiteout_m3_M3ParticleEmitter_get_splineLineData_count(self.raw.as_ptr()) }
5420 }
5421
5422 pub fn spline_line_data(
5424 &self,
5425 index: usize,
5426 ) -> Option<crate::support::Ref<'_, AnimRefVector3f>> {
5427 if index >= self.spline_line_data_len() {
5428 return None;
5429 }
5430 unsafe {
5432 Some(crate::support::Ref::new(AnimRefVector3f {
5433 raw: core::ptr::NonNull::new_unchecked(
5434 ffi::whiteout_m3_M3ParticleEmitter_get_splineLineData_at(
5435 self.raw.as_ptr(),
5436 index,
5437 ),
5438 ),
5439 }))
5440 }
5441 }
5442
5443 pub fn spline_line_data_mut(
5444 &mut self,
5445 index: usize,
5446 ) -> Option<crate::support::RefMut<'_, AnimRefVector3f>> {
5447 if index >= self.spline_line_data_len() {
5448 return None;
5449 }
5450 unsafe {
5452 Some(crate::support::RefMut::new(AnimRefVector3f {
5453 raw: core::ptr::NonNull::new_unchecked(
5454 ffi::whiteout_m3_M3ParticleEmitter_get_splineLineData_at(
5455 self.raw.as_ptr(),
5456 index,
5457 ),
5458 ),
5459 }))
5460 }
5461 }
5462
5463 pub fn spline_line_data_iter(
5465 &self,
5466 ) -> impl ExactSizeIterator<Item = crate::support::Ref<'_, AnimRefVector3f>> {
5467 (0..self.spline_line_data_len())
5468 .map(move |i| self.spline_line_data(i).expect("index below len"))
5469 }
5470
5471 pub fn resize_spline_line_data(&mut self, count: usize) {
5472 unsafe {
5474 ffi::whiteout_m3_M3ParticleEmitter_resize_splineLineData(self.raw.as_ptr(), count)
5475 }
5476 }
5477
5478 pub fn wind_multiplier(&self) -> f32 {
5480 unsafe { ffi::whiteout_m3_M3ParticleEmitter_get_windMultiplier(self.raw.as_ptr()) }
5482 }
5483
5484 pub fn set_wind_multiplier(&mut self, value: f32) {
5485 unsafe { ffi::whiteout_m3_M3ParticleEmitter_set_windMultiplier(self.raw.as_ptr(), value) }
5487 }
5488
5489 pub fn lod_reduce(&self) -> u32 {
5491 unsafe { ffi::whiteout_m3_M3ParticleEmitter_get_lodReduce(self.raw.as_ptr()) }
5493 }
5494
5495 pub fn set_lod_reduce(&mut self, value: u32) {
5496 unsafe { ffi::whiteout_m3_M3ParticleEmitter_set_lodReduce(self.raw.as_ptr(), value) }
5498 }
5499
5500 pub fn lod_cut(&self) -> u32 {
5502 unsafe { ffi::whiteout_m3_M3ParticleEmitter_get_lodCut(self.raw.as_ptr()) }
5504 }
5505
5506 pub fn set_lod_cut(&mut self, value: u32) {
5507 unsafe { ffi::whiteout_m3_M3ParticleEmitter_set_lodCut(self.raw.as_ptr(), value) }
5509 }
5510
5511 pub fn lower_bound(&self) -> crate::support::Ref<'_, AnimRefF32> {
5514 unsafe {
5517 crate::support::Ref::new(AnimRefF32 {
5518 raw: core::ptr::NonNull::new_unchecked(
5519 ffi::whiteout_m3_M3ParticleEmitter_get_lowerBound(self.raw.as_ptr()),
5520 ),
5521 })
5522 }
5523 }
5524
5525 pub fn lower_bound_mut(&mut self) -> crate::support::RefMut<'_, AnimRefF32> {
5526 unsafe {
5528 crate::support::RefMut::new(AnimRefF32 {
5529 raw: core::ptr::NonNull::new_unchecked(
5530 ffi::whiteout_m3_M3ParticleEmitter_get_lowerBound(self.raw.as_ptr()),
5531 ),
5532 })
5533 }
5534 }
5535
5536 pub fn upper_bound(&self) -> crate::support::Ref<'_, AnimRefF32> {
5539 unsafe {
5542 crate::support::Ref::new(AnimRefF32 {
5543 raw: core::ptr::NonNull::new_unchecked(
5544 ffi::whiteout_m3_M3ParticleEmitter_get_upperBound(self.raw.as_ptr()),
5545 ),
5546 })
5547 }
5548 }
5549
5550 pub fn upper_bound_mut(&mut self) -> crate::support::RefMut<'_, AnimRefF32> {
5551 unsafe {
5553 crate::support::RefMut::new(AnimRefF32 {
5554 raw: core::ptr::NonNull::new_unchecked(
5555 ffi::whiteout_m3_M3ParticleEmitter_get_upperBound(self.raw.as_ptr()),
5556 ),
5557 })
5558 }
5559 }
5560
5561 pub fn trail_link_index(&self) -> i32 {
5562 unsafe { ffi::whiteout_m3_M3ParticleEmitter_get_trailLinkIndex(self.raw.as_ptr()) }
5564 }
5565
5566 pub fn set_trail_link_index(&mut self, value: i32) {
5567 unsafe { ffi::whiteout_m3_M3ParticleEmitter_set_trailLinkIndex(self.raw.as_ptr(), value) }
5569 }
5570
5571 pub fn trail_chance(&self) -> f32 {
5573 unsafe { ffi::whiteout_m3_M3ParticleEmitter_get_trailChance(self.raw.as_ptr()) }
5575 }
5576
5577 pub fn set_trail_chance(&mut self, value: f32) {
5578 unsafe { ffi::whiteout_m3_M3ParticleEmitter_set_trailChance(self.raw.as_ptr(), value) }
5580 }
5581
5582 pub fn trail_emission_rate(&self) -> crate::support::Ref<'_, AnimRefF32> {
5585 unsafe {
5588 crate::support::Ref::new(AnimRefF32 {
5589 raw: core::ptr::NonNull::new_unchecked(
5590 ffi::whiteout_m3_M3ParticleEmitter_get_trailEmissionRate(self.raw.as_ptr()),
5591 ),
5592 })
5593 }
5594 }
5595
5596 pub fn trail_emission_rate_mut(&mut self) -> crate::support::RefMut<'_, AnimRefF32> {
5597 unsafe {
5599 crate::support::RefMut::new(AnimRefF32 {
5600 raw: core::ptr::NonNull::new_unchecked(
5601 ffi::whiteout_m3_M3ParticleEmitter_get_trailEmissionRate(self.raw.as_ptr()),
5602 ),
5603 })
5604 }
5605 }
5606
5607 pub fn splat_projection_index(&self) -> i32 {
5609 unsafe { ffi::whiteout_m3_M3ParticleEmitter_get_splatProjectionIndex(self.raw.as_ptr()) }
5611 }
5612
5613 pub fn set_splat_projection_index(&mut self, value: i32) {
5614 unsafe {
5616 ffi::whiteout_m3_M3ParticleEmitter_set_splatProjectionIndex(self.raw.as_ptr(), value)
5617 }
5618 }
5619
5620 pub fn splat_chance(&self) -> f32 {
5622 unsafe { ffi::whiteout_m3_M3ParticleEmitter_get_splatChance(self.raw.as_ptr()) }
5624 }
5625
5626 pub fn set_splat_chance(&mut self, value: f32) {
5627 unsafe { ffi::whiteout_m3_M3ParticleEmitter_set_splatChance(self.raw.as_ptr(), value) }
5629 }
5630
5631 pub fn copy_indices(&self) -> &[u32] {
5634 unsafe {
5637 let n = ffi::whiteout_m3_M3ParticleEmitter_get_copyIndices_count(self.raw.as_ptr());
5638 let p = ffi::whiteout_m3_M3ParticleEmitter_get_copyIndices_data(self.raw.as_ptr());
5639 if p.is_null() || n == 0 {
5640 &[]
5641 } else {
5642 core::slice::from_raw_parts(p, n)
5643 }
5644 }
5645 }
5646
5647 pub fn copy_indices_mut(&mut self) -> &mut [u32] {
5649 unsafe {
5651 let n = ffi::whiteout_m3_M3ParticleEmitter_get_copyIndices_count(self.raw.as_ptr());
5652 let p = ffi::whiteout_m3_M3ParticleEmitter_get_copyIndices_data(self.raw.as_ptr())
5653 as *mut u32;
5654 if p.is_null() || n == 0 {
5655 &mut []
5656 } else {
5657 core::slice::from_raw_parts_mut(p, n)
5658 }
5659 }
5660 }
5661
5662 pub fn set_copy_indices(&mut self, values: &[u32]) {
5663 unsafe {
5665 ffi::whiteout_m3_M3ParticleEmitter_assign_copyIndices(
5666 self.raw.as_ptr(),
5667 values.as_ptr() as *const _,
5668 values.len(),
5669 )
5670 }
5671 }
5672
5673 pub fn resize_copy_indices(&mut self, count: usize) {
5674 unsafe { ffi::whiteout_m3_M3ParticleEmitter_resize_copyIndices(self.raw.as_ptr(), count) }
5677 }
5678
5679 pub fn spawn_ribbon_on_bounce_chance(&self) -> f32 {
5681 unsafe {
5683 ffi::whiteout_m3_M3ParticleEmitter_get_spawnRibbonOnBounceChance(self.raw.as_ptr())
5684 }
5685 }
5686
5687 pub fn set_spawn_ribbon_on_bounce_chance(&mut self, value: f32) {
5688 unsafe {
5690 ffi::whiteout_m3_M3ParticleEmitter_set_spawnRibbonOnBounceChance(
5691 self.raw.as_ptr(),
5692 value,
5693 )
5694 }
5695 }
5696
5697 pub fn ribbon_link_index(&self) -> i32 {
5699 unsafe { ffi::whiteout_m3_M3ParticleEmitter_get_ribbonLinkIndex(self.raw.as_ptr()) }
5701 }
5702
5703 pub fn set_ribbon_link_index(&mut self, value: i32) {
5704 unsafe { ffi::whiteout_m3_M3ParticleEmitter_set_ribbonLinkIndex(self.raw.as_ptr(), value) }
5706 }
5707}
5708
5709impl Default for ParticleEmitter {
5710 fn default() -> Self {
5711 Self::new()
5712 }
5713}
5714
5715pub struct ParticleEmitterCopy {
5719 pub(crate) raw: core::ptr::NonNull<ffi::whiteout_M3ParticleEmitterCopy>,
5720}
5721
5722impl Drop for ParticleEmitterCopy {
5723 fn drop(&mut self) {
5724 unsafe { ffi::whiteout_m3_M3ParticleEmitterCopy_delete(self.raw.as_ptr()) }
5726 }
5727}
5728
5729impl ParticleEmitterCopy {
5730 #[allow(dead_code)] pub(crate) unsafe fn from_raw(raw: *mut ffi::whiteout_M3ParticleEmitterCopy) -> Option<Self> {
5734 core::ptr::NonNull::new(raw).map(|raw| ParticleEmitterCopy { raw })
5735 }
5736}
5737
5738unsafe impl Send for ParticleEmitterCopy {}
5743
5744impl core::fmt::Debug for ParticleEmitterCopy {
5745 fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
5746 f.debug_struct("ParticleEmitterCopy")
5747 .finish_non_exhaustive()
5748 }
5749}
5750
5751impl ParticleEmitterCopy {
5752 pub fn new() -> Self {
5755 unsafe {
5758 let raw = ffi::whiteout_m3_M3ParticleEmitterCopy_new();
5759 Self::from_raw(raw).expect("native ParticleEmitterCopy allocation failed")
5760 }
5761 }
5762
5763 pub fn emission_rate(&self) -> crate::support::Ref<'_, AnimRefF32> {
5766 unsafe {
5769 crate::support::Ref::new(AnimRefF32 {
5770 raw: core::ptr::NonNull::new_unchecked(
5771 ffi::whiteout_m3_M3ParticleEmitterCopy_get_emissionRate(self.raw.as_ptr()),
5772 ),
5773 })
5774 }
5775 }
5776
5777 pub fn emission_rate_mut(&mut self) -> crate::support::RefMut<'_, AnimRefF32> {
5778 unsafe {
5780 crate::support::RefMut::new(AnimRefF32 {
5781 raw: core::ptr::NonNull::new_unchecked(
5782 ffi::whiteout_m3_M3ParticleEmitterCopy_get_emissionRate(self.raw.as_ptr()),
5783 ),
5784 })
5785 }
5786 }
5787
5788 pub fn squirt_amount(&self) -> crate::support::Ref<'_, AnimRefU16> {
5791 unsafe {
5794 crate::support::Ref::new(AnimRefU16 {
5795 raw: core::ptr::NonNull::new_unchecked(
5796 ffi::whiteout_m3_M3ParticleEmitterCopy_get_squirtAmount(self.raw.as_ptr()),
5797 ),
5798 })
5799 }
5800 }
5801
5802 pub fn squirt_amount_mut(&mut self) -> crate::support::RefMut<'_, AnimRefU16> {
5803 unsafe {
5805 crate::support::RefMut::new(AnimRefU16 {
5806 raw: core::ptr::NonNull::new_unchecked(
5807 ffi::whiteout_m3_M3ParticleEmitterCopy_get_squirtAmount(self.raw.as_ptr()),
5808 ),
5809 })
5810 }
5811 }
5812
5813 pub fn bone_index(&self) -> u32 {
5815 unsafe { ffi::whiteout_m3_M3ParticleEmitterCopy_get_boneIndex(self.raw.as_ptr()) }
5817 }
5818
5819 pub fn set_bone_index(&mut self, value: u32) {
5820 unsafe { ffi::whiteout_m3_M3ParticleEmitterCopy_set_boneIndex(self.raw.as_ptr(), value) }
5822 }
5823}
5824
5825impl Default for ParticleEmitterCopy {
5826 fn default() -> Self {
5827 Self::new()
5828 }
5829}
5830
5831pub struct SplineRibbon {
5835 pub(crate) raw: core::ptr::NonNull<ffi::whiteout_M3SplineRibbon>,
5836}
5837
5838impl Drop for SplineRibbon {
5839 fn drop(&mut self) {
5840 unsafe { ffi::whiteout_m3_M3SplineRibbon_delete(self.raw.as_ptr()) }
5842 }
5843}
5844
5845impl SplineRibbon {
5846 #[allow(dead_code)] pub(crate) unsafe fn from_raw(raw: *mut ffi::whiteout_M3SplineRibbon) -> Option<Self> {
5850 core::ptr::NonNull::new(raw).map(|raw| SplineRibbon { raw })
5851 }
5852}
5853
5854unsafe impl Send for SplineRibbon {}
5859
5860impl core::fmt::Debug for SplineRibbon {
5861 fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
5862 f.debug_struct("SplineRibbon").finish_non_exhaustive()
5863 }
5864}
5865
5866impl SplineRibbon {
5867 pub fn new() -> Self {
5870 unsafe {
5873 let raw = ffi::whiteout_m3_M3SplineRibbon_new();
5874 Self::from_raw(raw).expect("native SplineRibbon allocation failed")
5875 }
5876 }
5877
5878 pub fn emission_offset(&self) -> crate::math::Vector3f {
5880 unsafe {
5883 *(ffi::whiteout_m3_M3SplineRibbon_get_emissionOffset(self.raw.as_ptr())
5884 as *const crate::math::Vector3f)
5885 }
5886 }
5887
5888 pub fn set_emission_offset(&mut self, value: crate::math::Vector3f) {
5889 unsafe {
5891 ffi::whiteout_m3_M3SplineRibbon_set_emissionOffset(
5892 self.raw.as_ptr(),
5893 &value as *const crate::math::Vector3f as *const _,
5894 )
5895 }
5896 }
5897
5898 pub fn emission_vector(&self) -> crate::math::Vector3f {
5900 unsafe {
5903 *(ffi::whiteout_m3_M3SplineRibbon_get_emissionVector(self.raw.as_ptr())
5904 as *const crate::math::Vector3f)
5905 }
5906 }
5907
5908 pub fn set_emission_vector(&mut self, value: crate::math::Vector3f) {
5909 unsafe {
5911 ffi::whiteout_m3_M3SplineRibbon_set_emissionVector(
5912 self.raw.as_ptr(),
5913 &value as *const crate::math::Vector3f as *const _,
5914 )
5915 }
5916 }
5917
5918 pub fn velocity(&self) -> crate::support::Ref<'_, AnimRefF32> {
5921 unsafe {
5924 crate::support::Ref::new(AnimRefF32 {
5925 raw: core::ptr::NonNull::new_unchecked(
5926 ffi::whiteout_m3_M3SplineRibbon_get_velocity(self.raw.as_ptr()),
5927 ),
5928 })
5929 }
5930 }
5931
5932 pub fn velocity_mut(&mut self) -> crate::support::RefMut<'_, AnimRefF32> {
5933 unsafe {
5935 crate::support::RefMut::new(AnimRefF32 {
5936 raw: core::ptr::NonNull::new_unchecked(
5937 ffi::whiteout_m3_M3SplineRibbon_get_velocity(self.raw.as_ptr()),
5938 ),
5939 })
5940 }
5941 }
5942
5943 pub fn reserved(&self) -> u32 {
5945 unsafe { ffi::whiteout_m3_M3SplineRibbon_get_reserved(self.raw.as_ptr()) }
5947 }
5948
5949 pub fn set_reserved(&mut self, value: u32) {
5950 unsafe { ffi::whiteout_m3_M3SplineRibbon_set_reserved(self.raw.as_ptr(), value) }
5952 }
5953
5954 pub fn bone_index(&self) -> u32 {
5956 unsafe { ffi::whiteout_m3_M3SplineRibbon_get_boneIndex(self.raw.as_ptr()) }
5958 }
5959
5960 pub fn set_bone_index(&mut self, value: u32) {
5961 unsafe { ffi::whiteout_m3_M3SplineRibbon_set_boneIndex(self.raw.as_ptr(), value) }
5963 }
5964
5965 pub fn velocity_base_factor(&self) -> crate::support::Ref<'_, AnimRefF32> {
5968 unsafe {
5971 crate::support::Ref::new(AnimRefF32 {
5972 raw: core::ptr::NonNull::new_unchecked(
5973 ffi::whiteout_m3_M3SplineRibbon_get_velocityBaseFactor(self.raw.as_ptr()),
5974 ),
5975 })
5976 }
5977 }
5978
5979 pub fn velocity_base_factor_mut(&mut self) -> crate::support::RefMut<'_, AnimRefF32> {
5980 unsafe {
5982 crate::support::RefMut::new(AnimRefF32 {
5983 raw: core::ptr::NonNull::new_unchecked(
5984 ffi::whiteout_m3_M3SplineRibbon_get_velocityBaseFactor(self.raw.as_ptr()),
5985 ),
5986 })
5987 }
5988 }
5989
5990 pub fn velocity_end_factor(&self) -> crate::support::Ref<'_, AnimRefF32> {
5993 unsafe {
5996 crate::support::Ref::new(AnimRefF32 {
5997 raw: core::ptr::NonNull::new_unchecked(
5998 ffi::whiteout_m3_M3SplineRibbon_get_velocityEndFactor(self.raw.as_ptr()),
5999 ),
6000 })
6001 }
6002 }
6003
6004 pub fn velocity_end_factor_mut(&mut self) -> crate::support::RefMut<'_, AnimRefF32> {
6005 unsafe {
6007 crate::support::RefMut::new(AnimRefF32 {
6008 raw: core::ptr::NonNull::new_unchecked(
6009 ffi::whiteout_m3_M3SplineRibbon_get_velocityEndFactor(self.raw.as_ptr()),
6010 ),
6011 })
6012 }
6013 }
6014
6015 pub fn yaw_type(&self) -> u32 {
6017 unsafe { ffi::whiteout_m3_M3SplineRibbon_get_yawType(self.raw.as_ptr()) }
6019 }
6020
6021 pub fn set_yaw_type(&mut self, value: u32) {
6022 unsafe { ffi::whiteout_m3_M3SplineRibbon_set_yawType(self.raw.as_ptr(), value) }
6024 }
6025
6026 pub fn yaw_amplitude(&self) -> crate::support::Ref<'_, AnimRefF32> {
6029 unsafe {
6032 crate::support::Ref::new(AnimRefF32 {
6033 raw: core::ptr::NonNull::new_unchecked(
6034 ffi::whiteout_m3_M3SplineRibbon_get_yawAmplitude(self.raw.as_ptr()),
6035 ),
6036 })
6037 }
6038 }
6039
6040 pub fn yaw_amplitude_mut(&mut self) -> crate::support::RefMut<'_, AnimRefF32> {
6041 unsafe {
6043 crate::support::RefMut::new(AnimRefF32 {
6044 raw: core::ptr::NonNull::new_unchecked(
6045 ffi::whiteout_m3_M3SplineRibbon_get_yawAmplitude(self.raw.as_ptr()),
6046 ),
6047 })
6048 }
6049 }
6050
6051 pub fn yaw_frequency(&self) -> crate::support::Ref<'_, AnimRefF32> {
6054 unsafe {
6057 crate::support::Ref::new(AnimRefF32 {
6058 raw: core::ptr::NonNull::new_unchecked(
6059 ffi::whiteout_m3_M3SplineRibbon_get_yawFrequency(self.raw.as_ptr()),
6060 ),
6061 })
6062 }
6063 }
6064
6065 pub fn yaw_frequency_mut(&mut self) -> crate::support::RefMut<'_, AnimRefF32> {
6066 unsafe {
6068 crate::support::RefMut::new(AnimRefF32 {
6069 raw: core::ptr::NonNull::new_unchecked(
6070 ffi::whiteout_m3_M3SplineRibbon_get_yawFrequency(self.raw.as_ptr()),
6071 ),
6072 })
6073 }
6074 }
6075
6076 pub fn pitch_type(&self) -> u32 {
6078 unsafe { ffi::whiteout_m3_M3SplineRibbon_get_pitchType(self.raw.as_ptr()) }
6080 }
6081
6082 pub fn set_pitch_type(&mut self, value: u32) {
6083 unsafe { ffi::whiteout_m3_M3SplineRibbon_set_pitchType(self.raw.as_ptr(), value) }
6085 }
6086
6087 pub fn pitch_amplitude(&self) -> crate::support::Ref<'_, AnimRefF32> {
6090 unsafe {
6093 crate::support::Ref::new(AnimRefF32 {
6094 raw: core::ptr::NonNull::new_unchecked(
6095 ffi::whiteout_m3_M3SplineRibbon_get_pitchAmplitude(self.raw.as_ptr()),
6096 ),
6097 })
6098 }
6099 }
6100
6101 pub fn pitch_amplitude_mut(&mut self) -> crate::support::RefMut<'_, AnimRefF32> {
6102 unsafe {
6104 crate::support::RefMut::new(AnimRefF32 {
6105 raw: core::ptr::NonNull::new_unchecked(
6106 ffi::whiteout_m3_M3SplineRibbon_get_pitchAmplitude(self.raw.as_ptr()),
6107 ),
6108 })
6109 }
6110 }
6111
6112 pub fn pitch_frequency(&self) -> crate::support::Ref<'_, AnimRefF32> {
6115 unsafe {
6118 crate::support::Ref::new(AnimRefF32 {
6119 raw: core::ptr::NonNull::new_unchecked(
6120 ffi::whiteout_m3_M3SplineRibbon_get_pitchFrequency(self.raw.as_ptr()),
6121 ),
6122 })
6123 }
6124 }
6125
6126 pub fn pitch_frequency_mut(&mut self) -> crate::support::RefMut<'_, AnimRefF32> {
6127 unsafe {
6129 crate::support::RefMut::new(AnimRefF32 {
6130 raw: core::ptr::NonNull::new_unchecked(
6131 ffi::whiteout_m3_M3SplineRibbon_get_pitchFrequency(self.raw.as_ptr()),
6132 ),
6133 })
6134 }
6135 }
6136
6137 pub fn velocity_type(&self) -> u32 {
6139 unsafe { ffi::whiteout_m3_M3SplineRibbon_get_velocityType(self.raw.as_ptr()) }
6141 }
6142
6143 pub fn set_velocity_type(&mut self, value: u32) {
6144 unsafe { ffi::whiteout_m3_M3SplineRibbon_set_velocityType(self.raw.as_ptr(), value) }
6146 }
6147
6148 pub fn velocity_amplitude(&self) -> crate::support::Ref<'_, AnimRefF32> {
6151 unsafe {
6154 crate::support::Ref::new(AnimRefF32 {
6155 raw: core::ptr::NonNull::new_unchecked(
6156 ffi::whiteout_m3_M3SplineRibbon_get_velocityAmplitude(self.raw.as_ptr()),
6157 ),
6158 })
6159 }
6160 }
6161
6162 pub fn velocity_amplitude_mut(&mut self) -> crate::support::RefMut<'_, AnimRefF32> {
6163 unsafe {
6165 crate::support::RefMut::new(AnimRefF32 {
6166 raw: core::ptr::NonNull::new_unchecked(
6167 ffi::whiteout_m3_M3SplineRibbon_get_velocityAmplitude(self.raw.as_ptr()),
6168 ),
6169 })
6170 }
6171 }
6172
6173 pub fn velocity_frequency(&self) -> crate::support::Ref<'_, AnimRefF32> {
6176 unsafe {
6179 crate::support::Ref::new(AnimRefF32 {
6180 raw: core::ptr::NonNull::new_unchecked(
6181 ffi::whiteout_m3_M3SplineRibbon_get_velocityFrequency(self.raw.as_ptr()),
6182 ),
6183 })
6184 }
6185 }
6186
6187 pub fn velocity_frequency_mut(&mut self) -> crate::support::RefMut<'_, AnimRefF32> {
6188 unsafe {
6190 crate::support::RefMut::new(AnimRefF32 {
6191 raw: core::ptr::NonNull::new_unchecked(
6192 ffi::whiteout_m3_M3SplineRibbon_get_velocityFrequency(self.raw.as_ptr()),
6193 ),
6194 })
6195 }
6196 }
6197
6198 pub fn yaw(&self) -> crate::support::Ref<'_, AnimRefF32> {
6201 unsafe {
6204 crate::support::Ref::new(AnimRefF32 {
6205 raw: core::ptr::NonNull::new_unchecked(ffi::whiteout_m3_M3SplineRibbon_get_yaw(
6206 self.raw.as_ptr(),
6207 )),
6208 })
6209 }
6210 }
6211
6212 pub fn yaw_mut(&mut self) -> crate::support::RefMut<'_, AnimRefF32> {
6213 unsafe {
6215 crate::support::RefMut::new(AnimRefF32 {
6216 raw: core::ptr::NonNull::new_unchecked(ffi::whiteout_m3_M3SplineRibbon_get_yaw(
6217 self.raw.as_ptr(),
6218 )),
6219 })
6220 }
6221 }
6222
6223 pub fn pitch(&self) -> crate::support::Ref<'_, AnimRefF32> {
6226 unsafe {
6229 crate::support::Ref::new(AnimRefF32 {
6230 raw: core::ptr::NonNull::new_unchecked(ffi::whiteout_m3_M3SplineRibbon_get_pitch(
6231 self.raw.as_ptr(),
6232 )),
6233 })
6234 }
6235 }
6236
6237 pub fn pitch_mut(&mut self) -> crate::support::RefMut<'_, AnimRefF32> {
6238 unsafe {
6240 crate::support::RefMut::new(AnimRefF32 {
6241 raw: core::ptr::NonNull::new_unchecked(ffi::whiteout_m3_M3SplineRibbon_get_pitch(
6242 self.raw.as_ptr(),
6243 )),
6244 })
6245 }
6246 }
6247
6248 pub fn emission_vector_norm_factor(&self) -> f32 {
6250 unsafe { ffi::whiteout_m3_M3SplineRibbon_get_emissionVectorNormFactor(self.raw.as_ptr()) }
6252 }
6253
6254 pub fn set_emission_vector_norm_factor(&mut self, value: f32) {
6255 unsafe {
6257 ffi::whiteout_m3_M3SplineRibbon_set_emissionVectorNormFactor(self.raw.as_ptr(), value)
6258 }
6259 }
6260
6261 pub fn velocity_norm_factor(&self) -> f32 {
6263 unsafe { ffi::whiteout_m3_M3SplineRibbon_get_velocityNormFactor(self.raw.as_ptr()) }
6265 }
6266
6267 pub fn set_velocity_norm_factor(&mut self, value: f32) {
6268 unsafe { ffi::whiteout_m3_M3SplineRibbon_set_velocityNormFactor(self.raw.as_ptr(), value) }
6270 }
6271}
6272
6273impl Default for SplineRibbon {
6274 fn default() -> Self {
6275 Self::new()
6276 }
6277}
6278
6279pub struct RibbonEmitter {
6283 pub(crate) raw: core::ptr::NonNull<ffi::whiteout_M3RibbonEmitter>,
6284}
6285
6286impl Drop for RibbonEmitter {
6287 fn drop(&mut self) {
6288 unsafe { ffi::whiteout_m3_M3RibbonEmitter_delete(self.raw.as_ptr()) }
6290 }
6291}
6292
6293impl RibbonEmitter {
6294 #[allow(dead_code)] pub(crate) unsafe fn from_raw(raw: *mut ffi::whiteout_M3RibbonEmitter) -> Option<Self> {
6298 core::ptr::NonNull::new(raw).map(|raw| RibbonEmitter { raw })
6299 }
6300}
6301
6302unsafe impl Send for RibbonEmitter {}
6307
6308impl core::fmt::Debug for RibbonEmitter {
6309 fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
6310 f.debug_struct("RibbonEmitter").finish_non_exhaustive()
6311 }
6312}
6313
6314impl RibbonEmitter {
6315 pub fn new() -> Self {
6318 unsafe {
6321 let raw = ffi::whiteout_m3_M3RibbonEmitter_new();
6322 Self::from_raw(raw).expect("native RibbonEmitter allocation failed")
6323 }
6324 }
6325
6326 pub fn bone_index(&self) -> u16 {
6328 unsafe { ffi::whiteout_m3_M3RibbonEmitter_get_boneIndex(self.raw.as_ptr()) }
6330 }
6331
6332 pub fn set_bone_index(&mut self, value: u16) {
6333 unsafe { ffi::whiteout_m3_M3RibbonEmitter_set_boneIndex(self.raw.as_ptr(), value) }
6335 }
6336
6337 pub fn bone_index_fallback(&self) -> u16 {
6339 unsafe { ffi::whiteout_m3_M3RibbonEmitter_get_boneIndexFallback(self.raw.as_ptr()) }
6341 }
6342
6343 pub fn set_bone_index_fallback(&mut self, value: u16) {
6344 unsafe { ffi::whiteout_m3_M3RibbonEmitter_set_boneIndexFallback(self.raw.as_ptr(), value) }
6346 }
6347
6348 pub fn material_index(&self) -> u32 {
6350 unsafe { ffi::whiteout_m3_M3RibbonEmitter_get_materialIndex(self.raw.as_ptr()) }
6352 }
6353
6354 pub fn set_material_index(&mut self, value: u32) {
6355 unsafe { ffi::whiteout_m3_M3RibbonEmitter_set_materialIndex(self.raw.as_ptr(), value) }
6357 }
6358
6359 pub fn additional_flags(&self) -> RibbonAdditionalFlag {
6361 RibbonAdditionalFlag(unsafe {
6363 ffi::whiteout_m3_M3RibbonEmitter_get_additionalFlags(self.raw.as_ptr())
6364 })
6365 }
6366
6367 pub fn set_additional_flags(&mut self, value: RibbonAdditionalFlag) {
6368 unsafe { ffi::whiteout_m3_M3RibbonEmitter_set_additionalFlags(self.raw.as_ptr(), value.0) }
6370 }
6371
6372 pub fn initial_speed(&self) -> crate::support::Ref<'_, AnimRefF32> {
6375 unsafe {
6378 crate::support::Ref::new(AnimRefF32 {
6379 raw: core::ptr::NonNull::new_unchecked(
6380 ffi::whiteout_m3_M3RibbonEmitter_get_initialSpeed(self.raw.as_ptr()),
6381 ),
6382 })
6383 }
6384 }
6385
6386 pub fn initial_speed_mut(&mut self) -> crate::support::RefMut<'_, AnimRefF32> {
6387 unsafe {
6389 crate::support::RefMut::new(AnimRefF32 {
6390 raw: core::ptr::NonNull::new_unchecked(
6391 ffi::whiteout_m3_M3RibbonEmitter_get_initialSpeed(self.raw.as_ptr()),
6392 ),
6393 })
6394 }
6395 }
6396
6397 pub fn initial_speed_random(&self) -> crate::support::Ref<'_, AnimRefF32> {
6400 unsafe {
6403 crate::support::Ref::new(AnimRefF32 {
6404 raw: core::ptr::NonNull::new_unchecked(
6405 ffi::whiteout_m3_M3RibbonEmitter_get_initialSpeedRandom(self.raw.as_ptr()),
6406 ),
6407 })
6408 }
6409 }
6410
6411 pub fn initial_speed_random_mut(&mut self) -> crate::support::RefMut<'_, AnimRefF32> {
6412 unsafe {
6414 crate::support::RefMut::new(AnimRefF32 {
6415 raw: core::ptr::NonNull::new_unchecked(
6416 ffi::whiteout_m3_M3RibbonEmitter_get_initialSpeedRandom(self.raw.as_ptr()),
6417 ),
6418 })
6419 }
6420 }
6421
6422 pub fn initial_yaw(&self) -> crate::support::Ref<'_, AnimRefF32> {
6425 unsafe {
6428 crate::support::Ref::new(AnimRefF32 {
6429 raw: core::ptr::NonNull::new_unchecked(
6430 ffi::whiteout_m3_M3RibbonEmitter_get_initialYaw(self.raw.as_ptr()),
6431 ),
6432 })
6433 }
6434 }
6435
6436 pub fn initial_yaw_mut(&mut self) -> crate::support::RefMut<'_, AnimRefF32> {
6437 unsafe {
6439 crate::support::RefMut::new(AnimRefF32 {
6440 raw: core::ptr::NonNull::new_unchecked(
6441 ffi::whiteout_m3_M3RibbonEmitter_get_initialYaw(self.raw.as_ptr()),
6442 ),
6443 })
6444 }
6445 }
6446
6447 pub fn initial_pitch(&self) -> crate::support::Ref<'_, AnimRefF32> {
6450 unsafe {
6453 crate::support::Ref::new(AnimRefF32 {
6454 raw: core::ptr::NonNull::new_unchecked(
6455 ffi::whiteout_m3_M3RibbonEmitter_get_initialPitch(self.raw.as_ptr()),
6456 ),
6457 })
6458 }
6459 }
6460
6461 pub fn initial_pitch_mut(&mut self) -> crate::support::RefMut<'_, AnimRefF32> {
6462 unsafe {
6464 crate::support::RefMut::new(AnimRefF32 {
6465 raw: core::ptr::NonNull::new_unchecked(
6466 ffi::whiteout_m3_M3RibbonEmitter_get_initialPitch(self.raw.as_ptr()),
6467 ),
6468 })
6469 }
6470 }
6471
6472 pub fn initial_horizontal(&self) -> crate::support::Ref<'_, AnimRefF32> {
6475 unsafe {
6478 crate::support::Ref::new(AnimRefF32 {
6479 raw: core::ptr::NonNull::new_unchecked(
6480 ffi::whiteout_m3_M3RibbonEmitter_get_initialHorizontal(self.raw.as_ptr()),
6481 ),
6482 })
6483 }
6484 }
6485
6486 pub fn initial_horizontal_mut(&mut self) -> crate::support::RefMut<'_, AnimRefF32> {
6487 unsafe {
6489 crate::support::RefMut::new(AnimRefF32 {
6490 raw: core::ptr::NonNull::new_unchecked(
6491 ffi::whiteout_m3_M3RibbonEmitter_get_initialHorizontal(self.raw.as_ptr()),
6492 ),
6493 })
6494 }
6495 }
6496
6497 pub fn initial_vertical(&self) -> crate::support::Ref<'_, AnimRefF32> {
6500 unsafe {
6503 crate::support::Ref::new(AnimRefF32 {
6504 raw: core::ptr::NonNull::new_unchecked(
6505 ffi::whiteout_m3_M3RibbonEmitter_get_initialVertical(self.raw.as_ptr()),
6506 ),
6507 })
6508 }
6509 }
6510
6511 pub fn initial_vertical_mut(&mut self) -> crate::support::RefMut<'_, AnimRefF32> {
6512 unsafe {
6514 crate::support::RefMut::new(AnimRefF32 {
6515 raw: core::ptr::NonNull::new_unchecked(
6516 ffi::whiteout_m3_M3RibbonEmitter_get_initialVertical(self.raw.as_ptr()),
6517 ),
6518 })
6519 }
6520 }
6521
6522 pub fn lifetime(&self) -> crate::support::Ref<'_, AnimRefF32> {
6525 unsafe {
6528 crate::support::Ref::new(AnimRefF32 {
6529 raw: core::ptr::NonNull::new_unchecked(
6530 ffi::whiteout_m3_M3RibbonEmitter_get_lifetime(self.raw.as_ptr()),
6531 ),
6532 })
6533 }
6534 }
6535
6536 pub fn lifetime_mut(&mut self) -> crate::support::RefMut<'_, AnimRefF32> {
6537 unsafe {
6539 crate::support::RefMut::new(AnimRefF32 {
6540 raw: core::ptr::NonNull::new_unchecked(
6541 ffi::whiteout_m3_M3RibbonEmitter_get_lifetime(self.raw.as_ptr()),
6542 ),
6543 })
6544 }
6545 }
6546
6547 pub fn lifetime_random(&self) -> crate::support::Ref<'_, AnimRefF32> {
6550 unsafe {
6553 crate::support::Ref::new(AnimRefF32 {
6554 raw: core::ptr::NonNull::new_unchecked(
6555 ffi::whiteout_m3_M3RibbonEmitter_get_lifetimeRandom(self.raw.as_ptr()),
6556 ),
6557 })
6558 }
6559 }
6560
6561 pub fn lifetime_random_mut(&mut self) -> crate::support::RefMut<'_, AnimRefF32> {
6562 unsafe {
6564 crate::support::RefMut::new(AnimRefF32 {
6565 raw: core::ptr::NonNull::new_unchecked(
6566 ffi::whiteout_m3_M3RibbonEmitter_get_lifetimeRandom(self.raw.as_ptr()),
6567 ),
6568 })
6569 }
6570 }
6571
6572 pub fn kill_radius(&self) -> u32 {
6574 unsafe { ffi::whiteout_m3_M3RibbonEmitter_get_killRadius(self.raw.as_ptr()) }
6576 }
6577
6578 pub fn set_kill_radius(&mut self, value: u32) {
6579 unsafe { ffi::whiteout_m3_M3RibbonEmitter_set_killRadius(self.raw.as_ptr(), value) }
6581 }
6582
6583 pub fn gravity_x(&self) -> f32 {
6585 unsafe { ffi::whiteout_m3_M3RibbonEmitter_get_gravityX(self.raw.as_ptr()) }
6587 }
6588
6589 pub fn set_gravity_x(&mut self, value: f32) {
6590 unsafe { ffi::whiteout_m3_M3RibbonEmitter_set_gravityX(self.raw.as_ptr(), value) }
6592 }
6593
6594 pub fn gravity_y(&self) -> f32 {
6596 unsafe { ffi::whiteout_m3_M3RibbonEmitter_get_gravityY(self.raw.as_ptr()) }
6598 }
6599
6600 pub fn set_gravity_y(&mut self, value: f32) {
6601 unsafe { ffi::whiteout_m3_M3RibbonEmitter_set_gravityY(self.raw.as_ptr(), value) }
6603 }
6604
6605 pub fn gravity(&self) -> f32 {
6607 unsafe { ffi::whiteout_m3_M3RibbonEmitter_get_gravity(self.raw.as_ptr()) }
6609 }
6610
6611 pub fn set_gravity(&mut self, value: f32) {
6612 unsafe { ffi::whiteout_m3_M3RibbonEmitter_set_gravity(self.raw.as_ptr(), value) }
6614 }
6615
6616 pub fn size_mid_time(&self) -> f32 {
6618 unsafe { ffi::whiteout_m3_M3RibbonEmitter_get_sizeMidTime(self.raw.as_ptr()) }
6620 }
6621
6622 pub fn set_size_mid_time(&mut self, value: f32) {
6623 unsafe { ffi::whiteout_m3_M3RibbonEmitter_set_sizeMidTime(self.raw.as_ptr(), value) }
6625 }
6626
6627 pub fn color_mid_time(&self) -> f32 {
6629 unsafe { ffi::whiteout_m3_M3RibbonEmitter_get_colorMidTime(self.raw.as_ptr()) }
6631 }
6632
6633 pub fn set_color_mid_time(&mut self, value: f32) {
6634 unsafe { ffi::whiteout_m3_M3RibbonEmitter_set_colorMidTime(self.raw.as_ptr(), value) }
6636 }
6637
6638 pub fn alpha_mid_time(&self) -> f32 {
6640 unsafe { ffi::whiteout_m3_M3RibbonEmitter_get_alphaMidTime(self.raw.as_ptr()) }
6642 }
6643
6644 pub fn set_alpha_mid_time(&mut self, value: f32) {
6645 unsafe { ffi::whiteout_m3_M3RibbonEmitter_set_alphaMidTime(self.raw.as_ptr(), value) }
6647 }
6648
6649 pub fn rotation_mid_time(&self) -> f32 {
6651 unsafe { ffi::whiteout_m3_M3RibbonEmitter_get_rotationMidTime(self.raw.as_ptr()) }
6653 }
6654
6655 pub fn set_rotation_mid_time(&mut self, value: f32) {
6656 unsafe { ffi::whiteout_m3_M3RibbonEmitter_set_rotationMidTime(self.raw.as_ptr(), value) }
6658 }
6659
6660 pub fn size_mid_hold_time(&self) -> f32 {
6662 unsafe { ffi::whiteout_m3_M3RibbonEmitter_get_sizeMidHoldTime(self.raw.as_ptr()) }
6664 }
6665
6666 pub fn set_size_mid_hold_time(&mut self, value: f32) {
6667 unsafe { ffi::whiteout_m3_M3RibbonEmitter_set_sizeMidHoldTime(self.raw.as_ptr(), value) }
6669 }
6670
6671 pub fn color_mid_hold_time(&self) -> f32 {
6673 unsafe { ffi::whiteout_m3_M3RibbonEmitter_get_colorMidHoldTime(self.raw.as_ptr()) }
6675 }
6676
6677 pub fn set_color_mid_hold_time(&mut self, value: f32) {
6678 unsafe { ffi::whiteout_m3_M3RibbonEmitter_set_colorMidHoldTime(self.raw.as_ptr(), value) }
6680 }
6681
6682 pub fn alpha_mid_hold_time(&self) -> f32 {
6684 unsafe { ffi::whiteout_m3_M3RibbonEmitter_get_alphaMidHoldTime(self.raw.as_ptr()) }
6686 }
6687
6688 pub fn set_alpha_mid_hold_time(&mut self, value: f32) {
6689 unsafe { ffi::whiteout_m3_M3RibbonEmitter_set_alphaMidHoldTime(self.raw.as_ptr(), value) }
6691 }
6692
6693 pub fn rotation_mid_hold_time(&self) -> f32 {
6695 unsafe { ffi::whiteout_m3_M3RibbonEmitter_get_rotationMidHoldTime(self.raw.as_ptr()) }
6697 }
6698
6699 pub fn set_rotation_mid_hold_time(&mut self, value: f32) {
6700 unsafe {
6702 ffi::whiteout_m3_M3RibbonEmitter_set_rotationMidHoldTime(self.raw.as_ptr(), value)
6703 }
6704 }
6705
6706 pub fn size_animation(&self) -> crate::support::Ref<'_, AnimRefVector3f> {
6709 unsafe {
6712 crate::support::Ref::new(AnimRefVector3f {
6713 raw: core::ptr::NonNull::new_unchecked(
6714 ffi::whiteout_m3_M3RibbonEmitter_get_sizeAnimation(self.raw.as_ptr()),
6715 ),
6716 })
6717 }
6718 }
6719
6720 pub fn size_animation_mut(&mut self) -> crate::support::RefMut<'_, AnimRefVector3f> {
6721 unsafe {
6723 crate::support::RefMut::new(AnimRefVector3f {
6724 raw: core::ptr::NonNull::new_unchecked(
6725 ffi::whiteout_m3_M3RibbonEmitter_get_sizeAnimation(self.raw.as_ptr()),
6726 ),
6727 })
6728 }
6729 }
6730
6731 pub fn rotation_animation(&self) -> crate::support::Ref<'_, AnimRefVector3f> {
6734 unsafe {
6737 crate::support::Ref::new(AnimRefVector3f {
6738 raw: core::ptr::NonNull::new_unchecked(
6739 ffi::whiteout_m3_M3RibbonEmitter_get_rotationAnimation(self.raw.as_ptr()),
6740 ),
6741 })
6742 }
6743 }
6744
6745 pub fn rotation_animation_mut(&mut self) -> crate::support::RefMut<'_, AnimRefVector3f> {
6746 unsafe {
6748 crate::support::RefMut::new(AnimRefVector3f {
6749 raw: core::ptr::NonNull::new_unchecked(
6750 ffi::whiteout_m3_M3RibbonEmitter_get_rotationAnimation(self.raw.as_ptr()),
6751 ),
6752 })
6753 }
6754 }
6755
6756 pub fn color_start(&self) -> crate::support::Ref<'_, AnimRefM3ColorBGRA> {
6759 unsafe {
6762 crate::support::Ref::new(AnimRefM3ColorBGRA {
6763 raw: core::ptr::NonNull::new_unchecked(
6764 ffi::whiteout_m3_M3RibbonEmitter_get_colorStart(self.raw.as_ptr()),
6765 ),
6766 })
6767 }
6768 }
6769
6770 pub fn color_start_mut(&mut self) -> crate::support::RefMut<'_, AnimRefM3ColorBGRA> {
6771 unsafe {
6773 crate::support::RefMut::new(AnimRefM3ColorBGRA {
6774 raw: core::ptr::NonNull::new_unchecked(
6775 ffi::whiteout_m3_M3RibbonEmitter_get_colorStart(self.raw.as_ptr()),
6776 ),
6777 })
6778 }
6779 }
6780
6781 pub fn color_mid(&self) -> crate::support::Ref<'_, AnimRefM3ColorBGRA> {
6784 unsafe {
6787 crate::support::Ref::new(AnimRefM3ColorBGRA {
6788 raw: core::ptr::NonNull::new_unchecked(
6789 ffi::whiteout_m3_M3RibbonEmitter_get_colorMid(self.raw.as_ptr()),
6790 ),
6791 })
6792 }
6793 }
6794
6795 pub fn color_mid_mut(&mut self) -> crate::support::RefMut<'_, AnimRefM3ColorBGRA> {
6796 unsafe {
6798 crate::support::RefMut::new(AnimRefM3ColorBGRA {
6799 raw: core::ptr::NonNull::new_unchecked(
6800 ffi::whiteout_m3_M3RibbonEmitter_get_colorMid(self.raw.as_ptr()),
6801 ),
6802 })
6803 }
6804 }
6805
6806 pub fn color_end(&self) -> crate::support::Ref<'_, AnimRefM3ColorBGRA> {
6809 unsafe {
6812 crate::support::Ref::new(AnimRefM3ColorBGRA {
6813 raw: core::ptr::NonNull::new_unchecked(
6814 ffi::whiteout_m3_M3RibbonEmitter_get_colorEnd(self.raw.as_ptr()),
6815 ),
6816 })
6817 }
6818 }
6819
6820 pub fn color_end_mut(&mut self) -> crate::support::RefMut<'_, AnimRefM3ColorBGRA> {
6821 unsafe {
6823 crate::support::RefMut::new(AnimRefM3ColorBGRA {
6824 raw: core::ptr::NonNull::new_unchecked(
6825 ffi::whiteout_m3_M3RibbonEmitter_get_colorEnd(self.raw.as_ptr()),
6826 ),
6827 })
6828 }
6829 }
6830
6831 pub fn drag(&self) -> f32 {
6833 unsafe { ffi::whiteout_m3_M3RibbonEmitter_get_drag(self.raw.as_ptr()) }
6835 }
6836
6837 pub fn set_drag(&mut self, value: f32) {
6838 unsafe { ffi::whiteout_m3_M3RibbonEmitter_set_drag(self.raw.as_ptr(), value) }
6840 }
6841
6842 pub fn mass(&self) -> f32 {
6844 unsafe { ffi::whiteout_m3_M3RibbonEmitter_get_mass(self.raw.as_ptr()) }
6846 }
6847
6848 pub fn set_mass(&mut self, value: f32) {
6849 unsafe { ffi::whiteout_m3_M3RibbonEmitter_set_mass(self.raw.as_ptr(), value) }
6851 }
6852
6853 pub fn mass_random(&self) -> f32 {
6855 unsafe { ffi::whiteout_m3_M3RibbonEmitter_get_massRandom(self.raw.as_ptr()) }
6857 }
6858
6859 pub fn set_mass_random(&mut self, value: f32) {
6860 unsafe { ffi::whiteout_m3_M3RibbonEmitter_set_massRandom(self.raw.as_ptr(), value) }
6862 }
6863
6864 pub fn mass_size_multiplier(&self) -> f32 {
6866 unsafe { ffi::whiteout_m3_M3RibbonEmitter_get_massSizeMultiplier(self.raw.as_ptr()) }
6868 }
6869
6870 pub fn set_mass_size_multiplier(&mut self, value: f32) {
6871 unsafe { ffi::whiteout_m3_M3RibbonEmitter_set_massSizeMultiplier(self.raw.as_ptr(), value) }
6873 }
6874
6875 pub fn local_forces(&self) -> u16 {
6877 unsafe { ffi::whiteout_m3_M3RibbonEmitter_get_localForces(self.raw.as_ptr()) }
6879 }
6880
6881 pub fn set_local_forces(&mut self, value: u16) {
6882 unsafe { ffi::whiteout_m3_M3RibbonEmitter_set_localForces(self.raw.as_ptr(), value) }
6884 }
6885
6886 pub fn world_forces(&self) -> u16 {
6888 unsafe { ffi::whiteout_m3_M3RibbonEmitter_get_worldForces(self.raw.as_ptr()) }
6890 }
6891
6892 pub fn set_world_forces(&mut self, value: u16) {
6893 unsafe { ffi::whiteout_m3_M3RibbonEmitter_set_worldForces(self.raw.as_ptr(), value) }
6895 }
6896
6897 pub fn local_forces_fallback(&self) -> u16 {
6899 unsafe { ffi::whiteout_m3_M3RibbonEmitter_get_localForcesFallback(self.raw.as_ptr()) }
6901 }
6902
6903 pub fn set_local_forces_fallback(&mut self, value: u16) {
6904 unsafe {
6906 ffi::whiteout_m3_M3RibbonEmitter_set_localForcesFallback(self.raw.as_ptr(), value)
6907 }
6908 }
6909
6910 pub fn world_forces_fallback(&self) -> u16 {
6912 unsafe { ffi::whiteout_m3_M3RibbonEmitter_get_worldForcesFallback(self.raw.as_ptr()) }
6914 }
6915
6916 pub fn set_world_forces_fallback(&mut self, value: u16) {
6917 unsafe {
6919 ffi::whiteout_m3_M3RibbonEmitter_set_worldForcesFallback(self.raw.as_ptr(), value)
6920 }
6921 }
6922
6923 pub fn world_forces_mass_multiplier(&self) -> f32 {
6925 unsafe { ffi::whiteout_m3_M3RibbonEmitter_get_worldForcesMassMultiplier(self.raw.as_ptr()) }
6927 }
6928
6929 pub fn set_world_forces_mass_multiplier(&mut self, value: f32) {
6930 unsafe {
6932 ffi::whiteout_m3_M3RibbonEmitter_set_worldForcesMassMultiplier(self.raw.as_ptr(), value)
6933 }
6934 }
6935
6936 pub fn noise_amplitude(&self) -> f32 {
6938 unsafe { ffi::whiteout_m3_M3RibbonEmitter_get_noiseAmplitude(self.raw.as_ptr()) }
6940 }
6941
6942 pub fn set_noise_amplitude(&mut self, value: f32) {
6943 unsafe { ffi::whiteout_m3_M3RibbonEmitter_set_noiseAmplitude(self.raw.as_ptr(), value) }
6945 }
6946
6947 pub fn noise_frequency(&self) -> f32 {
6949 unsafe { ffi::whiteout_m3_M3RibbonEmitter_get_noiseFrequency(self.raw.as_ptr()) }
6951 }
6952
6953 pub fn set_noise_frequency(&mut self, value: f32) {
6954 unsafe { ffi::whiteout_m3_M3RibbonEmitter_set_noiseFrequency(self.raw.as_ptr(), value) }
6956 }
6957
6958 pub fn noise_coherence(&self) -> f32 {
6960 unsafe { ffi::whiteout_m3_M3RibbonEmitter_get_noiseCoherence(self.raw.as_ptr()) }
6962 }
6963
6964 pub fn set_noise_coherence(&mut self, value: f32) {
6965 unsafe { ffi::whiteout_m3_M3RibbonEmitter_set_noiseCoherence(self.raw.as_ptr(), value) }
6967 }
6968
6969 pub fn noise_edge(&self) -> f32 {
6971 unsafe { ffi::whiteout_m3_M3RibbonEmitter_get_noiseEdge(self.raw.as_ptr()) }
6973 }
6974
6975 pub fn set_noise_edge(&mut self, value: f32) {
6976 unsafe { ffi::whiteout_m3_M3RibbonEmitter_set_noiseEdge(self.raw.as_ptr(), value) }
6978 }
6979
6980 pub fn index_plus_length(&self) -> u32 {
6982 unsafe { ffi::whiteout_m3_M3RibbonEmitter_get_indexPlusLength(self.raw.as_ptr()) }
6984 }
6985
6986 pub fn set_index_plus_length(&mut self, value: u32) {
6987 unsafe { ffi::whiteout_m3_M3RibbonEmitter_set_indexPlusLength(self.raw.as_ptr(), value) }
6989 }
6990
6991 pub fn emitter_shape(&self) -> u32 {
6993 unsafe { ffi::whiteout_m3_M3RibbonEmitter_get_emitterShape(self.raw.as_ptr()) }
6995 }
6996
6997 pub fn set_emitter_shape(&mut self, value: u32) {
6998 unsafe { ffi::whiteout_m3_M3RibbonEmitter_set_emitterShape(self.raw.as_ptr(), value) }
7000 }
7001
7002 pub fn ribbon_type(&self) -> RibbonType {
7004 unsafe { ffi::whiteout_m3_M3RibbonEmitter_get_ribbonType(self.raw.as_ptr()) }
7006 .try_into()
7007 .expect("unknown enum discriminant from the native library")
7008 }
7009
7010 pub fn set_ribbon_type(&mut self, value: RibbonType) {
7011 unsafe { ffi::whiteout_m3_M3RibbonEmitter_set_ribbonType(self.raw.as_ptr(), value as i32) }
7013 }
7014
7015 pub fn divisions(&self) -> f32 {
7017 unsafe { ffi::whiteout_m3_M3RibbonEmitter_get_divisions(self.raw.as_ptr()) }
7019 }
7020
7021 pub fn set_divisions(&mut self, value: f32) {
7022 unsafe { ffi::whiteout_m3_M3RibbonEmitter_set_divisions(self.raw.as_ptr(), value) }
7024 }
7025
7026 pub fn edges(&self) -> u32 {
7028 unsafe { ffi::whiteout_m3_M3RibbonEmitter_get_edges(self.raw.as_ptr()) }
7030 }
7031
7032 pub fn set_edges(&mut self, value: u32) {
7033 unsafe { ffi::whiteout_m3_M3RibbonEmitter_set_edges(self.raw.as_ptr(), value) }
7035 }
7036
7037 pub fn inner_radius(&self) -> f32 {
7039 unsafe { ffi::whiteout_m3_M3RibbonEmitter_get_innerRadius(self.raw.as_ptr()) }
7041 }
7042
7043 pub fn set_inner_radius(&mut self, value: f32) {
7044 unsafe { ffi::whiteout_m3_M3RibbonEmitter_set_innerRadius(self.raw.as_ptr(), value) }
7046 }
7047
7048 pub fn max_length(&self) -> crate::support::Ref<'_, AnimRefF32> {
7051 unsafe {
7054 crate::support::Ref::new(AnimRefF32 {
7055 raw: core::ptr::NonNull::new_unchecked(
7056 ffi::whiteout_m3_M3RibbonEmitter_get_maxLength(self.raw.as_ptr()),
7057 ),
7058 })
7059 }
7060 }
7061
7062 pub fn max_length_mut(&mut self) -> crate::support::RefMut<'_, AnimRefF32> {
7063 unsafe {
7065 crate::support::RefMut::new(AnimRefF32 {
7066 raw: core::ptr::NonNull::new_unchecked(
7067 ffi::whiteout_m3_M3RibbonEmitter_get_maxLength(self.raw.as_ptr()),
7068 ),
7069 })
7070 }
7071 }
7072
7073 pub fn spline_ribbons_len(&self) -> usize {
7075 unsafe { ffi::whiteout_m3_M3RibbonEmitter_get_splineRibbons_count(self.raw.as_ptr()) }
7077 }
7078
7079 pub fn spline_ribbons(&self, index: usize) -> Option<crate::support::Ref<'_, SplineRibbon>> {
7081 if index >= self.spline_ribbons_len() {
7082 return None;
7083 }
7084 unsafe {
7086 Some(crate::support::Ref::new(SplineRibbon {
7087 raw: core::ptr::NonNull::new_unchecked(
7088 ffi::whiteout_m3_M3RibbonEmitter_get_splineRibbons_at(self.raw.as_ptr(), index),
7089 ),
7090 }))
7091 }
7092 }
7093
7094 pub fn spline_ribbons_mut(
7095 &mut self,
7096 index: usize,
7097 ) -> Option<crate::support::RefMut<'_, SplineRibbon>> {
7098 if index >= self.spline_ribbons_len() {
7099 return None;
7100 }
7101 unsafe {
7103 Some(crate::support::RefMut::new(SplineRibbon {
7104 raw: core::ptr::NonNull::new_unchecked(
7105 ffi::whiteout_m3_M3RibbonEmitter_get_splineRibbons_at(self.raw.as_ptr(), index),
7106 ),
7107 }))
7108 }
7109 }
7110
7111 pub fn spline_ribbons_iter(
7113 &self,
7114 ) -> impl ExactSizeIterator<Item = crate::support::Ref<'_, SplineRibbon>> {
7115 (0..self.spline_ribbons_len())
7116 .map(move |i| self.spline_ribbons(i).expect("index below len"))
7117 }
7118
7119 pub fn resize_spline_ribbons(&mut self, count: usize) {
7120 unsafe { ffi::whiteout_m3_M3RibbonEmitter_resize_splineRibbons(self.raw.as_ptr(), count) }
7122 }
7123
7124 pub fn active(&self) -> crate::support::Ref<'_, AnimRefU32> {
7127 unsafe {
7130 crate::support::Ref::new(AnimRefU32 {
7131 raw: core::ptr::NonNull::new_unchecked(
7132 ffi::whiteout_m3_M3RibbonEmitter_get_active(self.raw.as_ptr()),
7133 ),
7134 })
7135 }
7136 }
7137
7138 pub fn active_mut(&mut self) -> crate::support::RefMut<'_, AnimRefU32> {
7139 unsafe {
7141 crate::support::RefMut::new(AnimRefU32 {
7142 raw: core::ptr::NonNull::new_unchecked(
7143 ffi::whiteout_m3_M3RibbonEmitter_get_active(self.raw.as_ptr()),
7144 ),
7145 })
7146 }
7147 }
7148
7149 pub fn flags(&self) -> RibbonFlag {
7151 RibbonFlag(unsafe { ffi::whiteout_m3_M3RibbonEmitter_get_flags(self.raw.as_ptr()) })
7153 }
7154
7155 pub fn set_flags(&mut self, value: RibbonFlag) {
7156 unsafe { ffi::whiteout_m3_M3RibbonEmitter_set_flags(self.raw.as_ptr(), value.0) }
7158 }
7159
7160 pub fn size_smoothing(&self) -> InterpolationMode {
7162 unsafe { ffi::whiteout_m3_M3RibbonEmitter_get_sizeSmoothing(self.raw.as_ptr()) }
7164 .try_into()
7165 .expect("unknown enum discriminant from the native library")
7166 }
7167
7168 pub fn set_size_smoothing(&mut self, value: InterpolationMode) {
7169 unsafe {
7171 ffi::whiteout_m3_M3RibbonEmitter_set_sizeSmoothing(self.raw.as_ptr(), value as i32)
7172 }
7173 }
7174
7175 pub fn color_smoothing(&self) -> InterpolationMode {
7177 unsafe { ffi::whiteout_m3_M3RibbonEmitter_get_colorSmoothing(self.raw.as_ptr()) }
7179 .try_into()
7180 .expect("unknown enum discriminant from the native library")
7181 }
7182
7183 pub fn set_color_smoothing(&mut self, value: InterpolationMode) {
7184 unsafe {
7186 ffi::whiteout_m3_M3RibbonEmitter_set_colorSmoothing(self.raw.as_ptr(), value as i32)
7187 }
7188 }
7189
7190 pub fn friction(&self) -> f32 {
7192 unsafe { ffi::whiteout_m3_M3RibbonEmitter_get_friction(self.raw.as_ptr()) }
7194 }
7195
7196 pub fn set_friction(&mut self, value: f32) {
7197 unsafe { ffi::whiteout_m3_M3RibbonEmitter_set_friction(self.raw.as_ptr(), value) }
7199 }
7200
7201 pub fn bounce(&self) -> f32 {
7203 unsafe { ffi::whiteout_m3_M3RibbonEmitter_get_bounce(self.raw.as_ptr()) }
7205 }
7206
7207 pub fn set_bounce(&mut self, value: f32) {
7208 unsafe { ffi::whiteout_m3_M3RibbonEmitter_set_bounce(self.raw.as_ptr(), value) }
7210 }
7211
7212 pub fn lod_reduce(&self) -> u32 {
7214 unsafe { ffi::whiteout_m3_M3RibbonEmitter_get_lodReduce(self.raw.as_ptr()) }
7216 }
7217
7218 pub fn set_lod_reduce(&mut self, value: u32) {
7219 unsafe { ffi::whiteout_m3_M3RibbonEmitter_set_lodReduce(self.raw.as_ptr(), value) }
7221 }
7222
7223 pub fn lod_cut(&self) -> u32 {
7225 unsafe { ffi::whiteout_m3_M3RibbonEmitter_get_lodCut(self.raw.as_ptr()) }
7227 }
7228
7229 pub fn set_lod_cut(&mut self, value: u32) {
7230 unsafe { ffi::whiteout_m3_M3RibbonEmitter_set_lodCut(self.raw.as_ptr(), value) }
7232 }
7233
7234 pub fn yaw_type(&self) -> u32 {
7236 unsafe { ffi::whiteout_m3_M3RibbonEmitter_get_yawType(self.raw.as_ptr()) }
7238 }
7239
7240 pub fn set_yaw_type(&mut self, value: u32) {
7241 unsafe { ffi::whiteout_m3_M3RibbonEmitter_set_yawType(self.raw.as_ptr(), value) }
7243 }
7244
7245 pub fn yaw_amplitude(&self) -> crate::support::Ref<'_, AnimRefF32> {
7248 unsafe {
7251 crate::support::Ref::new(AnimRefF32 {
7252 raw: core::ptr::NonNull::new_unchecked(
7253 ffi::whiteout_m3_M3RibbonEmitter_get_yawAmplitude(self.raw.as_ptr()),
7254 ),
7255 })
7256 }
7257 }
7258
7259 pub fn yaw_amplitude_mut(&mut self) -> crate::support::RefMut<'_, AnimRefF32> {
7260 unsafe {
7262 crate::support::RefMut::new(AnimRefF32 {
7263 raw: core::ptr::NonNull::new_unchecked(
7264 ffi::whiteout_m3_M3RibbonEmitter_get_yawAmplitude(self.raw.as_ptr()),
7265 ),
7266 })
7267 }
7268 }
7269
7270 pub fn yaw_frequency(&self) -> crate::support::Ref<'_, AnimRefF32> {
7273 unsafe {
7276 crate::support::Ref::new(AnimRefF32 {
7277 raw: core::ptr::NonNull::new_unchecked(
7278 ffi::whiteout_m3_M3RibbonEmitter_get_yawFrequency(self.raw.as_ptr()),
7279 ),
7280 })
7281 }
7282 }
7283
7284 pub fn yaw_frequency_mut(&mut self) -> crate::support::RefMut<'_, AnimRefF32> {
7285 unsafe {
7287 crate::support::RefMut::new(AnimRefF32 {
7288 raw: core::ptr::NonNull::new_unchecked(
7289 ffi::whiteout_m3_M3RibbonEmitter_get_yawFrequency(self.raw.as_ptr()),
7290 ),
7291 })
7292 }
7293 }
7294
7295 pub fn pitch_type(&self) -> u32 {
7297 unsafe { ffi::whiteout_m3_M3RibbonEmitter_get_pitchType(self.raw.as_ptr()) }
7299 }
7300
7301 pub fn set_pitch_type(&mut self, value: u32) {
7302 unsafe { ffi::whiteout_m3_M3RibbonEmitter_set_pitchType(self.raw.as_ptr(), value) }
7304 }
7305
7306 pub fn pitch_amplitude(&self) -> crate::support::Ref<'_, AnimRefF32> {
7309 unsafe {
7312 crate::support::Ref::new(AnimRefF32 {
7313 raw: core::ptr::NonNull::new_unchecked(
7314 ffi::whiteout_m3_M3RibbonEmitter_get_pitchAmplitude(self.raw.as_ptr()),
7315 ),
7316 })
7317 }
7318 }
7319
7320 pub fn pitch_amplitude_mut(&mut self) -> crate::support::RefMut<'_, AnimRefF32> {
7321 unsafe {
7323 crate::support::RefMut::new(AnimRefF32 {
7324 raw: core::ptr::NonNull::new_unchecked(
7325 ffi::whiteout_m3_M3RibbonEmitter_get_pitchAmplitude(self.raw.as_ptr()),
7326 ),
7327 })
7328 }
7329 }
7330
7331 pub fn pitch_frequency(&self) -> crate::support::Ref<'_, AnimRefF32> {
7334 unsafe {
7337 crate::support::Ref::new(AnimRefF32 {
7338 raw: core::ptr::NonNull::new_unchecked(
7339 ffi::whiteout_m3_M3RibbonEmitter_get_pitchFrequency(self.raw.as_ptr()),
7340 ),
7341 })
7342 }
7343 }
7344
7345 pub fn pitch_frequency_mut(&mut self) -> crate::support::RefMut<'_, AnimRefF32> {
7346 unsafe {
7348 crate::support::RefMut::new(AnimRefF32 {
7349 raw: core::ptr::NonNull::new_unchecked(
7350 ffi::whiteout_m3_M3RibbonEmitter_get_pitchFrequency(self.raw.as_ptr()),
7351 ),
7352 })
7353 }
7354 }
7355
7356 pub fn speed_type(&self) -> u32 {
7358 unsafe { ffi::whiteout_m3_M3RibbonEmitter_get_speedType(self.raw.as_ptr()) }
7360 }
7361
7362 pub fn set_speed_type(&mut self, value: u32) {
7363 unsafe { ffi::whiteout_m3_M3RibbonEmitter_set_speedType(self.raw.as_ptr(), value) }
7365 }
7366
7367 pub fn speed_amplitude(&self) -> crate::support::Ref<'_, AnimRefF32> {
7370 unsafe {
7373 crate::support::Ref::new(AnimRefF32 {
7374 raw: core::ptr::NonNull::new_unchecked(
7375 ffi::whiteout_m3_M3RibbonEmitter_get_speedAmplitude(self.raw.as_ptr()),
7376 ),
7377 })
7378 }
7379 }
7380
7381 pub fn speed_amplitude_mut(&mut self) -> crate::support::RefMut<'_, AnimRefF32> {
7382 unsafe {
7384 crate::support::RefMut::new(AnimRefF32 {
7385 raw: core::ptr::NonNull::new_unchecked(
7386 ffi::whiteout_m3_M3RibbonEmitter_get_speedAmplitude(self.raw.as_ptr()),
7387 ),
7388 })
7389 }
7390 }
7391
7392 pub fn speed_frequency(&self) -> crate::support::Ref<'_, AnimRefF32> {
7395 unsafe {
7398 crate::support::Ref::new(AnimRefF32 {
7399 raw: core::ptr::NonNull::new_unchecked(
7400 ffi::whiteout_m3_M3RibbonEmitter_get_speedFrequency(self.raw.as_ptr()),
7401 ),
7402 })
7403 }
7404 }
7405
7406 pub fn speed_frequency_mut(&mut self) -> crate::support::RefMut<'_, AnimRefF32> {
7407 unsafe {
7409 crate::support::RefMut::new(AnimRefF32 {
7410 raw: core::ptr::NonNull::new_unchecked(
7411 ffi::whiteout_m3_M3RibbonEmitter_get_speedFrequency(self.raw.as_ptr()),
7412 ),
7413 })
7414 }
7415 }
7416
7417 pub fn size_type(&self) -> u32 {
7419 unsafe { ffi::whiteout_m3_M3RibbonEmitter_get_sizeType(self.raw.as_ptr()) }
7421 }
7422
7423 pub fn set_size_type(&mut self, value: u32) {
7424 unsafe { ffi::whiteout_m3_M3RibbonEmitter_set_sizeType(self.raw.as_ptr(), value) }
7426 }
7427
7428 pub fn size_amplitude(&self) -> crate::support::Ref<'_, AnimRefF32> {
7431 unsafe {
7434 crate::support::Ref::new(AnimRefF32 {
7435 raw: core::ptr::NonNull::new_unchecked(
7436 ffi::whiteout_m3_M3RibbonEmitter_get_sizeAmplitude(self.raw.as_ptr()),
7437 ),
7438 })
7439 }
7440 }
7441
7442 pub fn size_amplitude_mut(&mut self) -> crate::support::RefMut<'_, AnimRefF32> {
7443 unsafe {
7445 crate::support::RefMut::new(AnimRefF32 {
7446 raw: core::ptr::NonNull::new_unchecked(
7447 ffi::whiteout_m3_M3RibbonEmitter_get_sizeAmplitude(self.raw.as_ptr()),
7448 ),
7449 })
7450 }
7451 }
7452
7453 pub fn size_frequency(&self) -> crate::support::Ref<'_, AnimRefF32> {
7456 unsafe {
7459 crate::support::Ref::new(AnimRefF32 {
7460 raw: core::ptr::NonNull::new_unchecked(
7461 ffi::whiteout_m3_M3RibbonEmitter_get_sizeFrequency(self.raw.as_ptr()),
7462 ),
7463 })
7464 }
7465 }
7466
7467 pub fn size_frequency_mut(&mut self) -> crate::support::RefMut<'_, AnimRefF32> {
7468 unsafe {
7470 crate::support::RefMut::new(AnimRefF32 {
7471 raw: core::ptr::NonNull::new_unchecked(
7472 ffi::whiteout_m3_M3RibbonEmitter_get_sizeFrequency(self.raw.as_ptr()),
7473 ),
7474 })
7475 }
7476 }
7477
7478 pub fn alpha_type(&self) -> u32 {
7480 unsafe { ffi::whiteout_m3_M3RibbonEmitter_get_alphaType(self.raw.as_ptr()) }
7482 }
7483
7484 pub fn set_alpha_type(&mut self, value: u32) {
7485 unsafe { ffi::whiteout_m3_M3RibbonEmitter_set_alphaType(self.raw.as_ptr(), value) }
7487 }
7488
7489 pub fn alpha_amplitude(&self) -> crate::support::Ref<'_, AnimRefF32> {
7492 unsafe {
7495 crate::support::Ref::new(AnimRefF32 {
7496 raw: core::ptr::NonNull::new_unchecked(
7497 ffi::whiteout_m3_M3RibbonEmitter_get_alphaAmplitude(self.raw.as_ptr()),
7498 ),
7499 })
7500 }
7501 }
7502
7503 pub fn alpha_amplitude_mut(&mut self) -> crate::support::RefMut<'_, AnimRefF32> {
7504 unsafe {
7506 crate::support::RefMut::new(AnimRefF32 {
7507 raw: core::ptr::NonNull::new_unchecked(
7508 ffi::whiteout_m3_M3RibbonEmitter_get_alphaAmplitude(self.raw.as_ptr()),
7509 ),
7510 })
7511 }
7512 }
7513
7514 pub fn alpha_frequency(&self) -> crate::support::Ref<'_, AnimRefF32> {
7517 unsafe {
7520 crate::support::Ref::new(AnimRefF32 {
7521 raw: core::ptr::NonNull::new_unchecked(
7522 ffi::whiteout_m3_M3RibbonEmitter_get_alphaFrequency(self.raw.as_ptr()),
7523 ),
7524 })
7525 }
7526 }
7527
7528 pub fn alpha_frequency_mut(&mut self) -> crate::support::RefMut<'_, AnimRefF32> {
7529 unsafe {
7531 crate::support::RefMut::new(AnimRefF32 {
7532 raw: core::ptr::NonNull::new_unchecked(
7533 ffi::whiteout_m3_M3RibbonEmitter_get_alphaFrequency(self.raw.as_ptr()),
7534 ),
7535 })
7536 }
7537 }
7538
7539 pub fn particle_velocity(&self) -> crate::support::Ref<'_, AnimRefF32> {
7542 unsafe {
7545 crate::support::Ref::new(AnimRefF32 {
7546 raw: core::ptr::NonNull::new_unchecked(
7547 ffi::whiteout_m3_M3RibbonEmitter_get_particleVelocity(self.raw.as_ptr()),
7548 ),
7549 })
7550 }
7551 }
7552
7553 pub fn particle_velocity_mut(&mut self) -> crate::support::RefMut<'_, AnimRefF32> {
7554 unsafe {
7556 crate::support::RefMut::new(AnimRefF32 {
7557 raw: core::ptr::NonNull::new_unchecked(
7558 ffi::whiteout_m3_M3RibbonEmitter_get_particleVelocity(self.raw.as_ptr()),
7559 ),
7560 })
7561 }
7562 }
7563
7564 pub fn overlay(&self) -> crate::support::Ref<'_, AnimRefF32> {
7567 unsafe {
7570 crate::support::Ref::new(AnimRefF32 {
7571 raw: core::ptr::NonNull::new_unchecked(
7572 ffi::whiteout_m3_M3RibbonEmitter_get_overlay(self.raw.as_ptr()),
7573 ),
7574 })
7575 }
7576 }
7577
7578 pub fn overlay_mut(&mut self) -> crate::support::RefMut<'_, AnimRefF32> {
7579 unsafe {
7581 crate::support::RefMut::new(AnimRefF32 {
7582 raw: core::ptr::NonNull::new_unchecked(
7583 ffi::whiteout_m3_M3RibbonEmitter_get_overlay(self.raw.as_ptr()),
7584 ),
7585 })
7586 }
7587 }
7588}
7589
7590impl Default for RibbonEmitter {
7591 fn default() -> Self {
7592 Self::new()
7593 }
7594}
7595
7596pub struct Projector {
7600 pub(crate) raw: core::ptr::NonNull<ffi::whiteout_M3Projector>,
7601}
7602
7603impl Drop for Projector {
7604 fn drop(&mut self) {
7605 unsafe { ffi::whiteout_m3_M3Projector_delete(self.raw.as_ptr()) }
7607 }
7608}
7609
7610impl Projector {
7611 #[allow(dead_code)] pub(crate) unsafe fn from_raw(raw: *mut ffi::whiteout_M3Projector) -> Option<Self> {
7615 core::ptr::NonNull::new(raw).map(|raw| Projector { raw })
7616 }
7617}
7618
7619unsafe impl Send for Projector {}
7624
7625impl core::fmt::Debug for Projector {
7626 fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
7627 f.debug_struct("Projector").finish_non_exhaustive()
7628 }
7629}
7630
7631impl Projector {
7632 pub fn new() -> Self {
7635 unsafe {
7638 let raw = ffi::whiteout_m3_M3Projector_new();
7639 Self::from_raw(raw).expect("native Projector allocation failed")
7640 }
7641 }
7642
7643 pub fn projection_type(&self) -> ProjectionType {
7645 unsafe { ffi::whiteout_m3_M3Projector_get_projectionType(self.raw.as_ptr()) }
7647 .try_into()
7648 .expect("unknown enum discriminant from the native library")
7649 }
7650
7651 pub fn set_projection_type(&mut self, value: ProjectionType) {
7652 unsafe { ffi::whiteout_m3_M3Projector_set_projectionType(self.raw.as_ptr(), value as i32) }
7654 }
7655
7656 pub fn bone(&self) -> u32 {
7658 unsafe { ffi::whiteout_m3_M3Projector_get_bone(self.raw.as_ptr()) }
7660 }
7661
7662 pub fn set_bone(&mut self, value: u32) {
7663 unsafe { ffi::whiteout_m3_M3Projector_set_bone(self.raw.as_ptr(), value) }
7665 }
7666
7667 pub fn material_reference_index(&self) -> u32 {
7669 unsafe { ffi::whiteout_m3_M3Projector_get_materialReferenceIndex(self.raw.as_ptr()) }
7671 }
7672
7673 pub fn set_material_reference_index(&mut self, value: u32) {
7674 unsafe { ffi::whiteout_m3_M3Projector_set_materialReferenceIndex(self.raw.as_ptr(), value) }
7676 }
7677
7678 pub fn offset(&self) -> crate::support::Ref<'_, AnimRefVector3f> {
7681 unsafe {
7684 crate::support::Ref::new(AnimRefVector3f {
7685 raw: core::ptr::NonNull::new_unchecked(ffi::whiteout_m3_M3Projector_get_offset(
7686 self.raw.as_ptr(),
7687 )),
7688 })
7689 }
7690 }
7691
7692 pub fn offset_mut(&mut self) -> crate::support::RefMut<'_, AnimRefVector3f> {
7693 unsafe {
7695 crate::support::RefMut::new(AnimRefVector3f {
7696 raw: core::ptr::NonNull::new_unchecked(ffi::whiteout_m3_M3Projector_get_offset(
7697 self.raw.as_ptr(),
7698 )),
7699 })
7700 }
7701 }
7702
7703 pub fn pitch(&self) -> crate::support::Ref<'_, AnimRefF32> {
7706 unsafe {
7709 crate::support::Ref::new(AnimRefF32 {
7710 raw: core::ptr::NonNull::new_unchecked(ffi::whiteout_m3_M3Projector_get_pitch(
7711 self.raw.as_ptr(),
7712 )),
7713 })
7714 }
7715 }
7716
7717 pub fn pitch_mut(&mut self) -> crate::support::RefMut<'_, AnimRefF32> {
7718 unsafe {
7720 crate::support::RefMut::new(AnimRefF32 {
7721 raw: core::ptr::NonNull::new_unchecked(ffi::whiteout_m3_M3Projector_get_pitch(
7722 self.raw.as_ptr(),
7723 )),
7724 })
7725 }
7726 }
7727
7728 pub fn yaw(&self) -> crate::support::Ref<'_, AnimRefF32> {
7731 unsafe {
7734 crate::support::Ref::new(AnimRefF32 {
7735 raw: core::ptr::NonNull::new_unchecked(ffi::whiteout_m3_M3Projector_get_yaw(
7736 self.raw.as_ptr(),
7737 )),
7738 })
7739 }
7740 }
7741
7742 pub fn yaw_mut(&mut self) -> crate::support::RefMut<'_, AnimRefF32> {
7743 unsafe {
7745 crate::support::RefMut::new(AnimRefF32 {
7746 raw: core::ptr::NonNull::new_unchecked(ffi::whiteout_m3_M3Projector_get_yaw(
7747 self.raw.as_ptr(),
7748 )),
7749 })
7750 }
7751 }
7752
7753 pub fn roll(&self) -> crate::support::Ref<'_, AnimRefF32> {
7756 unsafe {
7759 crate::support::Ref::new(AnimRefF32 {
7760 raw: core::ptr::NonNull::new_unchecked(ffi::whiteout_m3_M3Projector_get_roll(
7761 self.raw.as_ptr(),
7762 )),
7763 })
7764 }
7765 }
7766
7767 pub fn roll_mut(&mut self) -> crate::support::RefMut<'_, AnimRefF32> {
7768 unsafe {
7770 crate::support::RefMut::new(AnimRefF32 {
7771 raw: core::ptr::NonNull::new_unchecked(ffi::whiteout_m3_M3Projector_get_roll(
7772 self.raw.as_ptr(),
7773 )),
7774 })
7775 }
7776 }
7777
7778 pub fn field_of_view(&self) -> crate::support::Ref<'_, AnimRefF32> {
7781 unsafe {
7784 crate::support::Ref::new(AnimRefF32 {
7785 raw: core::ptr::NonNull::new_unchecked(
7786 ffi::whiteout_m3_M3Projector_get_fieldOfView(self.raw.as_ptr()),
7787 ),
7788 })
7789 }
7790 }
7791
7792 pub fn field_of_view_mut(&mut self) -> crate::support::RefMut<'_, AnimRefF32> {
7793 unsafe {
7795 crate::support::RefMut::new(AnimRefF32 {
7796 raw: core::ptr::NonNull::new_unchecked(
7797 ffi::whiteout_m3_M3Projector_get_fieldOfView(self.raw.as_ptr()),
7798 ),
7799 })
7800 }
7801 }
7802
7803 pub fn aspect_ratio(&self) -> crate::support::Ref<'_, AnimRefF32> {
7806 unsafe {
7809 crate::support::Ref::new(AnimRefF32 {
7810 raw: core::ptr::NonNull::new_unchecked(
7811 ffi::whiteout_m3_M3Projector_get_aspectRatio(self.raw.as_ptr()),
7812 ),
7813 })
7814 }
7815 }
7816
7817 pub fn aspect_ratio_mut(&mut self) -> crate::support::RefMut<'_, AnimRefF32> {
7818 unsafe {
7820 crate::support::RefMut::new(AnimRefF32 {
7821 raw: core::ptr::NonNull::new_unchecked(
7822 ffi::whiteout_m3_M3Projector_get_aspectRatio(self.raw.as_ptr()),
7823 ),
7824 })
7825 }
7826 }
7827
7828 pub fn near(&self) -> crate::support::Ref<'_, AnimRefF32> {
7831 unsafe {
7834 crate::support::Ref::new(AnimRefF32 {
7835 raw: core::ptr::NonNull::new_unchecked(ffi::whiteout_m3_M3Projector_get_near(
7836 self.raw.as_ptr(),
7837 )),
7838 })
7839 }
7840 }
7841
7842 pub fn near_mut(&mut self) -> crate::support::RefMut<'_, AnimRefF32> {
7843 unsafe {
7845 crate::support::RefMut::new(AnimRefF32 {
7846 raw: core::ptr::NonNull::new_unchecked(ffi::whiteout_m3_M3Projector_get_near(
7847 self.raw.as_ptr(),
7848 )),
7849 })
7850 }
7851 }
7852
7853 pub fn far(&self) -> crate::support::Ref<'_, AnimRefF32> {
7856 unsafe {
7859 crate::support::Ref::new(AnimRefF32 {
7860 raw: core::ptr::NonNull::new_unchecked(ffi::whiteout_m3_M3Projector_get_far(
7861 self.raw.as_ptr(),
7862 )),
7863 })
7864 }
7865 }
7866
7867 pub fn far_mut(&mut self) -> crate::support::RefMut<'_, AnimRefF32> {
7868 unsafe {
7870 crate::support::RefMut::new(AnimRefF32 {
7871 raw: core::ptr::NonNull::new_unchecked(ffi::whiteout_m3_M3Projector_get_far(
7872 self.raw.as_ptr(),
7873 )),
7874 })
7875 }
7876 }
7877
7878 pub fn box_offset_z_bottom(&self) -> crate::support::Ref<'_, AnimRefF32> {
7881 unsafe {
7884 crate::support::Ref::new(AnimRefF32 {
7885 raw: core::ptr::NonNull::new_unchecked(
7886 ffi::whiteout_m3_M3Projector_get_boxOffsetZBottom(self.raw.as_ptr()),
7887 ),
7888 })
7889 }
7890 }
7891
7892 pub fn box_offset_z_bottom_mut(&mut self) -> crate::support::RefMut<'_, AnimRefF32> {
7893 unsafe {
7895 crate::support::RefMut::new(AnimRefF32 {
7896 raw: core::ptr::NonNull::new_unchecked(
7897 ffi::whiteout_m3_M3Projector_get_boxOffsetZBottom(self.raw.as_ptr()),
7898 ),
7899 })
7900 }
7901 }
7902
7903 pub fn box_offset_z_top(&self) -> crate::support::Ref<'_, AnimRefF32> {
7906 unsafe {
7909 crate::support::Ref::new(AnimRefF32 {
7910 raw: core::ptr::NonNull::new_unchecked(
7911 ffi::whiteout_m3_M3Projector_get_boxOffsetZTop(self.raw.as_ptr()),
7912 ),
7913 })
7914 }
7915 }
7916
7917 pub fn box_offset_z_top_mut(&mut self) -> crate::support::RefMut<'_, AnimRefF32> {
7918 unsafe {
7920 crate::support::RefMut::new(AnimRefF32 {
7921 raw: core::ptr::NonNull::new_unchecked(
7922 ffi::whiteout_m3_M3Projector_get_boxOffsetZTop(self.raw.as_ptr()),
7923 ),
7924 })
7925 }
7926 }
7927
7928 pub fn box_offset_x_left(&self) -> crate::support::Ref<'_, AnimRefF32> {
7931 unsafe {
7934 crate::support::Ref::new(AnimRefF32 {
7935 raw: core::ptr::NonNull::new_unchecked(
7936 ffi::whiteout_m3_M3Projector_get_boxOffsetXLeft(self.raw.as_ptr()),
7937 ),
7938 })
7939 }
7940 }
7941
7942 pub fn box_offset_x_left_mut(&mut self) -> crate::support::RefMut<'_, AnimRefF32> {
7943 unsafe {
7945 crate::support::RefMut::new(AnimRefF32 {
7946 raw: core::ptr::NonNull::new_unchecked(
7947 ffi::whiteout_m3_M3Projector_get_boxOffsetXLeft(self.raw.as_ptr()),
7948 ),
7949 })
7950 }
7951 }
7952
7953 pub fn box_offset_x_right(&self) -> crate::support::Ref<'_, AnimRefF32> {
7956 unsafe {
7959 crate::support::Ref::new(AnimRefF32 {
7960 raw: core::ptr::NonNull::new_unchecked(
7961 ffi::whiteout_m3_M3Projector_get_boxOffsetXRight(self.raw.as_ptr()),
7962 ),
7963 })
7964 }
7965 }
7966
7967 pub fn box_offset_x_right_mut(&mut self) -> crate::support::RefMut<'_, AnimRefF32> {
7968 unsafe {
7970 crate::support::RefMut::new(AnimRefF32 {
7971 raw: core::ptr::NonNull::new_unchecked(
7972 ffi::whiteout_m3_M3Projector_get_boxOffsetXRight(self.raw.as_ptr()),
7973 ),
7974 })
7975 }
7976 }
7977
7978 pub fn box_offset_y_front(&self) -> crate::support::Ref<'_, AnimRefF32> {
7981 unsafe {
7984 crate::support::Ref::new(AnimRefF32 {
7985 raw: core::ptr::NonNull::new_unchecked(
7986 ffi::whiteout_m3_M3Projector_get_boxOffsetYFront(self.raw.as_ptr()),
7987 ),
7988 })
7989 }
7990 }
7991
7992 pub fn box_offset_y_front_mut(&mut self) -> crate::support::RefMut<'_, AnimRefF32> {
7993 unsafe {
7995 crate::support::RefMut::new(AnimRefF32 {
7996 raw: core::ptr::NonNull::new_unchecked(
7997 ffi::whiteout_m3_M3Projector_get_boxOffsetYFront(self.raw.as_ptr()),
7998 ),
7999 })
8000 }
8001 }
8002
8003 pub fn box_offset_y_back(&self) -> crate::support::Ref<'_, AnimRefF32> {
8006 unsafe {
8009 crate::support::Ref::new(AnimRefF32 {
8010 raw: core::ptr::NonNull::new_unchecked(
8011 ffi::whiteout_m3_M3Projector_get_boxOffsetYBack(self.raw.as_ptr()),
8012 ),
8013 })
8014 }
8015 }
8016
8017 pub fn box_offset_y_back_mut(&mut self) -> crate::support::RefMut<'_, AnimRefF32> {
8018 unsafe {
8020 crate::support::RefMut::new(AnimRefF32 {
8021 raw: core::ptr::NonNull::new_unchecked(
8022 ffi::whiteout_m3_M3Projector_get_boxOffsetYBack(self.raw.as_ptr()),
8023 ),
8024 })
8025 }
8026 }
8027
8028 pub fn falloff(&self) -> f32 {
8030 unsafe { ffi::whiteout_m3_M3Projector_get_falloff(self.raw.as_ptr()) }
8032 }
8033
8034 pub fn set_falloff(&mut self, value: f32) {
8035 unsafe { ffi::whiteout_m3_M3Projector_set_falloff(self.raw.as_ptr(), value) }
8037 }
8038
8039 pub fn alpha_init(&self) -> f32 {
8041 unsafe { ffi::whiteout_m3_M3Projector_get_alphaInit(self.raw.as_ptr()) }
8043 }
8044
8045 pub fn set_alpha_init(&mut self, value: f32) {
8046 unsafe { ffi::whiteout_m3_M3Projector_set_alphaInit(self.raw.as_ptr(), value) }
8048 }
8049
8050 pub fn alpha_mid(&self) -> f32 {
8052 unsafe { ffi::whiteout_m3_M3Projector_get_alphaMid(self.raw.as_ptr()) }
8054 }
8055
8056 pub fn set_alpha_mid(&mut self, value: f32) {
8057 unsafe { ffi::whiteout_m3_M3Projector_set_alphaMid(self.raw.as_ptr(), value) }
8059 }
8060
8061 pub fn alpha_end(&self) -> f32 {
8063 unsafe { ffi::whiteout_m3_M3Projector_get_alphaEnd(self.raw.as_ptr()) }
8065 }
8066
8067 pub fn set_alpha_end(&mut self, value: f32) {
8068 unsafe { ffi::whiteout_m3_M3Projector_set_alphaEnd(self.raw.as_ptr(), value) }
8070 }
8071
8072 pub fn lifetime_attack(&self) -> f32 {
8074 unsafe { ffi::whiteout_m3_M3Projector_get_lifetimeAttack(self.raw.as_ptr()) }
8076 }
8077
8078 pub fn set_lifetime_attack(&mut self, value: f32) {
8079 unsafe { ffi::whiteout_m3_M3Projector_set_lifetimeAttack(self.raw.as_ptr(), value) }
8081 }
8082
8083 pub fn lifetime_attack_to(&self) -> f32 {
8085 unsafe { ffi::whiteout_m3_M3Projector_get_lifetimeAttackTo(self.raw.as_ptr()) }
8087 }
8088
8089 pub fn set_lifetime_attack_to(&mut self, value: f32) {
8090 unsafe { ffi::whiteout_m3_M3Projector_set_lifetimeAttackTo(self.raw.as_ptr(), value) }
8092 }
8093
8094 pub fn lifetime_hold(&self) -> f32 {
8096 unsafe { ffi::whiteout_m3_M3Projector_get_lifetimeHold(self.raw.as_ptr()) }
8098 }
8099
8100 pub fn set_lifetime_hold(&mut self, value: f32) {
8101 unsafe { ffi::whiteout_m3_M3Projector_set_lifetimeHold(self.raw.as_ptr(), value) }
8103 }
8104
8105 pub fn lifetime_hold_to(&self) -> f32 {
8107 unsafe { ffi::whiteout_m3_M3Projector_get_lifetimeHoldTo(self.raw.as_ptr()) }
8109 }
8110
8111 pub fn set_lifetime_hold_to(&mut self, value: f32) {
8112 unsafe { ffi::whiteout_m3_M3Projector_set_lifetimeHoldTo(self.raw.as_ptr(), value) }
8114 }
8115
8116 pub fn lifetime_decay(&self) -> f32 {
8118 unsafe { ffi::whiteout_m3_M3Projector_get_lifetimeDecay(self.raw.as_ptr()) }
8120 }
8121
8122 pub fn set_lifetime_decay(&mut self, value: f32) {
8123 unsafe { ffi::whiteout_m3_M3Projector_set_lifetimeDecay(self.raw.as_ptr(), value) }
8125 }
8126
8127 pub fn lifetime_decay_to(&self) -> f32 {
8129 unsafe { ffi::whiteout_m3_M3Projector_get_lifetimeDecayTo(self.raw.as_ptr()) }
8131 }
8132
8133 pub fn set_lifetime_decay_to(&mut self, value: f32) {
8134 unsafe { ffi::whiteout_m3_M3Projector_set_lifetimeDecayTo(self.raw.as_ptr(), value) }
8136 }
8137
8138 pub fn attenuation_distance(&self) -> f32 {
8140 unsafe { ffi::whiteout_m3_M3Projector_get_attenuationDistance(self.raw.as_ptr()) }
8142 }
8143
8144 pub fn set_attenuation_distance(&mut self, value: f32) {
8145 unsafe { ffi::whiteout_m3_M3Projector_set_attenuationDistance(self.raw.as_ptr(), value) }
8147 }
8148
8149 pub fn active(&self) -> crate::support::Ref<'_, AnimRefU32> {
8152 unsafe {
8155 crate::support::Ref::new(AnimRefU32 {
8156 raw: core::ptr::NonNull::new_unchecked(ffi::whiteout_m3_M3Projector_get_active(
8157 self.raw.as_ptr(),
8158 )),
8159 })
8160 }
8161 }
8162
8163 pub fn active_mut(&mut self) -> crate::support::RefMut<'_, AnimRefU32> {
8164 unsafe {
8166 crate::support::RefMut::new(AnimRefU32 {
8167 raw: core::ptr::NonNull::new_unchecked(ffi::whiteout_m3_M3Projector_get_active(
8168 self.raw.as_ptr(),
8169 )),
8170 })
8171 }
8172 }
8173
8174 pub fn layer(&self) -> u32 {
8176 unsafe { ffi::whiteout_m3_M3Projector_get_layer(self.raw.as_ptr()) }
8178 }
8179
8180 pub fn set_layer(&mut self, value: u32) {
8181 unsafe { ffi::whiteout_m3_M3Projector_set_layer(self.raw.as_ptr(), value) }
8183 }
8184
8185 pub fn lod_reduce(&self) -> u32 {
8187 unsafe { ffi::whiteout_m3_M3Projector_get_lodReduce(self.raw.as_ptr()) }
8189 }
8190
8191 pub fn set_lod_reduce(&mut self, value: u32) {
8192 unsafe { ffi::whiteout_m3_M3Projector_set_lodReduce(self.raw.as_ptr(), value) }
8194 }
8195
8196 pub fn lod_cut(&self) -> u32 {
8198 unsafe { ffi::whiteout_m3_M3Projector_get_lodCut(self.raw.as_ptr()) }
8200 }
8201
8202 pub fn set_lod_cut(&mut self, value: u32) {
8203 unsafe { ffi::whiteout_m3_M3Projector_set_lodCut(self.raw.as_ptr(), value) }
8205 }
8206
8207 pub fn flags(&self) -> ProjectorFlag {
8209 ProjectorFlag(unsafe { ffi::whiteout_m3_M3Projector_get_flags(self.raw.as_ptr()) })
8211 }
8212
8213 pub fn set_flags(&mut self, value: ProjectorFlag) {
8214 unsafe { ffi::whiteout_m3_M3Projector_set_flags(self.raw.as_ptr(), value.0) }
8216 }
8217}
8218
8219impl Default for Projector {
8220 fn default() -> Self {
8221 Self::new()
8222 }
8223}
8224
8225pub struct MaterialMap {
8229 pub(crate) raw: core::ptr::NonNull<ffi::whiteout_M3MaterialMap>,
8230}
8231
8232impl Drop for MaterialMap {
8233 fn drop(&mut self) {
8234 unsafe { ffi::whiteout_m3_M3MaterialMap_delete(self.raw.as_ptr()) }
8236 }
8237}
8238
8239impl MaterialMap {
8240 #[allow(dead_code)] pub(crate) unsafe fn from_raw(raw: *mut ffi::whiteout_M3MaterialMap) -> Option<Self> {
8244 core::ptr::NonNull::new(raw).map(|raw| MaterialMap { raw })
8245 }
8246}
8247
8248unsafe impl Send for MaterialMap {}
8253
8254impl core::fmt::Debug for MaterialMap {
8255 fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
8256 f.debug_struct("MaterialMap").finish_non_exhaustive()
8257 }
8258}
8259
8260impl MaterialMap {
8261 pub fn new() -> Self {
8264 unsafe {
8267 let raw = ffi::whiteout_m3_M3MaterialMap_new();
8268 Self::from_raw(raw).expect("native MaterialMap allocation failed")
8269 }
8270 }
8271
8272 pub fn material_type(&self) -> MaterialType {
8274 unsafe { ffi::whiteout_m3_M3MaterialMap_get_materialType(self.raw.as_ptr()) }
8276 .try_into()
8277 .expect("unknown enum discriminant from the native library")
8278 }
8279
8280 pub fn set_material_type(&mut self, value: MaterialType) {
8281 unsafe { ffi::whiteout_m3_M3MaterialMap_set_materialType(self.raw.as_ptr(), value as i32) }
8283 }
8284
8285 pub fn material_index(&self) -> u32 {
8287 unsafe { ffi::whiteout_m3_M3MaterialMap_get_materialIndex(self.raw.as_ptr()) }
8289 }
8290
8291 pub fn set_material_index(&mut self, value: u32) {
8292 unsafe { ffi::whiteout_m3_M3MaterialMap_set_materialIndex(self.raw.as_ptr(), value) }
8294 }
8295}
8296
8297impl Default for MaterialMap {
8298 fn default() -> Self {
8299 Self::new()
8300 }
8301}
8302
8303pub struct TextureLayer {
8307 pub(crate) raw: core::ptr::NonNull<ffi::whiteout_M3TextureLayer>,
8308}
8309
8310impl Drop for TextureLayer {
8311 fn drop(&mut self) {
8312 unsafe { ffi::whiteout_m3_M3TextureLayer_delete(self.raw.as_ptr()) }
8314 }
8315}
8316
8317impl TextureLayer {
8318 #[allow(dead_code)] pub(crate) unsafe fn from_raw(raw: *mut ffi::whiteout_M3TextureLayer) -> Option<Self> {
8322 core::ptr::NonNull::new(raw).map(|raw| TextureLayer { raw })
8323 }
8324}
8325
8326unsafe impl Send for TextureLayer {}
8331
8332impl core::fmt::Debug for TextureLayer {
8333 fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
8334 f.debug_struct("TextureLayer").finish_non_exhaustive()
8335 }
8336}
8337
8338impl TextureLayer {
8339 pub fn new() -> Self {
8342 unsafe {
8345 let raw = ffi::whiteout_m3_M3TextureLayer_new();
8346 Self::from_raw(raw).expect("native TextureLayer allocation failed")
8347 }
8348 }
8349
8350 pub fn id(&self) -> u32 {
8352 unsafe { ffi::whiteout_m3_M3TextureLayer_get_id(self.raw.as_ptr()) }
8354 }
8355
8356 pub fn set_id(&mut self, value: u32) {
8357 unsafe { ffi::whiteout_m3_M3TextureLayer_set_id(self.raw.as_ptr(), value) }
8359 }
8360
8361 pub fn texture_path(&self) -> String {
8363 unsafe {
8365 crate::support::take_string(ffi::whiteout_m3_M3TextureLayer_get_texturePath(
8366 self.raw.as_ptr(),
8367 ))
8368 }
8369 }
8370
8371 pub fn set_texture_path(&mut self, value: &str) {
8372 let value = std::ffi::CString::new(value).unwrap_or_default();
8373 unsafe {
8375 ffi::whiteout_m3_M3TextureLayer_set_texturePath(self.raw.as_ptr(), value.as_ptr())
8376 }
8377 }
8378
8379 pub fn color(&self) -> crate::support::Ref<'_, AnimRefM3ColorBGRA> {
8382 unsafe {
8385 crate::support::Ref::new(AnimRefM3ColorBGRA {
8386 raw: core::ptr::NonNull::new_unchecked(ffi::whiteout_m3_M3TextureLayer_get_color(
8387 self.raw.as_ptr(),
8388 )),
8389 })
8390 }
8391 }
8392
8393 pub fn color_mut(&mut self) -> crate::support::RefMut<'_, AnimRefM3ColorBGRA> {
8394 unsafe {
8396 crate::support::RefMut::new(AnimRefM3ColorBGRA {
8397 raw: core::ptr::NonNull::new_unchecked(ffi::whiteout_m3_M3TextureLayer_get_color(
8398 self.raw.as_ptr(),
8399 )),
8400 })
8401 }
8402 }
8403
8404 pub fn flags(&self) -> TextureLayerFlag {
8406 TextureLayerFlag(unsafe { ffi::whiteout_m3_M3TextureLayer_get_flags(self.raw.as_ptr()) })
8408 }
8409
8410 pub fn set_flags(&mut self, value: TextureLayerFlag) {
8411 unsafe { ffi::whiteout_m3_M3TextureLayer_set_flags(self.raw.as_ptr(), value.0) }
8413 }
8414
8415 pub fn uv_mapping(&self) -> UVMappingMode {
8417 unsafe { ffi::whiteout_m3_M3TextureLayer_get_uvMapping(self.raw.as_ptr()) }
8419 .try_into()
8420 .expect("unknown enum discriminant from the native library")
8421 }
8422
8423 pub fn set_uv_mapping(&mut self, value: UVMappingMode) {
8424 unsafe { ffi::whiteout_m3_M3TextureLayer_set_uvMapping(self.raw.as_ptr(), value as i32) }
8426 }
8427
8428 pub fn color_type(&self) -> ColorChannelSelect {
8430 unsafe { ffi::whiteout_m3_M3TextureLayer_get_colorType(self.raw.as_ptr()) }
8432 .try_into()
8433 .expect("unknown enum discriminant from the native library")
8434 }
8435
8436 pub fn set_color_type(&mut self, value: ColorChannelSelect) {
8437 unsafe { ffi::whiteout_m3_M3TextureLayer_set_colorType(self.raw.as_ptr(), value as i32) }
8439 }
8440
8441 pub fn rgb_multiply(&self) -> crate::support::Ref<'_, AnimRefF32> {
8444 unsafe {
8447 crate::support::Ref::new(AnimRefF32 {
8448 raw: core::ptr::NonNull::new_unchecked(
8449 ffi::whiteout_m3_M3TextureLayer_get_rgbMultiply(self.raw.as_ptr()),
8450 ),
8451 })
8452 }
8453 }
8454
8455 pub fn rgb_multiply_mut(&mut self) -> crate::support::RefMut<'_, AnimRefF32> {
8456 unsafe {
8458 crate::support::RefMut::new(AnimRefF32 {
8459 raw: core::ptr::NonNull::new_unchecked(
8460 ffi::whiteout_m3_M3TextureLayer_get_rgbMultiply(self.raw.as_ptr()),
8461 ),
8462 })
8463 }
8464 }
8465
8466 pub fn rgb_add(&self) -> crate::support::Ref<'_, AnimRefF32> {
8469 unsafe {
8472 crate::support::Ref::new(AnimRefF32 {
8473 raw: core::ptr::NonNull::new_unchecked(ffi::whiteout_m3_M3TextureLayer_get_rgbAdd(
8474 self.raw.as_ptr(),
8475 )),
8476 })
8477 }
8478 }
8479
8480 pub fn rgb_add_mut(&mut self) -> crate::support::RefMut<'_, AnimRefF32> {
8481 unsafe {
8483 crate::support::RefMut::new(AnimRefF32 {
8484 raw: core::ptr::NonNull::new_unchecked(ffi::whiteout_m3_M3TextureLayer_get_rgbAdd(
8485 self.raw.as_ptr(),
8486 )),
8487 })
8488 }
8489 }
8490
8491 pub fn poc_texture(&self) -> u32 {
8493 unsafe { ffi::whiteout_m3_M3TextureLayer_get_pocTexture(self.raw.as_ptr()) }
8495 }
8496
8497 pub fn set_poc_texture(&mut self, value: u32) {
8498 unsafe { ffi::whiteout_m3_M3TextureLayer_set_pocTexture(self.raw.as_ptr(), value) }
8500 }
8501
8502 pub fn noise_amplitude(&self) -> f32 {
8504 unsafe { ffi::whiteout_m3_M3TextureLayer_get_noiseAmplitude(self.raw.as_ptr()) }
8506 }
8507
8508 pub fn set_noise_amplitude(&mut self, value: f32) {
8509 unsafe { ffi::whiteout_m3_M3TextureLayer_set_noiseAmplitude(self.raw.as_ptr(), value) }
8511 }
8512
8513 pub fn noise_frequency(&self) -> f32 {
8515 unsafe { ffi::whiteout_m3_M3TextureLayer_get_noiseFrequency(self.raw.as_ptr()) }
8517 }
8518
8519 pub fn set_noise_frequency(&mut self, value: f32) {
8520 unsafe { ffi::whiteout_m3_M3TextureLayer_set_noiseFrequency(self.raw.as_ptr(), value) }
8522 }
8523
8524 pub fn texture_source(&self) -> u32 {
8526 unsafe { ffi::whiteout_m3_M3TextureLayer_get_textureSource(self.raw.as_ptr()) }
8528 }
8529
8530 pub fn set_texture_source(&mut self, value: u32) {
8531 unsafe { ffi::whiteout_m3_M3TextureLayer_set_textureSource(self.raw.as_ptr(), value) }
8533 }
8534
8535 pub fn avi_frame_rate(&self) -> u32 {
8537 unsafe { ffi::whiteout_m3_M3TextureLayer_get_aviFrameRate(self.raw.as_ptr()) }
8539 }
8540
8541 pub fn set_avi_frame_rate(&mut self, value: u32) {
8542 unsafe { ffi::whiteout_m3_M3TextureLayer_set_aviFrameRate(self.raw.as_ptr(), value) }
8544 }
8545
8546 pub fn avi_start(&self) -> u32 {
8548 unsafe { ffi::whiteout_m3_M3TextureLayer_get_aviStart(self.raw.as_ptr()) }
8550 }
8551
8552 pub fn set_avi_start(&mut self, value: u32) {
8553 unsafe { ffi::whiteout_m3_M3TextureLayer_set_aviStart(self.raw.as_ptr(), value) }
8555 }
8556
8557 pub fn avi_stop(&self) -> u32 {
8559 unsafe { ffi::whiteout_m3_M3TextureLayer_get_aviStop(self.raw.as_ptr()) }
8561 }
8562
8563 pub fn set_avi_stop(&mut self, value: u32) {
8564 unsafe { ffi::whiteout_m3_M3TextureLayer_set_aviStop(self.raw.as_ptr(), value) }
8566 }
8567
8568 pub fn avi_loop(&self) -> u32 {
8570 unsafe { ffi::whiteout_m3_M3TextureLayer_get_aviLoop(self.raw.as_ptr()) }
8572 }
8573
8574 pub fn set_avi_loop(&mut self, value: u32) {
8575 unsafe { ffi::whiteout_m3_M3TextureLayer_set_aviLoop(self.raw.as_ptr(), value) }
8577 }
8578
8579 pub fn avi_sync(&self) -> u32 {
8581 unsafe { ffi::whiteout_m3_M3TextureLayer_get_aviSync(self.raw.as_ptr()) }
8583 }
8584
8585 pub fn set_avi_sync(&mut self, value: u32) {
8586 unsafe { ffi::whiteout_m3_M3TextureLayer_set_aviSync(self.raw.as_ptr(), value) }
8588 }
8589
8590 pub fn avi_play(&self) -> crate::support::Ref<'_, AnimRefU32> {
8593 unsafe {
8596 crate::support::Ref::new(AnimRefU32 {
8597 raw: core::ptr::NonNull::new_unchecked(
8598 ffi::whiteout_m3_M3TextureLayer_get_aviPlay(self.raw.as_ptr()),
8599 ),
8600 })
8601 }
8602 }
8603
8604 pub fn avi_play_mut(&mut self) -> crate::support::RefMut<'_, AnimRefU32> {
8605 unsafe {
8607 crate::support::RefMut::new(AnimRefU32 {
8608 raw: core::ptr::NonNull::new_unchecked(
8609 ffi::whiteout_m3_M3TextureLayer_get_aviPlay(self.raw.as_ptr()),
8610 ),
8611 })
8612 }
8613 }
8614
8615 pub fn avi_restart(&self) -> crate::support::Ref<'_, AnimRefU32> {
8618 unsafe {
8621 crate::support::Ref::new(AnimRefU32 {
8622 raw: core::ptr::NonNull::new_unchecked(
8623 ffi::whiteout_m3_M3TextureLayer_get_aviRestart(self.raw.as_ptr()),
8624 ),
8625 })
8626 }
8627 }
8628
8629 pub fn avi_restart_mut(&mut self) -> crate::support::RefMut<'_, AnimRefU32> {
8630 unsafe {
8632 crate::support::RefMut::new(AnimRefU32 {
8633 raw: core::ptr::NonNull::new_unchecked(
8634 ffi::whiteout_m3_M3TextureLayer_get_aviRestart(self.raw.as_ptr()),
8635 ),
8636 })
8637 }
8638 }
8639
8640 pub fn flipbook_rows(&self) -> u32 {
8642 unsafe { ffi::whiteout_m3_M3TextureLayer_get_flipbookRows(self.raw.as_ptr()) }
8644 }
8645
8646 pub fn set_flipbook_rows(&mut self, value: u32) {
8647 unsafe { ffi::whiteout_m3_M3TextureLayer_set_flipbookRows(self.raw.as_ptr(), value) }
8649 }
8650
8651 pub fn flipbook_columns(&self) -> u32 {
8653 unsafe { ffi::whiteout_m3_M3TextureLayer_get_flipbookColumns(self.raw.as_ptr()) }
8655 }
8656
8657 pub fn set_flipbook_columns(&mut self, value: u32) {
8658 unsafe { ffi::whiteout_m3_M3TextureLayer_set_flipbookColumns(self.raw.as_ptr(), value) }
8660 }
8661
8662 pub fn current_frame(&self) -> crate::support::Ref<'_, AnimRefU16> {
8665 unsafe {
8668 crate::support::Ref::new(AnimRefU16 {
8669 raw: core::ptr::NonNull::new_unchecked(
8670 ffi::whiteout_m3_M3TextureLayer_get_currentFrame(self.raw.as_ptr()),
8671 ),
8672 })
8673 }
8674 }
8675
8676 pub fn current_frame_mut(&mut self) -> crate::support::RefMut<'_, AnimRefU16> {
8677 unsafe {
8679 crate::support::RefMut::new(AnimRefU16 {
8680 raw: core::ptr::NonNull::new_unchecked(
8681 ffi::whiteout_m3_M3TextureLayer_get_currentFrame(self.raw.as_ptr()),
8682 ),
8683 })
8684 }
8685 }
8686
8687 pub fn uv_offset(&self) -> crate::support::Ref<'_, AnimRefVector2f> {
8690 unsafe {
8693 crate::support::Ref::new(AnimRefVector2f {
8694 raw: core::ptr::NonNull::new_unchecked(
8695 ffi::whiteout_m3_M3TextureLayer_get_uvOffset(self.raw.as_ptr()),
8696 ),
8697 })
8698 }
8699 }
8700
8701 pub fn uv_offset_mut(&mut self) -> crate::support::RefMut<'_, AnimRefVector2f> {
8702 unsafe {
8704 crate::support::RefMut::new(AnimRefVector2f {
8705 raw: core::ptr::NonNull::new_unchecked(
8706 ffi::whiteout_m3_M3TextureLayer_get_uvOffset(self.raw.as_ptr()),
8707 ),
8708 })
8709 }
8710 }
8711
8712 pub fn uv_angle(&self) -> crate::support::Ref<'_, AnimRefVector3f> {
8715 unsafe {
8718 crate::support::Ref::new(AnimRefVector3f {
8719 raw: core::ptr::NonNull::new_unchecked(
8720 ffi::whiteout_m3_M3TextureLayer_get_uvAngle(self.raw.as_ptr()),
8721 ),
8722 })
8723 }
8724 }
8725
8726 pub fn uv_angle_mut(&mut self) -> crate::support::RefMut<'_, AnimRefVector3f> {
8727 unsafe {
8729 crate::support::RefMut::new(AnimRefVector3f {
8730 raw: core::ptr::NonNull::new_unchecked(
8731 ffi::whiteout_m3_M3TextureLayer_get_uvAngle(self.raw.as_ptr()),
8732 ),
8733 })
8734 }
8735 }
8736
8737 pub fn uv_tiling(&self) -> crate::support::Ref<'_, AnimRefVector2f> {
8740 unsafe {
8743 crate::support::Ref::new(AnimRefVector2f {
8744 raw: core::ptr::NonNull::new_unchecked(
8745 ffi::whiteout_m3_M3TextureLayer_get_uvTiling(self.raw.as_ptr()),
8746 ),
8747 })
8748 }
8749 }
8750
8751 pub fn uv_tiling_mut(&mut self) -> crate::support::RefMut<'_, AnimRefVector2f> {
8752 unsafe {
8754 crate::support::RefMut::new(AnimRefVector2f {
8755 raw: core::ptr::NonNull::new_unchecked(
8756 ffi::whiteout_m3_M3TextureLayer_get_uvTiling(self.raw.as_ptr()),
8757 ),
8758 })
8759 }
8760 }
8761
8762 pub fn w_offset(&self) -> crate::support::Ref<'_, AnimRefF32> {
8765 unsafe {
8768 crate::support::Ref::new(AnimRefF32 {
8769 raw: core::ptr::NonNull::new_unchecked(
8770 ffi::whiteout_m3_M3TextureLayer_get_wOffset(self.raw.as_ptr()),
8771 ),
8772 })
8773 }
8774 }
8775
8776 pub fn w_offset_mut(&mut self) -> crate::support::RefMut<'_, AnimRefF32> {
8777 unsafe {
8779 crate::support::RefMut::new(AnimRefF32 {
8780 raw: core::ptr::NonNull::new_unchecked(
8781 ffi::whiteout_m3_M3TextureLayer_get_wOffset(self.raw.as_ptr()),
8782 ),
8783 })
8784 }
8785 }
8786
8787 pub fn w_tiling(&self) -> crate::support::Ref<'_, AnimRefF32> {
8790 unsafe {
8793 crate::support::Ref::new(AnimRefF32 {
8794 raw: core::ptr::NonNull::new_unchecked(
8795 ffi::whiteout_m3_M3TextureLayer_get_wTiling(self.raw.as_ptr()),
8796 ),
8797 })
8798 }
8799 }
8800
8801 pub fn w_tiling_mut(&mut self) -> crate::support::RefMut<'_, AnimRefF32> {
8802 unsafe {
8804 crate::support::RefMut::new(AnimRefF32 {
8805 raw: core::ptr::NonNull::new_unchecked(
8806 ffi::whiteout_m3_M3TextureLayer_get_wTiling(self.raw.as_ptr()),
8807 ),
8808 })
8809 }
8810 }
8811
8812 pub fn map_alpha(&self) -> crate::support::Ref<'_, AnimRefF32> {
8815 unsafe {
8818 crate::support::Ref::new(AnimRefF32 {
8819 raw: core::ptr::NonNull::new_unchecked(
8820 ffi::whiteout_m3_M3TextureLayer_get_mapAlpha(self.raw.as_ptr()),
8821 ),
8822 })
8823 }
8824 }
8825
8826 pub fn map_alpha_mut(&mut self) -> crate::support::RefMut<'_, AnimRefF32> {
8827 unsafe {
8829 crate::support::RefMut::new(AnimRefF32 {
8830 raw: core::ptr::NonNull::new_unchecked(
8831 ffi::whiteout_m3_M3TextureLayer_get_mapAlpha(self.raw.as_ptr()),
8832 ),
8833 })
8834 }
8835 }
8836
8837 pub fn triplanar_offset(&self) -> crate::support::Ref<'_, AnimRefVector3f> {
8840 unsafe {
8843 crate::support::Ref::new(AnimRefVector3f {
8844 raw: core::ptr::NonNull::new_unchecked(
8845 ffi::whiteout_m3_M3TextureLayer_get_triplanarOffset(self.raw.as_ptr()),
8846 ),
8847 })
8848 }
8849 }
8850
8851 pub fn triplanar_offset_mut(&mut self) -> crate::support::RefMut<'_, AnimRefVector3f> {
8852 unsafe {
8854 crate::support::RefMut::new(AnimRefVector3f {
8855 raw: core::ptr::NonNull::new_unchecked(
8856 ffi::whiteout_m3_M3TextureLayer_get_triplanarOffset(self.raw.as_ptr()),
8857 ),
8858 })
8859 }
8860 }
8861
8862 pub fn triplanar_scale(&self) -> crate::support::Ref<'_, AnimRefVector3f> {
8865 unsafe {
8868 crate::support::Ref::new(AnimRefVector3f {
8869 raw: core::ptr::NonNull::new_unchecked(
8870 ffi::whiteout_m3_M3TextureLayer_get_triplanarScale(self.raw.as_ptr()),
8871 ),
8872 })
8873 }
8874 }
8875
8876 pub fn triplanar_scale_mut(&mut self) -> crate::support::RefMut<'_, AnimRefVector3f> {
8877 unsafe {
8879 crate::support::RefMut::new(AnimRefVector3f {
8880 raw: core::ptr::NonNull::new_unchecked(
8881 ffi::whiteout_m3_M3TextureLayer_get_triplanarScale(self.raw.as_ptr()),
8882 ),
8883 })
8884 }
8885 }
8886
8887 pub fn uv_source_related(&self) -> u32 {
8889 unsafe { ffi::whiteout_m3_M3TextureLayer_get_uvSourceRelated(self.raw.as_ptr()) }
8891 }
8892
8893 pub fn set_uv_source_related(&mut self, value: u32) {
8894 unsafe { ffi::whiteout_m3_M3TextureLayer_set_uvSourceRelated(self.raw.as_ptr(), value) }
8896 }
8897
8898 pub fn fresnel_mode(&self) -> FresnelMode {
8900 unsafe { ffi::whiteout_m3_M3TextureLayer_get_fresnelMode(self.raw.as_ptr()) }
8902 .try_into()
8903 .expect("unknown enum discriminant from the native library")
8904 }
8905
8906 pub fn set_fresnel_mode(&mut self, value: FresnelMode) {
8907 unsafe { ffi::whiteout_m3_M3TextureLayer_set_fresnelMode(self.raw.as_ptr(), value as i32) }
8909 }
8910
8911 pub fn fresnel_exponent(&self) -> f32 {
8913 unsafe { ffi::whiteout_m3_M3TextureLayer_get_fresnelExponent(self.raw.as_ptr()) }
8915 }
8916
8917 pub fn set_fresnel_exponent(&mut self, value: f32) {
8918 unsafe { ffi::whiteout_m3_M3TextureLayer_set_fresnelExponent(self.raw.as_ptr(), value) }
8920 }
8921
8922 pub fn fresnel_min(&self) -> f32 {
8924 unsafe { ffi::whiteout_m3_M3TextureLayer_get_fresnelMin(self.raw.as_ptr()) }
8926 }
8927
8928 pub fn set_fresnel_min(&mut self, value: f32) {
8929 unsafe { ffi::whiteout_m3_M3TextureLayer_set_fresnelMin(self.raw.as_ptr(), value) }
8931 }
8932
8933 pub fn fresnel_max(&self) -> f32 {
8935 unsafe { ffi::whiteout_m3_M3TextureLayer_get_fresnelMax(self.raw.as_ptr()) }
8937 }
8938
8939 pub fn set_fresnel_max(&mut self, value: f32) {
8940 unsafe { ffi::whiteout_m3_M3TextureLayer_set_fresnelMax(self.raw.as_ptr(), value) }
8942 }
8943
8944 pub fn fresnel_translation(&self) -> crate::math::Vector3f {
8946 unsafe {
8949 *(ffi::whiteout_m3_M3TextureLayer_get_fresnelTranslation(self.raw.as_ptr())
8950 as *const crate::math::Vector3f)
8951 }
8952 }
8953
8954 pub fn set_fresnel_translation(&mut self, value: crate::math::Vector3f) {
8955 unsafe {
8957 ffi::whiteout_m3_M3TextureLayer_set_fresnelTranslation(
8958 self.raw.as_ptr(),
8959 &value as *const crate::math::Vector3f as *const _,
8960 )
8961 }
8962 }
8963
8964 pub fn fresnel_mask(&self) -> crate::math::Vector3f {
8966 unsafe {
8969 *(ffi::whiteout_m3_M3TextureLayer_get_fresnelMask(self.raw.as_ptr())
8970 as *const crate::math::Vector3f)
8971 }
8972 }
8973
8974 pub fn set_fresnel_mask(&mut self, value: crate::math::Vector3f) {
8975 unsafe {
8977 ffi::whiteout_m3_M3TextureLayer_set_fresnelMask(
8978 self.raw.as_ptr(),
8979 &value as *const crate::math::Vector3f as *const _,
8980 )
8981 }
8982 }
8983
8984 pub fn fresnel_rotation(&self) -> crate::math::Vector2f {
8986 unsafe {
8989 *(ffi::whiteout_m3_M3TextureLayer_get_fresnelRotation(self.raw.as_ptr())
8990 as *const crate::math::Vector2f)
8991 }
8992 }
8993
8994 pub fn set_fresnel_rotation(&mut self, value: crate::math::Vector2f) {
8995 unsafe {
8997 ffi::whiteout_m3_M3TextureLayer_set_fresnelRotation(
8998 self.raw.as_ptr(),
8999 &value as *const crate::math::Vector2f as *const _,
9000 )
9001 }
9002 }
9003
9004 pub fn uv_density(&self) -> u32 {
9006 unsafe { ffi::whiteout_m3_M3TextureLayer_get_uvDensity(self.raw.as_ptr()) }
9008 }
9009
9010 pub fn set_uv_density(&mut self, value: u32) {
9011 unsafe { ffi::whiteout_m3_M3TextureLayer_set_uvDensity(self.raw.as_ptr(), value) }
9013 }
9014}
9015
9016impl Default for TextureLayer {
9017 fn default() -> Self {
9018 Self::new()
9019 }
9020}
9021
9022pub struct StandardMaterial {
9026 pub(crate) raw: core::ptr::NonNull<ffi::whiteout_M3StandardMaterial>,
9027}
9028
9029impl Drop for StandardMaterial {
9030 fn drop(&mut self) {
9031 unsafe { ffi::whiteout_m3_M3StandardMaterial_delete(self.raw.as_ptr()) }
9033 }
9034}
9035
9036impl StandardMaterial {
9037 #[allow(dead_code)] pub(crate) unsafe fn from_raw(raw: *mut ffi::whiteout_M3StandardMaterial) -> Option<Self> {
9041 core::ptr::NonNull::new(raw).map(|raw| StandardMaterial { raw })
9042 }
9043}
9044
9045unsafe impl Send for StandardMaterial {}
9050
9051impl core::fmt::Debug for StandardMaterial {
9052 fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
9053 f.debug_struct("StandardMaterial").finish_non_exhaustive()
9054 }
9055}
9056
9057impl StandardMaterial {
9058 pub fn new() -> Self {
9061 unsafe {
9064 let raw = ffi::whiteout_m3_M3StandardMaterial_new();
9065 Self::from_raw(raw).expect("native StandardMaterial allocation failed")
9066 }
9067 }
9068
9069 pub fn name(&self) -> String {
9071 unsafe {
9073 crate::support::take_string(ffi::whiteout_m3_M3StandardMaterial_get_name(
9074 self.raw.as_ptr(),
9075 ))
9076 }
9077 }
9078
9079 pub fn set_name(&mut self, value: &str) {
9080 let value = std::ffi::CString::new(value).unwrap_or_default();
9081 unsafe { ffi::whiteout_m3_M3StandardMaterial_set_name(self.raw.as_ptr(), value.as_ptr()) }
9083 }
9084
9085 pub fn additional_flags(&self) -> MaterialAdditionalFlag {
9087 MaterialAdditionalFlag(unsafe {
9089 ffi::whiteout_m3_M3StandardMaterial_get_additionalFlags(self.raw.as_ptr())
9090 })
9091 }
9092
9093 pub fn set_additional_flags(&mut self, value: MaterialAdditionalFlag) {
9094 unsafe {
9096 ffi::whiteout_m3_M3StandardMaterial_set_additionalFlags(self.raw.as_ptr(), value.0)
9097 }
9098 }
9099
9100 pub fn flags(&self) -> MaterialFlag {
9102 MaterialFlag(unsafe { ffi::whiteout_m3_M3StandardMaterial_get_flags(self.raw.as_ptr()) })
9104 }
9105
9106 pub fn set_flags(&mut self, value: MaterialFlag) {
9107 unsafe { ffi::whiteout_m3_M3StandardMaterial_set_flags(self.raw.as_ptr(), value.0) }
9109 }
9110
9111 pub fn blend_mode(&self) -> BlendMode {
9113 unsafe { ffi::whiteout_m3_M3StandardMaterial_get_blendMode(self.raw.as_ptr()) }
9115 .try_into()
9116 .expect("unknown enum discriminant from the native library")
9117 }
9118
9119 pub fn set_blend_mode(&mut self, value: BlendMode) {
9120 unsafe {
9122 ffi::whiteout_m3_M3StandardMaterial_set_blendMode(self.raw.as_ptr(), value as i32)
9123 }
9124 }
9125
9126 pub fn priority(&self) -> i32 {
9128 unsafe { ffi::whiteout_m3_M3StandardMaterial_get_priority(self.raw.as_ptr()) }
9130 }
9131
9132 pub fn set_priority(&mut self, value: i32) {
9133 unsafe { ffi::whiteout_m3_M3StandardMaterial_set_priority(self.raw.as_ptr(), value) }
9135 }
9136
9137 pub fn rtt_channels(&self) -> u32 {
9139 unsafe { ffi::whiteout_m3_M3StandardMaterial_get_rttChannels(self.raw.as_ptr()) }
9141 }
9142
9143 pub fn set_rtt_channels(&mut self, value: u32) {
9144 unsafe { ffi::whiteout_m3_M3StandardMaterial_set_rttChannels(self.raw.as_ptr(), value) }
9146 }
9147
9148 pub fn specular_exponent(&self) -> f32 {
9150 unsafe { ffi::whiteout_m3_M3StandardMaterial_get_specularExponent(self.raw.as_ptr()) }
9152 }
9153
9154 pub fn set_specular_exponent(&mut self, value: f32) {
9155 unsafe {
9157 ffi::whiteout_m3_M3StandardMaterial_set_specularExponent(self.raw.as_ptr(), value)
9158 }
9159 }
9160
9161 pub fn depth_blend_falloff(&self) -> f32 {
9163 unsafe { ffi::whiteout_m3_M3StandardMaterial_get_depthBlendFalloff(self.raw.as_ptr()) }
9165 }
9166
9167 pub fn set_depth_blend_falloff(&mut self, value: f32) {
9168 unsafe {
9170 ffi::whiteout_m3_M3StandardMaterial_set_depthBlendFalloff(self.raw.as_ptr(), value)
9171 }
9172 }
9173
9174 pub fn alpha_test_threshold(&self) -> u32 {
9176 unsafe { ffi::whiteout_m3_M3StandardMaterial_get_alphaTestThreshold(self.raw.as_ptr()) }
9178 }
9179
9180 pub fn set_alpha_test_threshold(&mut self, value: u32) {
9181 unsafe {
9183 ffi::whiteout_m3_M3StandardMaterial_set_alphaTestThreshold(self.raw.as_ptr(), value)
9184 }
9185 }
9186
9187 pub fn hdr_specular_multiplier(&self) -> f32 {
9189 unsafe { ffi::whiteout_m3_M3StandardMaterial_get_hdrSpecularMultiplier(self.raw.as_ptr()) }
9191 }
9192
9193 pub fn set_hdr_specular_multiplier(&mut self, value: f32) {
9194 unsafe {
9196 ffi::whiteout_m3_M3StandardMaterial_set_hdrSpecularMultiplier(self.raw.as_ptr(), value)
9197 }
9198 }
9199
9200 pub fn hdr_emissive_multiplier(&self) -> f32 {
9202 unsafe { ffi::whiteout_m3_M3StandardMaterial_get_hdrEmissiveMultiplier(self.raw.as_ptr()) }
9204 }
9205
9206 pub fn set_hdr_emissive_multiplier(&mut self, value: f32) {
9207 unsafe {
9209 ffi::whiteout_m3_M3StandardMaterial_set_hdrEmissiveMultiplier(self.raw.as_ptr(), value)
9210 }
9211 }
9212
9213 pub fn hdr_environment_constant(&self) -> f32 {
9215 unsafe { ffi::whiteout_m3_M3StandardMaterial_get_hdrEnvironmentConstant(self.raw.as_ptr()) }
9217 }
9218
9219 pub fn set_hdr_environment_constant(&mut self, value: f32) {
9220 unsafe {
9222 ffi::whiteout_m3_M3StandardMaterial_set_hdrEnvironmentConstant(self.raw.as_ptr(), value)
9223 }
9224 }
9225
9226 pub fn hdr_environment_diffuse(&self) -> f32 {
9228 unsafe { ffi::whiteout_m3_M3StandardMaterial_get_hdrEnvironmentDiffuse(self.raw.as_ptr()) }
9230 }
9231
9232 pub fn set_hdr_environment_diffuse(&mut self, value: f32) {
9233 unsafe {
9235 ffi::whiteout_m3_M3StandardMaterial_set_hdrEnvironmentDiffuse(self.raw.as_ptr(), value)
9236 }
9237 }
9238
9239 pub fn hdr_environment_specular(&self) -> f32 {
9241 unsafe { ffi::whiteout_m3_M3StandardMaterial_get_hdrEnvironmentSpecular(self.raw.as_ptr()) }
9243 }
9244
9245 pub fn set_hdr_environment_specular(&mut self, value: f32) {
9246 unsafe {
9248 ffi::whiteout_m3_M3StandardMaterial_set_hdrEnvironmentSpecular(self.raw.as_ptr(), value)
9249 }
9250 }
9251
9252 pub fn material_class(&self) -> MaterialClass {
9254 unsafe { ffi::whiteout_m3_M3StandardMaterial_get_materialClass(self.raw.as_ptr()) }
9256 .try_into()
9257 .expect("unknown enum discriminant from the native library")
9258 }
9259
9260 pub fn set_material_class(&mut self, value: MaterialClass) {
9261 unsafe {
9263 ffi::whiteout_m3_M3StandardMaterial_set_materialClass(self.raw.as_ptr(), value as i32)
9264 }
9265 }
9266
9267 pub fn layer_blend_mode(&self) -> LayerBlendOp {
9269 unsafe { ffi::whiteout_m3_M3StandardMaterial_get_layerBlendMode(self.raw.as_ptr()) }
9271 .try_into()
9272 .expect("unknown enum discriminant from the native library")
9273 }
9274
9275 pub fn set_layer_blend_mode(&mut self, value: LayerBlendOp) {
9276 unsafe {
9278 ffi::whiteout_m3_M3StandardMaterial_set_layerBlendMode(self.raw.as_ptr(), value as i32)
9279 }
9280 }
9281
9282 pub fn emissive_blend_mode_1(&self) -> LayerBlendOp {
9284 unsafe { ffi::whiteout_m3_M3StandardMaterial_get_emissiveBlendMode1(self.raw.as_ptr()) }
9286 .try_into()
9287 .expect("unknown enum discriminant from the native library")
9288 }
9289
9290 pub fn set_emissive_blend_mode_1(&mut self, value: LayerBlendOp) {
9291 unsafe {
9293 ffi::whiteout_m3_M3StandardMaterial_set_emissiveBlendMode1(
9294 self.raw.as_ptr(),
9295 value as i32,
9296 )
9297 }
9298 }
9299
9300 pub fn emissive_blend_mode_2(&self) -> LayerBlendOp {
9302 unsafe { ffi::whiteout_m3_M3StandardMaterial_get_emissiveBlendMode2(self.raw.as_ptr()) }
9304 .try_into()
9305 .expect("unknown enum discriminant from the native library")
9306 }
9307
9308 pub fn set_emissive_blend_mode_2(&mut self, value: LayerBlendOp) {
9309 unsafe {
9311 ffi::whiteout_m3_M3StandardMaterial_set_emissiveBlendMode2(
9312 self.raw.as_ptr(),
9313 value as i32,
9314 )
9315 }
9316 }
9317
9318 pub fn specular_mode(&self) -> SpecularMode {
9320 unsafe { ffi::whiteout_m3_M3StandardMaterial_get_specularMode(self.raw.as_ptr()) }
9322 .try_into()
9323 .expect("unknown enum discriminant from the native library")
9324 }
9325
9326 pub fn set_specular_mode(&mut self, value: SpecularMode) {
9327 unsafe {
9329 ffi::whiteout_m3_M3StandardMaterial_set_specularMode(self.raw.as_ptr(), value as i32)
9330 }
9331 }
9332
9333 pub fn parallax_height(&self) -> crate::support::Ref<'_, AnimRefF32> {
9336 unsafe {
9339 crate::support::Ref::new(AnimRefF32 {
9340 raw: core::ptr::NonNull::new_unchecked(
9341 ffi::whiteout_m3_M3StandardMaterial_get_parallaxHeight(self.raw.as_ptr()),
9342 ),
9343 })
9344 }
9345 }
9346
9347 pub fn parallax_height_mut(&mut self) -> crate::support::RefMut<'_, AnimRefF32> {
9348 unsafe {
9350 crate::support::RefMut::new(AnimRefF32 {
9351 raw: core::ptr::NonNull::new_unchecked(
9352 ffi::whiteout_m3_M3StandardMaterial_get_parallaxHeight(self.raw.as_ptr()),
9353 ),
9354 })
9355 }
9356 }
9357
9358 pub fn motion_blur_amount(&self) -> crate::support::Ref<'_, AnimRefF32> {
9361 unsafe {
9364 crate::support::Ref::new(AnimRefF32 {
9365 raw: core::ptr::NonNull::new_unchecked(
9366 ffi::whiteout_m3_M3StandardMaterial_get_motionBlurAmount(self.raw.as_ptr()),
9367 ),
9368 })
9369 }
9370 }
9371
9372 pub fn motion_blur_amount_mut(&mut self) -> crate::support::RefMut<'_, AnimRefF32> {
9373 unsafe {
9375 crate::support::RefMut::new(AnimRefF32 {
9376 raw: core::ptr::NonNull::new_unchecked(
9377 ffi::whiteout_m3_M3StandardMaterial_get_motionBlurAmount(self.raw.as_ptr()),
9378 ),
9379 })
9380 }
9381 }
9382
9383 pub fn normal_blend_factors_len(&self) -> usize {
9385 unsafe {
9387 ffi::whiteout_m3_M3StandardMaterial_get_normalBlendFactors_count(self.raw.as_ptr())
9388 }
9389 }
9390
9391 pub fn normal_blend_factors(
9393 &self,
9394 index: usize,
9395 ) -> Option<crate::support::Ref<'_, AnimRefF32>> {
9396 if index >= self.normal_blend_factors_len() {
9397 return None;
9398 }
9399 unsafe {
9401 Some(crate::support::Ref::new(AnimRefF32 {
9402 raw: core::ptr::NonNull::new_unchecked(
9403 ffi::whiteout_m3_M3StandardMaterial_get_normalBlendFactors_at(
9404 self.raw.as_ptr(),
9405 index,
9406 ),
9407 ),
9408 }))
9409 }
9410 }
9411
9412 pub fn normal_blend_factors_mut(
9413 &mut self,
9414 index: usize,
9415 ) -> Option<crate::support::RefMut<'_, AnimRefF32>> {
9416 if index >= self.normal_blend_factors_len() {
9417 return None;
9418 }
9419 unsafe {
9421 Some(crate::support::RefMut::new(AnimRefF32 {
9422 raw: core::ptr::NonNull::new_unchecked(
9423 ffi::whiteout_m3_M3StandardMaterial_get_normalBlendFactors_at(
9424 self.raw.as_ptr(),
9425 index,
9426 ),
9427 ),
9428 }))
9429 }
9430 }
9431
9432 pub fn normal_blend_factors_iter(
9434 &self,
9435 ) -> impl ExactSizeIterator<Item = crate::support::Ref<'_, AnimRefF32>> {
9436 (0..self.normal_blend_factors_len())
9437 .map(move |i| self.normal_blend_factors(i).expect("index below len"))
9438 }
9439
9440 pub fn resize_normal_blend_factors(&mut self, count: usize) {
9441 unsafe {
9443 ffi::whiteout_m3_M3StandardMaterial_resize_normalBlendFactors(self.raw.as_ptr(), count)
9444 }
9445 }
9446}
9447
9448impl Default for StandardMaterial {
9449 fn default() -> Self {
9450 Self::new()
9451 }
9452}
9453
9454pub struct DisplacementMaterial {
9458 pub(crate) raw: core::ptr::NonNull<ffi::whiteout_M3DisplacementMaterial>,
9459}
9460
9461impl Drop for DisplacementMaterial {
9462 fn drop(&mut self) {
9463 unsafe { ffi::whiteout_m3_M3DisplacementMaterial_delete(self.raw.as_ptr()) }
9465 }
9466}
9467
9468impl DisplacementMaterial {
9469 #[allow(dead_code)] pub(crate) unsafe fn from_raw(raw: *mut ffi::whiteout_M3DisplacementMaterial) -> Option<Self> {
9473 core::ptr::NonNull::new(raw).map(|raw| DisplacementMaterial { raw })
9474 }
9475}
9476
9477unsafe impl Send for DisplacementMaterial {}
9482
9483impl core::fmt::Debug for DisplacementMaterial {
9484 fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
9485 f.debug_struct("DisplacementMaterial")
9486 .finish_non_exhaustive()
9487 }
9488}
9489
9490impl DisplacementMaterial {
9491 pub fn new() -> Self {
9494 unsafe {
9497 let raw = ffi::whiteout_m3_M3DisplacementMaterial_new();
9498 Self::from_raw(raw).expect("native DisplacementMaterial allocation failed")
9499 }
9500 }
9501
9502 pub fn name(&self) -> String {
9504 unsafe {
9506 crate::support::take_string(ffi::whiteout_m3_M3DisplacementMaterial_get_name(
9507 self.raw.as_ptr(),
9508 ))
9509 }
9510 }
9511
9512 pub fn set_name(&mut self, value: &str) {
9513 let value = std::ffi::CString::new(value).unwrap_or_default();
9514 unsafe {
9516 ffi::whiteout_m3_M3DisplacementMaterial_set_name(self.raw.as_ptr(), value.as_ptr())
9517 }
9518 }
9519
9520 pub fn unknown(&self) -> u32 {
9522 unsafe { ffi::whiteout_m3_M3DisplacementMaterial_get_unknown(self.raw.as_ptr()) }
9524 }
9525
9526 pub fn set_unknown(&mut self, value: u32) {
9527 unsafe { ffi::whiteout_m3_M3DisplacementMaterial_set_unknown(self.raw.as_ptr(), value) }
9529 }
9530
9531 pub fn strength(&self) -> crate::support::Ref<'_, AnimRefF32> {
9534 unsafe {
9537 crate::support::Ref::new(AnimRefF32 {
9538 raw: core::ptr::NonNull::new_unchecked(
9539 ffi::whiteout_m3_M3DisplacementMaterial_get_strength(self.raw.as_ptr()),
9540 ),
9541 })
9542 }
9543 }
9544
9545 pub fn strength_mut(&mut self) -> crate::support::RefMut<'_, AnimRefF32> {
9546 unsafe {
9548 crate::support::RefMut::new(AnimRefF32 {
9549 raw: core::ptr::NonNull::new_unchecked(
9550 ffi::whiteout_m3_M3DisplacementMaterial_get_strength(self.raw.as_ptr()),
9551 ),
9552 })
9553 }
9554 }
9555
9556 pub fn priority(&self) -> u32 {
9558 unsafe { ffi::whiteout_m3_M3DisplacementMaterial_get_priority(self.raw.as_ptr()) }
9560 }
9561
9562 pub fn set_priority(&mut self, value: u32) {
9563 unsafe { ffi::whiteout_m3_M3DisplacementMaterial_set_priority(self.raw.as_ptr(), value) }
9565 }
9566}
9567
9568impl Default for DisplacementMaterial {
9569 fn default() -> Self {
9570 Self::new()
9571 }
9572}
9573
9574pub struct CompositeSection {
9578 pub(crate) raw: core::ptr::NonNull<ffi::whiteout_M3CompositeSection>,
9579}
9580
9581impl Drop for CompositeSection {
9582 fn drop(&mut self) {
9583 unsafe { ffi::whiteout_m3_M3CompositeSection_delete(self.raw.as_ptr()) }
9585 }
9586}
9587
9588impl CompositeSection {
9589 #[allow(dead_code)] pub(crate) unsafe fn from_raw(raw: *mut ffi::whiteout_M3CompositeSection) -> Option<Self> {
9593 core::ptr::NonNull::new(raw).map(|raw| CompositeSection { raw })
9594 }
9595}
9596
9597unsafe impl Send for CompositeSection {}
9602
9603impl core::fmt::Debug for CompositeSection {
9604 fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
9605 f.debug_struct("CompositeSection").finish_non_exhaustive()
9606 }
9607}
9608
9609impl CompositeSection {
9610 pub fn new() -> Self {
9613 unsafe {
9616 let raw = ffi::whiteout_m3_M3CompositeSection_new();
9617 Self::from_raw(raw).expect("native CompositeSection allocation failed")
9618 }
9619 }
9620
9621 pub fn material_index(&self) -> u32 {
9623 unsafe { ffi::whiteout_m3_M3CompositeSection_get_materialIndex(self.raw.as_ptr()) }
9625 }
9626
9627 pub fn set_material_index(&mut self, value: u32) {
9628 unsafe { ffi::whiteout_m3_M3CompositeSection_set_materialIndex(self.raw.as_ptr(), value) }
9630 }
9631
9632 pub fn map_multiplier(&self) -> crate::support::Ref<'_, AnimRefF32> {
9635 unsafe {
9638 crate::support::Ref::new(AnimRefF32 {
9639 raw: core::ptr::NonNull::new_unchecked(
9640 ffi::whiteout_m3_M3CompositeSection_get_mapMultiplier(self.raw.as_ptr()),
9641 ),
9642 })
9643 }
9644 }
9645
9646 pub fn map_multiplier_mut(&mut self) -> crate::support::RefMut<'_, AnimRefF32> {
9647 unsafe {
9649 crate::support::RefMut::new(AnimRefF32 {
9650 raw: core::ptr::NonNull::new_unchecked(
9651 ffi::whiteout_m3_M3CompositeSection_get_mapMultiplier(self.raw.as_ptr()),
9652 ),
9653 })
9654 }
9655 }
9656}
9657
9658impl Default for CompositeSection {
9659 fn default() -> Self {
9660 Self::new()
9661 }
9662}
9663
9664pub struct CompositeMaterial {
9668 pub(crate) raw: core::ptr::NonNull<ffi::whiteout_M3CompositeMaterial>,
9669}
9670
9671impl Drop for CompositeMaterial {
9672 fn drop(&mut self) {
9673 unsafe { ffi::whiteout_m3_M3CompositeMaterial_delete(self.raw.as_ptr()) }
9675 }
9676}
9677
9678impl CompositeMaterial {
9679 #[allow(dead_code)] pub(crate) unsafe fn from_raw(raw: *mut ffi::whiteout_M3CompositeMaterial) -> Option<Self> {
9683 core::ptr::NonNull::new(raw).map(|raw| CompositeMaterial { raw })
9684 }
9685}
9686
9687unsafe impl Send for CompositeMaterial {}
9692
9693impl core::fmt::Debug for CompositeMaterial {
9694 fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
9695 f.debug_struct("CompositeMaterial").finish_non_exhaustive()
9696 }
9697}
9698
9699impl CompositeMaterial {
9700 pub fn new() -> Self {
9703 unsafe {
9706 let raw = ffi::whiteout_m3_M3CompositeMaterial_new();
9707 Self::from_raw(raw).expect("native CompositeMaterial allocation failed")
9708 }
9709 }
9710
9711 pub fn name(&self) -> String {
9713 unsafe {
9715 crate::support::take_string(ffi::whiteout_m3_M3CompositeMaterial_get_name(
9716 self.raw.as_ptr(),
9717 ))
9718 }
9719 }
9720
9721 pub fn set_name(&mut self, value: &str) {
9722 let value = std::ffi::CString::new(value).unwrap_or_default();
9723 unsafe { ffi::whiteout_m3_M3CompositeMaterial_set_name(self.raw.as_ptr(), value.as_ptr()) }
9725 }
9726
9727 pub fn priority(&self) -> u32 {
9729 unsafe { ffi::whiteout_m3_M3CompositeMaterial_get_priority(self.raw.as_ptr()) }
9731 }
9732
9733 pub fn set_priority(&mut self, value: u32) {
9734 unsafe { ffi::whiteout_m3_M3CompositeMaterial_set_priority(self.raw.as_ptr(), value) }
9736 }
9737
9738 pub fn sections_len(&self) -> usize {
9740 unsafe { ffi::whiteout_m3_M3CompositeMaterial_get_sections_count(self.raw.as_ptr()) }
9742 }
9743
9744 pub fn sections(&self, index: usize) -> Option<crate::support::Ref<'_, CompositeSection>> {
9746 if index >= self.sections_len() {
9747 return None;
9748 }
9749 unsafe {
9751 Some(crate::support::Ref::new(CompositeSection {
9752 raw: core::ptr::NonNull::new_unchecked(
9753 ffi::whiteout_m3_M3CompositeMaterial_get_sections_at(self.raw.as_ptr(), index),
9754 ),
9755 }))
9756 }
9757 }
9758
9759 pub fn sections_mut(
9760 &mut self,
9761 index: usize,
9762 ) -> Option<crate::support::RefMut<'_, CompositeSection>> {
9763 if index >= self.sections_len() {
9764 return None;
9765 }
9766 unsafe {
9768 Some(crate::support::RefMut::new(CompositeSection {
9769 raw: core::ptr::NonNull::new_unchecked(
9770 ffi::whiteout_m3_M3CompositeMaterial_get_sections_at(self.raw.as_ptr(), index),
9771 ),
9772 }))
9773 }
9774 }
9775
9776 pub fn sections_iter(
9778 &self,
9779 ) -> impl ExactSizeIterator<Item = crate::support::Ref<'_, CompositeSection>> {
9780 (0..self.sections_len()).map(move |i| self.sections(i).expect("index below len"))
9781 }
9782
9783 pub fn resize_sections(&mut self, count: usize) {
9784 unsafe { ffi::whiteout_m3_M3CompositeMaterial_resize_sections(self.raw.as_ptr(), count) }
9786 }
9787}
9788
9789impl Default for CompositeMaterial {
9790 fn default() -> Self {
9791 Self::new()
9792 }
9793}
9794
9795pub struct TerrainMaterial {
9799 pub(crate) raw: core::ptr::NonNull<ffi::whiteout_M3TerrainMaterial>,
9800}
9801
9802impl Drop for TerrainMaterial {
9803 fn drop(&mut self) {
9804 unsafe { ffi::whiteout_m3_M3TerrainMaterial_delete(self.raw.as_ptr()) }
9806 }
9807}
9808
9809impl TerrainMaterial {
9810 #[allow(dead_code)] pub(crate) unsafe fn from_raw(raw: *mut ffi::whiteout_M3TerrainMaterial) -> Option<Self> {
9814 core::ptr::NonNull::new(raw).map(|raw| TerrainMaterial { raw })
9815 }
9816}
9817
9818unsafe impl Send for TerrainMaterial {}
9823
9824impl core::fmt::Debug for TerrainMaterial {
9825 fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
9826 f.debug_struct("TerrainMaterial").finish_non_exhaustive()
9827 }
9828}
9829
9830impl TerrainMaterial {
9831 pub fn new() -> Self {
9834 unsafe {
9837 let raw = ffi::whiteout_m3_M3TerrainMaterial_new();
9838 Self::from_raw(raw).expect("native TerrainMaterial allocation failed")
9839 }
9840 }
9841
9842 pub fn name(&self) -> String {
9844 unsafe {
9846 crate::support::take_string(ffi::whiteout_m3_M3TerrainMaterial_get_name(
9847 self.raw.as_ptr(),
9848 ))
9849 }
9850 }
9851
9852 pub fn set_name(&mut self, value: &str) {
9853 let value = std::ffi::CString::new(value).unwrap_or_default();
9854 unsafe { ffi::whiteout_m3_M3TerrainMaterial_set_name(self.raw.as_ptr(), value.as_ptr()) }
9856 }
9857
9858 pub fn unknown(&self) -> u32 {
9860 unsafe { ffi::whiteout_m3_M3TerrainMaterial_get_unknown(self.raw.as_ptr()) }
9862 }
9863
9864 pub fn set_unknown(&mut self, value: u32) {
9865 unsafe { ffi::whiteout_m3_M3TerrainMaterial_set_unknown(self.raw.as_ptr(), value) }
9867 }
9868}
9869
9870impl Default for TerrainMaterial {
9871 fn default() -> Self {
9872 Self::new()
9873 }
9874}
9875
9876pub struct VolumeMaterial {
9880 pub(crate) raw: core::ptr::NonNull<ffi::whiteout_M3VolumeMaterial>,
9881}
9882
9883impl Drop for VolumeMaterial {
9884 fn drop(&mut self) {
9885 unsafe { ffi::whiteout_m3_M3VolumeMaterial_delete(self.raw.as_ptr()) }
9887 }
9888}
9889
9890impl VolumeMaterial {
9891 #[allow(dead_code)] pub(crate) unsafe fn from_raw(raw: *mut ffi::whiteout_M3VolumeMaterial) -> Option<Self> {
9895 core::ptr::NonNull::new(raw).map(|raw| VolumeMaterial { raw })
9896 }
9897}
9898
9899unsafe impl Send for VolumeMaterial {}
9904
9905impl core::fmt::Debug for VolumeMaterial {
9906 fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
9907 f.debug_struct("VolumeMaterial").finish_non_exhaustive()
9908 }
9909}
9910
9911impl VolumeMaterial {
9912 pub fn new() -> Self {
9915 unsafe {
9918 let raw = ffi::whiteout_m3_M3VolumeMaterial_new();
9919 Self::from_raw(raw).expect("native VolumeMaterial allocation failed")
9920 }
9921 }
9922
9923 pub fn name(&self) -> String {
9925 unsafe {
9927 crate::support::take_string(ffi::whiteout_m3_M3VolumeMaterial_get_name(
9928 self.raw.as_ptr(),
9929 ))
9930 }
9931 }
9932
9933 pub fn set_name(&mut self, value: &str) {
9934 let value = std::ffi::CString::new(value).unwrap_or_default();
9935 unsafe { ffi::whiteout_m3_M3VolumeMaterial_set_name(self.raw.as_ptr(), value.as_ptr()) }
9937 }
9938
9939 pub fn blend_mode(&self) -> u32 {
9941 unsafe { ffi::whiteout_m3_M3VolumeMaterial_get_blendMode(self.raw.as_ptr()) }
9943 }
9944
9945 pub fn set_blend_mode(&mut self, value: u32) {
9946 unsafe { ffi::whiteout_m3_M3VolumeMaterial_set_blendMode(self.raw.as_ptr(), value) }
9948 }
9949
9950 pub fn falloff_type(&self) -> VolumeFalloffType {
9952 unsafe { ffi::whiteout_m3_M3VolumeMaterial_get_falloffType(self.raw.as_ptr()) }
9954 .try_into()
9955 .expect("unknown enum discriminant from the native library")
9956 }
9957
9958 pub fn set_falloff_type(&mut self, value: VolumeFalloffType) {
9959 unsafe {
9961 ffi::whiteout_m3_M3VolumeMaterial_set_falloffType(self.raw.as_ptr(), value as i32)
9962 }
9963 }
9964
9965 pub fn density(&self) -> crate::support::Ref<'_, AnimRefF32> {
9968 unsafe {
9971 crate::support::Ref::new(AnimRefF32 {
9972 raw: core::ptr::NonNull::new_unchecked(
9973 ffi::whiteout_m3_M3VolumeMaterial_get_density(self.raw.as_ptr()),
9974 ),
9975 })
9976 }
9977 }
9978
9979 pub fn density_mut(&mut self) -> crate::support::RefMut<'_, AnimRefF32> {
9980 unsafe {
9982 crate::support::RefMut::new(AnimRefF32 {
9983 raw: core::ptr::NonNull::new_unchecked(
9984 ffi::whiteout_m3_M3VolumeMaterial_get_density(self.raw.as_ptr()),
9985 ),
9986 })
9987 }
9988 }
9989
9990 pub fn alpha_threshold(&self) -> u32 {
9992 unsafe { ffi::whiteout_m3_M3VolumeMaterial_get_alphaThreshold(self.raw.as_ptr()) }
9994 }
9995
9996 pub fn set_alpha_threshold(&mut self, value: u32) {
9997 unsafe { ffi::whiteout_m3_M3VolumeMaterial_set_alphaThreshold(self.raw.as_ptr(), value) }
9999 }
10000}
10001
10002impl Default for VolumeMaterial {
10003 fn default() -> Self {
10004 Self::new()
10005 }
10006}
10007
10008pub struct HairMaterial {
10012 pub(crate) raw: core::ptr::NonNull<ffi::whiteout_M3HairMaterial>,
10013}
10014
10015impl Drop for HairMaterial {
10016 fn drop(&mut self) {
10017 unsafe { ffi::whiteout_m3_M3HairMaterial_delete(self.raw.as_ptr()) }
10019 }
10020}
10021
10022impl HairMaterial {
10023 #[allow(dead_code)] pub(crate) unsafe fn from_raw(raw: *mut ffi::whiteout_M3HairMaterial) -> Option<Self> {
10027 core::ptr::NonNull::new(raw).map(|raw| HairMaterial { raw })
10028 }
10029}
10030
10031unsafe impl Send for HairMaterial {}
10036
10037impl core::fmt::Debug for HairMaterial {
10038 fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
10039 f.debug_struct("HairMaterial").finish_non_exhaustive()
10040 }
10041}
10042
10043impl HairMaterial {
10044 pub fn new() -> Self {
10047 unsafe {
10050 let raw = ffi::whiteout_m3_M3HairMaterial_new();
10051 Self::from_raw(raw).expect("native HairMaterial allocation failed")
10052 }
10053 }
10054
10055 pub fn name(&self) -> String {
10057 unsafe {
10059 crate::support::take_string(ffi::whiteout_m3_M3HairMaterial_get_name(self.raw.as_ptr()))
10060 }
10061 }
10062
10063 pub fn set_name(&mut self, value: &str) {
10064 let value = std::ffi::CString::new(value).unwrap_or_default();
10065 unsafe { ffi::whiteout_m3_M3HairMaterial_set_name(self.raw.as_ptr(), value.as_ptr()) }
10067 }
10068
10069 pub fn shift_primary(&self) -> f32 {
10071 unsafe { ffi::whiteout_m3_M3HairMaterial_get_shiftPrimary(self.raw.as_ptr()) }
10073 }
10074
10075 pub fn set_shift_primary(&mut self, value: f32) {
10076 unsafe { ffi::whiteout_m3_M3HairMaterial_set_shiftPrimary(self.raw.as_ptr(), value) }
10078 }
10079
10080 pub fn shift_secondary(&self) -> f32 {
10082 unsafe { ffi::whiteout_m3_M3HairMaterial_get_shiftSecondary(self.raw.as_ptr()) }
10084 }
10085
10086 pub fn set_shift_secondary(&mut self, value: f32) {
10087 unsafe { ffi::whiteout_m3_M3HairMaterial_set_shiftSecondary(self.raw.as_ptr(), value) }
10089 }
10090
10091 pub fn color_diffuse(&self) -> crate::support::Ref<'_, AnimRefM3ColorBGRA> {
10094 unsafe {
10097 crate::support::Ref::new(AnimRefM3ColorBGRA {
10098 raw: core::ptr::NonNull::new_unchecked(
10099 ffi::whiteout_m3_M3HairMaterial_get_colorDiffuse(self.raw.as_ptr()),
10100 ),
10101 })
10102 }
10103 }
10104
10105 pub fn color_diffuse_mut(&mut self) -> crate::support::RefMut<'_, AnimRefM3ColorBGRA> {
10106 unsafe {
10108 crate::support::RefMut::new(AnimRefM3ColorBGRA {
10109 raw: core::ptr::NonNull::new_unchecked(
10110 ffi::whiteout_m3_M3HairMaterial_get_colorDiffuse(self.raw.as_ptr()),
10111 ),
10112 })
10113 }
10114 }
10115
10116 pub fn color_spec(&self) -> crate::support::Ref<'_, AnimRefM3ColorBGRA> {
10119 unsafe {
10122 crate::support::Ref::new(AnimRefM3ColorBGRA {
10123 raw: core::ptr::NonNull::new_unchecked(
10124 ffi::whiteout_m3_M3HairMaterial_get_colorSpec(self.raw.as_ptr()),
10125 ),
10126 })
10127 }
10128 }
10129
10130 pub fn color_spec_mut(&mut self) -> crate::support::RefMut<'_, AnimRefM3ColorBGRA> {
10131 unsafe {
10133 crate::support::RefMut::new(AnimRefM3ColorBGRA {
10134 raw: core::ptr::NonNull::new_unchecked(
10135 ffi::whiteout_m3_M3HairMaterial_get_colorSpec(self.raw.as_ptr()),
10136 ),
10137 })
10138 }
10139 }
10140
10141 pub fn spec_exponent_0(&self) -> f32 {
10143 unsafe { ffi::whiteout_m3_M3HairMaterial_get_specExponent0(self.raw.as_ptr()) }
10145 }
10146
10147 pub fn set_spec_exponent_0(&mut self, value: f32) {
10148 unsafe { ffi::whiteout_m3_M3HairMaterial_set_specExponent0(self.raw.as_ptr(), value) }
10150 }
10151
10152 pub fn spec_exponent_1(&self) -> f32 {
10154 unsafe { ffi::whiteout_m3_M3HairMaterial_get_specExponent1(self.raw.as_ptr()) }
10156 }
10157
10158 pub fn set_spec_exponent_1(&mut self, value: f32) {
10159 unsafe { ffi::whiteout_m3_M3HairMaterial_set_specExponent1(self.raw.as_ptr(), value) }
10161 }
10162}
10163
10164impl Default for HairMaterial {
10165 fn default() -> Self {
10166 Self::new()
10167 }
10168}
10169
10170pub struct VolumeNoiseMaterial {
10174 pub(crate) raw: core::ptr::NonNull<ffi::whiteout_M3VolumeNoiseMaterial>,
10175}
10176
10177impl Drop for VolumeNoiseMaterial {
10178 fn drop(&mut self) {
10179 unsafe { ffi::whiteout_m3_M3VolumeNoiseMaterial_delete(self.raw.as_ptr()) }
10181 }
10182}
10183
10184impl VolumeNoiseMaterial {
10185 #[allow(dead_code)] pub(crate) unsafe fn from_raw(raw: *mut ffi::whiteout_M3VolumeNoiseMaterial) -> Option<Self> {
10189 core::ptr::NonNull::new(raw).map(|raw| VolumeNoiseMaterial { raw })
10190 }
10191}
10192
10193unsafe impl Send for VolumeNoiseMaterial {}
10198
10199impl core::fmt::Debug for VolumeNoiseMaterial {
10200 fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
10201 f.debug_struct("VolumeNoiseMaterial")
10202 .finish_non_exhaustive()
10203 }
10204}
10205
10206impl VolumeNoiseMaterial {
10207 pub fn new() -> Self {
10210 unsafe {
10213 let raw = ffi::whiteout_m3_M3VolumeNoiseMaterial_new();
10214 Self::from_raw(raw).expect("native VolumeNoiseMaterial allocation failed")
10215 }
10216 }
10217
10218 pub fn name(&self) -> String {
10220 unsafe {
10222 crate::support::take_string(ffi::whiteout_m3_M3VolumeNoiseMaterial_get_name(
10223 self.raw.as_ptr(),
10224 ))
10225 }
10226 }
10227
10228 pub fn set_name(&mut self, value: &str) {
10229 let value = std::ffi::CString::new(value).unwrap_or_default();
10230 unsafe {
10232 ffi::whiteout_m3_M3VolumeNoiseMaterial_set_name(self.raw.as_ptr(), value.as_ptr())
10233 }
10234 }
10235
10236 pub fn falloff_type(&self) -> VolumeFalloffType {
10238 unsafe { ffi::whiteout_m3_M3VolumeNoiseMaterial_get_falloffType(self.raw.as_ptr()) }
10240 .try_into()
10241 .expect("unknown enum discriminant from the native library")
10242 }
10243
10244 pub fn set_falloff_type(&mut self, value: VolumeFalloffType) {
10245 unsafe {
10247 ffi::whiteout_m3_M3VolumeNoiseMaterial_set_falloffType(self.raw.as_ptr(), value as i32)
10248 }
10249 }
10250
10251 pub fn draw_transparency(&self) -> VolumeNoiseCameraMode {
10253 unsafe { ffi::whiteout_m3_M3VolumeNoiseMaterial_get_drawTransparency(self.raw.as_ptr()) }
10255 .try_into()
10256 .expect("unknown enum discriminant from the native library")
10257 }
10258
10259 pub fn set_draw_transparency(&mut self, value: VolumeNoiseCameraMode) {
10260 unsafe {
10262 ffi::whiteout_m3_M3VolumeNoiseMaterial_set_drawTransparency(
10263 self.raw.as_ptr(),
10264 value as i32,
10265 )
10266 }
10267 }
10268
10269 pub fn density(&self) -> crate::support::Ref<'_, AnimRefF32> {
10272 unsafe {
10275 crate::support::Ref::new(AnimRefF32 {
10276 raw: core::ptr::NonNull::new_unchecked(
10277 ffi::whiteout_m3_M3VolumeNoiseMaterial_get_density(self.raw.as_ptr()),
10278 ),
10279 })
10280 }
10281 }
10282
10283 pub fn density_mut(&mut self) -> crate::support::RefMut<'_, AnimRefF32> {
10284 unsafe {
10286 crate::support::RefMut::new(AnimRefF32 {
10287 raw: core::ptr::NonNull::new_unchecked(
10288 ffi::whiteout_m3_M3VolumeNoiseMaterial_get_density(self.raw.as_ptr()),
10289 ),
10290 })
10291 }
10292 }
10293
10294 pub fn near_plane(&self) -> crate::support::Ref<'_, AnimRefF32> {
10297 unsafe {
10300 crate::support::Ref::new(AnimRefF32 {
10301 raw: core::ptr::NonNull::new_unchecked(
10302 ffi::whiteout_m3_M3VolumeNoiseMaterial_get_nearPlane(self.raw.as_ptr()),
10303 ),
10304 })
10305 }
10306 }
10307
10308 pub fn near_plane_mut(&mut self) -> crate::support::RefMut<'_, AnimRefF32> {
10309 unsafe {
10311 crate::support::RefMut::new(AnimRefF32 {
10312 raw: core::ptr::NonNull::new_unchecked(
10313 ffi::whiteout_m3_M3VolumeNoiseMaterial_get_nearPlane(self.raw.as_ptr()),
10314 ),
10315 })
10316 }
10317 }
10318
10319 pub fn falloff(&self) -> crate::support::Ref<'_, AnimRefF32> {
10322 unsafe {
10325 crate::support::Ref::new(AnimRefF32 {
10326 raw: core::ptr::NonNull::new_unchecked(
10327 ffi::whiteout_m3_M3VolumeNoiseMaterial_get_falloff(self.raw.as_ptr()),
10328 ),
10329 })
10330 }
10331 }
10332
10333 pub fn falloff_mut(&mut self) -> crate::support::RefMut<'_, AnimRefF32> {
10334 unsafe {
10336 crate::support::RefMut::new(AnimRefF32 {
10337 raw: core::ptr::NonNull::new_unchecked(
10338 ffi::whiteout_m3_M3VolumeNoiseMaterial_get_falloff(self.raw.as_ptr()),
10339 ),
10340 })
10341 }
10342 }
10343
10344 pub fn scroll_rate(&self) -> crate::support::Ref<'_, AnimRefVector3f> {
10347 unsafe {
10350 crate::support::Ref::new(AnimRefVector3f {
10351 raw: core::ptr::NonNull::new_unchecked(
10352 ffi::whiteout_m3_M3VolumeNoiseMaterial_get_scrollRate(self.raw.as_ptr()),
10353 ),
10354 })
10355 }
10356 }
10357
10358 pub fn scroll_rate_mut(&mut self) -> crate::support::RefMut<'_, AnimRefVector3f> {
10359 unsafe {
10361 crate::support::RefMut::new(AnimRefVector3f {
10362 raw: core::ptr::NonNull::new_unchecked(
10363 ffi::whiteout_m3_M3VolumeNoiseMaterial_get_scrollRate(self.raw.as_ptr()),
10364 ),
10365 })
10366 }
10367 }
10368
10369 pub fn position(&self) -> crate::support::Ref<'_, AnimRefVector3f> {
10372 unsafe {
10375 crate::support::Ref::new(AnimRefVector3f {
10376 raw: core::ptr::NonNull::new_unchecked(
10377 ffi::whiteout_m3_M3VolumeNoiseMaterial_get_position(self.raw.as_ptr()),
10378 ),
10379 })
10380 }
10381 }
10382
10383 pub fn position_mut(&mut self) -> crate::support::RefMut<'_, AnimRefVector3f> {
10384 unsafe {
10386 crate::support::RefMut::new(AnimRefVector3f {
10387 raw: core::ptr::NonNull::new_unchecked(
10388 ffi::whiteout_m3_M3VolumeNoiseMaterial_get_position(self.raw.as_ptr()),
10389 ),
10390 })
10391 }
10392 }
10393
10394 pub fn scale(&self) -> crate::support::Ref<'_, AnimRefVector3f> {
10397 unsafe {
10400 crate::support::Ref::new(AnimRefVector3f {
10401 raw: core::ptr::NonNull::new_unchecked(
10402 ffi::whiteout_m3_M3VolumeNoiseMaterial_get_scale(self.raw.as_ptr()),
10403 ),
10404 })
10405 }
10406 }
10407
10408 pub fn scale_mut(&mut self) -> crate::support::RefMut<'_, AnimRefVector3f> {
10409 unsafe {
10411 crate::support::RefMut::new(AnimRefVector3f {
10412 raw: core::ptr::NonNull::new_unchecked(
10413 ffi::whiteout_m3_M3VolumeNoiseMaterial_get_scale(self.raw.as_ptr()),
10414 ),
10415 })
10416 }
10417 }
10418
10419 pub fn rotation(&self) -> crate::support::Ref<'_, AnimRefVector3f> {
10422 unsafe {
10425 crate::support::Ref::new(AnimRefVector3f {
10426 raw: core::ptr::NonNull::new_unchecked(
10427 ffi::whiteout_m3_M3VolumeNoiseMaterial_get_rotation(self.raw.as_ptr()),
10428 ),
10429 })
10430 }
10431 }
10432
10433 pub fn rotation_mut(&mut self) -> crate::support::RefMut<'_, AnimRefVector3f> {
10434 unsafe {
10436 crate::support::RefMut::new(AnimRefVector3f {
10437 raw: core::ptr::NonNull::new_unchecked(
10438 ffi::whiteout_m3_M3VolumeNoiseMaterial_get_rotation(self.raw.as_ptr()),
10439 ),
10440 })
10441 }
10442 }
10443
10444 pub fn alpha_threshold(&self) -> u32 {
10446 unsafe { ffi::whiteout_m3_M3VolumeNoiseMaterial_get_alphaThreshold(self.raw.as_ptr()) }
10448 }
10449
10450 pub fn set_alpha_threshold(&mut self, value: u32) {
10451 unsafe {
10453 ffi::whiteout_m3_M3VolumeNoiseMaterial_set_alphaThreshold(self.raw.as_ptr(), value)
10454 }
10455 }
10456
10457 pub fn flags(&self) -> VolumeNoiseMaterialFlag {
10459 unsafe { ffi::whiteout_m3_M3VolumeNoiseMaterial_get_flags(self.raw.as_ptr()) }
10461 .try_into()
10462 .expect("unknown enum discriminant from the native library")
10463 }
10464
10465 pub fn set_flags(&mut self, value: VolumeNoiseMaterialFlag) {
10466 unsafe { ffi::whiteout_m3_M3VolumeNoiseMaterial_set_flags(self.raw.as_ptr(), value as i32) }
10468 }
10469}
10470
10471impl Default for VolumeNoiseMaterial {
10472 fn default() -> Self {
10473 Self::new()
10474 }
10475}
10476
10477pub struct CreepMaterial {
10481 pub(crate) raw: core::ptr::NonNull<ffi::whiteout_M3CreepMaterial>,
10482}
10483
10484impl Drop for CreepMaterial {
10485 fn drop(&mut self) {
10486 unsafe { ffi::whiteout_m3_M3CreepMaterial_delete(self.raw.as_ptr()) }
10488 }
10489}
10490
10491impl CreepMaterial {
10492 #[allow(dead_code)] pub(crate) unsafe fn from_raw(raw: *mut ffi::whiteout_M3CreepMaterial) -> Option<Self> {
10496 core::ptr::NonNull::new(raw).map(|raw| CreepMaterial { raw })
10497 }
10498}
10499
10500unsafe impl Send for CreepMaterial {}
10505
10506impl core::fmt::Debug for CreepMaterial {
10507 fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
10508 f.debug_struct("CreepMaterial").finish_non_exhaustive()
10509 }
10510}
10511
10512impl CreepMaterial {
10513 pub fn new() -> Self {
10516 unsafe {
10519 let raw = ffi::whiteout_m3_M3CreepMaterial_new();
10520 Self::from_raw(raw).expect("native CreepMaterial allocation failed")
10521 }
10522 }
10523
10524 pub fn name(&self) -> String {
10526 unsafe {
10528 crate::support::take_string(ffi::whiteout_m3_M3CreepMaterial_get_name(
10529 self.raw.as_ptr(),
10530 ))
10531 }
10532 }
10533
10534 pub fn set_name(&mut self, value: &str) {
10535 let value = std::ffi::CString::new(value).unwrap_or_default();
10536 unsafe { ffi::whiteout_m3_M3CreepMaterial_set_name(self.raw.as_ptr(), value.as_ptr()) }
10538 }
10539
10540 pub fn creep_low(&self) -> u32 {
10542 unsafe { ffi::whiteout_m3_M3CreepMaterial_get_creepLow(self.raw.as_ptr()) }
10544 }
10545
10546 pub fn set_creep_low(&mut self, value: u32) {
10547 unsafe { ffi::whiteout_m3_M3CreepMaterial_set_creepLow(self.raw.as_ptr(), value) }
10549 }
10550}
10551
10552impl Default for CreepMaterial {
10553 fn default() -> Self {
10554 Self::new()
10555 }
10556}
10557
10558pub struct STBMaterial {
10562 pub(crate) raw: core::ptr::NonNull<ffi::whiteout_M3STBMaterial>,
10563}
10564
10565impl Drop for STBMaterial {
10566 fn drop(&mut self) {
10567 unsafe { ffi::whiteout_m3_M3STBMaterial_delete(self.raw.as_ptr()) }
10569 }
10570}
10571
10572impl STBMaterial {
10573 #[allow(dead_code)] pub(crate) unsafe fn from_raw(raw: *mut ffi::whiteout_M3STBMaterial) -> Option<Self> {
10577 core::ptr::NonNull::new(raw).map(|raw| STBMaterial { raw })
10578 }
10579}
10580
10581unsafe impl Send for STBMaterial {}
10586
10587impl core::fmt::Debug for STBMaterial {
10588 fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
10589 f.debug_struct("STBMaterial").finish_non_exhaustive()
10590 }
10591}
10592
10593impl STBMaterial {
10594 pub fn new() -> Self {
10597 unsafe {
10600 let raw = ffi::whiteout_m3_M3STBMaterial_new();
10601 Self::from_raw(raw).expect("native STBMaterial allocation failed")
10602 }
10603 }
10604
10605 pub fn name(&self) -> String {
10607 unsafe {
10609 crate::support::take_string(ffi::whiteout_m3_M3STBMaterial_get_name(self.raw.as_ptr()))
10610 }
10611 }
10612
10613 pub fn set_name(&mut self, value: &str) {
10614 let value = std::ffi::CString::new(value).unwrap_or_default();
10615 unsafe { ffi::whiteout_m3_M3STBMaterial_set_name(self.raw.as_ptr(), value.as_ptr()) }
10617 }
10618}
10619
10620impl Default for STBMaterial {
10621 fn default() -> Self {
10622 Self::new()
10623 }
10624}
10625
10626pub struct ReflectionMaterial {
10630 pub(crate) raw: core::ptr::NonNull<ffi::whiteout_M3ReflectionMaterial>,
10631}
10632
10633impl Drop for ReflectionMaterial {
10634 fn drop(&mut self) {
10635 unsafe { ffi::whiteout_m3_M3ReflectionMaterial_delete(self.raw.as_ptr()) }
10637 }
10638}
10639
10640impl ReflectionMaterial {
10641 #[allow(dead_code)] pub(crate) unsafe fn from_raw(raw: *mut ffi::whiteout_M3ReflectionMaterial) -> Option<Self> {
10645 core::ptr::NonNull::new(raw).map(|raw| ReflectionMaterial { raw })
10646 }
10647}
10648
10649unsafe impl Send for ReflectionMaterial {}
10654
10655impl core::fmt::Debug for ReflectionMaterial {
10656 fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
10657 f.debug_struct("ReflectionMaterial").finish_non_exhaustive()
10658 }
10659}
10660
10661impl ReflectionMaterial {
10662 pub fn new() -> Self {
10665 unsafe {
10668 let raw = ffi::whiteout_m3_M3ReflectionMaterial_new();
10669 Self::from_raw(raw).expect("native ReflectionMaterial allocation failed")
10670 }
10671 }
10672
10673 pub fn name(&self) -> String {
10675 unsafe {
10677 crate::support::take_string(ffi::whiteout_m3_M3ReflectionMaterial_get_name(
10678 self.raw.as_ptr(),
10679 ))
10680 }
10681 }
10682
10683 pub fn set_name(&mut self, value: &str) {
10684 let value = std::ffi::CString::new(value).unwrap_or_default();
10685 unsafe { ffi::whiteout_m3_M3ReflectionMaterial_set_name(self.raw.as_ptr(), value.as_ptr()) }
10687 }
10688
10689 pub fn unknown(&self) -> u32 {
10691 unsafe { ffi::whiteout_m3_M3ReflectionMaterial_get_unknown(self.raw.as_ptr()) }
10693 }
10694
10695 pub fn set_unknown(&mut self, value: u32) {
10696 unsafe { ffi::whiteout_m3_M3ReflectionMaterial_set_unknown(self.raw.as_ptr(), value) }
10698 }
10699
10700 pub fn reflection_strength(&self) -> crate::support::Ref<'_, AnimRefF32> {
10703 unsafe {
10706 crate::support::Ref::new(AnimRefF32 {
10707 raw: core::ptr::NonNull::new_unchecked(
10708 ffi::whiteout_m3_M3ReflectionMaterial_get_reflectionStrength(self.raw.as_ptr()),
10709 ),
10710 })
10711 }
10712 }
10713
10714 pub fn reflection_strength_mut(&mut self) -> crate::support::RefMut<'_, AnimRefF32> {
10715 unsafe {
10717 crate::support::RefMut::new(AnimRefF32 {
10718 raw: core::ptr::NonNull::new_unchecked(
10719 ffi::whiteout_m3_M3ReflectionMaterial_get_reflectionStrength(self.raw.as_ptr()),
10720 ),
10721 })
10722 }
10723 }
10724
10725 pub fn displacement_strength(&self) -> crate::support::Ref<'_, AnimRefF32> {
10728 unsafe {
10731 crate::support::Ref::new(AnimRefF32 {
10732 raw: core::ptr::NonNull::new_unchecked(
10733 ffi::whiteout_m3_M3ReflectionMaterial_get_displacementStrength(
10734 self.raw.as_ptr(),
10735 ),
10736 ),
10737 })
10738 }
10739 }
10740
10741 pub fn displacement_strength_mut(&mut self) -> crate::support::RefMut<'_, AnimRefF32> {
10742 unsafe {
10744 crate::support::RefMut::new(AnimRefF32 {
10745 raw: core::ptr::NonNull::new_unchecked(
10746 ffi::whiteout_m3_M3ReflectionMaterial_get_displacementStrength(
10747 self.raw.as_ptr(),
10748 ),
10749 ),
10750 })
10751 }
10752 }
10753
10754 pub fn reflection_offset(&self) -> crate::support::Ref<'_, AnimRefF32> {
10757 unsafe {
10760 crate::support::Ref::new(AnimRefF32 {
10761 raw: core::ptr::NonNull::new_unchecked(
10762 ffi::whiteout_m3_M3ReflectionMaterial_get_reflectionOffset(self.raw.as_ptr()),
10763 ),
10764 })
10765 }
10766 }
10767
10768 pub fn reflection_offset_mut(&mut self) -> crate::support::RefMut<'_, AnimRefF32> {
10769 unsafe {
10771 crate::support::RefMut::new(AnimRefF32 {
10772 raw: core::ptr::NonNull::new_unchecked(
10773 ffi::whiteout_m3_M3ReflectionMaterial_get_reflectionOffset(self.raw.as_ptr()),
10774 ),
10775 })
10776 }
10777 }
10778
10779 pub fn blur_angle(&self) -> crate::support::Ref<'_, AnimRefF32> {
10782 unsafe {
10785 crate::support::Ref::new(AnimRefF32 {
10786 raw: core::ptr::NonNull::new_unchecked(
10787 ffi::whiteout_m3_M3ReflectionMaterial_get_blurAngle(self.raw.as_ptr()),
10788 ),
10789 })
10790 }
10791 }
10792
10793 pub fn blur_angle_mut(&mut self) -> crate::support::RefMut<'_, AnimRefF32> {
10794 unsafe {
10796 crate::support::RefMut::new(AnimRefF32 {
10797 raw: core::ptr::NonNull::new_unchecked(
10798 ffi::whiteout_m3_M3ReflectionMaterial_get_blurAngle(self.raw.as_ptr()),
10799 ),
10800 })
10801 }
10802 }
10803
10804 pub fn blur_distance_max(&self) -> crate::support::Ref<'_, AnimRefF32> {
10807 unsafe {
10810 crate::support::Ref::new(AnimRefF32 {
10811 raw: core::ptr::NonNull::new_unchecked(
10812 ffi::whiteout_m3_M3ReflectionMaterial_get_blurDistanceMax(self.raw.as_ptr()),
10813 ),
10814 })
10815 }
10816 }
10817
10818 pub fn blur_distance_max_mut(&mut self) -> crate::support::RefMut<'_, AnimRefF32> {
10819 unsafe {
10821 crate::support::RefMut::new(AnimRefF32 {
10822 raw: core::ptr::NonNull::new_unchecked(
10823 ffi::whiteout_m3_M3ReflectionMaterial_get_blurDistanceMax(self.raw.as_ptr()),
10824 ),
10825 })
10826 }
10827 }
10828
10829 pub fn flags(&self) -> ReflectionMaterialFlag {
10831 ReflectionMaterialFlag(unsafe {
10833 ffi::whiteout_m3_M3ReflectionMaterial_get_flags(self.raw.as_ptr())
10834 })
10835 }
10836
10837 pub fn set_flags(&mut self, value: ReflectionMaterialFlag) {
10838 unsafe { ffi::whiteout_m3_M3ReflectionMaterial_set_flags(self.raw.as_ptr(), value.0) }
10840 }
10841
10842 pub fn unknown_2(&self) -> u32 {
10844 unsafe { ffi::whiteout_m3_M3ReflectionMaterial_get_unknown2(self.raw.as_ptr()) }
10846 }
10847
10848 pub fn set_unknown_2(&mut self, value: u32) {
10849 unsafe { ffi::whiteout_m3_M3ReflectionMaterial_set_unknown2(self.raw.as_ptr(), value) }
10851 }
10852}
10853
10854impl Default for ReflectionMaterial {
10855 fn default() -> Self {
10856 Self::new()
10857 }
10858}
10859
10860pub struct SubFlare {
10864 pub(crate) raw: core::ptr::NonNull<ffi::whiteout_M3SubFlare>,
10865}
10866
10867impl Drop for SubFlare {
10868 fn drop(&mut self) {
10869 unsafe { ffi::whiteout_m3_M3SubFlare_delete(self.raw.as_ptr()) }
10871 }
10872}
10873
10874impl SubFlare {
10875 #[allow(dead_code)] pub(crate) unsafe fn from_raw(raw: *mut ffi::whiteout_M3SubFlare) -> Option<Self> {
10879 core::ptr::NonNull::new(raw).map(|raw| SubFlare { raw })
10880 }
10881}
10882
10883unsafe impl Send for SubFlare {}
10888
10889impl core::fmt::Debug for SubFlare {
10890 fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
10891 f.debug_struct("SubFlare").finish_non_exhaustive()
10892 }
10893}
10894
10895impl SubFlare {
10896 pub fn new() -> Self {
10899 unsafe {
10902 let raw = ffi::whiteout_m3_M3SubFlare_new();
10903 Self::from_raw(raw).expect("native SubFlare allocation failed")
10904 }
10905 }
10906
10907 pub fn index(&self) -> u32 {
10909 unsafe { ffi::whiteout_m3_M3SubFlare_get_index(self.raw.as_ptr()) }
10911 }
10912
10913 pub fn set_index(&mut self, value: u32) {
10914 unsafe { ffi::whiteout_m3_M3SubFlare_set_index(self.raw.as_ptr(), value) }
10916 }
10917
10918 pub fn position(&self) -> f32 {
10920 unsafe { ffi::whiteout_m3_M3SubFlare_get_position(self.raw.as_ptr()) }
10922 }
10923
10924 pub fn set_position(&mut self, value: f32) {
10925 unsafe { ffi::whiteout_m3_M3SubFlare_set_position(self.raw.as_ptr(), value) }
10927 }
10928
10929 pub fn size_xy(&self) -> crate::math::Vector2f {
10931 unsafe {
10934 *(ffi::whiteout_m3_M3SubFlare_get_sizeXY(self.raw.as_ptr())
10935 as *const crate::math::Vector2f)
10936 }
10937 }
10938
10939 pub fn set_size_xy(&mut self, value: crate::math::Vector2f) {
10940 unsafe {
10942 ffi::whiteout_m3_M3SubFlare_set_sizeXY(
10943 self.raw.as_ptr(),
10944 &value as *const crate::math::Vector2f as *const _,
10945 )
10946 }
10947 }
10948
10949 pub fn scale_xy(&self) -> crate::math::Vector2f {
10951 unsafe {
10954 *(ffi::whiteout_m3_M3SubFlare_get_scaleXY(self.raw.as_ptr())
10955 as *const crate::math::Vector2f)
10956 }
10957 }
10958
10959 pub fn set_scale_xy(&mut self, value: crate::math::Vector2f) {
10960 unsafe {
10962 ffi::whiteout_m3_M3SubFlare_set_scaleXY(
10963 self.raw.as_ptr(),
10964 &value as *const crate::math::Vector2f as *const _,
10965 )
10966 }
10967 }
10968
10969 pub fn fade_in(&self) -> crate::math::Vector2f {
10971 unsafe {
10974 *(ffi::whiteout_m3_M3SubFlare_get_fadeIn(self.raw.as_ptr())
10975 as *const crate::math::Vector2f)
10976 }
10977 }
10978
10979 pub fn set_fade_in(&mut self, value: crate::math::Vector2f) {
10980 unsafe {
10982 ffi::whiteout_m3_M3SubFlare_set_fadeIn(
10983 self.raw.as_ptr(),
10984 &value as *const crate::math::Vector2f as *const _,
10985 )
10986 }
10987 }
10988
10989 pub fn fade_out(&self) -> crate::math::Vector2f {
10991 unsafe {
10994 *(ffi::whiteout_m3_M3SubFlare_get_fadeOut(self.raw.as_ptr())
10995 as *const crate::math::Vector2f)
10996 }
10997 }
10998
10999 pub fn set_fade_out(&mut self, value: crate::math::Vector2f) {
11000 unsafe {
11002 ffi::whiteout_m3_M3SubFlare_set_fadeOut(
11003 self.raw.as_ptr(),
11004 &value as *const crate::math::Vector2f as *const _,
11005 )
11006 }
11007 }
11008
11009 pub fn color_alpha(&self) -> crate::support::Ref<'_, ColorBGRA> {
11012 unsafe {
11015 crate::support::Ref::new(ColorBGRA {
11016 raw: core::ptr::NonNull::new_unchecked(ffi::whiteout_m3_M3SubFlare_get_colorAlpha(
11017 self.raw.as_ptr(),
11018 )),
11019 })
11020 }
11021 }
11022
11023 pub fn color_alpha_mut(&mut self) -> crate::support::RefMut<'_, ColorBGRA> {
11024 unsafe {
11026 crate::support::RefMut::new(ColorBGRA {
11027 raw: core::ptr::NonNull::new_unchecked(ffi::whiteout_m3_M3SubFlare_get_colorAlpha(
11028 self.raw.as_ptr(),
11029 )),
11030 })
11031 }
11032 }
11033
11034 pub fn face_center(&self) -> u32 {
11036 unsafe { ffi::whiteout_m3_M3SubFlare_get_faceCenter(self.raw.as_ptr()) }
11038 }
11039
11040 pub fn set_face_center(&mut self, value: u32) {
11041 unsafe { ffi::whiteout_m3_M3SubFlare_set_faceCenter(self.raw.as_ptr(), value) }
11043 }
11044
11045 pub fn offset(&self) -> crate::math::Vector2f {
11047 unsafe {
11050 *(ffi::whiteout_m3_M3SubFlare_get_offset(self.raw.as_ptr())
11051 as *const crate::math::Vector2f)
11052 }
11053 }
11054
11055 pub fn set_offset(&mut self, value: crate::math::Vector2f) {
11056 unsafe {
11058 ffi::whiteout_m3_M3SubFlare_set_offset(
11059 self.raw.as_ptr(),
11060 &value as *const crate::math::Vector2f as *const _,
11061 )
11062 }
11063 }
11064}
11065
11066impl Default for SubFlare {
11067 fn default() -> Self {
11068 Self::new()
11069 }
11070}
11071
11072pub struct LensFlare {
11076 pub(crate) raw: core::ptr::NonNull<ffi::whiteout_M3LensFlare>,
11077}
11078
11079impl Drop for LensFlare {
11080 fn drop(&mut self) {
11081 unsafe { ffi::whiteout_m3_M3LensFlare_delete(self.raw.as_ptr()) }
11083 }
11084}
11085
11086impl LensFlare {
11087 #[allow(dead_code)] pub(crate) unsafe fn from_raw(raw: *mut ffi::whiteout_M3LensFlare) -> Option<Self> {
11091 core::ptr::NonNull::new(raw).map(|raw| LensFlare { raw })
11092 }
11093}
11094
11095unsafe impl Send for LensFlare {}
11100
11101impl core::fmt::Debug for LensFlare {
11102 fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
11103 f.debug_struct("LensFlare").finish_non_exhaustive()
11104 }
11105}
11106
11107impl LensFlare {
11108 pub fn new() -> Self {
11111 unsafe {
11114 let raw = ffi::whiteout_m3_M3LensFlare_new();
11115 Self::from_raw(raw).expect("native LensFlare allocation failed")
11116 }
11117 }
11118
11119 pub fn name(&self) -> String {
11121 unsafe {
11123 crate::support::take_string(ffi::whiteout_m3_M3LensFlare_get_name(self.raw.as_ptr()))
11124 }
11125 }
11126
11127 pub fn set_name(&mut self, value: &str) {
11128 let value = std::ffi::CString::new(value).unwrap_or_default();
11129 unsafe { ffi::whiteout_m3_M3LensFlare_set_name(self.raw.as_ptr(), value.as_ptr()) }
11131 }
11132
11133 pub fn sub_flares_len(&self) -> usize {
11135 unsafe { ffi::whiteout_m3_M3LensFlare_get_subFlares_count(self.raw.as_ptr()) }
11137 }
11138
11139 pub fn sub_flares(&self, index: usize) -> Option<crate::support::Ref<'_, SubFlare>> {
11141 if index >= self.sub_flares_len() {
11142 return None;
11143 }
11144 unsafe {
11146 Some(crate::support::Ref::new(SubFlare {
11147 raw: core::ptr::NonNull::new_unchecked(
11148 ffi::whiteout_m3_M3LensFlare_get_subFlares_at(self.raw.as_ptr(), index),
11149 ),
11150 }))
11151 }
11152 }
11153
11154 pub fn sub_flares_mut(&mut self, index: usize) -> Option<crate::support::RefMut<'_, SubFlare>> {
11155 if index >= self.sub_flares_len() {
11156 return None;
11157 }
11158 unsafe {
11160 Some(crate::support::RefMut::new(SubFlare {
11161 raw: core::ptr::NonNull::new_unchecked(
11162 ffi::whiteout_m3_M3LensFlare_get_subFlares_at(self.raw.as_ptr(), index),
11163 ),
11164 }))
11165 }
11166 }
11167
11168 pub fn sub_flares_iter(
11170 &self,
11171 ) -> impl ExactSizeIterator<Item = crate::support::Ref<'_, SubFlare>> {
11172 (0..self.sub_flares_len()).map(move |i| self.sub_flares(i).expect("index below len"))
11173 }
11174
11175 pub fn resize_sub_flares(&mut self, count: usize) {
11176 unsafe { ffi::whiteout_m3_M3LensFlare_resize_subFlares(self.raw.as_ptr(), count) }
11178 }
11179
11180 pub fn columns(&self) -> u32 {
11182 unsafe { ffi::whiteout_m3_M3LensFlare_get_columns(self.raw.as_ptr()) }
11184 }
11185
11186 pub fn set_columns(&mut self, value: u32) {
11187 unsafe { ffi::whiteout_m3_M3LensFlare_set_columns(self.raw.as_ptr(), value) }
11189 }
11190
11191 pub fn rows(&self) -> u32 {
11193 unsafe { ffi::whiteout_m3_M3LensFlare_get_rows(self.raw.as_ptr()) }
11195 }
11196
11197 pub fn set_rows(&mut self, value: u32) {
11198 unsafe { ffi::whiteout_m3_M3LensFlare_set_rows(self.raw.as_ptr(), value) }
11200 }
11201
11202 pub fn distance_fade(&self) -> f32 {
11204 unsafe { ffi::whiteout_m3_M3LensFlare_get_distanceFade(self.raw.as_ptr()) }
11206 }
11207
11208 pub fn set_distance_fade(&mut self, value: f32) {
11209 unsafe { ffi::whiteout_m3_M3LensFlare_set_distanceFade(self.raw.as_ptr(), value) }
11211 }
11212
11213 pub fn lib_name(&self) -> String {
11215 unsafe {
11217 crate::support::take_string(ffi::whiteout_m3_M3LensFlare_get_libName(self.raw.as_ptr()))
11218 }
11219 }
11220
11221 pub fn set_lib_name(&mut self, value: &str) {
11222 let value = std::ffi::CString::new(value).unwrap_or_default();
11223 unsafe { ffi::whiteout_m3_M3LensFlare_set_libName(self.raw.as_ptr(), value.as_ptr()) }
11225 }
11226
11227 pub fn intensity(&self) -> crate::support::Ref<'_, AnimRefF32> {
11230 unsafe {
11233 crate::support::Ref::new(AnimRefF32 {
11234 raw: core::ptr::NonNull::new_unchecked(ffi::whiteout_m3_M3LensFlare_get_intensity(
11235 self.raw.as_ptr(),
11236 )),
11237 })
11238 }
11239 }
11240
11241 pub fn intensity_mut(&mut self) -> crate::support::RefMut<'_, AnimRefF32> {
11242 unsafe {
11244 crate::support::RefMut::new(AnimRefF32 {
11245 raw: core::ptr::NonNull::new_unchecked(ffi::whiteout_m3_M3LensFlare_get_intensity(
11246 self.raw.as_ptr(),
11247 )),
11248 })
11249 }
11250 }
11251
11252 pub fn color(&self) -> crate::support::Ref<'_, AnimRefM3ColorBGRA> {
11255 unsafe {
11258 crate::support::Ref::new(AnimRefM3ColorBGRA {
11259 raw: core::ptr::NonNull::new_unchecked(ffi::whiteout_m3_M3LensFlare_get_color(
11260 self.raw.as_ptr(),
11261 )),
11262 })
11263 }
11264 }
11265
11266 pub fn color_mut(&mut self) -> crate::support::RefMut<'_, AnimRefM3ColorBGRA> {
11267 unsafe {
11269 crate::support::RefMut::new(AnimRefM3ColorBGRA {
11270 raw: core::ptr::NonNull::new_unchecked(ffi::whiteout_m3_M3LensFlare_get_color(
11271 self.raw.as_ptr(),
11272 )),
11273 })
11274 }
11275 }
11276
11277 pub fn hdr(&self) -> crate::support::Ref<'_, AnimRefF32> {
11280 unsafe {
11283 crate::support::Ref::new(AnimRefF32 {
11284 raw: core::ptr::NonNull::new_unchecked(ffi::whiteout_m3_M3LensFlare_get_hdr(
11285 self.raw.as_ptr(),
11286 )),
11287 })
11288 }
11289 }
11290
11291 pub fn hdr_mut(&mut self) -> crate::support::RefMut<'_, AnimRefF32> {
11292 unsafe {
11294 crate::support::RefMut::new(AnimRefF32 {
11295 raw: core::ptr::NonNull::new_unchecked(ffi::whiteout_m3_M3LensFlare_get_hdr(
11296 self.raw.as_ptr(),
11297 )),
11298 })
11299 }
11300 }
11301
11302 pub fn size(&self) -> crate::support::Ref<'_, AnimRefF32> {
11305 unsafe {
11308 crate::support::Ref::new(AnimRefF32 {
11309 raw: core::ptr::NonNull::new_unchecked(ffi::whiteout_m3_M3LensFlare_get_size(
11310 self.raw.as_ptr(),
11311 )),
11312 })
11313 }
11314 }
11315
11316 pub fn size_mut(&mut self) -> crate::support::RefMut<'_, AnimRefF32> {
11317 unsafe {
11319 crate::support::RefMut::new(AnimRefF32 {
11320 raw: core::ptr::NonNull::new_unchecked(ffi::whiteout_m3_M3LensFlare_get_size(
11321 self.raw.as_ptr(),
11322 )),
11323 })
11324 }
11325 }
11326}
11327
11328impl Default for LensFlare {
11329 fn default() -> Self {
11330 Self::new()
11331 }
11332}
11333
11334pub struct MaterialAddData {
11338 pub(crate) raw: core::ptr::NonNull<ffi::whiteout_M3MaterialAddData>,
11339}
11340
11341impl Drop for MaterialAddData {
11342 fn drop(&mut self) {
11343 unsafe { ffi::whiteout_m3_M3MaterialAddData_delete(self.raw.as_ptr()) }
11345 }
11346}
11347
11348impl MaterialAddData {
11349 #[allow(dead_code)] pub(crate) unsafe fn from_raw(raw: *mut ffi::whiteout_M3MaterialAddData) -> Option<Self> {
11353 core::ptr::NonNull::new(raw).map(|raw| MaterialAddData { raw })
11354 }
11355}
11356
11357unsafe impl Send for MaterialAddData {}
11362
11363impl core::fmt::Debug for MaterialAddData {
11364 fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
11365 f.debug_struct("MaterialAddData").finish_non_exhaustive()
11366 }
11367}
11368
11369impl MaterialAddData {
11370 pub fn new() -> Self {
11373 unsafe {
11376 let raw = ffi::whiteout_m3_M3MaterialAddData_new();
11377 Self::from_raw(raw).expect("native MaterialAddData allocation failed")
11378 }
11379 }
11380
11381 pub fn key_name(&self) -> String {
11383 unsafe {
11385 crate::support::take_string(ffi::whiteout_m3_M3MaterialAddData_get_keyName(
11386 self.raw.as_ptr(),
11387 ))
11388 }
11389 }
11390
11391 pub fn set_key_name(&mut self, value: &str) {
11392 let value = std::ffi::CString::new(value).unwrap_or_default();
11393 unsafe { ffi::whiteout_m3_M3MaterialAddData_set_keyName(self.raw.as_ptr(), value.as_ptr()) }
11395 }
11396
11397 pub fn key_hash(&self) -> &[u32] {
11400 unsafe {
11403 let n = ffi::whiteout_m3_M3MaterialAddData_get_keyHash_count(self.raw.as_ptr());
11404 let p = ffi::whiteout_m3_M3MaterialAddData_get_keyHash_data(self.raw.as_ptr());
11405 if p.is_null() || n == 0 {
11406 &[]
11407 } else {
11408 core::slice::from_raw_parts(p, n)
11409 }
11410 }
11411 }
11412
11413 pub fn key_hash_mut(&mut self) -> &mut [u32] {
11415 unsafe {
11417 let n = ffi::whiteout_m3_M3MaterialAddData_get_keyHash_count(self.raw.as_ptr());
11418 let p =
11419 ffi::whiteout_m3_M3MaterialAddData_get_keyHash_data(self.raw.as_ptr()) as *mut u32;
11420 if p.is_null() || n == 0 {
11421 &mut []
11422 } else {
11423 core::slice::from_raw_parts_mut(p, n)
11424 }
11425 }
11426 }
11427
11428 pub fn set_key_hash(&mut self, values: &[u32]) {
11429 unsafe {
11431 ffi::whiteout_m3_M3MaterialAddData_assign_keyHash(
11432 self.raw.as_ptr(),
11433 values.as_ptr() as *const _,
11434 values.len(),
11435 )
11436 }
11437 }
11438
11439 pub fn resize_key_hash(&mut self, count: usize) {
11440 unsafe { ffi::whiteout_m3_M3MaterialAddData_resize_keyHash(self.raw.as_ptr(), count) }
11443 }
11444
11445 pub fn extra_hash(&self) -> &[u32] {
11448 unsafe {
11451 let n = ffi::whiteout_m3_M3MaterialAddData_get_extraHash_count(self.raw.as_ptr());
11452 let p = ffi::whiteout_m3_M3MaterialAddData_get_extraHash_data(self.raw.as_ptr());
11453 if p.is_null() || n == 0 {
11454 &[]
11455 } else {
11456 core::slice::from_raw_parts(p, n)
11457 }
11458 }
11459 }
11460
11461 pub fn extra_hash_mut(&mut self) -> &mut [u32] {
11463 unsafe {
11465 let n = ffi::whiteout_m3_M3MaterialAddData_get_extraHash_count(self.raw.as_ptr());
11466 let p = ffi::whiteout_m3_M3MaterialAddData_get_extraHash_data(self.raw.as_ptr())
11467 as *mut u32;
11468 if p.is_null() || n == 0 {
11469 &mut []
11470 } else {
11471 core::slice::from_raw_parts_mut(p, n)
11472 }
11473 }
11474 }
11475
11476 pub fn set_extra_hash(&mut self, values: &[u32]) {
11477 unsafe {
11479 ffi::whiteout_m3_M3MaterialAddData_assign_extraHash(
11480 self.raw.as_ptr(),
11481 values.as_ptr() as *const _,
11482 values.len(),
11483 )
11484 }
11485 }
11486
11487 pub fn resize_extra_hash(&mut self, count: usize) {
11488 unsafe { ffi::whiteout_m3_M3MaterialAddData_resize_extraHash(self.raw.as_ptr(), count) }
11491 }
11492
11493 pub fn value_path(&self) -> String {
11495 unsafe {
11497 crate::support::take_string(ffi::whiteout_m3_M3MaterialAddData_get_valuePath(
11498 self.raw.as_ptr(),
11499 ))
11500 }
11501 }
11502
11503 pub fn set_value_path(&mut self, value: &str) {
11504 let value = std::ffi::CString::new(value).unwrap_or_default();
11505 unsafe {
11507 ffi::whiteout_m3_M3MaterialAddData_set_valuePath(self.raw.as_ptr(), value.as_ptr())
11508 }
11509 }
11510
11511 pub fn frequency(&self) -> f32 {
11513 unsafe { ffi::whiteout_m3_M3MaterialAddData_get_frequency(self.raw.as_ptr()) }
11515 }
11516
11517 pub fn set_frequency(&mut self, value: f32) {
11518 unsafe { ffi::whiteout_m3_M3MaterialAddData_set_frequency(self.raw.as_ptr(), value) }
11520 }
11521
11522 pub fn intensity(&self) -> f32 {
11524 unsafe { ffi::whiteout_m3_M3MaterialAddData_get_intensity(self.raw.as_ptr()) }
11526 }
11527
11528 pub fn set_intensity(&mut self, value: f32) {
11529 unsafe { ffi::whiteout_m3_M3MaterialAddData_set_intensity(self.raw.as_ptr(), value) }
11531 }
11532
11533 pub fn hold_time(&self) -> f32 {
11535 unsafe { ffi::whiteout_m3_M3MaterialAddData_get_holdTime(self.raw.as_ptr()) }
11537 }
11538
11539 pub fn set_hold_time(&mut self, value: f32) {
11540 unsafe { ffi::whiteout_m3_M3MaterialAddData_set_holdTime(self.raw.as_ptr(), value) }
11542 }
11543
11544 pub fn random_hash(&self) -> u32 {
11546 unsafe { ffi::whiteout_m3_M3MaterialAddData_get_randomHash(self.raw.as_ptr()) }
11548 }
11549
11550 pub fn set_random_hash(&mut self, value: u32) {
11551 unsafe { ffi::whiteout_m3_M3MaterialAddData_set_randomHash(self.raw.as_ptr(), value) }
11553 }
11554
11555 pub fn animation_type(&self) -> u32 {
11557 unsafe { ffi::whiteout_m3_M3MaterialAddData_get_animationType(self.raw.as_ptr()) }
11559 }
11560
11561 pub fn set_animation_type(&mut self, value: u32) {
11562 unsafe { ffi::whiteout_m3_M3MaterialAddData_set_animationType(self.raw.as_ptr(), value) }
11564 }
11565
11566 pub fn padding_0(&self) -> u32 {
11568 unsafe { ffi::whiteout_m3_M3MaterialAddData_get_padding0(self.raw.as_ptr()) }
11570 }
11571
11572 pub fn set_padding_0(&mut self, value: u32) {
11573 unsafe { ffi::whiteout_m3_M3MaterialAddData_set_padding0(self.raw.as_ptr(), value) }
11575 }
11576
11577 pub fn loop_count(&self) -> i32 {
11579 unsafe { ffi::whiteout_m3_M3MaterialAddData_get_loopCount(self.raw.as_ptr()) }
11581 }
11582
11583 pub fn set_loop_count(&mut self, value: i32) {
11584 unsafe { ffi::whiteout_m3_M3MaterialAddData_set_loopCount(self.raw.as_ptr(), value) }
11586 }
11587
11588 pub fn flags(&self) -> u32 {
11590 unsafe { ffi::whiteout_m3_M3MaterialAddData_get_flags(self.raw.as_ptr()) }
11592 }
11593
11594 pub fn set_flags(&mut self, value: u32) {
11595 unsafe { ffi::whiteout_m3_M3MaterialAddData_set_flags(self.raw.as_ptr(), value) }
11597 }
11598
11599 pub fn sub_type(&self) -> u32 {
11601 unsafe { ffi::whiteout_m3_M3MaterialAddData_get_subType(self.raw.as_ptr()) }
11603 }
11604
11605 pub fn set_sub_type(&mut self, value: u32) {
11606 unsafe { ffi::whiteout_m3_M3MaterialAddData_set_subType(self.raw.as_ptr(), value) }
11608 }
11609
11610 pub fn config_a(&self) -> u32 {
11612 unsafe { ffi::whiteout_m3_M3MaterialAddData_get_configA(self.raw.as_ptr()) }
11614 }
11615
11616 pub fn set_config_a(&mut self, value: u32) {
11617 unsafe { ffi::whiteout_m3_M3MaterialAddData_set_configA(self.raw.as_ptr(), value) }
11619 }
11620
11621 pub fn config_b(&self) -> u32 {
11623 unsafe { ffi::whiteout_m3_M3MaterialAddData_get_configB(self.raw.as_ptr()) }
11625 }
11626
11627 pub fn set_config_b(&mut self, value: u32) {
11628 unsafe { ffi::whiteout_m3_M3MaterialAddData_set_configB(self.raw.as_ptr(), value) }
11630 }
11631
11632 pub fn extra_id_0(&self) -> u32 {
11634 unsafe { ffi::whiteout_m3_M3MaterialAddData_get_extraId0(self.raw.as_ptr()) }
11636 }
11637
11638 pub fn set_extra_id_0(&mut self, value: u32) {
11639 unsafe { ffi::whiteout_m3_M3MaterialAddData_set_extraId0(self.raw.as_ptr(), value) }
11641 }
11642
11643 pub fn extra_id_1(&self) -> u32 {
11645 unsafe { ffi::whiteout_m3_M3MaterialAddData_get_extraId1(self.raw.as_ptr()) }
11647 }
11648
11649 pub fn set_extra_id_1(&mut self, value: u32) {
11650 unsafe { ffi::whiteout_m3_M3MaterialAddData_set_extraId1(self.raw.as_ptr(), value) }
11652 }
11653}
11654
11655impl Default for MaterialAddData {
11656 fn default() -> Self {
11657 Self::new()
11658 }
11659}
11660
11661pub struct Bone {
11665 pub(crate) raw: core::ptr::NonNull<ffi::whiteout_M3Bone>,
11666}
11667
11668impl Drop for Bone {
11669 fn drop(&mut self) {
11670 unsafe { ffi::whiteout_m3_M3Bone_delete(self.raw.as_ptr()) }
11672 }
11673}
11674
11675impl Bone {
11676 #[allow(dead_code)] pub(crate) unsafe fn from_raw(raw: *mut ffi::whiteout_M3Bone) -> Option<Self> {
11680 core::ptr::NonNull::new(raw).map(|raw| Bone { raw })
11681 }
11682}
11683
11684unsafe impl Send for Bone {}
11689
11690impl core::fmt::Debug for Bone {
11691 fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
11692 f.debug_struct("Bone").finish_non_exhaustive()
11693 }
11694}
11695
11696impl Bone {
11697 pub fn new() -> Self {
11700 unsafe {
11703 let raw = ffi::whiteout_m3_M3Bone_new();
11704 Self::from_raw(raw).expect("native Bone allocation failed")
11705 }
11706 }
11707
11708 pub fn unknown(&self) -> u32 {
11710 unsafe { ffi::whiteout_m3_M3Bone_get_unknown(self.raw.as_ptr()) }
11712 }
11713
11714 pub fn set_unknown(&mut self, value: u32) {
11715 unsafe { ffi::whiteout_m3_M3Bone_set_unknown(self.raw.as_ptr(), value) }
11717 }
11718
11719 pub fn name(&self) -> String {
11721 unsafe { crate::support::take_string(ffi::whiteout_m3_M3Bone_get_name(self.raw.as_ptr())) }
11723 }
11724
11725 pub fn set_name(&mut self, value: &str) {
11726 let value = std::ffi::CString::new(value).unwrap_or_default();
11727 unsafe { ffi::whiteout_m3_M3Bone_set_name(self.raw.as_ptr(), value.as_ptr()) }
11729 }
11730
11731 pub fn flags(&self) -> BoneFlag {
11733 BoneFlag(unsafe { ffi::whiteout_m3_M3Bone_get_flags(self.raw.as_ptr()) })
11735 }
11736
11737 pub fn set_flags(&mut self, value: BoneFlag) {
11738 unsafe { ffi::whiteout_m3_M3Bone_set_flags(self.raw.as_ptr(), value.0) }
11740 }
11741
11742 pub fn parent_index(&self) -> u16 {
11744 unsafe { ffi::whiteout_m3_M3Bone_get_parentIndex(self.raw.as_ptr()) }
11746 }
11747
11748 pub fn set_parent_index(&mut self, value: u16) {
11749 unsafe { ffi::whiteout_m3_M3Bone_set_parentIndex(self.raw.as_ptr(), value) }
11751 }
11752
11753 pub fn padding(&self) -> u16 {
11755 unsafe { ffi::whiteout_m3_M3Bone_get_padding(self.raw.as_ptr()) }
11757 }
11758
11759 pub fn set_padding(&mut self, value: u16) {
11760 unsafe { ffi::whiteout_m3_M3Bone_set_padding(self.raw.as_ptr(), value) }
11762 }
11763
11764 pub fn position(&self) -> crate::support::Ref<'_, AnimRefVector3f> {
11767 unsafe {
11770 crate::support::Ref::new(AnimRefVector3f {
11771 raw: core::ptr::NonNull::new_unchecked(ffi::whiteout_m3_M3Bone_get_position(
11772 self.raw.as_ptr(),
11773 )),
11774 })
11775 }
11776 }
11777
11778 pub fn position_mut(&mut self) -> crate::support::RefMut<'_, AnimRefVector3f> {
11779 unsafe {
11781 crate::support::RefMut::new(AnimRefVector3f {
11782 raw: core::ptr::NonNull::new_unchecked(ffi::whiteout_m3_M3Bone_get_position(
11783 self.raw.as_ptr(),
11784 )),
11785 })
11786 }
11787 }
11788
11789 pub fn rotation(&self) -> crate::support::Ref<'_, AnimRefQuaternion> {
11792 unsafe {
11795 crate::support::Ref::new(AnimRefQuaternion {
11796 raw: core::ptr::NonNull::new_unchecked(ffi::whiteout_m3_M3Bone_get_rotation(
11797 self.raw.as_ptr(),
11798 )),
11799 })
11800 }
11801 }
11802
11803 pub fn rotation_mut(&mut self) -> crate::support::RefMut<'_, AnimRefQuaternion> {
11804 unsafe {
11806 crate::support::RefMut::new(AnimRefQuaternion {
11807 raw: core::ptr::NonNull::new_unchecked(ffi::whiteout_m3_M3Bone_get_rotation(
11808 self.raw.as_ptr(),
11809 )),
11810 })
11811 }
11812 }
11813
11814 pub fn scale(&self) -> crate::support::Ref<'_, AnimRefVector3f> {
11817 unsafe {
11820 crate::support::Ref::new(AnimRefVector3f {
11821 raw: core::ptr::NonNull::new_unchecked(ffi::whiteout_m3_M3Bone_get_scale(
11822 self.raw.as_ptr(),
11823 )),
11824 })
11825 }
11826 }
11827
11828 pub fn scale_mut(&mut self) -> crate::support::RefMut<'_, AnimRefVector3f> {
11829 unsafe {
11831 crate::support::RefMut::new(AnimRefVector3f {
11832 raw: core::ptr::NonNull::new_unchecked(ffi::whiteout_m3_M3Bone_get_scale(
11833 self.raw.as_ptr(),
11834 )),
11835 })
11836 }
11837 }
11838
11839 pub fn visibility(&self) -> crate::support::Ref<'_, AnimRefU32> {
11842 unsafe {
11845 crate::support::Ref::new(AnimRefU32 {
11846 raw: core::ptr::NonNull::new_unchecked(ffi::whiteout_m3_M3Bone_get_visibility(
11847 self.raw.as_ptr(),
11848 )),
11849 })
11850 }
11851 }
11852
11853 pub fn visibility_mut(&mut self) -> crate::support::RefMut<'_, AnimRefU32> {
11854 unsafe {
11856 crate::support::RefMut::new(AnimRefU32 {
11857 raw: core::ptr::NonNull::new_unchecked(ffi::whiteout_m3_M3Bone_get_visibility(
11858 self.raw.as_ptr(),
11859 )),
11860 })
11861 }
11862 }
11863}
11864
11865impl Default for Bone {
11866 fn default() -> Self {
11867 Self::new()
11868 }
11869}
11870
11871pub struct Region {
11875 pub(crate) raw: core::ptr::NonNull<ffi::whiteout_M3Region>,
11876}
11877
11878impl Drop for Region {
11879 fn drop(&mut self) {
11880 unsafe { ffi::whiteout_m3_M3Region_delete(self.raw.as_ptr()) }
11882 }
11883}
11884
11885impl Region {
11886 #[allow(dead_code)] pub(crate) unsafe fn from_raw(raw: *mut ffi::whiteout_M3Region) -> Option<Self> {
11890 core::ptr::NonNull::new(raw).map(|raw| Region { raw })
11891 }
11892}
11893
11894unsafe impl Send for Region {}
11899
11900impl core::fmt::Debug for Region {
11901 fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
11902 f.debug_struct("Region").finish_non_exhaustive()
11903 }
11904}
11905
11906impl Region {
11907 pub fn new() -> Self {
11910 unsafe {
11913 let raw = ffi::whiteout_m3_M3Region_new();
11914 Self::from_raw(raw).expect("native Region allocation failed")
11915 }
11916 }
11917
11918 pub fn index(&self) -> u32 {
11920 unsafe { ffi::whiteout_m3_M3Region_get_index(self.raw.as_ptr()) }
11922 }
11923
11924 pub fn set_index(&mut self, value: u32) {
11925 unsafe { ffi::whiteout_m3_M3Region_set_index(self.raw.as_ptr(), value) }
11927 }
11928
11929 pub fn unknown(&self) -> u32 {
11931 unsafe { ffi::whiteout_m3_M3Region_get_unknown(self.raw.as_ptr()) }
11933 }
11934
11935 pub fn set_unknown(&mut self, value: u32) {
11936 unsafe { ffi::whiteout_m3_M3Region_set_unknown(self.raw.as_ptr(), value) }
11938 }
11939
11940 pub fn first_vertex(&self) -> u32 {
11942 unsafe { ffi::whiteout_m3_M3Region_get_firstVertex(self.raw.as_ptr()) }
11944 }
11945
11946 pub fn set_first_vertex(&mut self, value: u32) {
11947 unsafe { ffi::whiteout_m3_M3Region_set_firstVertex(self.raw.as_ptr(), value) }
11949 }
11950
11951 pub fn vertex_count(&self) -> u32 {
11953 unsafe { ffi::whiteout_m3_M3Region_get_vertexCount(self.raw.as_ptr()) }
11955 }
11956
11957 pub fn set_vertex_count(&mut self, value: u32) {
11958 unsafe { ffi::whiteout_m3_M3Region_set_vertexCount(self.raw.as_ptr(), value) }
11960 }
11961
11962 pub fn first_index(&self) -> u32 {
11964 unsafe { ffi::whiteout_m3_M3Region_get_firstIndex(self.raw.as_ptr()) }
11966 }
11967
11968 pub fn set_first_index(&mut self, value: u32) {
11969 unsafe { ffi::whiteout_m3_M3Region_set_firstIndex(self.raw.as_ptr(), value) }
11971 }
11972
11973 pub fn index_count(&self) -> u32 {
11975 unsafe { ffi::whiteout_m3_M3Region_get_indexCount(self.raw.as_ptr()) }
11977 }
11978
11979 pub fn set_index_count(&mut self, value: u32) {
11980 unsafe { ffi::whiteout_m3_M3Region_set_indexCount(self.raw.as_ptr(), value) }
11982 }
11983
11984 pub fn unknown_2(&self) -> u16 {
11986 unsafe { ffi::whiteout_m3_M3Region_get_unknown2(self.raw.as_ptr()) }
11988 }
11989
11990 pub fn set_unknown_2(&mut self, value: u16) {
11991 unsafe { ffi::whiteout_m3_M3Region_set_unknown2(self.raw.as_ptr(), value) }
11993 }
11994
11995 pub fn first_bone_lookup(&self) -> u16 {
11997 unsafe { ffi::whiteout_m3_M3Region_get_firstBoneLookup(self.raw.as_ptr()) }
11999 }
12000
12001 pub fn set_first_bone_lookup(&mut self, value: u16) {
12002 unsafe { ffi::whiteout_m3_M3Region_set_firstBoneLookup(self.raw.as_ptr(), value) }
12004 }
12005
12006 pub fn bone_lookup_count(&self) -> u16 {
12008 unsafe { ffi::whiteout_m3_M3Region_get_boneLookupCount(self.raw.as_ptr()) }
12010 }
12011
12012 pub fn set_bone_lookup_count(&mut self, value: u16) {
12013 unsafe { ffi::whiteout_m3_M3Region_set_boneLookupCount(self.raw.as_ptr(), value) }
12015 }
12016
12017 pub fn padding(&self) -> u16 {
12019 unsafe { ffi::whiteout_m3_M3Region_get_padding(self.raw.as_ptr()) }
12021 }
12022
12023 pub fn set_padding(&mut self, value: u16) {
12024 unsafe { ffi::whiteout_m3_M3Region_set_padding(self.raw.as_ptr(), value) }
12026 }
12027
12028 pub fn bone_weight_pairs(&self) -> u8 {
12030 unsafe { ffi::whiteout_m3_M3Region_get_boneWeightPairs(self.raw.as_ptr()) }
12032 }
12033
12034 pub fn set_bone_weight_pairs(&mut self, value: u8) {
12035 unsafe { ffi::whiteout_m3_M3Region_set_boneWeightPairs(self.raw.as_ptr(), value) }
12037 }
12038
12039 pub fn bone_index_pairs(&self) -> u8 {
12041 unsafe { ffi::whiteout_m3_M3Region_get_boneIndexPairs(self.raw.as_ptr()) }
12043 }
12044
12045 pub fn set_bone_index_pairs(&mut self, value: u8) {
12046 unsafe { ffi::whiteout_m3_M3Region_set_boneIndexPairs(self.raw.as_ptr(), value) }
12048 }
12049
12050 pub fn root_bone(&self) -> u16 {
12052 unsafe { ffi::whiteout_m3_M3Region_get_rootBone(self.raw.as_ptr()) }
12054 }
12055
12056 pub fn set_root_bone(&mut self, value: u16) {
12057 unsafe { ffi::whiteout_m3_M3Region_set_rootBone(self.raw.as_ptr(), value) }
12059 }
12060
12061 pub fn flags(&self) -> RegionFlag {
12063 RegionFlag(unsafe { ffi::whiteout_m3_M3Region_get_flags(self.raw.as_ptr()) })
12065 }
12066
12067 pub fn set_flags(&mut self, value: RegionFlag) {
12068 unsafe { ffi::whiteout_m3_M3Region_set_flags(self.raw.as_ptr(), value.0) }
12070 }
12071
12072 pub fn uv_scale(&self) -> f32 {
12074 unsafe { ffi::whiteout_m3_M3Region_get_uvScale(self.raw.as_ptr()) }
12076 }
12077
12078 pub fn set_uv_scale(&mut self, value: f32) {
12079 unsafe { ffi::whiteout_m3_M3Region_set_uvScale(self.raw.as_ptr(), value) }
12081 }
12082
12083 pub fn uv_offset(&self) -> f32 {
12085 unsafe { ffi::whiteout_m3_M3Region_get_uvOffset(self.raw.as_ptr()) }
12087 }
12088
12089 pub fn set_uv_offset(&mut self, value: f32) {
12090 unsafe { ffi::whiteout_m3_M3Region_set_uvOffset(self.raw.as_ptr(), value) }
12092 }
12093}
12094
12095impl Default for Region {
12096 fn default() -> Self {
12097 Self::new()
12098 }
12099}
12100
12101pub struct Batch {
12105 pub(crate) raw: core::ptr::NonNull<ffi::whiteout_M3Batch>,
12106}
12107
12108impl Drop for Batch {
12109 fn drop(&mut self) {
12110 unsafe { ffi::whiteout_m3_M3Batch_delete(self.raw.as_ptr()) }
12112 }
12113}
12114
12115impl Batch {
12116 #[allow(dead_code)] pub(crate) unsafe fn from_raw(raw: *mut ffi::whiteout_M3Batch) -> Option<Self> {
12120 core::ptr::NonNull::new(raw).map(|raw| Batch { raw })
12121 }
12122}
12123
12124unsafe impl Send for Batch {}
12129
12130impl core::fmt::Debug for Batch {
12131 fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
12132 f.debug_struct("Batch").finish_non_exhaustive()
12133 }
12134}
12135
12136impl Batch {
12137 pub fn new() -> Self {
12140 unsafe {
12143 let raw = ffi::whiteout_m3_M3Batch_new();
12144 Self::from_raw(raw).expect("native Batch allocation failed")
12145 }
12146 }
12147
12148 pub fn unknown(&self) -> u32 {
12150 unsafe { ffi::whiteout_m3_M3Batch_get_unknown(self.raw.as_ptr()) }
12152 }
12153
12154 pub fn set_unknown(&mut self, value: u32) {
12155 unsafe { ffi::whiteout_m3_M3Batch_set_unknown(self.raw.as_ptr(), value) }
12157 }
12158
12159 pub fn region_index(&self) -> u16 {
12161 unsafe { ffi::whiteout_m3_M3Batch_get_regionIndex(self.raw.as_ptr()) }
12163 }
12164
12165 pub fn set_region_index(&mut self, value: u16) {
12166 unsafe { ffi::whiteout_m3_M3Batch_set_regionIndex(self.raw.as_ptr(), value) }
12168 }
12169
12170 pub fn unknown_2(&self) -> u32 {
12172 unsafe { ffi::whiteout_m3_M3Batch_get_unknown2(self.raw.as_ptr()) }
12174 }
12175
12176 pub fn set_unknown_2(&mut self, value: u32) {
12177 unsafe { ffi::whiteout_m3_M3Batch_set_unknown2(self.raw.as_ptr(), value) }
12179 }
12180
12181 pub fn material_index(&self) -> u16 {
12183 unsafe { ffi::whiteout_m3_M3Batch_get_materialIndex(self.raw.as_ptr()) }
12185 }
12186
12187 pub fn set_material_index(&mut self, value: u16) {
12188 unsafe { ffi::whiteout_m3_M3Batch_set_materialIndex(self.raw.as_ptr(), value) }
12190 }
12191
12192 pub fn bone_count(&self) -> u16 {
12194 unsafe { ffi::whiteout_m3_M3Batch_get_boneCount(self.raw.as_ptr()) }
12196 }
12197
12198 pub fn set_bone_count(&mut self, value: u16) {
12199 unsafe { ffi::whiteout_m3_M3Batch_set_boneCount(self.raw.as_ptr(), value) }
12201 }
12202}
12203
12204impl Default for Batch {
12205 fn default() -> Self {
12206 Self::new()
12207 }
12208}
12209
12210pub struct MeshSection {
12214 pub(crate) raw: core::ptr::NonNull<ffi::whiteout_M3MeshSection>,
12215}
12216
12217impl Drop for MeshSection {
12218 fn drop(&mut self) {
12219 unsafe { ffi::whiteout_m3_M3MeshSection_delete(self.raw.as_ptr()) }
12221 }
12222}
12223
12224impl MeshSection {
12225 #[allow(dead_code)] pub(crate) unsafe fn from_raw(raw: *mut ffi::whiteout_M3MeshSection) -> Option<Self> {
12229 core::ptr::NonNull::new(raw).map(|raw| MeshSection { raw })
12230 }
12231}
12232
12233unsafe impl Send for MeshSection {}
12238
12239impl core::fmt::Debug for MeshSection {
12240 fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
12241 f.debug_struct("MeshSection").finish_non_exhaustive()
12242 }
12243}
12244
12245impl MeshSection {
12246 pub fn new() -> Self {
12249 unsafe {
12252 let raw = ffi::whiteout_m3_M3MeshSection_new();
12253 Self::from_raw(raw).expect("native MeshSection allocation failed")
12254 }
12255 }
12256
12257 pub fn node_index(&self) -> u32 {
12259 unsafe { ffi::whiteout_m3_M3MeshSection_get_nodeIndex(self.raw.as_ptr()) }
12261 }
12262
12263 pub fn set_node_index(&mut self, value: u32) {
12264 unsafe { ffi::whiteout_m3_M3MeshSection_set_nodeIndex(self.raw.as_ptr(), value) }
12266 }
12267
12268 pub fn bounds(&self) -> crate::support::Ref<'_, AnimRefM3Extent> {
12271 unsafe {
12274 crate::support::Ref::new(AnimRefM3Extent {
12275 raw: core::ptr::NonNull::new_unchecked(ffi::whiteout_m3_M3MeshSection_get_bounds(
12276 self.raw.as_ptr(),
12277 )),
12278 })
12279 }
12280 }
12281
12282 pub fn bounds_mut(&mut self) -> crate::support::RefMut<'_, AnimRefM3Extent> {
12283 unsafe {
12285 crate::support::RefMut::new(AnimRefM3Extent {
12286 raw: core::ptr::NonNull::new_unchecked(ffi::whiteout_m3_M3MeshSection_get_bounds(
12287 self.raw.as_ptr(),
12288 )),
12289 })
12290 }
12291 }
12292}
12293
12294impl Default for MeshSection {
12295 fn default() -> Self {
12296 Self::new()
12297 }
12298}
12299
12300pub struct MeshDivision {
12304 pub(crate) raw: core::ptr::NonNull<ffi::whiteout_M3MeshDivision>,
12305}
12306
12307impl Drop for MeshDivision {
12308 fn drop(&mut self) {
12309 unsafe { ffi::whiteout_m3_M3MeshDivision_delete(self.raw.as_ptr()) }
12311 }
12312}
12313
12314impl MeshDivision {
12315 #[allow(dead_code)] pub(crate) unsafe fn from_raw(raw: *mut ffi::whiteout_M3MeshDivision) -> Option<Self> {
12319 core::ptr::NonNull::new(raw).map(|raw| MeshDivision { raw })
12320 }
12321}
12322
12323unsafe impl Send for MeshDivision {}
12328
12329impl core::fmt::Debug for MeshDivision {
12330 fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
12331 f.debug_struct("MeshDivision").finish_non_exhaustive()
12332 }
12333}
12334
12335impl MeshDivision {
12336 pub fn new() -> Self {
12339 unsafe {
12342 let raw = ffi::whiteout_m3_M3MeshDivision_new();
12343 Self::from_raw(raw).expect("native MeshDivision allocation failed")
12344 }
12345 }
12346
12347 pub fn faces(&self) -> &[u16] {
12350 unsafe {
12353 let n = ffi::whiteout_m3_M3MeshDivision_get_faces_count(self.raw.as_ptr());
12354 let p = ffi::whiteout_m3_M3MeshDivision_get_faces_data(self.raw.as_ptr());
12355 if p.is_null() || n == 0 {
12356 &[]
12357 } else {
12358 core::slice::from_raw_parts(p, n)
12359 }
12360 }
12361 }
12362
12363 pub fn faces_mut(&mut self) -> &mut [u16] {
12365 unsafe {
12367 let n = ffi::whiteout_m3_M3MeshDivision_get_faces_count(self.raw.as_ptr());
12368 let p = ffi::whiteout_m3_M3MeshDivision_get_faces_data(self.raw.as_ptr()) as *mut u16;
12369 if p.is_null() || n == 0 {
12370 &mut []
12371 } else {
12372 core::slice::from_raw_parts_mut(p, n)
12373 }
12374 }
12375 }
12376
12377 pub fn set_faces(&mut self, values: &[u16]) {
12378 unsafe {
12380 ffi::whiteout_m3_M3MeshDivision_assign_faces(
12381 self.raw.as_ptr(),
12382 values.as_ptr() as *const _,
12383 values.len(),
12384 )
12385 }
12386 }
12387
12388 pub fn resize_faces(&mut self, count: usize) {
12389 unsafe { ffi::whiteout_m3_M3MeshDivision_resize_faces(self.raw.as_ptr(), count) }
12392 }
12393
12394 pub fn regions_len(&self) -> usize {
12396 unsafe { ffi::whiteout_m3_M3MeshDivision_get_regions_count(self.raw.as_ptr()) }
12398 }
12399
12400 pub fn regions(&self, index: usize) -> Option<crate::support::Ref<'_, Region>> {
12402 if index >= self.regions_len() {
12403 return None;
12404 }
12405 unsafe {
12407 Some(crate::support::Ref::new(Region {
12408 raw: core::ptr::NonNull::new_unchecked(
12409 ffi::whiteout_m3_M3MeshDivision_get_regions_at(self.raw.as_ptr(), index),
12410 ),
12411 }))
12412 }
12413 }
12414
12415 pub fn regions_mut(&mut self, index: usize) -> Option<crate::support::RefMut<'_, Region>> {
12416 if index >= self.regions_len() {
12417 return None;
12418 }
12419 unsafe {
12421 Some(crate::support::RefMut::new(Region {
12422 raw: core::ptr::NonNull::new_unchecked(
12423 ffi::whiteout_m3_M3MeshDivision_get_regions_at(self.raw.as_ptr(), index),
12424 ),
12425 }))
12426 }
12427 }
12428
12429 pub fn regions_iter(&self) -> impl ExactSizeIterator<Item = crate::support::Ref<'_, Region>> {
12431 (0..self.regions_len()).map(move |i| self.regions(i).expect("index below len"))
12432 }
12433
12434 pub fn resize_regions(&mut self, count: usize) {
12435 unsafe { ffi::whiteout_m3_M3MeshDivision_resize_regions(self.raw.as_ptr(), count) }
12437 }
12438
12439 pub fn batches_len(&self) -> usize {
12441 unsafe { ffi::whiteout_m3_M3MeshDivision_get_batches_count(self.raw.as_ptr()) }
12443 }
12444
12445 pub fn batches(&self, index: usize) -> Option<crate::support::Ref<'_, Batch>> {
12447 if index >= self.batches_len() {
12448 return None;
12449 }
12450 unsafe {
12452 Some(crate::support::Ref::new(Batch {
12453 raw: core::ptr::NonNull::new_unchecked(
12454 ffi::whiteout_m3_M3MeshDivision_get_batches_at(self.raw.as_ptr(), index),
12455 ),
12456 }))
12457 }
12458 }
12459
12460 pub fn batches_mut(&mut self, index: usize) -> Option<crate::support::RefMut<'_, Batch>> {
12461 if index >= self.batches_len() {
12462 return None;
12463 }
12464 unsafe {
12466 Some(crate::support::RefMut::new(Batch {
12467 raw: core::ptr::NonNull::new_unchecked(
12468 ffi::whiteout_m3_M3MeshDivision_get_batches_at(self.raw.as_ptr(), index),
12469 ),
12470 }))
12471 }
12472 }
12473
12474 pub fn batches_iter(&self) -> impl ExactSizeIterator<Item = crate::support::Ref<'_, Batch>> {
12476 (0..self.batches_len()).map(move |i| self.batches(i).expect("index below len"))
12477 }
12478
12479 pub fn resize_batches(&mut self, count: usize) {
12480 unsafe { ffi::whiteout_m3_M3MeshDivision_resize_batches(self.raw.as_ptr(), count) }
12482 }
12483
12484 pub fn msec_len(&self) -> usize {
12486 unsafe { ffi::whiteout_m3_M3MeshDivision_get_msec_count(self.raw.as_ptr()) }
12488 }
12489
12490 pub fn msec(&self, index: usize) -> Option<crate::support::Ref<'_, MeshSection>> {
12492 if index >= self.msec_len() {
12493 return None;
12494 }
12495 unsafe {
12497 Some(crate::support::Ref::new(MeshSection {
12498 raw: core::ptr::NonNull::new_unchecked(
12499 ffi::whiteout_m3_M3MeshDivision_get_msec_at(self.raw.as_ptr(), index),
12500 ),
12501 }))
12502 }
12503 }
12504
12505 pub fn msec_mut(&mut self, index: usize) -> Option<crate::support::RefMut<'_, MeshSection>> {
12506 if index >= self.msec_len() {
12507 return None;
12508 }
12509 unsafe {
12511 Some(crate::support::RefMut::new(MeshSection {
12512 raw: core::ptr::NonNull::new_unchecked(
12513 ffi::whiteout_m3_M3MeshDivision_get_msec_at(self.raw.as_ptr(), index),
12514 ),
12515 }))
12516 }
12517 }
12518
12519 pub fn msec_iter(&self) -> impl ExactSizeIterator<Item = crate::support::Ref<'_, MeshSection>> {
12521 (0..self.msec_len()).map(move |i| self.msec(i).expect("index below len"))
12522 }
12523
12524 pub fn resize_msec(&mut self, count: usize) {
12525 unsafe { ffi::whiteout_m3_M3MeshDivision_resize_msec(self.raw.as_ptr(), count) }
12527 }
12528
12529 pub fn instances(&self) -> u32 {
12531 unsafe { ffi::whiteout_m3_M3MeshDivision_get_instances(self.raw.as_ptr()) }
12533 }
12534
12535 pub fn set_instances(&mut self, value: u32) {
12536 unsafe { ffi::whiteout_m3_M3MeshDivision_set_instances(self.raw.as_ptr(), value) }
12538 }
12539}
12540
12541impl Default for MeshDivision {
12542 fn default() -> Self {
12543 Self::new()
12544 }
12545}
12546
12547pub struct InitialReference {
12551 pub(crate) raw: core::ptr::NonNull<ffi::whiteout_M3InitialReference>,
12552}
12553
12554impl Drop for InitialReference {
12555 fn drop(&mut self) {
12556 unsafe { ffi::whiteout_m3_M3InitialReference_delete(self.raw.as_ptr()) }
12558 }
12559}
12560
12561impl InitialReference {
12562 #[allow(dead_code)] pub(crate) unsafe fn from_raw(raw: *mut ffi::whiteout_M3InitialReference) -> Option<Self> {
12566 core::ptr::NonNull::new(raw).map(|raw| InitialReference { raw })
12567 }
12568}
12569
12570unsafe impl Send for InitialReference {}
12575
12576impl core::fmt::Debug for InitialReference {
12577 fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
12578 f.debug_struct("InitialReference").finish_non_exhaustive()
12579 }
12580}
12581
12582impl InitialReference {
12583 pub fn new() -> Self {
12586 unsafe {
12589 let raw = ffi::whiteout_m3_M3InitialReference_new();
12590 Self::from_raw(raw).expect("native InitialReference allocation failed")
12591 }
12592 }
12593}
12594
12595impl Default for InitialReference {
12596 fn default() -> Self {
12597 Self::new()
12598 }
12599}
12600
12601pub struct AttachmentPoint {
12605 pub(crate) raw: core::ptr::NonNull<ffi::whiteout_M3AttachmentPoint>,
12606}
12607
12608impl Drop for AttachmentPoint {
12609 fn drop(&mut self) {
12610 unsafe { ffi::whiteout_m3_M3AttachmentPoint_delete(self.raw.as_ptr()) }
12612 }
12613}
12614
12615impl AttachmentPoint {
12616 #[allow(dead_code)] pub(crate) unsafe fn from_raw(raw: *mut ffi::whiteout_M3AttachmentPoint) -> Option<Self> {
12620 core::ptr::NonNull::new(raw).map(|raw| AttachmentPoint { raw })
12621 }
12622}
12623
12624unsafe impl Send for AttachmentPoint {}
12629
12630impl core::fmt::Debug for AttachmentPoint {
12631 fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
12632 f.debug_struct("AttachmentPoint").finish_non_exhaustive()
12633 }
12634}
12635
12636impl AttachmentPoint {
12637 pub fn new() -> Self {
12640 unsafe {
12643 let raw = ffi::whiteout_m3_M3AttachmentPoint_new();
12644 Self::from_raw(raw).expect("native AttachmentPoint allocation failed")
12645 }
12646 }
12647
12648 pub fn unknown(&self) -> u32 {
12650 unsafe { ffi::whiteout_m3_M3AttachmentPoint_get_unknown(self.raw.as_ptr()) }
12652 }
12653
12654 pub fn set_unknown(&mut self, value: u32) {
12655 unsafe { ffi::whiteout_m3_M3AttachmentPoint_set_unknown(self.raw.as_ptr(), value) }
12657 }
12658
12659 pub fn name(&self) -> String {
12661 unsafe {
12663 crate::support::take_string(ffi::whiteout_m3_M3AttachmentPoint_get_name(
12664 self.raw.as_ptr(),
12665 ))
12666 }
12667 }
12668
12669 pub fn set_name(&mut self, value: &str) {
12670 let value = std::ffi::CString::new(value).unwrap_or_default();
12671 unsafe { ffi::whiteout_m3_M3AttachmentPoint_set_name(self.raw.as_ptr(), value.as_ptr()) }
12673 }
12674
12675 pub fn bone_index(&self) -> u32 {
12677 unsafe { ffi::whiteout_m3_M3AttachmentPoint_get_boneIndex(self.raw.as_ptr()) }
12679 }
12680
12681 pub fn set_bone_index(&mut self, value: u32) {
12682 unsafe { ffi::whiteout_m3_M3AttachmentPoint_set_boneIndex(self.raw.as_ptr(), value) }
12684 }
12685}
12686
12687impl Default for AttachmentPoint {
12688 fn default() -> Self {
12689 Self::new()
12690 }
12691}
12692
12693pub struct HitTestShape {
12697 pub(crate) raw: core::ptr::NonNull<ffi::whiteout_M3HitTestShape>,
12698}
12699
12700impl Drop for HitTestShape {
12701 fn drop(&mut self) {
12702 unsafe { ffi::whiteout_m3_M3HitTestShape_delete(self.raw.as_ptr()) }
12704 }
12705}
12706
12707impl HitTestShape {
12708 #[allow(dead_code)] pub(crate) unsafe fn from_raw(raw: *mut ffi::whiteout_M3HitTestShape) -> Option<Self> {
12712 core::ptr::NonNull::new(raw).map(|raw| HitTestShape { raw })
12713 }
12714}
12715
12716unsafe impl Send for HitTestShape {}
12721
12722impl core::fmt::Debug for HitTestShape {
12723 fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
12724 f.debug_struct("HitTestShape").finish_non_exhaustive()
12725 }
12726}
12727
12728impl HitTestShape {
12729 pub fn new() -> Self {
12732 unsafe {
12735 let raw = ffi::whiteout_m3_M3HitTestShape_new();
12736 Self::from_raw(raw).expect("native HitTestShape allocation failed")
12737 }
12738 }
12739
12740 pub fn shape_type(&self) -> HitTestShapeType {
12742 unsafe { ffi::whiteout_m3_M3HitTestShape_get_shapeType(self.raw.as_ptr()) }
12744 .try_into()
12745 .expect("unknown enum discriminant from the native library")
12746 }
12747
12748 pub fn set_shape_type(&mut self, value: HitTestShapeType) {
12749 unsafe { ffi::whiteout_m3_M3HitTestShape_set_shapeType(self.raw.as_ptr(), value as i32) }
12751 }
12752
12753 pub fn bone_index(&self) -> u16 {
12755 unsafe { ffi::whiteout_m3_M3HitTestShape_get_boneIndex(self.raw.as_ptr()) }
12757 }
12758
12759 pub fn set_bone_index(&mut self, value: u16) {
12760 unsafe { ffi::whiteout_m3_M3HitTestShape_set_boneIndex(self.raw.as_ptr(), value) }
12762 }
12763
12764 pub fn padding(&self) -> u16 {
12766 unsafe { ffi::whiteout_m3_M3HitTestShape_get_padding(self.raw.as_ptr()) }
12768 }
12769
12770 pub fn set_padding(&mut self, value: u16) {
12771 unsafe { ffi::whiteout_m3_M3HitTestShape_set_padding(self.raw.as_ptr(), value) }
12773 }
12774
12775 pub fn vertex_positions(&self) -> &[crate::math::Vector3f] {
12778 unsafe {
12781 let n = ffi::whiteout_m3_M3HitTestShape_get_vertexPositions_count(self.raw.as_ptr());
12782 let p = ffi::whiteout_m3_M3HitTestShape_get_vertexPositions_data(self.raw.as_ptr())
12783 as *const crate::math::Vector3f;
12784 if p.is_null() || n == 0 {
12785 &[]
12786 } else {
12787 core::slice::from_raw_parts(p, n)
12788 }
12789 }
12790 }
12791
12792 pub fn vertex_positions_mut(&mut self) -> &mut [crate::math::Vector3f] {
12794 unsafe {
12796 let n = ffi::whiteout_m3_M3HitTestShape_get_vertexPositions_count(self.raw.as_ptr());
12797 let p = ffi::whiteout_m3_M3HitTestShape_get_vertexPositions_data(self.raw.as_ptr())
12798 as *const crate::math::Vector3f as *mut crate::math::Vector3f;
12799 if p.is_null() || n == 0 {
12800 &mut []
12801 } else {
12802 core::slice::from_raw_parts_mut(p, n)
12803 }
12804 }
12805 }
12806
12807 pub fn set_vertex_positions(&mut self, values: &[crate::math::Vector3f]) {
12808 unsafe {
12810 ffi::whiteout_m3_M3HitTestShape_assign_vertexPositions(
12811 self.raw.as_ptr(),
12812 values.as_ptr() as *const _,
12813 values.len(),
12814 )
12815 }
12816 }
12817
12818 pub fn resize_vertex_positions(&mut self, count: usize) {
12819 unsafe { ffi::whiteout_m3_M3HitTestShape_resize_vertexPositions(self.raw.as_ptr(), count) }
12822 }
12823
12824 pub fn face_indices(&self) -> &[u16] {
12827 unsafe {
12830 let n = ffi::whiteout_m3_M3HitTestShape_get_faceIndices_count(self.raw.as_ptr());
12831 let p = ffi::whiteout_m3_M3HitTestShape_get_faceIndices_data(self.raw.as_ptr());
12832 if p.is_null() || n == 0 {
12833 &[]
12834 } else {
12835 core::slice::from_raw_parts(p, n)
12836 }
12837 }
12838 }
12839
12840 pub fn face_indices_mut(&mut self) -> &mut [u16] {
12842 unsafe {
12844 let n = ffi::whiteout_m3_M3HitTestShape_get_faceIndices_count(self.raw.as_ptr());
12845 let p =
12846 ffi::whiteout_m3_M3HitTestShape_get_faceIndices_data(self.raw.as_ptr()) as *mut u16;
12847 if p.is_null() || n == 0 {
12848 &mut []
12849 } else {
12850 core::slice::from_raw_parts_mut(p, n)
12851 }
12852 }
12853 }
12854
12855 pub fn set_face_indices(&mut self, values: &[u16]) {
12856 unsafe {
12858 ffi::whiteout_m3_M3HitTestShape_assign_faceIndices(
12859 self.raw.as_ptr(),
12860 values.as_ptr() as *const _,
12861 values.len(),
12862 )
12863 }
12864 }
12865
12866 pub fn resize_face_indices(&mut self, count: usize) {
12867 unsafe { ffi::whiteout_m3_M3HitTestShape_resize_faceIndices(self.raw.as_ptr(), count) }
12870 }
12871
12872 pub fn size_x(&self) -> f32 {
12874 unsafe { ffi::whiteout_m3_M3HitTestShape_get_sizeX(self.raw.as_ptr()) }
12876 }
12877
12878 pub fn set_size_x(&mut self, value: f32) {
12879 unsafe { ffi::whiteout_m3_M3HitTestShape_set_sizeX(self.raw.as_ptr(), value) }
12881 }
12882
12883 pub fn size_y(&self) -> f32 {
12885 unsafe { ffi::whiteout_m3_M3HitTestShape_get_sizeY(self.raw.as_ptr()) }
12887 }
12888
12889 pub fn set_size_y(&mut self, value: f32) {
12890 unsafe { ffi::whiteout_m3_M3HitTestShape_set_sizeY(self.raw.as_ptr(), value) }
12892 }
12893
12894 pub fn size_z(&self) -> f32 {
12896 unsafe { ffi::whiteout_m3_M3HitTestShape_get_sizeZ(self.raw.as_ptr()) }
12898 }
12899
12900 pub fn set_size_z(&mut self, value: f32) {
12901 unsafe { ffi::whiteout_m3_M3HitTestShape_set_sizeZ(self.raw.as_ptr(), value) }
12903 }
12904}
12905
12906impl Default for HitTestShape {
12907 fn default() -> Self {
12908 Self::new()
12909 }
12910}
12911
12912pub struct AttachmentVolume {
12916 pub(crate) raw: core::ptr::NonNull<ffi::whiteout_M3AttachmentVolume>,
12917}
12918
12919impl Drop for AttachmentVolume {
12920 fn drop(&mut self) {
12921 unsafe { ffi::whiteout_m3_M3AttachmentVolume_delete(self.raw.as_ptr()) }
12923 }
12924}
12925
12926impl AttachmentVolume {
12927 #[allow(dead_code)] pub(crate) unsafe fn from_raw(raw: *mut ffi::whiteout_M3AttachmentVolume) -> Option<Self> {
12931 core::ptr::NonNull::new(raw).map(|raw| AttachmentVolume { raw })
12932 }
12933}
12934
12935unsafe impl Send for AttachmentVolume {}
12940
12941impl core::fmt::Debug for AttachmentVolume {
12942 fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
12943 f.debug_struct("AttachmentVolume").finish_non_exhaustive()
12944 }
12945}
12946
12947impl AttachmentVolume {
12948 pub fn new() -> Self {
12951 unsafe {
12954 let raw = ffi::whiteout_m3_M3AttachmentVolume_new();
12955 Self::from_raw(raw).expect("native AttachmentVolume allocation failed")
12956 }
12957 }
12958
12959 pub fn bone_1(&self) -> u32 {
12961 unsafe { ffi::whiteout_m3_M3AttachmentVolume_get_bone1(self.raw.as_ptr()) }
12963 }
12964
12965 pub fn set_bone_1(&mut self, value: u32) {
12966 unsafe { ffi::whiteout_m3_M3AttachmentVolume_set_bone1(self.raw.as_ptr(), value) }
12968 }
12969
12970 pub fn bone_2(&self) -> u32 {
12972 unsafe { ffi::whiteout_m3_M3AttachmentVolume_get_bone2(self.raw.as_ptr()) }
12974 }
12975
12976 pub fn set_bone_2(&mut self, value: u32) {
12977 unsafe { ffi::whiteout_m3_M3AttachmentVolume_set_bone2(self.raw.as_ptr(), value) }
12979 }
12980
12981 pub fn shape_type(&self) -> HitTestShapeType {
12983 unsafe { ffi::whiteout_m3_M3AttachmentVolume_get_shapeType(self.raw.as_ptr()) }
12985 .try_into()
12986 .expect("unknown enum discriminant from the native library")
12987 }
12988
12989 pub fn set_shape_type(&mut self, value: HitTestShapeType) {
12990 unsafe {
12992 ffi::whiteout_m3_M3AttachmentVolume_set_shapeType(self.raw.as_ptr(), value as i32)
12993 }
12994 }
12995
12996 pub fn bone_index(&self) -> u16 {
12998 unsafe { ffi::whiteout_m3_M3AttachmentVolume_get_boneIndex(self.raw.as_ptr()) }
13000 }
13001
13002 pub fn set_bone_index(&mut self, value: u16) {
13003 unsafe { ffi::whiteout_m3_M3AttachmentVolume_set_boneIndex(self.raw.as_ptr(), value) }
13005 }
13006
13007 pub fn padding(&self) -> u16 {
13009 unsafe { ffi::whiteout_m3_M3AttachmentVolume_get_padding(self.raw.as_ptr()) }
13011 }
13012
13013 pub fn set_padding(&mut self, value: u16) {
13014 unsafe { ffi::whiteout_m3_M3AttachmentVolume_set_padding(self.raw.as_ptr(), value) }
13016 }
13017
13018 pub fn vertex_positions(&self) -> &[crate::math::Vector3f] {
13021 unsafe {
13024 let n =
13025 ffi::whiteout_m3_M3AttachmentVolume_get_vertexPositions_count(self.raw.as_ptr());
13026 let p = ffi::whiteout_m3_M3AttachmentVolume_get_vertexPositions_data(self.raw.as_ptr())
13027 as *const crate::math::Vector3f;
13028 if p.is_null() || n == 0 {
13029 &[]
13030 } else {
13031 core::slice::from_raw_parts(p, n)
13032 }
13033 }
13034 }
13035
13036 pub fn vertex_positions_mut(&mut self) -> &mut [crate::math::Vector3f] {
13038 unsafe {
13040 let n =
13041 ffi::whiteout_m3_M3AttachmentVolume_get_vertexPositions_count(self.raw.as_ptr());
13042 let p = ffi::whiteout_m3_M3AttachmentVolume_get_vertexPositions_data(self.raw.as_ptr())
13043 as *const crate::math::Vector3f as *mut crate::math::Vector3f;
13044 if p.is_null() || n == 0 {
13045 &mut []
13046 } else {
13047 core::slice::from_raw_parts_mut(p, n)
13048 }
13049 }
13050 }
13051
13052 pub fn set_vertex_positions(&mut self, values: &[crate::math::Vector3f]) {
13053 unsafe {
13055 ffi::whiteout_m3_M3AttachmentVolume_assign_vertexPositions(
13056 self.raw.as_ptr(),
13057 values.as_ptr() as *const _,
13058 values.len(),
13059 )
13060 }
13061 }
13062
13063 pub fn resize_vertex_positions(&mut self, count: usize) {
13064 unsafe {
13067 ffi::whiteout_m3_M3AttachmentVolume_resize_vertexPositions(self.raw.as_ptr(), count)
13068 }
13069 }
13070
13071 pub fn face_indices(&self) -> &[u16] {
13074 unsafe {
13077 let n = ffi::whiteout_m3_M3AttachmentVolume_get_faceIndices_count(self.raw.as_ptr());
13078 let p = ffi::whiteout_m3_M3AttachmentVolume_get_faceIndices_data(self.raw.as_ptr());
13079 if p.is_null() || n == 0 {
13080 &[]
13081 } else {
13082 core::slice::from_raw_parts(p, n)
13083 }
13084 }
13085 }
13086
13087 pub fn face_indices_mut(&mut self) -> &mut [u16] {
13089 unsafe {
13091 let n = ffi::whiteout_m3_M3AttachmentVolume_get_faceIndices_count(self.raw.as_ptr());
13092 let p = ffi::whiteout_m3_M3AttachmentVolume_get_faceIndices_data(self.raw.as_ptr())
13093 as *mut u16;
13094 if p.is_null() || n == 0 {
13095 &mut []
13096 } else {
13097 core::slice::from_raw_parts_mut(p, n)
13098 }
13099 }
13100 }
13101
13102 pub fn set_face_indices(&mut self, values: &[u16]) {
13103 unsafe {
13105 ffi::whiteout_m3_M3AttachmentVolume_assign_faceIndices(
13106 self.raw.as_ptr(),
13107 values.as_ptr() as *const _,
13108 values.len(),
13109 )
13110 }
13111 }
13112
13113 pub fn resize_face_indices(&mut self, count: usize) {
13114 unsafe { ffi::whiteout_m3_M3AttachmentVolume_resize_faceIndices(self.raw.as_ptr(), count) }
13117 }
13118
13119 pub fn size_x(&self) -> f32 {
13121 unsafe { ffi::whiteout_m3_M3AttachmentVolume_get_sizeX(self.raw.as_ptr()) }
13123 }
13124
13125 pub fn set_size_x(&mut self, value: f32) {
13126 unsafe { ffi::whiteout_m3_M3AttachmentVolume_set_sizeX(self.raw.as_ptr(), value) }
13128 }
13129
13130 pub fn size_y(&self) -> f32 {
13132 unsafe { ffi::whiteout_m3_M3AttachmentVolume_get_sizeY(self.raw.as_ptr()) }
13134 }
13135
13136 pub fn set_size_y(&mut self, value: f32) {
13137 unsafe { ffi::whiteout_m3_M3AttachmentVolume_set_sizeY(self.raw.as_ptr(), value) }
13139 }
13140
13141 pub fn size_z(&self) -> f32 {
13143 unsafe { ffi::whiteout_m3_M3AttachmentVolume_get_sizeZ(self.raw.as_ptr()) }
13145 }
13146
13147 pub fn set_size_z(&mut self, value: f32) {
13148 unsafe { ffi::whiteout_m3_M3AttachmentVolume_set_sizeZ(self.raw.as_ptr(), value) }
13150 }
13151}
13152
13153impl Default for AttachmentVolume {
13154 fn default() -> Self {
13155 Self::new()
13156 }
13157}
13158
13159pub struct TriggerData {
13163 pub(crate) raw: core::ptr::NonNull<ffi::whiteout_M3TriggerData>,
13164}
13165
13166impl Drop for TriggerData {
13167 fn drop(&mut self) {
13168 unsafe { ffi::whiteout_m3_M3TriggerData_delete(self.raw.as_ptr()) }
13170 }
13171}
13172
13173impl TriggerData {
13174 #[allow(dead_code)] pub(crate) unsafe fn from_raw(raw: *mut ffi::whiteout_M3TriggerData) -> Option<Self> {
13178 core::ptr::NonNull::new(raw).map(|raw| TriggerData { raw })
13179 }
13180}
13181
13182unsafe impl Send for TriggerData {}
13187
13188impl core::fmt::Debug for TriggerData {
13189 fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
13190 f.debug_struct("TriggerData").finish_non_exhaustive()
13191 }
13192}
13193
13194impl TriggerData {
13195 pub fn new() -> Self {
13198 unsafe {
13201 let raw = ffi::whiteout_m3_M3TriggerData_new();
13202 Self::from_raw(raw).expect("native TriggerData allocation failed")
13203 }
13204 }
13205
13206 pub fn data_indices(&self) -> &[u32] {
13209 unsafe {
13212 let n = ffi::whiteout_m3_M3TriggerData_get_dataIndices_count(self.raw.as_ptr());
13213 let p = ffi::whiteout_m3_M3TriggerData_get_dataIndices_data(self.raw.as_ptr());
13214 if p.is_null() || n == 0 {
13215 &[]
13216 } else {
13217 core::slice::from_raw_parts(p, n)
13218 }
13219 }
13220 }
13221
13222 pub fn data_indices_mut(&mut self) -> &mut [u32] {
13224 unsafe {
13226 let n = ffi::whiteout_m3_M3TriggerData_get_dataIndices_count(self.raw.as_ptr());
13227 let p =
13228 ffi::whiteout_m3_M3TriggerData_get_dataIndices_data(self.raw.as_ptr()) as *mut u32;
13229 if p.is_null() || n == 0 {
13230 &mut []
13231 } else {
13232 core::slice::from_raw_parts_mut(p, n)
13233 }
13234 }
13235 }
13236
13237 pub fn set_data_indices(&mut self, values: &[u32]) {
13238 unsafe {
13240 ffi::whiteout_m3_M3TriggerData_assign_dataIndices(
13241 self.raw.as_ptr(),
13242 values.as_ptr() as *const _,
13243 values.len(),
13244 )
13245 }
13246 }
13247
13248 pub fn resize_data_indices(&mut self, count: usize) {
13249 unsafe { ffi::whiteout_m3_M3TriggerData_resize_dataIndices(self.raw.as_ptr(), count) }
13252 }
13253
13254 pub fn name(&self) -> String {
13256 unsafe {
13258 crate::support::take_string(ffi::whiteout_m3_M3TriggerData_get_name(self.raw.as_ptr()))
13259 }
13260 }
13261
13262 pub fn set_name(&mut self, value: &str) {
13263 let value = std::ffi::CString::new(value).unwrap_or_default();
13264 unsafe { ffi::whiteout_m3_M3TriggerData_set_name(self.raw.as_ptr(), value.as_ptr()) }
13266 }
13267}
13268
13269impl Default for TriggerData {
13270 fn default() -> Self {
13271 Self::new()
13272 }
13273}
13274
13275pub struct TurretBehavior {
13279 pub(crate) raw: core::ptr::NonNull<ffi::whiteout_M3TurretBehavior>,
13280}
13281
13282impl Drop for TurretBehavior {
13283 fn drop(&mut self) {
13284 unsafe { ffi::whiteout_m3_M3TurretBehavior_delete(self.raw.as_ptr()) }
13286 }
13287}
13288
13289impl TurretBehavior {
13290 #[allow(dead_code)] pub(crate) unsafe fn from_raw(raw: *mut ffi::whiteout_M3TurretBehavior) -> Option<Self> {
13294 core::ptr::NonNull::new(raw).map(|raw| TurretBehavior { raw })
13295 }
13296}
13297
13298unsafe impl Send for TurretBehavior {}
13303
13304impl core::fmt::Debug for TurretBehavior {
13305 fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
13306 f.debug_struct("TurretBehavior").finish_non_exhaustive()
13307 }
13308}
13309
13310impl TurretBehavior {
13311 pub fn new() -> Self {
13314 unsafe {
13317 let raw = ffi::whiteout_m3_M3TurretBehavior_new();
13318 Self::from_raw(raw).expect("native TurretBehavior allocation failed")
13319 }
13320 }
13321
13322 pub fn unknown_1(&self) -> crate::math::Vector4f {
13324 unsafe {
13327 *(ffi::whiteout_m3_M3TurretBehavior_get_unknown1(self.raw.as_ptr())
13328 as *const crate::math::Vector4f)
13329 }
13330 }
13331
13332 pub fn set_unknown_1(&mut self, value: crate::math::Vector4f) {
13333 unsafe {
13335 ffi::whiteout_m3_M3TurretBehavior_set_unknown1(
13336 self.raw.as_ptr(),
13337 &value as *const crate::math::Vector4f as *const _,
13338 )
13339 }
13340 }
13341
13342 pub fn unknown_2(&self) -> crate::math::Vector4f {
13344 unsafe {
13347 *(ffi::whiteout_m3_M3TurretBehavior_get_unknown2(self.raw.as_ptr())
13348 as *const crate::math::Vector4f)
13349 }
13350 }
13351
13352 pub fn set_unknown_2(&mut self, value: crate::math::Vector4f) {
13353 unsafe {
13355 ffi::whiteout_m3_M3TurretBehavior_set_unknown2(
13356 self.raw.as_ptr(),
13357 &value as *const crate::math::Vector4f as *const _,
13358 )
13359 }
13360 }
13361
13362 pub fn bone_index(&self) -> u16 {
13364 unsafe { ffi::whiteout_m3_M3TurretBehavior_get_boneIndex(self.raw.as_ptr()) }
13366 }
13367
13368 pub fn set_bone_index(&mut self, value: u16) {
13369 unsafe { ffi::whiteout_m3_M3TurretBehavior_set_boneIndex(self.raw.as_ptr(), value) }
13371 }
13372
13373 pub fn use_as_main_turret(&self) -> u8 {
13375 unsafe { ffi::whiteout_m3_M3TurretBehavior_get_useAsMainTurret(self.raw.as_ptr()) }
13377 }
13378
13379 pub fn set_use_as_main_turret(&mut self, value: u8) {
13380 unsafe { ffi::whiteout_m3_M3TurretBehavior_set_useAsMainTurret(self.raw.as_ptr(), value) }
13382 }
13383
13384 pub fn turret_group_id(&self) -> u8 {
13386 unsafe { ffi::whiteout_m3_M3TurretBehavior_get_turretGroupId(self.raw.as_ptr()) }
13388 }
13389
13390 pub fn set_turret_group_id(&mut self, value: u8) {
13391 unsafe { ffi::whiteout_m3_M3TurretBehavior_set_turretGroupId(self.raw.as_ptr(), value) }
13393 }
13394
13395 pub fn yaw_limited(&self) -> u32 {
13397 unsafe { ffi::whiteout_m3_M3TurretBehavior_get_yawLimited(self.raw.as_ptr()) }
13399 }
13400
13401 pub fn set_yaw_limited(&mut self, value: u32) {
13402 unsafe { ffi::whiteout_m3_M3TurretBehavior_set_yawLimited(self.raw.as_ptr(), value) }
13404 }
13405
13406 pub fn yaw_min(&self) -> f32 {
13408 unsafe { ffi::whiteout_m3_M3TurretBehavior_get_yawMin(self.raw.as_ptr()) }
13410 }
13411
13412 pub fn set_yaw_min(&mut self, value: f32) {
13413 unsafe { ffi::whiteout_m3_M3TurretBehavior_set_yawMin(self.raw.as_ptr(), value) }
13415 }
13416
13417 pub fn yaw_max(&self) -> f32 {
13419 unsafe { ffi::whiteout_m3_M3TurretBehavior_get_yawMax(self.raw.as_ptr()) }
13421 }
13422
13423 pub fn set_yaw_max(&mut self, value: f32) {
13424 unsafe { ffi::whiteout_m3_M3TurretBehavior_set_yawMax(self.raw.as_ptr(), value) }
13426 }
13427
13428 pub fn yaw_weight(&self) -> f32 {
13430 unsafe { ffi::whiteout_m3_M3TurretBehavior_get_yawWeight(self.raw.as_ptr()) }
13432 }
13433
13434 pub fn set_yaw_weight(&mut self, value: f32) {
13435 unsafe { ffi::whiteout_m3_M3TurretBehavior_set_yawWeight(self.raw.as_ptr(), value) }
13437 }
13438
13439 pub fn pitch_limited(&self) -> u32 {
13441 unsafe { ffi::whiteout_m3_M3TurretBehavior_get_pitchLimited(self.raw.as_ptr()) }
13443 }
13444
13445 pub fn set_pitch_limited(&mut self, value: u32) {
13446 unsafe { ffi::whiteout_m3_M3TurretBehavior_set_pitchLimited(self.raw.as_ptr(), value) }
13448 }
13449
13450 pub fn pitch_min(&self) -> f32 {
13452 unsafe { ffi::whiteout_m3_M3TurretBehavior_get_pitchMin(self.raw.as_ptr()) }
13454 }
13455
13456 pub fn set_pitch_min(&mut self, value: f32) {
13457 unsafe { ffi::whiteout_m3_M3TurretBehavior_set_pitchMin(self.raw.as_ptr(), value) }
13459 }
13460
13461 pub fn pitch_max(&self) -> f32 {
13463 unsafe { ffi::whiteout_m3_M3TurretBehavior_get_pitchMax(self.raw.as_ptr()) }
13465 }
13466
13467 pub fn set_pitch_max(&mut self, value: f32) {
13468 unsafe { ffi::whiteout_m3_M3TurretBehavior_set_pitchMax(self.raw.as_ptr(), value) }
13470 }
13471
13472 pub fn pitch_weight(&self) -> f32 {
13474 unsafe { ffi::whiteout_m3_M3TurretBehavior_get_pitchWeight(self.raw.as_ptr()) }
13476 }
13477
13478 pub fn set_pitch_weight(&mut self, value: f32) {
13479 unsafe { ffi::whiteout_m3_M3TurretBehavior_set_pitchWeight(self.raw.as_ptr(), value) }
13481 }
13482
13483 pub fn unknown_3(&self) -> f32 {
13485 unsafe { ffi::whiteout_m3_M3TurretBehavior_get_unknown3(self.raw.as_ptr()) }
13487 }
13488
13489 pub fn set_unknown_3(&mut self, value: f32) {
13490 unsafe { ffi::whiteout_m3_M3TurretBehavior_set_unknown3(self.raw.as_ptr(), value) }
13492 }
13493
13494 pub fn unknown_4(&self) -> f32 {
13496 unsafe { ffi::whiteout_m3_M3TurretBehavior_get_unknown4(self.raw.as_ptr()) }
13498 }
13499
13500 pub fn set_unknown_4(&mut self, value: f32) {
13501 unsafe { ffi::whiteout_m3_M3TurretBehavior_set_unknown4(self.raw.as_ptr(), value) }
13503 }
13504
13505 pub fn main_bone_offset(&self) -> crate::math::Vector3f {
13507 unsafe {
13510 *(ffi::whiteout_m3_M3TurretBehavior_get_mainBoneOffset(self.raw.as_ptr())
13511 as *const crate::math::Vector3f)
13512 }
13513 }
13514
13515 pub fn set_main_bone_offset(&mut self, value: crate::math::Vector3f) {
13516 unsafe {
13518 ffi::whiteout_m3_M3TurretBehavior_set_mainBoneOffset(
13519 self.raw.as_ptr(),
13520 &value as *const crate::math::Vector3f as *const _,
13521 )
13522 }
13523 }
13524}
13525
13526impl Default for TurretBehavior {
13527 fn default() -> Self {
13528 Self::new()
13529 }
13530}
13531
13532pub struct BillboardBehavior {
13536 pub(crate) raw: core::ptr::NonNull<ffi::whiteout_M3BillboardBehavior>,
13537}
13538
13539impl Drop for BillboardBehavior {
13540 fn drop(&mut self) {
13541 unsafe { ffi::whiteout_m3_M3BillboardBehavior_delete(self.raw.as_ptr()) }
13543 }
13544}
13545
13546impl BillboardBehavior {
13547 #[allow(dead_code)] pub(crate) unsafe fn from_raw(raw: *mut ffi::whiteout_M3BillboardBehavior) -> Option<Self> {
13551 core::ptr::NonNull::new(raw).map(|raw| BillboardBehavior { raw })
13552 }
13553}
13554
13555unsafe impl Send for BillboardBehavior {}
13560
13561impl core::fmt::Debug for BillboardBehavior {
13562 fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
13563 f.debug_struct("BillboardBehavior").finish_non_exhaustive()
13564 }
13565}
13566
13567impl BillboardBehavior {
13568 pub fn new() -> Self {
13571 unsafe {
13574 let raw = ffi::whiteout_m3_M3BillboardBehavior_new();
13575 Self::from_raw(raw).expect("native BillboardBehavior allocation failed")
13576 }
13577 }
13578
13579 pub fn dependents(&self) -> &[u16] {
13582 unsafe {
13585 let n = ffi::whiteout_m3_M3BillboardBehavior_get_dependents_count(self.raw.as_ptr());
13586 let p = ffi::whiteout_m3_M3BillboardBehavior_get_dependents_data(self.raw.as_ptr());
13587 if p.is_null() || n == 0 {
13588 &[]
13589 } else {
13590 core::slice::from_raw_parts(p, n)
13591 }
13592 }
13593 }
13594
13595 pub fn dependents_mut(&mut self) -> &mut [u16] {
13597 unsafe {
13599 let n = ffi::whiteout_m3_M3BillboardBehavior_get_dependents_count(self.raw.as_ptr());
13600 let p = ffi::whiteout_m3_M3BillboardBehavior_get_dependents_data(self.raw.as_ptr())
13601 as *mut u16;
13602 if p.is_null() || n == 0 {
13603 &mut []
13604 } else {
13605 core::slice::from_raw_parts_mut(p, n)
13606 }
13607 }
13608 }
13609
13610 pub fn set_dependents(&mut self, values: &[u16]) {
13611 unsafe {
13613 ffi::whiteout_m3_M3BillboardBehavior_assign_dependents(
13614 self.raw.as_ptr(),
13615 values.as_ptr() as *const _,
13616 values.len(),
13617 )
13618 }
13619 }
13620
13621 pub fn resize_dependents(&mut self, count: usize) {
13622 unsafe { ffi::whiteout_m3_M3BillboardBehavior_resize_dependents(self.raw.as_ptr(), count) }
13625 }
13626
13627 pub fn bone_index(&self) -> u16 {
13629 unsafe { ffi::whiteout_m3_M3BillboardBehavior_get_boneIndex(self.raw.as_ptr()) }
13631 }
13632
13633 pub fn set_bone_index(&mut self, value: u16) {
13634 unsafe { ffi::whiteout_m3_M3BillboardBehavior_set_boneIndex(self.raw.as_ptr(), value) }
13636 }
13637
13638 pub fn billboard_type(&self) -> u8 {
13640 unsafe { ffi::whiteout_m3_M3BillboardBehavior_get_billboardType(self.raw.as_ptr()) }
13642 }
13643
13644 pub fn set_billboard_type(&mut self, value: u8) {
13645 unsafe { ffi::whiteout_m3_M3BillboardBehavior_set_billboardType(self.raw.as_ptr(), value) }
13647 }
13648
13649 pub fn camera_look_at(&self) -> u8 {
13651 unsafe { ffi::whiteout_m3_M3BillboardBehavior_get_cameraLookAt(self.raw.as_ptr()) }
13653 }
13654
13655 pub fn set_camera_look_at(&mut self, value: u8) {
13656 unsafe { ffi::whiteout_m3_M3BillboardBehavior_set_cameraLookAt(self.raw.as_ptr(), value) }
13658 }
13659
13660 pub fn up(&self) -> crate::math::Quaternion {
13662 unsafe {
13665 *(ffi::whiteout_m3_M3BillboardBehavior_get_up(self.raw.as_ptr())
13666 as *const crate::math::Quaternion)
13667 }
13668 }
13669
13670 pub fn set_up(&mut self, value: crate::math::Quaternion) {
13671 unsafe {
13673 ffi::whiteout_m3_M3BillboardBehavior_set_up(
13674 self.raw.as_ptr(),
13675 &value as *const crate::math::Quaternion as *const _,
13676 )
13677 }
13678 }
13679
13680 pub fn forward(&self) -> crate::math::Quaternion {
13682 unsafe {
13685 *(ffi::whiteout_m3_M3BillboardBehavior_get_forward(self.raw.as_ptr())
13686 as *const crate::math::Quaternion)
13687 }
13688 }
13689
13690 pub fn set_forward(&mut self, value: crate::math::Quaternion) {
13691 unsafe {
13693 ffi::whiteout_m3_M3BillboardBehavior_set_forward(
13694 self.raw.as_ptr(),
13695 &value as *const crate::math::Quaternion as *const _,
13696 )
13697 }
13698 }
13699}
13700
13701impl Default for BillboardBehavior {
13702 fn default() -> Self {
13703 Self::new()
13704 }
13705}
13706
13707pub struct IKJoint {
13711 pub(crate) raw: core::ptr::NonNull<ffi::whiteout_M3IKJoint>,
13712}
13713
13714impl Drop for IKJoint {
13715 fn drop(&mut self) {
13716 unsafe { ffi::whiteout_m3_M3IKJoint_delete(self.raw.as_ptr()) }
13718 }
13719}
13720
13721impl IKJoint {
13722 #[allow(dead_code)] pub(crate) unsafe fn from_raw(raw: *mut ffi::whiteout_M3IKJoint) -> Option<Self> {
13726 core::ptr::NonNull::new(raw).map(|raw| IKJoint { raw })
13727 }
13728}
13729
13730unsafe impl Send for IKJoint {}
13735
13736impl core::fmt::Debug for IKJoint {
13737 fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
13738 f.debug_struct("IKJoint").finish_non_exhaustive()
13739 }
13740}
13741
13742impl IKJoint {
13743 pub fn new() -> Self {
13746 unsafe {
13749 let raw = ffi::whiteout_m3_M3IKJoint_new();
13750 Self::from_raw(raw).expect("native IKJoint allocation failed")
13751 }
13752 }
13753
13754 pub fn dependents(&self) -> &[u16] {
13757 unsafe {
13760 let n = ffi::whiteout_m3_M3IKJoint_get_dependents_count(self.raw.as_ptr());
13761 let p = ffi::whiteout_m3_M3IKJoint_get_dependents_data(self.raw.as_ptr());
13762 if p.is_null() || n == 0 {
13763 &[]
13764 } else {
13765 core::slice::from_raw_parts(p, n)
13766 }
13767 }
13768 }
13769
13770 pub fn dependents_mut(&mut self) -> &mut [u16] {
13772 unsafe {
13774 let n = ffi::whiteout_m3_M3IKJoint_get_dependents_count(self.raw.as_ptr());
13775 let p = ffi::whiteout_m3_M3IKJoint_get_dependents_data(self.raw.as_ptr()) as *mut u16;
13776 if p.is_null() || n == 0 {
13777 &mut []
13778 } else {
13779 core::slice::from_raw_parts_mut(p, n)
13780 }
13781 }
13782 }
13783
13784 pub fn set_dependents(&mut self, values: &[u16]) {
13785 unsafe {
13787 ffi::whiteout_m3_M3IKJoint_assign_dependents(
13788 self.raw.as_ptr(),
13789 values.as_ptr() as *const _,
13790 values.len(),
13791 )
13792 }
13793 }
13794
13795 pub fn resize_dependents(&mut self, count: usize) {
13796 unsafe { ffi::whiteout_m3_M3IKJoint_resize_dependents(self.raw.as_ptr(), count) }
13799 }
13800
13801 pub fn bone_index_1(&self) -> u16 {
13803 unsafe { ffi::whiteout_m3_M3IKJoint_get_boneIndex1(self.raw.as_ptr()) }
13805 }
13806
13807 pub fn set_bone_index_1(&mut self, value: u16) {
13808 unsafe { ffi::whiteout_m3_M3IKJoint_set_boneIndex1(self.raw.as_ptr(), value) }
13810 }
13811
13812 pub fn bone_index_2(&self) -> u16 {
13814 unsafe { ffi::whiteout_m3_M3IKJoint_get_boneIndex2(self.raw.as_ptr()) }
13816 }
13817
13818 pub fn set_bone_index_2(&mut self, value: u16) {
13819 unsafe { ffi::whiteout_m3_M3IKJoint_set_boneIndex2(self.raw.as_ptr(), value) }
13821 }
13822
13823 pub fn raycast_up(&self) -> f32 {
13825 unsafe { ffi::whiteout_m3_M3IKJoint_get_raycastUp(self.raw.as_ptr()) }
13827 }
13828
13829 pub fn set_raycast_up(&mut self, value: f32) {
13830 unsafe { ffi::whiteout_m3_M3IKJoint_set_raycastUp(self.raw.as_ptr(), value) }
13832 }
13833
13834 pub fn raycast_down(&self) -> f32 {
13836 unsafe { ffi::whiteout_m3_M3IKJoint_get_raycastDown(self.raw.as_ptr()) }
13838 }
13839
13840 pub fn set_raycast_down(&mut self, value: f32) {
13841 unsafe { ffi::whiteout_m3_M3IKJoint_set_raycastDown(self.raw.as_ptr(), value) }
13843 }
13844
13845 pub fn max_speed(&self) -> f32 {
13847 unsafe { ffi::whiteout_m3_M3IKJoint_get_maxSpeed(self.raw.as_ptr()) }
13849 }
13850
13851 pub fn set_max_speed(&mut self, value: f32) {
13852 unsafe { ffi::whiteout_m3_M3IKJoint_set_maxSpeed(self.raw.as_ptr(), value) }
13854 }
13855
13856 pub fn goal_threshold(&self) -> f32 {
13858 unsafe { ffi::whiteout_m3_M3IKJoint_get_goalThreshold(self.raw.as_ptr()) }
13860 }
13861
13862 pub fn set_goal_threshold(&mut self, value: f32) {
13863 unsafe { ffi::whiteout_m3_M3IKJoint_set_goalThreshold(self.raw.as_ptr(), value) }
13865 }
13866}
13867
13868impl Default for IKJoint {
13869 fn default() -> Self {
13870 Self::new()
13871 }
13872}
13873
13874pub struct IKTwoJoint {
13878 pub(crate) raw: core::ptr::NonNull<ffi::whiteout_M3IKTwoJoint>,
13879}
13880
13881impl Drop for IKTwoJoint {
13882 fn drop(&mut self) {
13883 unsafe { ffi::whiteout_m3_M3IKTwoJoint_delete(self.raw.as_ptr()) }
13885 }
13886}
13887
13888impl IKTwoJoint {
13889 #[allow(dead_code)] pub(crate) unsafe fn from_raw(raw: *mut ffi::whiteout_M3IKTwoJoint) -> Option<Self> {
13893 core::ptr::NonNull::new(raw).map(|raw| IKTwoJoint { raw })
13894 }
13895}
13896
13897unsafe impl Send for IKTwoJoint {}
13902
13903impl core::fmt::Debug for IKTwoJoint {
13904 fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
13905 f.debug_struct("IKTwoJoint").finish_non_exhaustive()
13906 }
13907}
13908
13909impl IKTwoJoint {
13910 pub fn new() -> Self {
13913 unsafe {
13916 let raw = ffi::whiteout_m3_M3IKTwoJoint_new();
13917 Self::from_raw(raw).expect("native IKTwoJoint allocation failed")
13918 }
13919 }
13920
13921 pub fn dependents(&self) -> &[u16] {
13924 unsafe {
13927 let n = ffi::whiteout_m3_M3IKTwoJoint_get_dependents_count(self.raw.as_ptr());
13928 let p = ffi::whiteout_m3_M3IKTwoJoint_get_dependents_data(self.raw.as_ptr());
13929 if p.is_null() || n == 0 {
13930 &[]
13931 } else {
13932 core::slice::from_raw_parts(p, n)
13933 }
13934 }
13935 }
13936
13937 pub fn dependents_mut(&mut self) -> &mut [u16] {
13939 unsafe {
13941 let n = ffi::whiteout_m3_M3IKTwoJoint_get_dependents_count(self.raw.as_ptr());
13942 let p =
13943 ffi::whiteout_m3_M3IKTwoJoint_get_dependents_data(self.raw.as_ptr()) as *mut u16;
13944 if p.is_null() || n == 0 {
13945 &mut []
13946 } else {
13947 core::slice::from_raw_parts_mut(p, n)
13948 }
13949 }
13950 }
13951
13952 pub fn set_dependents(&mut self, values: &[u16]) {
13953 unsafe {
13955 ffi::whiteout_m3_M3IKTwoJoint_assign_dependents(
13956 self.raw.as_ptr(),
13957 values.as_ptr() as *const _,
13958 values.len(),
13959 )
13960 }
13961 }
13962
13963 pub fn resize_dependents(&mut self, count: usize) {
13964 unsafe { ffi::whiteout_m3_M3IKTwoJoint_resize_dependents(self.raw.as_ptr(), count) }
13967 }
13968
13969 pub fn bone_base(&self) -> u16 {
13971 unsafe { ffi::whiteout_m3_M3IKTwoJoint_get_boneBase(self.raw.as_ptr()) }
13973 }
13974
13975 pub fn set_bone_base(&mut self, value: u16) {
13976 unsafe { ffi::whiteout_m3_M3IKTwoJoint_set_boneBase(self.raw.as_ptr(), value) }
13978 }
13979
13980 pub fn bone_target(&self) -> u16 {
13982 unsafe { ffi::whiteout_m3_M3IKTwoJoint_get_boneTarget(self.raw.as_ptr()) }
13984 }
13985
13986 pub fn set_bone_target(&mut self, value: u16) {
13987 unsafe { ffi::whiteout_m3_M3IKTwoJoint_set_boneTarget(self.raw.as_ptr(), value) }
13989 }
13990
13991 pub fn bone_end(&self) -> u16 {
13993 unsafe { ffi::whiteout_m3_M3IKTwoJoint_get_boneEnd(self.raw.as_ptr()) }
13995 }
13996
13997 pub fn set_bone_end(&mut self, value: u16) {
13998 unsafe { ffi::whiteout_m3_M3IKTwoJoint_set_boneEnd(self.raw.as_ptr(), value) }
14000 }
14001
14002 pub fn padding(&self) -> u16 {
14004 unsafe { ffi::whiteout_m3_M3IKTwoJoint_get_padding(self.raw.as_ptr()) }
14006 }
14007
14008 pub fn set_padding(&mut self, value: u16) {
14009 unsafe { ffi::whiteout_m3_M3IKTwoJoint_set_padding(self.raw.as_ptr(), value) }
14011 }
14012
14013 pub fn hinge_axis(&self) -> crate::math::Vector3f {
14015 unsafe {
14018 *(ffi::whiteout_m3_M3IKTwoJoint_get_hingeAxis(self.raw.as_ptr())
14019 as *const crate::math::Vector3f)
14020 }
14021 }
14022
14023 pub fn set_hinge_axis(&mut self, value: crate::math::Vector3f) {
14024 unsafe {
14026 ffi::whiteout_m3_M3IKTwoJoint_set_hingeAxis(
14027 self.raw.as_ptr(),
14028 &value as *const crate::math::Vector3f as *const _,
14029 )
14030 }
14031 }
14032
14033 pub fn max_angle_inner(&self) -> f32 {
14035 unsafe { ffi::whiteout_m3_M3IKTwoJoint_get_maxAngleInner(self.raw.as_ptr()) }
14037 }
14038
14039 pub fn set_max_angle_inner(&mut self, value: f32) {
14040 unsafe { ffi::whiteout_m3_M3IKTwoJoint_set_maxAngleInner(self.raw.as_ptr(), value) }
14042 }
14043
14044 pub fn max_angle_outer(&self) -> f32 {
14046 unsafe { ffi::whiteout_m3_M3IKTwoJoint_get_maxAngleOuter(self.raw.as_ptr()) }
14048 }
14049
14050 pub fn set_max_angle_outer(&mut self, value: f32) {
14051 unsafe { ffi::whiteout_m3_M3IKTwoJoint_set_maxAngleOuter(self.raw.as_ptr(), value) }
14053 }
14054
14055 pub fn search_up(&self) -> f32 {
14057 unsafe { ffi::whiteout_m3_M3IKTwoJoint_get_searchUp(self.raw.as_ptr()) }
14059 }
14060
14061 pub fn set_search_up(&mut self, value: f32) {
14062 unsafe { ffi::whiteout_m3_M3IKTwoJoint_set_searchUp(self.raw.as_ptr(), value) }
14064 }
14065
14066 pub fn search_down(&self) -> f32 {
14068 unsafe { ffi::whiteout_m3_M3IKTwoJoint_get_searchDown(self.raw.as_ptr()) }
14070 }
14071
14072 pub fn set_search_down(&mut self, value: f32) {
14073 unsafe { ffi::whiteout_m3_M3IKTwoJoint_set_searchDown(self.raw.as_ptr(), value) }
14075 }
14076}
14077
14078impl Default for IKTwoJoint {
14079 fn default() -> Self {
14080 Self::new()
14081 }
14082}
14083
14084pub struct IKCCD {
14088 pub(crate) raw: core::ptr::NonNull<ffi::whiteout_M3IKCCD>,
14089}
14090
14091impl Drop for IKCCD {
14092 fn drop(&mut self) {
14093 unsafe { ffi::whiteout_m3_M3IKCCD_delete(self.raw.as_ptr()) }
14095 }
14096}
14097
14098impl IKCCD {
14099 #[allow(dead_code)] pub(crate) unsafe fn from_raw(raw: *mut ffi::whiteout_M3IKCCD) -> Option<Self> {
14103 core::ptr::NonNull::new(raw).map(|raw| IKCCD { raw })
14104 }
14105}
14106
14107unsafe impl Send for IKCCD {}
14112
14113impl core::fmt::Debug for IKCCD {
14114 fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
14115 f.debug_struct("IKCCD").finish_non_exhaustive()
14116 }
14117}
14118
14119impl IKCCD {
14120 pub fn new() -> Self {
14123 unsafe {
14126 let raw = ffi::whiteout_m3_M3IKCCD_new();
14127 Self::from_raw(raw).expect("native IKCCD allocation failed")
14128 }
14129 }
14130
14131 pub fn dependents(&self) -> &[u16] {
14134 unsafe {
14137 let n = ffi::whiteout_m3_M3IKCCD_get_dependents_count(self.raw.as_ptr());
14138 let p = ffi::whiteout_m3_M3IKCCD_get_dependents_data(self.raw.as_ptr());
14139 if p.is_null() || n == 0 {
14140 &[]
14141 } else {
14142 core::slice::from_raw_parts(p, n)
14143 }
14144 }
14145 }
14146
14147 pub fn dependents_mut(&mut self) -> &mut [u16] {
14149 unsafe {
14151 let n = ffi::whiteout_m3_M3IKCCD_get_dependents_count(self.raw.as_ptr());
14152 let p = ffi::whiteout_m3_M3IKCCD_get_dependents_data(self.raw.as_ptr()) as *mut u16;
14153 if p.is_null() || n == 0 {
14154 &mut []
14155 } else {
14156 core::slice::from_raw_parts_mut(p, n)
14157 }
14158 }
14159 }
14160
14161 pub fn set_dependents(&mut self, values: &[u16]) {
14162 unsafe {
14164 ffi::whiteout_m3_M3IKCCD_assign_dependents(
14165 self.raw.as_ptr(),
14166 values.as_ptr() as *const _,
14167 values.len(),
14168 )
14169 }
14170 }
14171
14172 pub fn resize_dependents(&mut self, count: usize) {
14173 unsafe { ffi::whiteout_m3_M3IKCCD_resize_dependents(self.raw.as_ptr(), count) }
14176 }
14177
14178 pub fn bone_base(&self) -> u16 {
14180 unsafe { ffi::whiteout_m3_M3IKCCD_get_boneBase(self.raw.as_ptr()) }
14182 }
14183
14184 pub fn set_bone_base(&mut self, value: u16) {
14185 unsafe { ffi::whiteout_m3_M3IKCCD_set_boneBase(self.raw.as_ptr(), value) }
14187 }
14188
14189 pub fn bone_target(&self) -> u16 {
14191 unsafe { ffi::whiteout_m3_M3IKCCD_get_boneTarget(self.raw.as_ptr()) }
14193 }
14194
14195 pub fn set_bone_target(&mut self, value: u16) {
14196 unsafe { ffi::whiteout_m3_M3IKCCD_set_boneTarget(self.raw.as_ptr(), value) }
14198 }
14199
14200 pub fn search_up(&self) -> f32 {
14202 unsafe { ffi::whiteout_m3_M3IKCCD_get_searchUp(self.raw.as_ptr()) }
14204 }
14205
14206 pub fn set_search_up(&mut self, value: f32) {
14207 unsafe { ffi::whiteout_m3_M3IKCCD_set_searchUp(self.raw.as_ptr(), value) }
14209 }
14210
14211 pub fn search_down(&self) -> f32 {
14213 unsafe { ffi::whiteout_m3_M3IKCCD_get_searchDown(self.raw.as_ptr()) }
14215 }
14216
14217 pub fn set_search_down(&mut self, value: f32) {
14218 unsafe { ffi::whiteout_m3_M3IKCCD_set_searchDown(self.raw.as_ptr(), value) }
14220 }
14221}
14222
14223impl Default for IKCCD {
14224 fn default() -> Self {
14225 Self::new()
14226 }
14227}
14228
14229pub struct OneBoneSolver {
14233 pub(crate) raw: core::ptr::NonNull<ffi::whiteout_M3OneBoneSolver>,
14234}
14235
14236impl Drop for OneBoneSolver {
14237 fn drop(&mut self) {
14238 unsafe { ffi::whiteout_m3_M3OneBoneSolver_delete(self.raw.as_ptr()) }
14240 }
14241}
14242
14243impl OneBoneSolver {
14244 #[allow(dead_code)] pub(crate) unsafe fn from_raw(raw: *mut ffi::whiteout_M3OneBoneSolver) -> Option<Self> {
14248 core::ptr::NonNull::new(raw).map(|raw| OneBoneSolver { raw })
14249 }
14250}
14251
14252unsafe impl Send for OneBoneSolver {}
14257
14258impl core::fmt::Debug for OneBoneSolver {
14259 fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
14260 f.debug_struct("OneBoneSolver").finish_non_exhaustive()
14261 }
14262}
14263
14264impl OneBoneSolver {
14265 pub fn new() -> Self {
14268 unsafe {
14271 let raw = ffi::whiteout_m3_M3OneBoneSolver_new();
14272 Self::from_raw(raw).expect("native OneBoneSolver allocation failed")
14273 }
14274 }
14275
14276 pub fn dependents(&self) -> &[u16] {
14279 unsafe {
14282 let n = ffi::whiteout_m3_M3OneBoneSolver_get_dependents_count(self.raw.as_ptr());
14283 let p = ffi::whiteout_m3_M3OneBoneSolver_get_dependents_data(self.raw.as_ptr());
14284 if p.is_null() || n == 0 {
14285 &[]
14286 } else {
14287 core::slice::from_raw_parts(p, n)
14288 }
14289 }
14290 }
14291
14292 pub fn dependents_mut(&mut self) -> &mut [u16] {
14294 unsafe {
14296 let n = ffi::whiteout_m3_M3OneBoneSolver_get_dependents_count(self.raw.as_ptr());
14297 let p =
14298 ffi::whiteout_m3_M3OneBoneSolver_get_dependents_data(self.raw.as_ptr()) as *mut u16;
14299 if p.is_null() || n == 0 {
14300 &mut []
14301 } else {
14302 core::slice::from_raw_parts_mut(p, n)
14303 }
14304 }
14305 }
14306
14307 pub fn set_dependents(&mut self, values: &[u16]) {
14308 unsafe {
14310 ffi::whiteout_m3_M3OneBoneSolver_assign_dependents(
14311 self.raw.as_ptr(),
14312 values.as_ptr() as *const _,
14313 values.len(),
14314 )
14315 }
14316 }
14317
14318 pub fn resize_dependents(&mut self, count: usize) {
14319 unsafe { ffi::whiteout_m3_M3OneBoneSolver_resize_dependents(self.raw.as_ptr(), count) }
14322 }
14323
14324 pub fn bone(&self) -> u16 {
14326 unsafe { ffi::whiteout_m3_M3OneBoneSolver_get_bone(self.raw.as_ptr()) }
14328 }
14329
14330 pub fn set_bone(&mut self, value: u16) {
14331 unsafe { ffi::whiteout_m3_M3OneBoneSolver_set_bone(self.raw.as_ptr(), value) }
14333 }
14334
14335 pub fn bone_fallback(&self) -> u16 {
14337 unsafe { ffi::whiteout_m3_M3OneBoneSolver_get_boneFallback(self.raw.as_ptr()) }
14339 }
14340
14341 pub fn set_bone_fallback(&mut self, value: u16) {
14342 unsafe { ffi::whiteout_m3_M3OneBoneSolver_set_boneFallback(self.raw.as_ptr(), value) }
14344 }
14345
14346 pub fn max_angle(&self) -> f32 {
14348 unsafe { ffi::whiteout_m3_M3OneBoneSolver_get_maxAngle(self.raw.as_ptr()) }
14350 }
14351
14352 pub fn set_max_angle(&mut self, value: f32) {
14353 unsafe { ffi::whiteout_m3_M3OneBoneSolver_set_maxAngle(self.raw.as_ptr(), value) }
14355 }
14356}
14357
14358impl Default for OneBoneSolver {
14359 fn default() -> Self {
14360 Self::new()
14361 }
14362}
14363
14364pub struct ShadowBox {
14368 pub(crate) raw: core::ptr::NonNull<ffi::whiteout_M3ShadowBox>,
14369}
14370
14371impl Drop for ShadowBox {
14372 fn drop(&mut self) {
14373 unsafe { ffi::whiteout_m3_M3ShadowBox_delete(self.raw.as_ptr()) }
14375 }
14376}
14377
14378impl ShadowBox {
14379 #[allow(dead_code)] pub(crate) unsafe fn from_raw(raw: *mut ffi::whiteout_M3ShadowBox) -> Option<Self> {
14383 core::ptr::NonNull::new(raw).map(|raw| ShadowBox { raw })
14384 }
14385}
14386
14387unsafe impl Send for ShadowBox {}
14392
14393impl core::fmt::Debug for ShadowBox {
14394 fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
14395 f.debug_struct("ShadowBox").finish_non_exhaustive()
14396 }
14397}
14398
14399impl ShadowBox {
14400 pub fn new() -> Self {
14403 unsafe {
14406 let raw = ffi::whiteout_m3_M3ShadowBox_new();
14407 Self::from_raw(raw).expect("native ShadowBox allocation failed")
14408 }
14409 }
14410}
14411
14412impl Default for ShadowBox {
14413 fn default() -> Self {
14414 Self::new()
14415 }
14416}
14417
14418pub struct ViewVolume {
14422 pub(crate) raw: core::ptr::NonNull<ffi::whiteout_M3ViewVolume>,
14423}
14424
14425impl Drop for ViewVolume {
14426 fn drop(&mut self) {
14427 unsafe { ffi::whiteout_m3_M3ViewVolume_delete(self.raw.as_ptr()) }
14429 }
14430}
14431
14432impl ViewVolume {
14433 #[allow(dead_code)] pub(crate) unsafe fn from_raw(raw: *mut ffi::whiteout_M3ViewVolume) -> Option<Self> {
14437 core::ptr::NonNull::new(raw).map(|raw| ViewVolume { raw })
14438 }
14439}
14440
14441unsafe impl Send for ViewVolume {}
14446
14447impl core::fmt::Debug for ViewVolume {
14448 fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
14449 f.debug_struct("ViewVolume").finish_non_exhaustive()
14450 }
14451}
14452
14453impl ViewVolume {
14454 pub fn new() -> Self {
14457 unsafe {
14460 let raw = ffi::whiteout_m3_M3ViewVolume_new();
14461 Self::from_raw(raw).expect("native ViewVolume allocation failed")
14462 }
14463 }
14464
14465 pub fn node_index(&self) -> u32 {
14467 unsafe { ffi::whiteout_m3_M3ViewVolume_get_nodeIndex(self.raw.as_ptr()) }
14469 }
14470
14471 pub fn set_node_index(&mut self, value: u32) {
14472 unsafe { ffi::whiteout_m3_M3ViewVolume_set_nodeIndex(self.raw.as_ptr(), value) }
14474 }
14475
14476 pub fn size(&self) -> crate::support::Ref<'_, AnimRefVector3f> {
14479 unsafe {
14482 crate::support::Ref::new(AnimRefVector3f {
14483 raw: core::ptr::NonNull::new_unchecked(ffi::whiteout_m3_M3ViewVolume_get_size(
14484 self.raw.as_ptr(),
14485 )),
14486 })
14487 }
14488 }
14489
14490 pub fn size_mut(&mut self) -> crate::support::RefMut<'_, AnimRefVector3f> {
14491 unsafe {
14493 crate::support::RefMut::new(AnimRefVector3f {
14494 raw: core::ptr::NonNull::new_unchecked(ffi::whiteout_m3_M3ViewVolume_get_size(
14495 self.raw.as_ptr(),
14496 )),
14497 })
14498 }
14499 }
14500}
14501
14502impl Default for ViewVolume {
14503 fn default() -> Self {
14504 Self::new()
14505 }
14506}
14507
14508pub struct TrailingModel {
14512 pub(crate) raw: core::ptr::NonNull<ffi::whiteout_M3TrailingModel>,
14513}
14514
14515impl Drop for TrailingModel {
14516 fn drop(&mut self) {
14517 unsafe { ffi::whiteout_m3_M3TrailingModel_delete(self.raw.as_ptr()) }
14519 }
14520}
14521
14522impl TrailingModel {
14523 #[allow(dead_code)] pub(crate) unsafe fn from_raw(raw: *mut ffi::whiteout_M3TrailingModel) -> Option<Self> {
14527 core::ptr::NonNull::new(raw).map(|raw| TrailingModel { raw })
14528 }
14529}
14530
14531unsafe impl Send for TrailingModel {}
14536
14537impl core::fmt::Debug for TrailingModel {
14538 fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
14539 f.debug_struct("TrailingModel").finish_non_exhaustive()
14540 }
14541}
14542
14543impl TrailingModel {
14544 pub fn new() -> Self {
14547 unsafe {
14550 let raw = ffi::whiteout_m3_M3TrailingModel_new();
14551 Self::from_raw(raw).expect("native TrailingModel allocation failed")
14552 }
14553 }
14554
14555 pub fn vectors(&self) -> &[crate::math::Vector3f] {
14558 unsafe {
14561 let n = ffi::whiteout_m3_M3TrailingModel_get_vectors_count(self.raw.as_ptr());
14562 let p = ffi::whiteout_m3_M3TrailingModel_get_vectors_data(self.raw.as_ptr())
14563 as *const crate::math::Vector3f;
14564 if p.is_null() || n == 0 {
14565 &[]
14566 } else {
14567 core::slice::from_raw_parts(p, n)
14568 }
14569 }
14570 }
14571
14572 pub fn vectors_mut(&mut self) -> &mut [crate::math::Vector3f] {
14574 unsafe {
14576 let n = ffi::whiteout_m3_M3TrailingModel_get_vectors_count(self.raw.as_ptr());
14577 let p = ffi::whiteout_m3_M3TrailingModel_get_vectors_data(self.raw.as_ptr())
14578 as *const crate::math::Vector3f as *mut crate::math::Vector3f;
14579 if p.is_null() || n == 0 {
14580 &mut []
14581 } else {
14582 core::slice::from_raw_parts_mut(p, n)
14583 }
14584 }
14585 }
14586
14587 pub fn set_vectors(&mut self, values: &[crate::math::Vector3f]) {
14588 unsafe {
14590 ffi::whiteout_m3_M3TrailingModel_assign_vectors(
14591 self.raw.as_ptr(),
14592 values.as_ptr() as *const _,
14593 values.len(),
14594 )
14595 }
14596 }
14597
14598 pub fn resize_vectors(&mut self, count: usize) {
14599 unsafe { ffi::whiteout_m3_M3TrailingModel_resize_vectors(self.raw.as_ptr(), count) }
14602 }
14603
14604 pub fn param_0(&self) -> f32 {
14606 unsafe { ffi::whiteout_m3_M3TrailingModel_get_param0(self.raw.as_ptr()) }
14608 }
14609
14610 pub fn set_param_0(&mut self, value: f32) {
14611 unsafe { ffi::whiteout_m3_M3TrailingModel_set_param0(self.raw.as_ptr(), value) }
14613 }
14614
14615 pub fn param_1(&self) -> f32 {
14617 unsafe { ffi::whiteout_m3_M3TrailingModel_get_param1(self.raw.as_ptr()) }
14619 }
14620
14621 pub fn set_param_1(&mut self, value: f32) {
14622 unsafe { ffi::whiteout_m3_M3TrailingModel_set_param1(self.raw.as_ptr(), value) }
14624 }
14625
14626 pub fn anim_float_0(&self) -> crate::support::Ref<'_, AnimRefF32> {
14629 unsafe {
14632 crate::support::Ref::new(AnimRefF32 {
14633 raw: core::ptr::NonNull::new_unchecked(
14634 ffi::whiteout_m3_M3TrailingModel_get_animFloat0(self.raw.as_ptr()),
14635 ),
14636 })
14637 }
14638 }
14639
14640 pub fn anim_float_0_mut(&mut self) -> crate::support::RefMut<'_, AnimRefF32> {
14641 unsafe {
14643 crate::support::RefMut::new(AnimRefF32 {
14644 raw: core::ptr::NonNull::new_unchecked(
14645 ffi::whiteout_m3_M3TrailingModel_get_animFloat0(self.raw.as_ptr()),
14646 ),
14647 })
14648 }
14649 }
14650
14651 pub fn anim_float_1(&self) -> crate::support::Ref<'_, AnimRefF32> {
14654 unsafe {
14657 crate::support::Ref::new(AnimRefF32 {
14658 raw: core::ptr::NonNull::new_unchecked(
14659 ffi::whiteout_m3_M3TrailingModel_get_animFloat1(self.raw.as_ptr()),
14660 ),
14661 })
14662 }
14663 }
14664
14665 pub fn anim_float_1_mut(&mut self) -> crate::support::RefMut<'_, AnimRefF32> {
14666 unsafe {
14668 crate::support::RefMut::new(AnimRefF32 {
14669 raw: core::ptr::NonNull::new_unchecked(
14670 ffi::whiteout_m3_M3TrailingModel_get_animFloat1(self.raw.as_ptr()),
14671 ),
14672 })
14673 }
14674 }
14675
14676 pub fn flag(&self) -> u32 {
14678 unsafe { ffi::whiteout_m3_M3TrailingModel_get_flag(self.raw.as_ptr()) }
14680 }
14681
14682 pub fn set_flag(&mut self, value: u32) {
14683 unsafe { ffi::whiteout_m3_M3TrailingModel_set_flag(self.raw.as_ptr(), value) }
14685 }
14686
14687 pub fn reserved_0(&self) -> u32 {
14689 unsafe { ffi::whiteout_m3_M3TrailingModel_get_reserved0(self.raw.as_ptr()) }
14691 }
14692
14693 pub fn set_reserved_0(&mut self, value: u32) {
14694 unsafe { ffi::whiteout_m3_M3TrailingModel_set_reserved0(self.raw.as_ptr(), value) }
14696 }
14697
14698 pub fn reserved_1(&self) -> u32 {
14700 unsafe { ffi::whiteout_m3_M3TrailingModel_get_reserved1(self.raw.as_ptr()) }
14702 }
14703
14704 pub fn set_reserved_1(&mut self, value: u32) {
14705 unsafe { ffi::whiteout_m3_M3TrailingModel_set_reserved1(self.raw.as_ptr(), value) }
14707 }
14708}
14709
14710impl Default for TrailingModel {
14711 fn default() -> Self {
14712 Self::new()
14713 }
14714}
14715
14716pub struct Force {
14720 pub(crate) raw: core::ptr::NonNull<ffi::whiteout_M3Force>,
14721}
14722
14723impl Drop for Force {
14724 fn drop(&mut self) {
14725 unsafe { ffi::whiteout_m3_M3Force_delete(self.raw.as_ptr()) }
14727 }
14728}
14729
14730impl Force {
14731 #[allow(dead_code)] pub(crate) unsafe fn from_raw(raw: *mut ffi::whiteout_M3Force) -> Option<Self> {
14735 core::ptr::NonNull::new(raw).map(|raw| Force { raw })
14736 }
14737}
14738
14739unsafe impl Send for Force {}
14744
14745impl core::fmt::Debug for Force {
14746 fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
14747 f.debug_struct("Force").finish_non_exhaustive()
14748 }
14749}
14750
14751impl Force {
14752 pub fn new() -> Self {
14755 unsafe {
14758 let raw = ffi::whiteout_m3_M3Force_new();
14759 Self::from_raw(raw).expect("native Force allocation failed")
14760 }
14761 }
14762
14763 pub fn force_type(&self) -> ForceType {
14765 unsafe { ffi::whiteout_m3_M3Force_get_forceType(self.raw.as_ptr()) }
14767 .try_into()
14768 .expect("unknown enum discriminant from the native library")
14769 }
14770
14771 pub fn set_force_type(&mut self, value: ForceType) {
14772 unsafe { ffi::whiteout_m3_M3Force_set_forceType(self.raw.as_ptr(), value as i32) }
14774 }
14775
14776 pub fn force_shape(&self) -> ForceShape {
14778 unsafe { ffi::whiteout_m3_M3Force_get_forceShape(self.raw.as_ptr()) }
14780 .try_into()
14781 .expect("unknown enum discriminant from the native library")
14782 }
14783
14784 pub fn set_force_shape(&mut self, value: ForceShape) {
14785 unsafe { ffi::whiteout_m3_M3Force_set_forceShape(self.raw.as_ptr(), value as i32) }
14787 }
14788
14789 pub fn unknown(&self) -> u32 {
14791 unsafe { ffi::whiteout_m3_M3Force_get_unknown(self.raw.as_ptr()) }
14793 }
14794
14795 pub fn set_unknown(&mut self, value: u32) {
14796 unsafe { ffi::whiteout_m3_M3Force_set_unknown(self.raw.as_ptr(), value) }
14798 }
14799
14800 pub fn bone_index(&self) -> u32 {
14802 unsafe { ffi::whiteout_m3_M3Force_get_boneIndex(self.raw.as_ptr()) }
14804 }
14805
14806 pub fn set_bone_index(&mut self, value: u32) {
14807 unsafe { ffi::whiteout_m3_M3Force_set_boneIndex(self.raw.as_ptr(), value) }
14809 }
14810
14811 pub fn flags(&self) -> ForceFlag {
14813 ForceFlag(unsafe { ffi::whiteout_m3_M3Force_get_flags(self.raw.as_ptr()) })
14815 }
14816
14817 pub fn set_flags(&mut self, value: ForceFlag) {
14818 unsafe { ffi::whiteout_m3_M3Force_set_flags(self.raw.as_ptr(), value.0) }
14820 }
14821
14822 pub fn local_channels(&self) -> u32 {
14824 unsafe { ffi::whiteout_m3_M3Force_get_localChannels(self.raw.as_ptr()) }
14826 }
14827
14828 pub fn set_local_channels(&mut self, value: u32) {
14829 unsafe { ffi::whiteout_m3_M3Force_set_localChannels(self.raw.as_ptr(), value) }
14831 }
14832
14833 pub fn strength(&self) -> crate::support::Ref<'_, AnimRefF32> {
14836 unsafe {
14839 crate::support::Ref::new(AnimRefF32 {
14840 raw: core::ptr::NonNull::new_unchecked(ffi::whiteout_m3_M3Force_get_strength(
14841 self.raw.as_ptr(),
14842 )),
14843 })
14844 }
14845 }
14846
14847 pub fn strength_mut(&mut self) -> crate::support::RefMut<'_, AnimRefF32> {
14848 unsafe {
14850 crate::support::RefMut::new(AnimRefF32 {
14851 raw: core::ptr::NonNull::new_unchecked(ffi::whiteout_m3_M3Force_get_strength(
14852 self.raw.as_ptr(),
14853 )),
14854 })
14855 }
14856 }
14857
14858 pub fn width(&self) -> crate::support::Ref<'_, AnimRefF32> {
14861 unsafe {
14864 crate::support::Ref::new(AnimRefF32 {
14865 raw: core::ptr::NonNull::new_unchecked(ffi::whiteout_m3_M3Force_get_width(
14866 self.raw.as_ptr(),
14867 )),
14868 })
14869 }
14870 }
14871
14872 pub fn width_mut(&mut self) -> crate::support::RefMut<'_, AnimRefF32> {
14873 unsafe {
14875 crate::support::RefMut::new(AnimRefF32 {
14876 raw: core::ptr::NonNull::new_unchecked(ffi::whiteout_m3_M3Force_get_width(
14877 self.raw.as_ptr(),
14878 )),
14879 })
14880 }
14881 }
14882
14883 pub fn height(&self) -> crate::support::Ref<'_, AnimRefF32> {
14886 unsafe {
14889 crate::support::Ref::new(AnimRefF32 {
14890 raw: core::ptr::NonNull::new_unchecked(ffi::whiteout_m3_M3Force_get_height(
14891 self.raw.as_ptr(),
14892 )),
14893 })
14894 }
14895 }
14896
14897 pub fn height_mut(&mut self) -> crate::support::RefMut<'_, AnimRefF32> {
14898 unsafe {
14900 crate::support::RefMut::new(AnimRefF32 {
14901 raw: core::ptr::NonNull::new_unchecked(ffi::whiteout_m3_M3Force_get_height(
14902 self.raw.as_ptr(),
14903 )),
14904 })
14905 }
14906 }
14907
14908 pub fn length(&self) -> crate::support::Ref<'_, AnimRefF32> {
14911 unsafe {
14914 crate::support::Ref::new(AnimRefF32 {
14915 raw: core::ptr::NonNull::new_unchecked(ffi::whiteout_m3_M3Force_get_length(
14916 self.raw.as_ptr(),
14917 )),
14918 })
14919 }
14920 }
14921
14922 pub fn length_mut(&mut self) -> crate::support::RefMut<'_, AnimRefF32> {
14923 unsafe {
14925 crate::support::RefMut::new(AnimRefF32 {
14926 raw: core::ptr::NonNull::new_unchecked(ffi::whiteout_m3_M3Force_get_length(
14927 self.raw.as_ptr(),
14928 )),
14929 })
14930 }
14931 }
14932}
14933
14934impl Default for Force {
14935 fn default() -> Self {
14936 Self::new()
14937 }
14938}
14939
14940pub struct Warp {
14944 pub(crate) raw: core::ptr::NonNull<ffi::whiteout_M3Warp>,
14945}
14946
14947impl Drop for Warp {
14948 fn drop(&mut self) {
14949 unsafe { ffi::whiteout_m3_M3Warp_delete(self.raw.as_ptr()) }
14951 }
14952}
14953
14954impl Warp {
14955 #[allow(dead_code)] pub(crate) unsafe fn from_raw(raw: *mut ffi::whiteout_M3Warp) -> Option<Self> {
14959 core::ptr::NonNull::new(raw).map(|raw| Warp { raw })
14960 }
14961}
14962
14963unsafe impl Send for Warp {}
14968
14969impl core::fmt::Debug for Warp {
14970 fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
14971 f.debug_struct("Warp").finish_non_exhaustive()
14972 }
14973}
14974
14975impl Warp {
14976 pub fn new() -> Self {
14979 unsafe {
14982 let raw = ffi::whiteout_m3_M3Warp_new();
14983 Self::from_raw(raw).expect("native Warp allocation failed")
14984 }
14985 }
14986
14987 pub fn warp_type(&self) -> u32 {
14989 unsafe { ffi::whiteout_m3_M3Warp_get_warpType(self.raw.as_ptr()) }
14991 }
14992
14993 pub fn set_warp_type(&mut self, value: u32) {
14994 unsafe { ffi::whiteout_m3_M3Warp_set_warpType(self.raw.as_ptr(), value) }
14996 }
14997
14998 pub fn bone_index(&self) -> u32 {
15000 unsafe { ffi::whiteout_m3_M3Warp_get_boneIndex(self.raw.as_ptr()) }
15002 }
15003
15004 pub fn set_bone_index(&mut self, value: u32) {
15005 unsafe { ffi::whiteout_m3_M3Warp_set_boneIndex(self.raw.as_ptr(), value) }
15007 }
15008
15009 pub fn unknown(&self) -> u32 {
15011 unsafe { ffi::whiteout_m3_M3Warp_get_unknown(self.raw.as_ptr()) }
15013 }
15014
15015 pub fn set_unknown(&mut self, value: u32) {
15016 unsafe { ffi::whiteout_m3_M3Warp_set_unknown(self.raw.as_ptr(), value) }
15018 }
15019
15020 pub fn radius(&self) -> crate::support::Ref<'_, AnimRefF32> {
15023 unsafe {
15026 crate::support::Ref::new(AnimRefF32 {
15027 raw: core::ptr::NonNull::new_unchecked(ffi::whiteout_m3_M3Warp_get_radius(
15028 self.raw.as_ptr(),
15029 )),
15030 })
15031 }
15032 }
15033
15034 pub fn radius_mut(&mut self) -> crate::support::RefMut<'_, AnimRefF32> {
15035 unsafe {
15037 crate::support::RefMut::new(AnimRefF32 {
15038 raw: core::ptr::NonNull::new_unchecked(ffi::whiteout_m3_M3Warp_get_radius(
15039 self.raw.as_ptr(),
15040 )),
15041 })
15042 }
15043 }
15044
15045 pub fn height(&self) -> crate::support::Ref<'_, AnimRefF32> {
15048 unsafe {
15051 crate::support::Ref::new(AnimRefF32 {
15052 raw: core::ptr::NonNull::new_unchecked(ffi::whiteout_m3_M3Warp_get_height(
15053 self.raw.as_ptr(),
15054 )),
15055 })
15056 }
15057 }
15058
15059 pub fn height_mut(&mut self) -> crate::support::RefMut<'_, AnimRefF32> {
15060 unsafe {
15062 crate::support::RefMut::new(AnimRefF32 {
15063 raw: core::ptr::NonNull::new_unchecked(ffi::whiteout_m3_M3Warp_get_height(
15064 self.raw.as_ptr(),
15065 )),
15066 })
15067 }
15068 }
15069
15070 pub fn strength(&self) -> crate::support::Ref<'_, AnimRefF32> {
15073 unsafe {
15076 crate::support::Ref::new(AnimRefF32 {
15077 raw: core::ptr::NonNull::new_unchecked(ffi::whiteout_m3_M3Warp_get_strength(
15078 self.raw.as_ptr(),
15079 )),
15080 })
15081 }
15082 }
15083
15084 pub fn strength_mut(&mut self) -> crate::support::RefMut<'_, AnimRefF32> {
15085 unsafe {
15087 crate::support::RefMut::new(AnimRefF32 {
15088 raw: core::ptr::NonNull::new_unchecked(ffi::whiteout_m3_M3Warp_get_strength(
15089 self.raw.as_ptr(),
15090 )),
15091 })
15092 }
15093 }
15094
15095 pub fn angular(&self) -> crate::support::Ref<'_, AnimRefF32> {
15098 unsafe {
15101 crate::support::Ref::new(AnimRefF32 {
15102 raw: core::ptr::NonNull::new_unchecked(ffi::whiteout_m3_M3Warp_get_angular(
15103 self.raw.as_ptr(),
15104 )),
15105 })
15106 }
15107 }
15108
15109 pub fn angular_mut(&mut self) -> crate::support::RefMut<'_, AnimRefF32> {
15110 unsafe {
15112 crate::support::RefMut::new(AnimRefF32 {
15113 raw: core::ptr::NonNull::new_unchecked(ffi::whiteout_m3_M3Warp_get_angular(
15114 self.raw.as_ptr(),
15115 )),
15116 })
15117 }
15118 }
15119
15120 pub fn axial(&self) -> crate::support::Ref<'_, AnimRefF32> {
15123 unsafe {
15126 crate::support::Ref::new(AnimRefF32 {
15127 raw: core::ptr::NonNull::new_unchecked(ffi::whiteout_m3_M3Warp_get_axial(
15128 self.raw.as_ptr(),
15129 )),
15130 })
15131 }
15132 }
15133
15134 pub fn axial_mut(&mut self) -> crate::support::RefMut<'_, AnimRefF32> {
15135 unsafe {
15137 crate::support::RefMut::new(AnimRefF32 {
15138 raw: core::ptr::NonNull::new_unchecked(ffi::whiteout_m3_M3Warp_get_axial(
15139 self.raw.as_ptr(),
15140 )),
15141 })
15142 }
15143 }
15144
15145 pub fn radial(&self) -> crate::support::Ref<'_, AnimRefF32> {
15148 unsafe {
15151 crate::support::Ref::new(AnimRefF32 {
15152 raw: core::ptr::NonNull::new_unchecked(ffi::whiteout_m3_M3Warp_get_radial(
15153 self.raw.as_ptr(),
15154 )),
15155 })
15156 }
15157 }
15158
15159 pub fn radial_mut(&mut self) -> crate::support::RefMut<'_, AnimRefF32> {
15160 unsafe {
15162 crate::support::RefMut::new(AnimRefF32 {
15163 raw: core::ptr::NonNull::new_unchecked(ffi::whiteout_m3_M3Warp_get_radial(
15164 self.raw.as_ptr(),
15165 )),
15166 })
15167 }
15168 }
15169}
15170
15171impl Default for Warp {
15172 fn default() -> Self {
15173 Self::new()
15174 }
15175}
15176
15177pub struct ConvexHullHalfEdge {
15181 pub(crate) raw: core::ptr::NonNull<ffi::whiteout_M3ConvexHullHalfEdge>,
15182}
15183
15184impl Drop for ConvexHullHalfEdge {
15185 fn drop(&mut self) {
15186 unsafe { ffi::whiteout_m3_M3ConvexHullHalfEdge_delete(self.raw.as_ptr()) }
15188 }
15189}
15190
15191impl ConvexHullHalfEdge {
15192 #[allow(dead_code)] pub(crate) unsafe fn from_raw(raw: *mut ffi::whiteout_M3ConvexHullHalfEdge) -> Option<Self> {
15196 core::ptr::NonNull::new(raw).map(|raw| ConvexHullHalfEdge { raw })
15197 }
15198}
15199
15200unsafe impl Send for ConvexHullHalfEdge {}
15205
15206impl core::fmt::Debug for ConvexHullHalfEdge {
15207 fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
15208 f.debug_struct("ConvexHullHalfEdge").finish_non_exhaustive()
15209 }
15210}
15211
15212impl ConvexHullHalfEdge {
15213 pub fn new() -> Self {
15216 unsafe {
15219 let raw = ffi::whiteout_m3_M3ConvexHullHalfEdge_new();
15220 Self::from_raw(raw).expect("native ConvexHullHalfEdge allocation failed")
15221 }
15222 }
15223
15224 pub fn type_(&self) -> u8 {
15226 unsafe { ffi::whiteout_m3_M3ConvexHullHalfEdge_get_type(self.raw.as_ptr()) }
15228 }
15229
15230 pub fn set_type_(&mut self, value: u8) {
15231 unsafe { ffi::whiteout_m3_M3ConvexHullHalfEdge_set_type(self.raw.as_ptr(), value) }
15233 }
15234
15235 pub fn face_index(&self) -> u8 {
15237 unsafe { ffi::whiteout_m3_M3ConvexHullHalfEdge_get_faceIndex(self.raw.as_ptr()) }
15239 }
15240
15241 pub fn set_face_index(&mut self, value: u8) {
15242 unsafe { ffi::whiteout_m3_M3ConvexHullHalfEdge_set_faceIndex(self.raw.as_ptr(), value) }
15244 }
15245
15246 pub fn vertex_index(&self) -> u8 {
15248 unsafe { ffi::whiteout_m3_M3ConvexHullHalfEdge_get_vertexIndex(self.raw.as_ptr()) }
15250 }
15251
15252 pub fn set_vertex_index(&mut self, value: u8) {
15253 unsafe { ffi::whiteout_m3_M3ConvexHullHalfEdge_set_vertexIndex(self.raw.as_ptr(), value) }
15255 }
15256
15257 pub fn next_around_vertex(&self) -> u8 {
15259 unsafe { ffi::whiteout_m3_M3ConvexHullHalfEdge_get_nextAroundVertex(self.raw.as_ptr()) }
15261 }
15262
15263 pub fn set_next_around_vertex(&mut self, value: u8) {
15264 unsafe {
15266 ffi::whiteout_m3_M3ConvexHullHalfEdge_set_nextAroundVertex(self.raw.as_ptr(), value)
15267 }
15268 }
15269}
15270
15271impl Default for ConvexHullHalfEdge {
15272 fn default() -> Self {
15273 Self::new()
15274 }
15275}
15276
15277pub struct PhysicsMeshBvhNode {
15293 pub(crate) raw: core::ptr::NonNull<ffi::whiteout_M3PhysicsMeshBvhNode>,
15294}
15295
15296impl Drop for PhysicsMeshBvhNode {
15297 fn drop(&mut self) {
15298 unsafe { ffi::whiteout_m3_M3PhysicsMeshBvhNode_delete(self.raw.as_ptr()) }
15300 }
15301}
15302
15303impl PhysicsMeshBvhNode {
15304 #[allow(dead_code)] pub(crate) unsafe fn from_raw(raw: *mut ffi::whiteout_M3PhysicsMeshBvhNode) -> Option<Self> {
15308 core::ptr::NonNull::new(raw).map(|raw| PhysicsMeshBvhNode { raw })
15309 }
15310}
15311
15312unsafe impl Send for PhysicsMeshBvhNode {}
15317
15318impl core::fmt::Debug for PhysicsMeshBvhNode {
15319 fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
15320 f.debug_struct("PhysicsMeshBvhNode").finish_non_exhaustive()
15321 }
15322}
15323
15324impl PhysicsMeshBvhNode {
15325 pub fn new() -> Self {
15328 unsafe {
15331 let raw = ffi::whiteout_m3_M3PhysicsMeshBvhNode_new();
15332 Self::from_raw(raw).expect("native PhysicsMeshBvhNode allocation failed")
15333 }
15334 }
15335}
15336
15337impl Default for PhysicsMeshBvhNode {
15338 fn default() -> Self {
15339 Self::new()
15340 }
15341}
15342
15343pub struct PhysicsMeshTriangle {
15345 pub(crate) raw: core::ptr::NonNull<ffi::whiteout_M3PhysicsMeshTriangle>,
15346}
15347
15348impl Drop for PhysicsMeshTriangle {
15349 fn drop(&mut self) {
15350 unsafe { ffi::whiteout_m3_M3PhysicsMeshTriangle_delete(self.raw.as_ptr()) }
15352 }
15353}
15354
15355impl PhysicsMeshTriangle {
15356 #[allow(dead_code)] pub(crate) unsafe fn from_raw(raw: *mut ffi::whiteout_M3PhysicsMeshTriangle) -> Option<Self> {
15360 core::ptr::NonNull::new(raw).map(|raw| PhysicsMeshTriangle { raw })
15361 }
15362}
15363
15364unsafe impl Send for PhysicsMeshTriangle {}
15369
15370impl core::fmt::Debug for PhysicsMeshTriangle {
15371 fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
15372 f.debug_struct("PhysicsMeshTriangle")
15373 .finish_non_exhaustive()
15374 }
15375}
15376
15377impl PhysicsMeshTriangle {
15378 pub fn new() -> Self {
15381 unsafe {
15384 let raw = ffi::whiteout_m3_M3PhysicsMeshTriangle_new();
15385 Self::from_raw(raw).expect("native PhysicsMeshTriangle allocation failed")
15386 }
15387 }
15388
15389 pub fn vertex_index_0(&self) -> u32 {
15391 unsafe { ffi::whiteout_m3_M3PhysicsMeshTriangle_get_vertexIndex0(self.raw.as_ptr()) }
15393 }
15394
15395 pub fn set_vertex_index_0(&mut self, value: u32) {
15396 unsafe { ffi::whiteout_m3_M3PhysicsMeshTriangle_set_vertexIndex0(self.raw.as_ptr(), value) }
15398 }
15399
15400 pub fn vertex_index_1(&self) -> u32 {
15402 unsafe { ffi::whiteout_m3_M3PhysicsMeshTriangle_get_vertexIndex1(self.raw.as_ptr()) }
15404 }
15405
15406 pub fn set_vertex_index_1(&mut self, value: u32) {
15407 unsafe { ffi::whiteout_m3_M3PhysicsMeshTriangle_set_vertexIndex1(self.raw.as_ptr(), value) }
15409 }
15410
15411 pub fn vertex_index_2(&self) -> u32 {
15413 unsafe { ffi::whiteout_m3_M3PhysicsMeshTriangle_get_vertexIndex2(self.raw.as_ptr()) }
15415 }
15416
15417 pub fn set_vertex_index_2(&mut self, value: u32) {
15418 unsafe { ffi::whiteout_m3_M3PhysicsMeshTriangle_set_vertexIndex2(self.raw.as_ptr(), value) }
15420 }
15421
15422 pub fn edge_index_0(&self) -> u32 {
15424 unsafe { ffi::whiteout_m3_M3PhysicsMeshTriangle_get_edgeIndex0(self.raw.as_ptr()) }
15426 }
15427
15428 pub fn set_edge_index_0(&mut self, value: u32) {
15429 unsafe { ffi::whiteout_m3_M3PhysicsMeshTriangle_set_edgeIndex0(self.raw.as_ptr(), value) }
15431 }
15432
15433 pub fn edge_index_1(&self) -> u32 {
15435 unsafe { ffi::whiteout_m3_M3PhysicsMeshTriangle_get_edgeIndex1(self.raw.as_ptr()) }
15437 }
15438
15439 pub fn set_edge_index_1(&mut self, value: u32) {
15440 unsafe { ffi::whiteout_m3_M3PhysicsMeshTriangle_set_edgeIndex1(self.raw.as_ptr(), value) }
15442 }
15443
15444 pub fn edge_index_2(&self) -> u32 {
15446 unsafe { ffi::whiteout_m3_M3PhysicsMeshTriangle_get_edgeIndex2(self.raw.as_ptr()) }
15448 }
15449
15450 pub fn set_edge_index_2(&mut self, value: u32) {
15451 unsafe { ffi::whiteout_m3_M3PhysicsMeshTriangle_set_edgeIndex2(self.raw.as_ptr(), value) }
15453 }
15454
15455 pub fn reserved(&self) -> u16 {
15457 unsafe { ffi::whiteout_m3_M3PhysicsMeshTriangle_get_reserved(self.raw.as_ptr()) }
15459 }
15460
15461 pub fn set_reserved(&mut self, value: u16) {
15462 unsafe { ffi::whiteout_m3_M3PhysicsMeshTriangle_set_reserved(self.raw.as_ptr(), value) }
15464 }
15465
15466 pub fn flags(&self) -> u16 {
15468 unsafe { ffi::whiteout_m3_M3PhysicsMeshTriangle_get_flags(self.raw.as_ptr()) }
15470 }
15471
15472 pub fn set_flags(&mut self, value: u16) {
15473 unsafe { ffi::whiteout_m3_M3PhysicsMeshTriangle_set_flags(self.raw.as_ptr(), value) }
15475 }
15476}
15477
15478impl Default for PhysicsMeshTriangle {
15479 fn default() -> Self {
15480 Self::new()
15481 }
15482}
15483
15484pub struct PhysicsMeshEdge {
15486 pub(crate) raw: core::ptr::NonNull<ffi::whiteout_M3PhysicsMeshEdge>,
15487}
15488
15489impl Drop for PhysicsMeshEdge {
15490 fn drop(&mut self) {
15491 unsafe { ffi::whiteout_m3_M3PhysicsMeshEdge_delete(self.raw.as_ptr()) }
15493 }
15494}
15495
15496impl PhysicsMeshEdge {
15497 #[allow(dead_code)] pub(crate) unsafe fn from_raw(raw: *mut ffi::whiteout_M3PhysicsMeshEdge) -> Option<Self> {
15501 core::ptr::NonNull::new(raw).map(|raw| PhysicsMeshEdge { raw })
15502 }
15503}
15504
15505unsafe impl Send for PhysicsMeshEdge {}
15510
15511impl core::fmt::Debug for PhysicsMeshEdge {
15512 fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
15513 f.debug_struct("PhysicsMeshEdge").finish_non_exhaustive()
15514 }
15515}
15516
15517impl PhysicsMeshEdge {
15518 pub fn new() -> Self {
15521 unsafe {
15524 let raw = ffi::whiteout_m3_M3PhysicsMeshEdge_new();
15525 Self::from_raw(raw).expect("native PhysicsMeshEdge allocation failed")
15526 }
15527 }
15528
15529 pub fn edge_type(&self) -> u32 {
15531 unsafe { ffi::whiteout_m3_M3PhysicsMeshEdge_get_edgeType(self.raw.as_ptr()) }
15533 }
15534
15535 pub fn set_edge_type(&mut self, value: u32) {
15536 unsafe { ffi::whiteout_m3_M3PhysicsMeshEdge_set_edgeType(self.raw.as_ptr(), value) }
15538 }
15539
15540 pub fn vertex_a(&self) -> u32 {
15542 unsafe { ffi::whiteout_m3_M3PhysicsMeshEdge_get_vertexA(self.raw.as_ptr()) }
15544 }
15545
15546 pub fn set_vertex_a(&mut self, value: u32) {
15547 unsafe { ffi::whiteout_m3_M3PhysicsMeshEdge_set_vertexA(self.raw.as_ptr(), value) }
15549 }
15550
15551 pub fn vertex_b(&self) -> u32 {
15553 unsafe { ffi::whiteout_m3_M3PhysicsMeshEdge_get_vertexB(self.raw.as_ptr()) }
15555 }
15556
15557 pub fn set_vertex_b(&mut self, value: u32) {
15558 unsafe { ffi::whiteout_m3_M3PhysicsMeshEdge_set_vertexB(self.raw.as_ptr(), value) }
15560 }
15561
15562 pub fn face_a(&self) -> u32 {
15564 unsafe { ffi::whiteout_m3_M3PhysicsMeshEdge_get_faceA(self.raw.as_ptr()) }
15566 }
15567
15568 pub fn set_face_a(&mut self, value: u32) {
15569 unsafe { ffi::whiteout_m3_M3PhysicsMeshEdge_set_faceA(self.raw.as_ptr(), value) }
15571 }
15572
15573 pub fn face_b(&self) -> u32 {
15575 unsafe { ffi::whiteout_m3_M3PhysicsMeshEdge_get_faceB(self.raw.as_ptr()) }
15577 }
15578
15579 pub fn set_face_b(&mut self, value: u32) {
15580 unsafe { ffi::whiteout_m3_M3PhysicsMeshEdge_set_faceB(self.raw.as_ptr(), value) }
15582 }
15583}
15584
15585impl Default for PhysicsMeshEdge {
15586 fn default() -> Self {
15587 Self::new()
15588 }
15589}
15590
15591pub struct PhysicsShape {
15595 pub(crate) raw: core::ptr::NonNull<ffi::whiteout_M3PhysicsShape>,
15596}
15597
15598impl Drop for PhysicsShape {
15599 fn drop(&mut self) {
15600 unsafe { ffi::whiteout_m3_M3PhysicsShape_delete(self.raw.as_ptr()) }
15602 }
15603}
15604
15605impl PhysicsShape {
15606 #[allow(dead_code)] pub(crate) unsafe fn from_raw(raw: *mut ffi::whiteout_M3PhysicsShape) -> Option<Self> {
15610 core::ptr::NonNull::new(raw).map(|raw| PhysicsShape { raw })
15611 }
15612}
15613
15614unsafe impl Send for PhysicsShape {}
15619
15620impl core::fmt::Debug for PhysicsShape {
15621 fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
15622 f.debug_struct("PhysicsShape").finish_non_exhaustive()
15623 }
15624}
15625
15626impl PhysicsShape {
15627 pub fn new() -> Self {
15630 unsafe {
15633 let raw = ffi::whiteout_m3_M3PhysicsShape_new();
15634 Self::from_raw(raw).expect("native PhysicsShape allocation failed")
15635 }
15636 }
15637
15638 pub fn collision_margin(&self) -> f32 {
15640 unsafe { ffi::whiteout_m3_M3PhysicsShape_get_collisionMargin(self.raw.as_ptr()) }
15642 }
15643
15644 pub fn set_collision_margin(&mut self, value: f32) {
15645 unsafe { ffi::whiteout_m3_M3PhysicsShape_set_collisionMargin(self.raw.as_ptr(), value) }
15647 }
15648
15649 pub fn shape_type(&self) -> PhysicsShapeType {
15651 unsafe { ffi::whiteout_m3_M3PhysicsShape_get_shapeType(self.raw.as_ptr()) }
15653 .try_into()
15654 .expect("unknown enum discriminant from the native library")
15655 }
15656
15657 pub fn set_shape_type(&mut self, value: PhysicsShapeType) {
15658 unsafe { ffi::whiteout_m3_M3PhysicsShape_set_shapeType(self.raw.as_ptr(), value as i32) }
15660 }
15661
15662 pub fn old_sizes(&self) -> crate::math::Vector3f {
15664 unsafe {
15667 *(ffi::whiteout_m3_M3PhysicsShape_get_oldSizes(self.raw.as_ptr())
15668 as *const crate::math::Vector3f)
15669 }
15670 }
15671
15672 pub fn set_old_sizes(&mut self, value: crate::math::Vector3f) {
15673 unsafe {
15675 ffi::whiteout_m3_M3PhysicsShape_set_oldSizes(
15676 self.raw.as_ptr(),
15677 &value as *const crate::math::Vector3f as *const _,
15678 )
15679 }
15680 }
15681
15682 pub fn shape_dimensions(&self) -> crate::math::Vector3f {
15684 unsafe {
15687 *(ffi::whiteout_m3_M3PhysicsShape_get_shapeDimensions(self.raw.as_ptr())
15688 as *const crate::math::Vector3f)
15689 }
15690 }
15691
15692 pub fn set_shape_dimensions(&mut self, value: crate::math::Vector3f) {
15693 unsafe {
15695 ffi::whiteout_m3_M3PhysicsShape_set_shapeDimensions(
15696 self.raw.as_ptr(),
15697 &value as *const crate::math::Vector3f as *const _,
15698 )
15699 }
15700 }
15701
15702 pub fn hull_face_normals(&self) -> &[crate::math::Vector3f] {
15705 unsafe {
15708 let n = ffi::whiteout_m3_M3PhysicsShape_get_hullFaceNormals_count(self.raw.as_ptr());
15709 let p = ffi::whiteout_m3_M3PhysicsShape_get_hullFaceNormals_data(self.raw.as_ptr())
15710 as *const crate::math::Vector3f;
15711 if p.is_null() || n == 0 {
15712 &[]
15713 } else {
15714 core::slice::from_raw_parts(p, n)
15715 }
15716 }
15717 }
15718
15719 pub fn hull_face_normals_mut(&mut self) -> &mut [crate::math::Vector3f] {
15721 unsafe {
15723 let n = ffi::whiteout_m3_M3PhysicsShape_get_hullFaceNormals_count(self.raw.as_ptr());
15724 let p = ffi::whiteout_m3_M3PhysicsShape_get_hullFaceNormals_data(self.raw.as_ptr())
15725 as *const crate::math::Vector3f as *mut crate::math::Vector3f;
15726 if p.is_null() || n == 0 {
15727 &mut []
15728 } else {
15729 core::slice::from_raw_parts_mut(p, n)
15730 }
15731 }
15732 }
15733
15734 pub fn set_hull_face_normals(&mut self, values: &[crate::math::Vector3f]) {
15735 unsafe {
15737 ffi::whiteout_m3_M3PhysicsShape_assign_hullFaceNormals(
15738 self.raw.as_ptr(),
15739 values.as_ptr() as *const _,
15740 values.len(),
15741 )
15742 }
15743 }
15744
15745 pub fn resize_hull_face_normals(&mut self, count: usize) {
15746 unsafe { ffi::whiteout_m3_M3PhysicsShape_resize_hullFaceNormals(self.raw.as_ptr(), count) }
15749 }
15750
15751 pub fn hull_vertex_positions(&self) -> &[crate::math::Vector4f] {
15754 unsafe {
15757 let n =
15758 ffi::whiteout_m3_M3PhysicsShape_get_hullVertexPositions_count(self.raw.as_ptr());
15759 let p = ffi::whiteout_m3_M3PhysicsShape_get_hullVertexPositions_data(self.raw.as_ptr())
15760 as *const crate::math::Vector4f;
15761 if p.is_null() || n == 0 {
15762 &[]
15763 } else {
15764 core::slice::from_raw_parts(p, n)
15765 }
15766 }
15767 }
15768
15769 pub fn hull_vertex_positions_mut(&mut self) -> &mut [crate::math::Vector4f] {
15771 unsafe {
15773 let n =
15774 ffi::whiteout_m3_M3PhysicsShape_get_hullVertexPositions_count(self.raw.as_ptr());
15775 let p = ffi::whiteout_m3_M3PhysicsShape_get_hullVertexPositions_data(self.raw.as_ptr())
15776 as *const crate::math::Vector4f as *mut crate::math::Vector4f;
15777 if p.is_null() || n == 0 {
15778 &mut []
15779 } else {
15780 core::slice::from_raw_parts_mut(p, n)
15781 }
15782 }
15783 }
15784
15785 pub fn set_hull_vertex_positions(&mut self, values: &[crate::math::Vector4f]) {
15786 unsafe {
15788 ffi::whiteout_m3_M3PhysicsShape_assign_hullVertexPositions(
15789 self.raw.as_ptr(),
15790 values.as_ptr() as *const _,
15791 values.len(),
15792 )
15793 }
15794 }
15795
15796 pub fn resize_hull_vertex_positions(&mut self, count: usize) {
15797 unsafe {
15800 ffi::whiteout_m3_M3PhysicsShape_resize_hullVertexPositions(self.raw.as_ptr(), count)
15801 }
15802 }
15803
15804 pub fn hull_half_edges_len(&self) -> usize {
15806 unsafe { ffi::whiteout_m3_M3PhysicsShape_get_hullHalfEdges_count(self.raw.as_ptr()) }
15808 }
15809
15810 pub fn hull_half_edges(
15812 &self,
15813 index: usize,
15814 ) -> Option<crate::support::Ref<'_, ConvexHullHalfEdge>> {
15815 if index >= self.hull_half_edges_len() {
15816 return None;
15817 }
15818 unsafe {
15820 Some(crate::support::Ref::new(ConvexHullHalfEdge {
15821 raw: core::ptr::NonNull::new_unchecked(
15822 ffi::whiteout_m3_M3PhysicsShape_get_hullHalfEdges_at(self.raw.as_ptr(), index),
15823 ),
15824 }))
15825 }
15826 }
15827
15828 pub fn hull_half_edges_mut(
15829 &mut self,
15830 index: usize,
15831 ) -> Option<crate::support::RefMut<'_, ConvexHullHalfEdge>> {
15832 if index >= self.hull_half_edges_len() {
15833 return None;
15834 }
15835 unsafe {
15837 Some(crate::support::RefMut::new(ConvexHullHalfEdge {
15838 raw: core::ptr::NonNull::new_unchecked(
15839 ffi::whiteout_m3_M3PhysicsShape_get_hullHalfEdges_at(self.raw.as_ptr(), index),
15840 ),
15841 }))
15842 }
15843 }
15844
15845 pub fn hull_half_edges_iter(
15847 &self,
15848 ) -> impl ExactSizeIterator<Item = crate::support::Ref<'_, ConvexHullHalfEdge>> {
15849 (0..self.hull_half_edges_len())
15850 .map(move |i| self.hull_half_edges(i).expect("index below len"))
15851 }
15852
15853 pub fn resize_hull_half_edges(&mut self, count: usize) {
15854 unsafe { ffi::whiteout_m3_M3PhysicsShape_resize_hullHalfEdges(self.raw.as_ptr(), count) }
15856 }
15857
15858 pub fn hull_vertex_face_indices(&self) -> &[u8] {
15861 unsafe {
15864 let n =
15865 ffi::whiteout_m3_M3PhysicsShape_get_hullVertexFaceIndices_count(self.raw.as_ptr());
15866 let p =
15867 ffi::whiteout_m3_M3PhysicsShape_get_hullVertexFaceIndices_data(self.raw.as_ptr());
15868 if p.is_null() || n == 0 {
15869 &[]
15870 } else {
15871 core::slice::from_raw_parts(p, n)
15872 }
15873 }
15874 }
15875
15876 pub fn hull_vertex_face_indices_mut(&mut self) -> &mut [u8] {
15878 unsafe {
15880 let n =
15881 ffi::whiteout_m3_M3PhysicsShape_get_hullVertexFaceIndices_count(self.raw.as_ptr());
15882 let p =
15883 ffi::whiteout_m3_M3PhysicsShape_get_hullVertexFaceIndices_data(self.raw.as_ptr())
15884 as *mut u8;
15885 if p.is_null() || n == 0 {
15886 &mut []
15887 } else {
15888 core::slice::from_raw_parts_mut(p, n)
15889 }
15890 }
15891 }
15892
15893 pub fn set_hull_vertex_face_indices(&mut self, values: &[u8]) {
15894 unsafe {
15896 ffi::whiteout_m3_M3PhysicsShape_assign_hullVertexFaceIndices(
15897 self.raw.as_ptr(),
15898 values.as_ptr() as *const _,
15899 values.len(),
15900 )
15901 }
15902 }
15903
15904 pub fn resize_hull_vertex_face_indices(&mut self, count: usize) {
15905 unsafe {
15908 ffi::whiteout_m3_M3PhysicsShape_resize_hullVertexFaceIndices(self.raw.as_ptr(), count)
15909 }
15910 }
15911
15912 pub fn hull_center(&self) -> crate::math::Vector3f {
15914 unsafe {
15917 *(ffi::whiteout_m3_M3PhysicsShape_get_hullCenter(self.raw.as_ptr())
15918 as *const crate::math::Vector3f)
15919 }
15920 }
15921
15922 pub fn set_hull_center(&mut self, value: crate::math::Vector3f) {
15923 unsafe {
15925 ffi::whiteout_m3_M3PhysicsShape_set_hullCenter(
15926 self.raw.as_ptr(),
15927 &value as *const crate::math::Vector3f as *const _,
15928 )
15929 }
15930 }
15931
15932 pub fn hull_face_normal_count(&self) -> u32 {
15934 unsafe { ffi::whiteout_m3_M3PhysicsShape_get_hullFaceNormalCount(self.raw.as_ptr()) }
15936 }
15937
15938 pub fn set_hull_face_normal_count(&mut self, value: u32) {
15939 unsafe { ffi::whiteout_m3_M3PhysicsShape_set_hullFaceNormalCount(self.raw.as_ptr(), value) }
15941 }
15942
15943 pub fn hull_vertex_count(&self) -> u32 {
15945 unsafe { ffi::whiteout_m3_M3PhysicsShape_get_hullVertexCount(self.raw.as_ptr()) }
15947 }
15948
15949 pub fn set_hull_vertex_count(&mut self, value: u32) {
15950 unsafe { ffi::whiteout_m3_M3PhysicsShape_set_hullVertexCount(self.raw.as_ptr(), value) }
15952 }
15953
15954 pub fn hull_half_edge_count(&self) -> u32 {
15956 unsafe { ffi::whiteout_m3_M3PhysicsShape_get_hullHalfEdgeCount(self.raw.as_ptr()) }
15958 }
15959
15960 pub fn set_hull_half_edge_count(&mut self, value: u32) {
15961 unsafe { ffi::whiteout_m3_M3PhysicsShape_set_hullHalfEdgeCount(self.raw.as_ptr(), value) }
15963 }
15964
15965 pub fn hull_unknown_0(&self) -> f32 {
15967 unsafe { ffi::whiteout_m3_M3PhysicsShape_get_hullUnknown0(self.raw.as_ptr()) }
15969 }
15970
15971 pub fn set_hull_unknown_0(&mut self, value: f32) {
15972 unsafe { ffi::whiteout_m3_M3PhysicsShape_set_hullUnknown0(self.raw.as_ptr(), value) }
15974 }
15975
15976 pub fn hull_unknown_1(&self) -> f32 {
15978 unsafe { ffi::whiteout_m3_M3PhysicsShape_get_hullUnknown1(self.raw.as_ptr()) }
15980 }
15981
15982 pub fn set_hull_unknown_1(&mut self, value: f32) {
15983 unsafe { ffi::whiteout_m3_M3PhysicsShape_set_hullUnknown1(self.raw.as_ptr(), value) }
15985 }
15986
15987 pub fn mesh_bvh_nodes_len(&self) -> usize {
15989 unsafe { ffi::whiteout_m3_M3PhysicsShape_get_meshBvhNodes_count(self.raw.as_ptr()) }
15991 }
15992
15993 pub fn mesh_bvh_nodes(
15995 &self,
15996 index: usize,
15997 ) -> Option<crate::support::Ref<'_, PhysicsMeshBvhNode>> {
15998 if index >= self.mesh_bvh_nodes_len() {
15999 return None;
16000 }
16001 unsafe {
16003 Some(crate::support::Ref::new(PhysicsMeshBvhNode {
16004 raw: core::ptr::NonNull::new_unchecked(
16005 ffi::whiteout_m3_M3PhysicsShape_get_meshBvhNodes_at(self.raw.as_ptr(), index),
16006 ),
16007 }))
16008 }
16009 }
16010
16011 pub fn mesh_bvh_nodes_mut(
16012 &mut self,
16013 index: usize,
16014 ) -> Option<crate::support::RefMut<'_, PhysicsMeshBvhNode>> {
16015 if index >= self.mesh_bvh_nodes_len() {
16016 return None;
16017 }
16018 unsafe {
16020 Some(crate::support::RefMut::new(PhysicsMeshBvhNode {
16021 raw: core::ptr::NonNull::new_unchecked(
16022 ffi::whiteout_m3_M3PhysicsShape_get_meshBvhNodes_at(self.raw.as_ptr(), index),
16023 ),
16024 }))
16025 }
16026 }
16027
16028 pub fn mesh_bvh_nodes_iter(
16030 &self,
16031 ) -> impl ExactSizeIterator<Item = crate::support::Ref<'_, PhysicsMeshBvhNode>> {
16032 (0..self.mesh_bvh_nodes_len())
16033 .map(move |i| self.mesh_bvh_nodes(i).expect("index below len"))
16034 }
16035
16036 pub fn resize_mesh_bvh_nodes(&mut self, count: usize) {
16037 unsafe { ffi::whiteout_m3_M3PhysicsShape_resize_meshBvhNodes(self.raw.as_ptr(), count) }
16039 }
16040
16041 pub fn mesh_vertex_positions(&self) -> &[crate::math::Vector4f] {
16044 unsafe {
16047 let n =
16048 ffi::whiteout_m3_M3PhysicsShape_get_meshVertexPositions_count(self.raw.as_ptr());
16049 let p = ffi::whiteout_m3_M3PhysicsShape_get_meshVertexPositions_data(self.raw.as_ptr())
16050 as *const crate::math::Vector4f;
16051 if p.is_null() || n == 0 {
16052 &[]
16053 } else {
16054 core::slice::from_raw_parts(p, n)
16055 }
16056 }
16057 }
16058
16059 pub fn mesh_vertex_positions_mut(&mut self) -> &mut [crate::math::Vector4f] {
16061 unsafe {
16063 let n =
16064 ffi::whiteout_m3_M3PhysicsShape_get_meshVertexPositions_count(self.raw.as_ptr());
16065 let p = ffi::whiteout_m3_M3PhysicsShape_get_meshVertexPositions_data(self.raw.as_ptr())
16066 as *const crate::math::Vector4f as *mut crate::math::Vector4f;
16067 if p.is_null() || n == 0 {
16068 &mut []
16069 } else {
16070 core::slice::from_raw_parts_mut(p, n)
16071 }
16072 }
16073 }
16074
16075 pub fn set_mesh_vertex_positions(&mut self, values: &[crate::math::Vector4f]) {
16076 unsafe {
16078 ffi::whiteout_m3_M3PhysicsShape_assign_meshVertexPositions(
16079 self.raw.as_ptr(),
16080 values.as_ptr() as *const _,
16081 values.len(),
16082 )
16083 }
16084 }
16085
16086 pub fn resize_mesh_vertex_positions(&mut self, count: usize) {
16087 unsafe {
16090 ffi::whiteout_m3_M3PhysicsShape_resize_meshVertexPositions(self.raw.as_ptr(), count)
16091 }
16092 }
16093
16094 pub fn mesh_bounds_center(&self) -> crate::math::Vector3f {
16096 unsafe {
16099 *(ffi::whiteout_m3_M3PhysicsShape_get_meshBoundsCenter(self.raw.as_ptr())
16100 as *const crate::math::Vector3f)
16101 }
16102 }
16103
16104 pub fn set_mesh_bounds_center(&mut self, value: crate::math::Vector3f) {
16105 unsafe {
16107 ffi::whiteout_m3_M3PhysicsShape_set_meshBoundsCenter(
16108 self.raw.as_ptr(),
16109 &value as *const crate::math::Vector3f as *const _,
16110 )
16111 }
16112 }
16113
16114 pub fn mesh_bounds_extent(&self) -> crate::math::Vector3f {
16116 unsafe {
16119 *(ffi::whiteout_m3_M3PhysicsShape_get_meshBoundsExtent(self.raw.as_ptr())
16120 as *const crate::math::Vector3f)
16121 }
16122 }
16123
16124 pub fn set_mesh_bounds_extent(&mut self, value: crate::math::Vector3f) {
16125 unsafe {
16127 ffi::whiteout_m3_M3PhysicsShape_set_meshBoundsExtent(
16128 self.raw.as_ptr(),
16129 &value as *const crate::math::Vector3f as *const _,
16130 )
16131 }
16132 }
16133
16134 pub fn mesh_tolerance(&self) -> crate::math::Vector3f {
16136 unsafe {
16139 *(ffi::whiteout_m3_M3PhysicsShape_get_meshTolerance(self.raw.as_ptr())
16140 as *const crate::math::Vector3f)
16141 }
16142 }
16143
16144 pub fn set_mesh_tolerance(&mut self, value: crate::math::Vector3f) {
16145 unsafe {
16147 ffi::whiteout_m3_M3PhysicsShape_set_meshTolerance(
16148 self.raw.as_ptr(),
16149 &value as *const crate::math::Vector3f as *const _,
16150 )
16151 }
16152 }
16153
16154 pub fn mesh_normal_count(&self) -> u32 {
16156 unsafe { ffi::whiteout_m3_M3PhysicsShape_get_meshNormalCount(self.raw.as_ptr()) }
16158 }
16159
16160 pub fn set_mesh_normal_count(&mut self, value: u32) {
16161 unsafe { ffi::whiteout_m3_M3PhysicsShape_set_meshNormalCount(self.raw.as_ptr(), value) }
16163 }
16164
16165 pub fn mesh_vertex_count(&self) -> u32 {
16167 unsafe { ffi::whiteout_m3_M3PhysicsShape_get_meshVertexCount(self.raw.as_ptr()) }
16169 }
16170
16171 pub fn set_mesh_vertex_count(&mut self, value: u32) {
16172 unsafe { ffi::whiteout_m3_M3PhysicsShape_set_meshVertexCount(self.raw.as_ptr(), value) }
16174 }
16175
16176 pub fn mesh_face_index_16_count(&self) -> u32 {
16178 unsafe { ffi::whiteout_m3_M3PhysicsShape_get_meshFaceIndex16Count(self.raw.as_ptr()) }
16180 }
16181
16182 pub fn set_mesh_face_index_16_count(&mut self, value: u32) {
16183 unsafe {
16185 ffi::whiteout_m3_M3PhysicsShape_set_meshFaceIndex16Count(self.raw.as_ptr(), value)
16186 }
16187 }
16188
16189 pub fn mesh_face_index_32_count(&self) -> u32 {
16191 unsafe { ffi::whiteout_m3_M3PhysicsShape_get_meshFaceIndex32Count(self.raw.as_ptr()) }
16193 }
16194
16195 pub fn set_mesh_face_index_32_count(&mut self, value: u32) {
16196 unsafe {
16198 ffi::whiteout_m3_M3PhysicsShape_set_meshFaceIndex32Count(self.raw.as_ptr(), value)
16199 }
16200 }
16201
16202 pub fn mesh_unknown_1(&self) -> u32 {
16204 unsafe { ffi::whiteout_m3_M3PhysicsShape_get_meshUnknown1(self.raw.as_ptr()) }
16206 }
16207
16208 pub fn set_mesh_unknown_1(&mut self, value: u32) {
16209 unsafe { ffi::whiteout_m3_M3PhysicsShape_set_meshUnknown1(self.raw.as_ptr(), value) }
16211 }
16212
16213 pub fn mesh_reserved(&self) -> u32 {
16215 unsafe { ffi::whiteout_m3_M3PhysicsShape_get_meshReserved(self.raw.as_ptr()) }
16217 }
16218
16219 pub fn set_mesh_reserved(&mut self, value: u32) {
16220 unsafe { ffi::whiteout_m3_M3PhysicsShape_set_meshReserved(self.raw.as_ptr(), value) }
16222 }
16223
16224 pub fn mesh_tree_depth(&self) -> u32 {
16226 unsafe { ffi::whiteout_m3_M3PhysicsShape_get_meshTreeDepth(self.raw.as_ptr()) }
16228 }
16229
16230 pub fn set_mesh_tree_depth(&mut self, value: u32) {
16231 unsafe { ffi::whiteout_m3_M3PhysicsShape_set_meshTreeDepth(self.raw.as_ptr(), value) }
16233 }
16234
16235 pub fn mesh_collision_margin(&self) -> f32 {
16237 unsafe { ffi::whiteout_m3_M3PhysicsShape_get_meshCollisionMargin(self.raw.as_ptr()) }
16239 }
16240
16241 pub fn set_mesh_collision_margin(&mut self, value: f32) {
16242 unsafe { ffi::whiteout_m3_M3PhysicsShape_set_meshCollisionMargin(self.raw.as_ptr(), value) }
16244 }
16245}
16246
16247impl Default for PhysicsShape {
16248 fn default() -> Self {
16249 Self::new()
16250 }
16251}
16252
16253pub struct RigidBody {
16257 pub(crate) raw: core::ptr::NonNull<ffi::whiteout_M3RigidBody>,
16258}
16259
16260impl Drop for RigidBody {
16261 fn drop(&mut self) {
16262 unsafe { ffi::whiteout_m3_M3RigidBody_delete(self.raw.as_ptr()) }
16264 }
16265}
16266
16267impl RigidBody {
16268 #[allow(dead_code)] pub(crate) unsafe fn from_raw(raw: *mut ffi::whiteout_M3RigidBody) -> Option<Self> {
16272 core::ptr::NonNull::new(raw).map(|raw| RigidBody { raw })
16273 }
16274}
16275
16276unsafe impl Send for RigidBody {}
16281
16282impl core::fmt::Debug for RigidBody {
16283 fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
16284 f.debug_struct("RigidBody").finish_non_exhaustive()
16285 }
16286}
16287
16288impl RigidBody {
16289 pub fn new() -> Self {
16292 unsafe {
16295 let raw = ffi::whiteout_m3_M3RigidBody_new();
16296 Self::from_raw(raw).expect("native RigidBody allocation failed")
16297 }
16298 }
16299
16300 pub fn simulation_type(&self) -> u16 {
16302 unsafe { ffi::whiteout_m3_M3RigidBody_get_simulationType(self.raw.as_ptr()) }
16304 }
16305
16306 pub fn set_simulation_type(&mut self, value: u16) {
16307 unsafe { ffi::whiteout_m3_M3RigidBody_set_simulationType(self.raw.as_ptr(), value) }
16309 }
16310
16311 pub fn parent_bone_index(&self) -> u16 {
16313 unsafe { ffi::whiteout_m3_M3RigidBody_get_parentBoneIndex(self.raw.as_ptr()) }
16315 }
16316
16317 pub fn set_parent_bone_index(&mut self, value: u16) {
16318 unsafe { ffi::whiteout_m3_M3RigidBody_set_parentBoneIndex(self.raw.as_ptr(), value) }
16320 }
16321
16322 pub fn physics_type(&self) -> u32 {
16324 unsafe { ffi::whiteout_m3_M3RigidBody_get_physicsType(self.raw.as_ptr()) }
16326 }
16327
16328 pub fn set_physics_type(&mut self, value: u32) {
16329 unsafe { ffi::whiteout_m3_M3RigidBody_set_physicsType(self.raw.as_ptr(), value) }
16331 }
16332
16333 pub fn density(&self) -> f32 {
16335 unsafe { ffi::whiteout_m3_M3RigidBody_get_density(self.raw.as_ptr()) }
16337 }
16338
16339 pub fn set_density(&mut self, value: f32) {
16340 unsafe { ffi::whiteout_m3_M3RigidBody_set_density(self.raw.as_ptr(), value) }
16342 }
16343
16344 pub fn friction(&self) -> f32 {
16346 unsafe { ffi::whiteout_m3_M3RigidBody_get_friction(self.raw.as_ptr()) }
16348 }
16349
16350 pub fn set_friction(&mut self, value: f32) {
16351 unsafe { ffi::whiteout_m3_M3RigidBody_set_friction(self.raw.as_ptr(), value) }
16353 }
16354
16355 pub fn restitution(&self) -> f32 {
16357 unsafe { ffi::whiteout_m3_M3RigidBody_get_restitution(self.raw.as_ptr()) }
16359 }
16360
16361 pub fn set_restitution(&mut self, value: f32) {
16362 unsafe { ffi::whiteout_m3_M3RigidBody_set_restitution(self.raw.as_ptr(), value) }
16364 }
16365
16366 pub fn linear_damping(&self) -> f32 {
16368 unsafe { ffi::whiteout_m3_M3RigidBody_get_linearDamping(self.raw.as_ptr()) }
16370 }
16371
16372 pub fn set_linear_damping(&mut self, value: f32) {
16373 unsafe { ffi::whiteout_m3_M3RigidBody_set_linearDamping(self.raw.as_ptr(), value) }
16375 }
16376
16377 pub fn angular_damping(&self) -> f32 {
16379 unsafe { ffi::whiteout_m3_M3RigidBody_get_angularDamping(self.raw.as_ptr()) }
16381 }
16382
16383 pub fn set_angular_damping(&mut self, value: f32) {
16384 unsafe { ffi::whiteout_m3_M3RigidBody_set_angularDamping(self.raw.as_ptr(), value) }
16386 }
16387
16388 pub fn gravity_scale(&self) -> f32 {
16390 unsafe { ffi::whiteout_m3_M3RigidBody_get_gravityScale(self.raw.as_ptr()) }
16392 }
16393
16394 pub fn set_gravity_scale(&mut self, value: f32) {
16395 unsafe { ffi::whiteout_m3_M3RigidBody_set_gravityScale(self.raw.as_ptr(), value) }
16397 }
16398
16399 pub fn dynamic_state(&self) -> crate::support::Ref<'_, AnimRefU32> {
16402 unsafe {
16405 crate::support::Ref::new(AnimRefU32 {
16406 raw: core::ptr::NonNull::new_unchecked(
16407 ffi::whiteout_m3_M3RigidBody_get_dynamicState(self.raw.as_ptr()),
16408 ),
16409 })
16410 }
16411 }
16412
16413 pub fn dynamic_state_mut(&mut self) -> crate::support::RefMut<'_, AnimRefU32> {
16414 unsafe {
16416 crate::support::RefMut::new(AnimRefU32 {
16417 raw: core::ptr::NonNull::new_unchecked(
16418 ffi::whiteout_m3_M3RigidBody_get_dynamicState(self.raw.as_ptr()),
16419 ),
16420 })
16421 }
16422 }
16423
16424 pub fn dynamic_blend_out(&self) -> f32 {
16426 unsafe { ffi::whiteout_m3_M3RigidBody_get_dynamicBlendOut(self.raw.as_ptr()) }
16428 }
16429
16430 pub fn set_dynamic_blend_out(&mut self, value: f32) {
16431 unsafe { ffi::whiteout_m3_M3RigidBody_set_dynamicBlendOut(self.raw.as_ptr(), value) }
16433 }
16434
16435 pub fn rigid_body_shape_len(&self) -> usize {
16437 unsafe { ffi::whiteout_m3_M3RigidBody_get_rigidBodyShape_count(self.raw.as_ptr()) }
16439 }
16440
16441 pub fn rigid_body_shape(&self, index: usize) -> Option<crate::support::Ref<'_, PhysicsShape>> {
16443 if index >= self.rigid_body_shape_len() {
16444 return None;
16445 }
16446 unsafe {
16448 Some(crate::support::Ref::new(PhysicsShape {
16449 raw: core::ptr::NonNull::new_unchecked(
16450 ffi::whiteout_m3_M3RigidBody_get_rigidBodyShape_at(self.raw.as_ptr(), index),
16451 ),
16452 }))
16453 }
16454 }
16455
16456 pub fn rigid_body_shape_mut(
16457 &mut self,
16458 index: usize,
16459 ) -> Option<crate::support::RefMut<'_, PhysicsShape>> {
16460 if index >= self.rigid_body_shape_len() {
16461 return None;
16462 }
16463 unsafe {
16465 Some(crate::support::RefMut::new(PhysicsShape {
16466 raw: core::ptr::NonNull::new_unchecked(
16467 ffi::whiteout_m3_M3RigidBody_get_rigidBodyShape_at(self.raw.as_ptr(), index),
16468 ),
16469 }))
16470 }
16471 }
16472
16473 pub fn rigid_body_shape_iter(
16475 &self,
16476 ) -> impl ExactSizeIterator<Item = crate::support::Ref<'_, PhysicsShape>> {
16477 (0..self.rigid_body_shape_len())
16478 .map(move |i| self.rigid_body_shape(i).expect("index below len"))
16479 }
16480
16481 pub fn resize_rigid_body_shape(&mut self, count: usize) {
16482 unsafe { ffi::whiteout_m3_M3RigidBody_resize_rigidBodyShape(self.raw.as_ptr(), count) }
16484 }
16485
16486 pub fn flags(&self) -> RigidBodyFlag {
16488 RigidBodyFlag(unsafe { ffi::whiteout_m3_M3RigidBody_get_flags(self.raw.as_ptr()) })
16490 }
16491
16492 pub fn set_flags(&mut self, value: RigidBodyFlag) {
16493 unsafe { ffi::whiteout_m3_M3RigidBody_set_flags(self.raw.as_ptr(), value.0) }
16495 }
16496
16497 pub fn local_forces(&self) -> u16 {
16499 unsafe { ffi::whiteout_m3_M3RigidBody_get_localForces(self.raw.as_ptr()) }
16501 }
16502
16503 pub fn set_local_forces(&mut self, value: u16) {
16504 unsafe { ffi::whiteout_m3_M3RigidBody_set_localForces(self.raw.as_ptr(), value) }
16506 }
16507
16508 pub fn world_forces(&self) -> u16 {
16510 unsafe { ffi::whiteout_m3_M3RigidBody_get_worldForces(self.raw.as_ptr()) }
16512 }
16513
16514 pub fn set_world_forces(&mut self, value: u16) {
16515 unsafe { ffi::whiteout_m3_M3RigidBody_set_worldForces(self.raw.as_ptr(), value) }
16517 }
16518
16519 pub fn priority(&self) -> u32 {
16521 unsafe { ffi::whiteout_m3_M3RigidBody_get_priority(self.raw.as_ptr()) }
16523 }
16524
16525 pub fn set_priority(&mut self, value: u32) {
16526 unsafe { ffi::whiteout_m3_M3RigidBody_set_priority(self.raw.as_ptr(), value) }
16528 }
16529}
16530
16531impl Default for RigidBody {
16532 fn default() -> Self {
16533 Self::new()
16534 }
16535}
16536
16537pub struct PhysicsJoint {
16541 pub(crate) raw: core::ptr::NonNull<ffi::whiteout_M3PhysicsJoint>,
16542}
16543
16544impl Drop for PhysicsJoint {
16545 fn drop(&mut self) {
16546 unsafe { ffi::whiteout_m3_M3PhysicsJoint_delete(self.raw.as_ptr()) }
16548 }
16549}
16550
16551impl PhysicsJoint {
16552 #[allow(dead_code)] pub(crate) unsafe fn from_raw(raw: *mut ffi::whiteout_M3PhysicsJoint) -> Option<Self> {
16556 core::ptr::NonNull::new(raw).map(|raw| PhysicsJoint { raw })
16557 }
16558}
16559
16560unsafe impl Send for PhysicsJoint {}
16565
16566impl core::fmt::Debug for PhysicsJoint {
16567 fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
16568 f.debug_struct("PhysicsJoint").finish_non_exhaustive()
16569 }
16570}
16571
16572impl PhysicsJoint {
16573 pub fn new() -> Self {
16576 unsafe {
16579 let raw = ffi::whiteout_m3_M3PhysicsJoint_new();
16580 Self::from_raw(raw).expect("native PhysicsJoint allocation failed")
16581 }
16582 }
16583
16584 pub fn joint_type(&self) -> u32 {
16586 unsafe { ffi::whiteout_m3_M3PhysicsJoint_get_jointType(self.raw.as_ptr()) }
16588 }
16589
16590 pub fn set_joint_type(&mut self, value: u32) {
16591 unsafe { ffi::whiteout_m3_M3PhysicsJoint_set_jointType(self.raw.as_ptr(), value) }
16593 }
16594
16595 pub fn bone_index_1(&self) -> u32 {
16597 unsafe { ffi::whiteout_m3_M3PhysicsJoint_get_boneIndex1(self.raw.as_ptr()) }
16599 }
16600
16601 pub fn set_bone_index_1(&mut self, value: u32) {
16602 unsafe { ffi::whiteout_m3_M3PhysicsJoint_set_boneIndex1(self.raw.as_ptr(), value) }
16604 }
16605
16606 pub fn bone_index_2(&self) -> u32 {
16608 unsafe { ffi::whiteout_m3_M3PhysicsJoint_get_boneIndex2(self.raw.as_ptr()) }
16610 }
16611
16612 pub fn set_bone_index_2(&mut self, value: u32) {
16613 unsafe { ffi::whiteout_m3_M3PhysicsJoint_set_boneIndex2(self.raw.as_ptr(), value) }
16615 }
16616
16617 pub fn enable_limits(&self) -> u32 {
16619 unsafe { ffi::whiteout_m3_M3PhysicsJoint_get_enableLimits(self.raw.as_ptr()) }
16621 }
16622
16623 pub fn set_enable_limits(&mut self, value: u32) {
16624 unsafe { ffi::whiteout_m3_M3PhysicsJoint_set_enableLimits(self.raw.as_ptr(), value) }
16626 }
16627
16628 pub fn limit_min(&self) -> f32 {
16630 unsafe { ffi::whiteout_m3_M3PhysicsJoint_get_limitMin(self.raw.as_ptr()) }
16632 }
16633
16634 pub fn set_limit_min(&mut self, value: f32) {
16635 unsafe { ffi::whiteout_m3_M3PhysicsJoint_set_limitMin(self.raw.as_ptr(), value) }
16637 }
16638
16639 pub fn limit_max(&self) -> f32 {
16641 unsafe { ffi::whiteout_m3_M3PhysicsJoint_get_limitMax(self.raw.as_ptr()) }
16643 }
16644
16645 pub fn set_limit_max(&mut self, value: f32) {
16646 unsafe { ffi::whiteout_m3_M3PhysicsJoint_set_limitMax(self.raw.as_ptr(), value) }
16648 }
16649
16650 pub fn cone_angle(&self) -> f32 {
16652 unsafe { ffi::whiteout_m3_M3PhysicsJoint_get_coneAngle(self.raw.as_ptr()) }
16654 }
16655
16656 pub fn set_cone_angle(&mut self, value: f32) {
16657 unsafe { ffi::whiteout_m3_M3PhysicsJoint_set_coneAngle(self.raw.as_ptr(), value) }
16659 }
16660
16661 pub fn enable_friction(&self) -> u32 {
16663 unsafe { ffi::whiteout_m3_M3PhysicsJoint_get_enableFriction(self.raw.as_ptr()) }
16665 }
16666
16667 pub fn set_enable_friction(&mut self, value: u32) {
16668 unsafe { ffi::whiteout_m3_M3PhysicsJoint_set_enableFriction(self.raw.as_ptr(), value) }
16670 }
16671
16672 pub fn friction(&self) -> f32 {
16674 unsafe { ffi::whiteout_m3_M3PhysicsJoint_get_friction(self.raw.as_ptr()) }
16676 }
16677
16678 pub fn set_friction(&mut self, value: f32) {
16679 unsafe { ffi::whiteout_m3_M3PhysicsJoint_set_friction(self.raw.as_ptr(), value) }
16681 }
16682
16683 pub fn damping_ratio(&self) -> f32 {
16685 unsafe { ffi::whiteout_m3_M3PhysicsJoint_get_dampingRatio(self.raw.as_ptr()) }
16687 }
16688
16689 pub fn set_damping_ratio(&mut self, value: f32) {
16690 unsafe { ffi::whiteout_m3_M3PhysicsJoint_set_dampingRatio(self.raw.as_ptr(), value) }
16692 }
16693
16694 pub fn angular_frequency(&self) -> f32 {
16696 unsafe { ffi::whiteout_m3_M3PhysicsJoint_get_angularFrequency(self.raw.as_ptr()) }
16698 }
16699
16700 pub fn set_angular_frequency(&mut self, value: f32) {
16701 unsafe { ffi::whiteout_m3_M3PhysicsJoint_set_angularFrequency(self.raw.as_ptr(), value) }
16703 }
16704
16705 pub fn break_threshold(&self) -> f32 {
16707 unsafe { ffi::whiteout_m3_M3PhysicsJoint_get_breakThreshold(self.raw.as_ptr()) }
16709 }
16710
16711 pub fn set_break_threshold(&mut self, value: f32) {
16712 unsafe { ffi::whiteout_m3_M3PhysicsJoint_set_breakThreshold(self.raw.as_ptr(), value) }
16714 }
16715
16716 pub fn enable_shape(&self) -> u8 {
16718 unsafe { ffi::whiteout_m3_M3PhysicsJoint_get_enableShape(self.raw.as_ptr()) }
16720 }
16721
16722 pub fn set_enable_shape(&mut self, value: u8) {
16723 unsafe { ffi::whiteout_m3_M3PhysicsJoint_set_enableShape(self.raw.as_ptr(), value) }
16725 }
16726}
16727
16728impl Default for PhysicsJoint {
16729 fn default() -> Self {
16730 Self::new()
16731 }
16732}
16733
16734pub struct PhysicsConstraint {
16738 pub(crate) raw: core::ptr::NonNull<ffi::whiteout_M3PhysicsConstraint>,
16739}
16740
16741impl Drop for PhysicsConstraint {
16742 fn drop(&mut self) {
16743 unsafe { ffi::whiteout_m3_M3PhysicsConstraint_delete(self.raw.as_ptr()) }
16745 }
16746}
16747
16748impl PhysicsConstraint {
16749 #[allow(dead_code)] pub(crate) unsafe fn from_raw(raw: *mut ffi::whiteout_M3PhysicsConstraint) -> Option<Self> {
16753 core::ptr::NonNull::new(raw).map(|raw| PhysicsConstraint { raw })
16754 }
16755}
16756
16757unsafe impl Send for PhysicsConstraint {}
16762
16763impl core::fmt::Debug for PhysicsConstraint {
16764 fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
16765 f.debug_struct("PhysicsConstraint").finish_non_exhaustive()
16766 }
16767}
16768
16769impl PhysicsConstraint {
16770 pub fn new() -> Self {
16773 unsafe {
16776 let raw = ffi::whiteout_m3_M3PhysicsConstraint_new();
16777 Self::from_raw(raw).expect("native PhysicsConstraint allocation failed")
16778 }
16779 }
16780
16781 pub fn dependents(&self) -> &[u16] {
16784 unsafe {
16787 let n = ffi::whiteout_m3_M3PhysicsConstraint_get_dependents_count(self.raw.as_ptr());
16788 let p = ffi::whiteout_m3_M3PhysicsConstraint_get_dependents_data(self.raw.as_ptr());
16789 if p.is_null() || n == 0 {
16790 &[]
16791 } else {
16792 core::slice::from_raw_parts(p, n)
16793 }
16794 }
16795 }
16796
16797 pub fn dependents_mut(&mut self) -> &mut [u16] {
16799 unsafe {
16801 let n = ffi::whiteout_m3_M3PhysicsConstraint_get_dependents_count(self.raw.as_ptr());
16802 let p = ffi::whiteout_m3_M3PhysicsConstraint_get_dependents_data(self.raw.as_ptr())
16803 as *mut u16;
16804 if p.is_null() || n == 0 {
16805 &mut []
16806 } else {
16807 core::slice::from_raw_parts_mut(p, n)
16808 }
16809 }
16810 }
16811
16812 pub fn set_dependents(&mut self, values: &[u16]) {
16813 unsafe {
16815 ffi::whiteout_m3_M3PhysicsConstraint_assign_dependents(
16816 self.raw.as_ptr(),
16817 values.as_ptr() as *const _,
16818 values.len(),
16819 )
16820 }
16821 }
16822
16823 pub fn resize_dependents(&mut self, count: usize) {
16824 unsafe { ffi::whiteout_m3_M3PhysicsConstraint_resize_dependents(self.raw.as_ptr(), count) }
16827 }
16828
16829 pub fn rigid_body_1(&self) -> u16 {
16831 unsafe { ffi::whiteout_m3_M3PhysicsConstraint_get_rigidBody1(self.raw.as_ptr()) }
16833 }
16834
16835 pub fn set_rigid_body_1(&mut self, value: u16) {
16836 unsafe { ffi::whiteout_m3_M3PhysicsConstraint_set_rigidBody1(self.raw.as_ptr(), value) }
16838 }
16839
16840 pub fn rigid_body_2(&self) -> u16 {
16842 unsafe { ffi::whiteout_m3_M3PhysicsConstraint_get_rigidBody2(self.raw.as_ptr()) }
16844 }
16845
16846 pub fn set_rigid_body_2(&mut self, value: u16) {
16847 unsafe { ffi::whiteout_m3_M3PhysicsConstraint_set_rigidBody2(self.raw.as_ptr(), value) }
16849 }
16850
16851 pub fn break_force(&self) -> f32 {
16853 unsafe { ffi::whiteout_m3_M3PhysicsConstraint_get_breakForce(self.raw.as_ptr()) }
16855 }
16856
16857 pub fn set_break_force(&mut self, value: f32) {
16858 unsafe { ffi::whiteout_m3_M3PhysicsConstraint_set_breakForce(self.raw.as_ptr(), value) }
16860 }
16861}
16862
16863impl Default for PhysicsConstraint {
16864 fn default() -> Self {
16865 Self::new()
16866 }
16867}
16868
16869pub struct ClothCollider {
16873 pub(crate) raw: core::ptr::NonNull<ffi::whiteout_M3ClothCollider>,
16874}
16875
16876impl Drop for ClothCollider {
16877 fn drop(&mut self) {
16878 unsafe { ffi::whiteout_m3_M3ClothCollider_delete(self.raw.as_ptr()) }
16880 }
16881}
16882
16883impl ClothCollider {
16884 #[allow(dead_code)] pub(crate) unsafe fn from_raw(raw: *mut ffi::whiteout_M3ClothCollider) -> Option<Self> {
16888 core::ptr::NonNull::new(raw).map(|raw| ClothCollider { raw })
16889 }
16890}
16891
16892unsafe impl Send for ClothCollider {}
16897
16898impl core::fmt::Debug for ClothCollider {
16899 fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
16900 f.debug_struct("ClothCollider").finish_non_exhaustive()
16901 }
16902}
16903
16904impl ClothCollider {
16905 pub fn new() -> Self {
16908 unsafe {
16911 let raw = ffi::whiteout_m3_M3ClothCollider_new();
16912 Self::from_raw(raw).expect("native ClothCollider allocation failed")
16913 }
16914 }
16915
16916 pub fn radius(&self) -> f32 {
16918 unsafe { ffi::whiteout_m3_M3ClothCollider_get_radius(self.raw.as_ptr()) }
16920 }
16921
16922 pub fn set_radius(&mut self, value: f32) {
16923 unsafe { ffi::whiteout_m3_M3ClothCollider_set_radius(self.raw.as_ptr(), value) }
16925 }
16926
16927 pub fn height(&self) -> f32 {
16929 unsafe { ffi::whiteout_m3_M3ClothCollider_get_height(self.raw.as_ptr()) }
16931 }
16932
16933 pub fn set_height(&mut self, value: f32) {
16934 unsafe { ffi::whiteout_m3_M3ClothCollider_set_height(self.raw.as_ptr(), value) }
16936 }
16937
16938 pub fn padding(&self) -> u32 {
16940 unsafe { ffi::whiteout_m3_M3ClothCollider_get_padding(self.raw.as_ptr()) }
16942 }
16943
16944 pub fn set_padding(&mut self, value: u32) {
16945 unsafe { ffi::whiteout_m3_M3ClothCollider_set_padding(self.raw.as_ptr(), value) }
16947 }
16948}
16949
16950impl Default for ClothCollider {
16951 fn default() -> Self {
16952 Self::new()
16953 }
16954}
16955
16956pub struct ClothProxy {
16960 pub(crate) raw: core::ptr::NonNull<ffi::whiteout_M3ClothProxy>,
16961}
16962
16963impl Drop for ClothProxy {
16964 fn drop(&mut self) {
16965 unsafe { ffi::whiteout_m3_M3ClothProxy_delete(self.raw.as_ptr()) }
16967 }
16968}
16969
16970impl ClothProxy {
16971 #[allow(dead_code)] pub(crate) unsafe fn from_raw(raw: *mut ffi::whiteout_M3ClothProxy) -> Option<Self> {
16975 core::ptr::NonNull::new(raw).map(|raw| ClothProxy { raw })
16976 }
16977}
16978
16979unsafe impl Send for ClothProxy {}
16984
16985impl core::fmt::Debug for ClothProxy {
16986 fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
16987 f.debug_struct("ClothProxy").finish_non_exhaustive()
16988 }
16989}
16990
16991impl ClothProxy {
16992 pub fn new() -> Self {
16995 unsafe {
16998 let raw = ffi::whiteout_m3_M3ClothProxy_new();
16999 Self::from_raw(raw).expect("native ClothProxy allocation failed")
17000 }
17001 }
17002
17003 pub fn proxy_index(&self) -> u32 {
17005 unsafe { ffi::whiteout_m3_M3ClothProxy_get_proxyIndex(self.raw.as_ptr()) }
17007 }
17008
17009 pub fn set_proxy_index(&mut self, value: u32) {
17010 unsafe { ffi::whiteout_m3_M3ClothProxy_set_proxyIndex(self.raw.as_ptr(), value) }
17012 }
17013
17014 pub fn cloth_index(&self) -> u32 {
17016 unsafe { ffi::whiteout_m3_M3ClothProxy_get_clothIndex(self.raw.as_ptr()) }
17018 }
17019
17020 pub fn set_cloth_index(&mut self, value: u32) {
17021 unsafe { ffi::whiteout_m3_M3ClothProxy_set_clothIndex(self.raw.as_ptr(), value) }
17023 }
17024
17025 pub fn proxy_vertices(&self) -> &[u64] {
17028 unsafe {
17031 let n = ffi::whiteout_m3_M3ClothProxy_get_proxyVertices_count(self.raw.as_ptr());
17032 let p = ffi::whiteout_m3_M3ClothProxy_get_proxyVertices_data(self.raw.as_ptr());
17033 if p.is_null() || n == 0 {
17034 &[]
17035 } else {
17036 core::slice::from_raw_parts(p, n)
17037 }
17038 }
17039 }
17040
17041 pub fn proxy_vertices_mut(&mut self) -> &mut [u64] {
17043 unsafe {
17045 let n = ffi::whiteout_m3_M3ClothProxy_get_proxyVertices_count(self.raw.as_ptr());
17046 let p =
17047 ffi::whiteout_m3_M3ClothProxy_get_proxyVertices_data(self.raw.as_ptr()) as *mut u64;
17048 if p.is_null() || n == 0 {
17049 &mut []
17050 } else {
17051 core::slice::from_raw_parts_mut(p, n)
17052 }
17053 }
17054 }
17055
17056 pub fn set_proxy_vertices(&mut self, values: &[u64]) {
17057 unsafe {
17059 ffi::whiteout_m3_M3ClothProxy_assign_proxyVertices(
17060 self.raw.as_ptr(),
17061 values.as_ptr() as *const _,
17062 values.len(),
17063 )
17064 }
17065 }
17066
17067 pub fn resize_proxy_vertices(&mut self, count: usize) {
17068 unsafe { ffi::whiteout_m3_M3ClothProxy_resize_proxyVertices(self.raw.as_ptr(), count) }
17071 }
17072
17073 pub fn proxy_weights(&self) -> &[u32] {
17076 unsafe {
17079 let n = ffi::whiteout_m3_M3ClothProxy_get_proxyWeights_count(self.raw.as_ptr());
17080 let p = ffi::whiteout_m3_M3ClothProxy_get_proxyWeights_data(self.raw.as_ptr());
17081 if p.is_null() || n == 0 {
17082 &[]
17083 } else {
17084 core::slice::from_raw_parts(p, n)
17085 }
17086 }
17087 }
17088
17089 pub fn proxy_weights_mut(&mut self) -> &mut [u32] {
17091 unsafe {
17093 let n = ffi::whiteout_m3_M3ClothProxy_get_proxyWeights_count(self.raw.as_ptr());
17094 let p =
17095 ffi::whiteout_m3_M3ClothProxy_get_proxyWeights_data(self.raw.as_ptr()) as *mut u32;
17096 if p.is_null() || n == 0 {
17097 &mut []
17098 } else {
17099 core::slice::from_raw_parts_mut(p, n)
17100 }
17101 }
17102 }
17103
17104 pub fn set_proxy_weights(&mut self, values: &[u32]) {
17105 unsafe {
17107 ffi::whiteout_m3_M3ClothProxy_assign_proxyWeights(
17108 self.raw.as_ptr(),
17109 values.as_ptr() as *const _,
17110 values.len(),
17111 )
17112 }
17113 }
17114
17115 pub fn resize_proxy_weights(&mut self, count: usize) {
17116 unsafe { ffi::whiteout_m3_M3ClothProxy_resize_proxyWeights(self.raw.as_ptr(), count) }
17119 }
17120}
17121
17122impl Default for ClothProxy {
17123 fn default() -> Self {
17124 Self::new()
17125 }
17126}
17127
17128pub struct ClothPhysics {
17132 pub(crate) raw: core::ptr::NonNull<ffi::whiteout_M3ClothPhysics>,
17133}
17134
17135impl Drop for ClothPhysics {
17136 fn drop(&mut self) {
17137 unsafe { ffi::whiteout_m3_M3ClothPhysics_delete(self.raw.as_ptr()) }
17139 }
17140}
17141
17142impl ClothPhysics {
17143 #[allow(dead_code)] pub(crate) unsafe fn from_raw(raw: *mut ffi::whiteout_M3ClothPhysics) -> Option<Self> {
17147 core::ptr::NonNull::new(raw).map(|raw| ClothPhysics { raw })
17148 }
17149}
17150
17151unsafe impl Send for ClothPhysics {}
17156
17157impl core::fmt::Debug for ClothPhysics {
17158 fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
17159 f.debug_struct("ClothPhysics").finish_non_exhaustive()
17160 }
17161}
17162
17163impl ClothPhysics {
17164 pub fn new() -> Self {
17167 unsafe {
17170 let raw = ffi::whiteout_m3_M3ClothPhysics_new();
17171 Self::from_raw(raw).expect("native ClothPhysics allocation failed")
17172 }
17173 }
17174
17175 pub fn cloth_mesh_count(&self) -> u32 {
17177 unsafe { ffi::whiteout_m3_M3ClothPhysics_get_clothMeshCount(self.raw.as_ptr()) }
17179 }
17180
17181 pub fn set_cloth_mesh_count(&mut self, value: u32) {
17182 unsafe { ffi::whiteout_m3_M3ClothPhysics_set_clothMeshCount(self.raw.as_ptr(), value) }
17184 }
17185
17186 pub fn skin_bone_count(&self) -> u32 {
17188 unsafe { ffi::whiteout_m3_M3ClothPhysics_get_skinBoneCount(self.raw.as_ptr()) }
17190 }
17191
17192 pub fn set_skin_bone_count(&mut self, value: u32) {
17193 unsafe { ffi::whiteout_m3_M3ClothPhysics_set_skinBoneCount(self.raw.as_ptr(), value) }
17195 }
17196
17197 pub fn skin_bones(&self) -> &[u16] {
17200 unsafe {
17203 let n = ffi::whiteout_m3_M3ClothPhysics_get_skinBones_count(self.raw.as_ptr());
17204 let p = ffi::whiteout_m3_M3ClothPhysics_get_skinBones_data(self.raw.as_ptr());
17205 if p.is_null() || n == 0 {
17206 &[]
17207 } else {
17208 core::slice::from_raw_parts(p, n)
17209 }
17210 }
17211 }
17212
17213 pub fn skin_bones_mut(&mut self) -> &mut [u16] {
17215 unsafe {
17217 let n = ffi::whiteout_m3_M3ClothPhysics_get_skinBones_count(self.raw.as_ptr());
17218 let p =
17219 ffi::whiteout_m3_M3ClothPhysics_get_skinBones_data(self.raw.as_ptr()) as *mut u16;
17220 if p.is_null() || n == 0 {
17221 &mut []
17222 } else {
17223 core::slice::from_raw_parts_mut(p, n)
17224 }
17225 }
17226 }
17227
17228 pub fn set_skin_bones(&mut self, values: &[u16]) {
17229 unsafe {
17231 ffi::whiteout_m3_M3ClothPhysics_assign_skinBones(
17232 self.raw.as_ptr(),
17233 values.as_ptr() as *const _,
17234 values.len(),
17235 )
17236 }
17237 }
17238
17239 pub fn resize_skin_bones(&mut self, count: usize) {
17240 unsafe { ffi::whiteout_m3_M3ClothPhysics_resize_skinBones(self.raw.as_ptr(), count) }
17243 }
17244
17245 pub fn sim_enabled(&self) -> &[u8] {
17248 unsafe {
17251 let n = ffi::whiteout_m3_M3ClothPhysics_get_simEnabled_count(self.raw.as_ptr());
17252 let p = ffi::whiteout_m3_M3ClothPhysics_get_simEnabled_data(self.raw.as_ptr());
17253 if p.is_null() || n == 0 {
17254 &[]
17255 } else {
17256 core::slice::from_raw_parts(p, n)
17257 }
17258 }
17259 }
17260
17261 pub fn sim_enabled_mut(&mut self) -> &mut [u8] {
17263 unsafe {
17265 let n = ffi::whiteout_m3_M3ClothPhysics_get_simEnabled_count(self.raw.as_ptr());
17266 let p =
17267 ffi::whiteout_m3_M3ClothPhysics_get_simEnabled_data(self.raw.as_ptr()) as *mut u8;
17268 if p.is_null() || n == 0 {
17269 &mut []
17270 } else {
17271 core::slice::from_raw_parts_mut(p, n)
17272 }
17273 }
17274 }
17275
17276 pub fn set_sim_enabled(&mut self, values: &[u8]) {
17277 unsafe {
17279 ffi::whiteout_m3_M3ClothPhysics_assign_simEnabled(
17280 self.raw.as_ptr(),
17281 values.as_ptr() as *const _,
17282 values.len(),
17283 )
17284 }
17285 }
17286
17287 pub fn resize_sim_enabled(&mut self, count: usize) {
17288 unsafe { ffi::whiteout_m3_M3ClothPhysics_resize_simEnabled(self.raw.as_ptr(), count) }
17291 }
17292
17293 pub fn vertex_bones(&self) -> &[u32] {
17296 unsafe {
17299 let n = ffi::whiteout_m3_M3ClothPhysics_get_vertexBones_count(self.raw.as_ptr());
17300 let p = ffi::whiteout_m3_M3ClothPhysics_get_vertexBones_data(self.raw.as_ptr());
17301 if p.is_null() || n == 0 {
17302 &[]
17303 } else {
17304 core::slice::from_raw_parts(p, n)
17305 }
17306 }
17307 }
17308
17309 pub fn vertex_bones_mut(&mut self) -> &mut [u32] {
17311 unsafe {
17313 let n = ffi::whiteout_m3_M3ClothPhysics_get_vertexBones_count(self.raw.as_ptr());
17314 let p =
17315 ffi::whiteout_m3_M3ClothPhysics_get_vertexBones_data(self.raw.as_ptr()) as *mut u32;
17316 if p.is_null() || n == 0 {
17317 &mut []
17318 } else {
17319 core::slice::from_raw_parts_mut(p, n)
17320 }
17321 }
17322 }
17323
17324 pub fn set_vertex_bones(&mut self, values: &[u32]) {
17325 unsafe {
17327 ffi::whiteout_m3_M3ClothPhysics_assign_vertexBones(
17328 self.raw.as_ptr(),
17329 values.as_ptr() as *const _,
17330 values.len(),
17331 )
17332 }
17333 }
17334
17335 pub fn resize_vertex_bones(&mut self, count: usize) {
17336 unsafe { ffi::whiteout_m3_M3ClothPhysics_resize_vertexBones(self.raw.as_ptr(), count) }
17339 }
17340
17341 pub fn vertex_weights(&self) -> &[u32] {
17344 unsafe {
17347 let n = ffi::whiteout_m3_M3ClothPhysics_get_vertexWeights_count(self.raw.as_ptr());
17348 let p = ffi::whiteout_m3_M3ClothPhysics_get_vertexWeights_data(self.raw.as_ptr());
17349 if p.is_null() || n == 0 {
17350 &[]
17351 } else {
17352 core::slice::from_raw_parts(p, n)
17353 }
17354 }
17355 }
17356
17357 pub fn vertex_weights_mut(&mut self) -> &mut [u32] {
17359 unsafe {
17361 let n = ffi::whiteout_m3_M3ClothPhysics_get_vertexWeights_count(self.raw.as_ptr());
17362 let p = ffi::whiteout_m3_M3ClothPhysics_get_vertexWeights_data(self.raw.as_ptr())
17363 as *mut u32;
17364 if p.is_null() || n == 0 {
17365 &mut []
17366 } else {
17367 core::slice::from_raw_parts_mut(p, n)
17368 }
17369 }
17370 }
17371
17372 pub fn set_vertex_weights(&mut self, values: &[u32]) {
17373 unsafe {
17375 ffi::whiteout_m3_M3ClothPhysics_assign_vertexWeights(
17376 self.raw.as_ptr(),
17377 values.as_ptr() as *const _,
17378 values.len(),
17379 )
17380 }
17381 }
17382
17383 pub fn resize_vertex_weights(&mut self, count: usize) {
17384 unsafe { ffi::whiteout_m3_M3ClothPhysics_resize_vertexWeights(self.raw.as_ptr(), count) }
17387 }
17388
17389 pub fn colliders_len(&self) -> usize {
17391 unsafe { ffi::whiteout_m3_M3ClothPhysics_get_colliders_count(self.raw.as_ptr()) }
17393 }
17394
17395 pub fn colliders(&self, index: usize) -> Option<crate::support::Ref<'_, ClothCollider>> {
17397 if index >= self.colliders_len() {
17398 return None;
17399 }
17400 unsafe {
17402 Some(crate::support::Ref::new(ClothCollider {
17403 raw: core::ptr::NonNull::new_unchecked(
17404 ffi::whiteout_m3_M3ClothPhysics_get_colliders_at(self.raw.as_ptr(), index),
17405 ),
17406 }))
17407 }
17408 }
17409
17410 pub fn colliders_mut(
17411 &mut self,
17412 index: usize,
17413 ) -> Option<crate::support::RefMut<'_, ClothCollider>> {
17414 if index >= self.colliders_len() {
17415 return None;
17416 }
17417 unsafe {
17419 Some(crate::support::RefMut::new(ClothCollider {
17420 raw: core::ptr::NonNull::new_unchecked(
17421 ffi::whiteout_m3_M3ClothPhysics_get_colliders_at(self.raw.as_ptr(), index),
17422 ),
17423 }))
17424 }
17425 }
17426
17427 pub fn colliders_iter(
17429 &self,
17430 ) -> impl ExactSizeIterator<Item = crate::support::Ref<'_, ClothCollider>> {
17431 (0..self.colliders_len()).map(move |i| self.colliders(i).expect("index below len"))
17432 }
17433
17434 pub fn resize_colliders(&mut self, count: usize) {
17435 unsafe { ffi::whiteout_m3_M3ClothPhysics_resize_colliders(self.raw.as_ptr(), count) }
17437 }
17438
17439 pub fn proxies_len(&self) -> usize {
17441 unsafe { ffi::whiteout_m3_M3ClothPhysics_get_proxies_count(self.raw.as_ptr()) }
17443 }
17444
17445 pub fn proxies(&self, index: usize) -> Option<crate::support::Ref<'_, ClothProxy>> {
17447 if index >= self.proxies_len() {
17448 return None;
17449 }
17450 unsafe {
17452 Some(crate::support::Ref::new(ClothProxy {
17453 raw: core::ptr::NonNull::new_unchecked(
17454 ffi::whiteout_m3_M3ClothPhysics_get_proxies_at(self.raw.as_ptr(), index),
17455 ),
17456 }))
17457 }
17458 }
17459
17460 pub fn proxies_mut(&mut self, index: usize) -> Option<crate::support::RefMut<'_, ClothProxy>> {
17461 if index >= self.proxies_len() {
17462 return None;
17463 }
17464 unsafe {
17466 Some(crate::support::RefMut::new(ClothProxy {
17467 raw: core::ptr::NonNull::new_unchecked(
17468 ffi::whiteout_m3_M3ClothPhysics_get_proxies_at(self.raw.as_ptr(), index),
17469 ),
17470 }))
17471 }
17472 }
17473
17474 pub fn proxies_iter(
17476 &self,
17477 ) -> impl ExactSizeIterator<Item = crate::support::Ref<'_, ClothProxy>> {
17478 (0..self.proxies_len()).map(move |i| self.proxies(i).expect("index below len"))
17479 }
17480
17481 pub fn resize_proxies(&mut self, count: usize) {
17482 unsafe { ffi::whiteout_m3_M3ClothPhysics_resize_proxies(self.raw.as_ptr(), count) }
17484 }
17485
17486 pub fn density(&self) -> f32 {
17488 unsafe { ffi::whiteout_m3_M3ClothPhysics_get_density(self.raw.as_ptr()) }
17490 }
17491
17492 pub fn set_density(&mut self, value: f32) {
17493 unsafe { ffi::whiteout_m3_M3ClothPhysics_set_density(self.raw.as_ptr(), value) }
17495 }
17496
17497 pub fn tracking(&self) -> f32 {
17499 unsafe { ffi::whiteout_m3_M3ClothPhysics_get_tracking(self.raw.as_ptr()) }
17501 }
17502
17503 pub fn set_tracking(&mut self, value: f32) {
17504 unsafe { ffi::whiteout_m3_M3ClothPhysics_set_tracking(self.raw.as_ptr(), value) }
17506 }
17507
17508 pub fn stretch_stiffness(&self) -> f32 {
17510 unsafe { ffi::whiteout_m3_M3ClothPhysics_get_stretchStiffness(self.raw.as_ptr()) }
17512 }
17513
17514 pub fn set_stretch_stiffness(&mut self, value: f32) {
17515 unsafe { ffi::whiteout_m3_M3ClothPhysics_set_stretchStiffness(self.raw.as_ptr(), value) }
17517 }
17518
17519 pub fn horizontal_stiffness(&self) -> f32 {
17521 unsafe { ffi::whiteout_m3_M3ClothPhysics_get_horizontalStiffness(self.raw.as_ptr()) }
17523 }
17524
17525 pub fn set_horizontal_stiffness(&mut self, value: f32) {
17526 unsafe { ffi::whiteout_m3_M3ClothPhysics_set_horizontalStiffness(self.raw.as_ptr(), value) }
17528 }
17529
17530 pub fn bending_stiffness(&self) -> f32 {
17532 unsafe { ffi::whiteout_m3_M3ClothPhysics_get_bendingStiffness(self.raw.as_ptr()) }
17534 }
17535
17536 pub fn set_bending_stiffness(&mut self, value: f32) {
17537 unsafe { ffi::whiteout_m3_M3ClothPhysics_set_bendingStiffness(self.raw.as_ptr(), value) }
17539 }
17540
17541 pub fn damping(&self) -> f32 {
17543 unsafe { ffi::whiteout_m3_M3ClothPhysics_get_damping(self.raw.as_ptr()) }
17545 }
17546
17547 pub fn set_damping(&mut self, value: f32) {
17548 unsafe { ffi::whiteout_m3_M3ClothPhysics_set_damping(self.raw.as_ptr(), value) }
17550 }
17551
17552 pub fn friction(&self) -> f32 {
17554 unsafe { ffi::whiteout_m3_M3ClothPhysics_get_friction(self.raw.as_ptr()) }
17556 }
17557
17558 pub fn set_friction(&mut self, value: f32) {
17559 unsafe { ffi::whiteout_m3_M3ClothPhysics_set_friction(self.raw.as_ptr(), value) }
17561 }
17562
17563 pub fn gravity(&self) -> f32 {
17565 unsafe { ffi::whiteout_m3_M3ClothPhysics_get_gravity(self.raw.as_ptr()) }
17567 }
17568
17569 pub fn set_gravity(&mut self, value: f32) {
17570 unsafe { ffi::whiteout_m3_M3ClothPhysics_set_gravity(self.raw.as_ptr(), value) }
17572 }
17573
17574 pub fn explosion_scale(&self) -> f32 {
17576 unsafe { ffi::whiteout_m3_M3ClothPhysics_get_explosionScale(self.raw.as_ptr()) }
17578 }
17579
17580 pub fn set_explosion_scale(&mut self, value: f32) {
17581 unsafe { ffi::whiteout_m3_M3ClothPhysics_set_explosionScale(self.raw.as_ptr(), value) }
17583 }
17584
17585 pub fn wind_scale(&self) -> f32 {
17587 unsafe { ffi::whiteout_m3_M3ClothPhysics_get_windScale(self.raw.as_ptr()) }
17589 }
17590
17591 pub fn set_wind_scale(&mut self, value: f32) {
17592 unsafe { ffi::whiteout_m3_M3ClothPhysics_set_windScale(self.raw.as_ptr(), value) }
17594 }
17595
17596 pub fn shear_stiffness(&self) -> f32 {
17598 unsafe { ffi::whiteout_m3_M3ClothPhysics_get_shearStiffness(self.raw.as_ptr()) }
17600 }
17601
17602 pub fn set_shear_stiffness(&mut self, value: f32) {
17603 unsafe { ffi::whiteout_m3_M3ClothPhysics_set_shearStiffness(self.raw.as_ptr(), value) }
17605 }
17606
17607 pub fn drag_factor(&self) -> f32 {
17609 unsafe { ffi::whiteout_m3_M3ClothPhysics_get_dragFactor(self.raw.as_ptr()) }
17611 }
17612
17613 pub fn set_drag_factor(&mut self, value: f32) {
17614 unsafe { ffi::whiteout_m3_M3ClothPhysics_set_dragFactor(self.raw.as_ptr(), value) }
17616 }
17617
17618 pub fn lift_factor(&self) -> f32 {
17620 unsafe { ffi::whiteout_m3_M3ClothPhysics_get_liftFactor(self.raw.as_ptr()) }
17622 }
17623
17624 pub fn set_lift_factor(&mut self, value: f32) {
17625 unsafe { ffi::whiteout_m3_M3ClothPhysics_set_liftFactor(self.raw.as_ptr(), value) }
17627 }
17628
17629 pub fn sphere_stiffness(&self) -> f32 {
17631 unsafe { ffi::whiteout_m3_M3ClothPhysics_get_sphereStiffness(self.raw.as_ptr()) }
17633 }
17634
17635 pub fn set_sphere_stiffness(&mut self, value: f32) {
17636 unsafe { ffi::whiteout_m3_M3ClothPhysics_set_sphereStiffness(self.raw.as_ptr(), value) }
17638 }
17639
17640 pub fn flatten(&self) -> u32 {
17642 unsafe { ffi::whiteout_m3_M3ClothPhysics_get_flatten(self.raw.as_ptr()) }
17644 }
17645
17646 pub fn set_flatten(&mut self, value: u32) {
17647 unsafe { ffi::whiteout_m3_M3ClothPhysics_set_flatten(self.raw.as_ptr(), value) }
17649 }
17650
17651 pub fn active(&self) -> crate::support::Ref<'_, AnimRefU32> {
17654 unsafe {
17657 crate::support::Ref::new(AnimRefU32 {
17658 raw: core::ptr::NonNull::new_unchecked(ffi::whiteout_m3_M3ClothPhysics_get_active(
17659 self.raw.as_ptr(),
17660 )),
17661 })
17662 }
17663 }
17664
17665 pub fn active_mut(&mut self) -> crate::support::RefMut<'_, AnimRefU32> {
17666 unsafe {
17668 crate::support::RefMut::new(AnimRefU32 {
17669 raw: core::ptr::NonNull::new_unchecked(ffi::whiteout_m3_M3ClothPhysics_get_active(
17670 self.raw.as_ptr(),
17671 )),
17672 })
17673 }
17674 }
17675
17676 pub fn use_skin_collision(&self) -> u32 {
17678 unsafe { ffi::whiteout_m3_M3ClothPhysics_get_useSkinCollision(self.raw.as_ptr()) }
17680 }
17681
17682 pub fn set_use_skin_collision(&mut self, value: u32) {
17683 unsafe { ffi::whiteout_m3_M3ClothPhysics_set_useSkinCollision(self.raw.as_ptr(), value) }
17685 }
17686
17687 pub fn skin_offset(&self) -> f32 {
17689 unsafe { ffi::whiteout_m3_M3ClothPhysics_get_skinOffset(self.raw.as_ptr()) }
17691 }
17692
17693 pub fn set_skin_offset(&mut self, value: f32) {
17694 unsafe { ffi::whiteout_m3_M3ClothPhysics_set_skinOffset(self.raw.as_ptr(), value) }
17696 }
17697
17698 pub fn skin_exponent(&self) -> f32 {
17700 unsafe { ffi::whiteout_m3_M3ClothPhysics_get_skinExponent(self.raw.as_ptr()) }
17702 }
17703
17704 pub fn set_skin_exponent(&mut self, value: f32) {
17705 unsafe { ffi::whiteout_m3_M3ClothPhysics_set_skinExponent(self.raw.as_ptr(), value) }
17707 }
17708
17709 pub fn skin_stiffness(&self) -> f32 {
17711 unsafe { ffi::whiteout_m3_M3ClothPhysics_get_skinStiffness(self.raw.as_ptr()) }
17713 }
17714
17715 pub fn set_skin_stiffness(&mut self, value: f32) {
17716 unsafe { ffi::whiteout_m3_M3ClothPhysics_set_skinStiffness(self.raw.as_ptr(), value) }
17718 }
17719
17720 pub fn local_channels(&self) -> u32 {
17722 unsafe { ffi::whiteout_m3_M3ClothPhysics_get_localChannels(self.raw.as_ptr()) }
17724 }
17725
17726 pub fn set_local_channels(&mut self, value: u32) {
17727 unsafe { ffi::whiteout_m3_M3ClothPhysics_set_localChannels(self.raw.as_ptr(), value) }
17729 }
17730
17731 pub fn local_wind(&self) -> crate::math::Vector3f {
17733 unsafe {
17736 *(ffi::whiteout_m3_M3ClothPhysics_get_localWind(self.raw.as_ptr())
17737 as *const crate::math::Vector3f)
17738 }
17739 }
17740
17741 pub fn set_local_wind(&mut self, value: crate::math::Vector3f) {
17742 unsafe {
17744 ffi::whiteout_m3_M3ClothPhysics_set_localWind(
17745 self.raw.as_ptr(),
17746 &value as *const crate::math::Vector3f as *const _,
17747 )
17748 }
17749 }
17750}
17751
17752impl Default for ClothPhysics {
17753 fn default() -> Self {
17754 Self::new()
17755 }
17756}
17757
17758pub struct Light {
17762 pub(crate) raw: core::ptr::NonNull<ffi::whiteout_M3Light>,
17763}
17764
17765impl Drop for Light {
17766 fn drop(&mut self) {
17767 unsafe { ffi::whiteout_m3_M3Light_delete(self.raw.as_ptr()) }
17769 }
17770}
17771
17772impl Light {
17773 #[allow(dead_code)] pub(crate) unsafe fn from_raw(raw: *mut ffi::whiteout_M3Light) -> Option<Self> {
17777 core::ptr::NonNull::new(raw).map(|raw| Light { raw })
17778 }
17779}
17780
17781unsafe impl Send for Light {}
17786
17787impl core::fmt::Debug for Light {
17788 fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
17789 f.debug_struct("Light").finish_non_exhaustive()
17790 }
17791}
17792
17793impl Light {
17794 pub fn new() -> Self {
17797 unsafe {
17800 let raw = ffi::whiteout_m3_M3Light_new();
17801 Self::from_raw(raw).expect("native Light allocation failed")
17802 }
17803 }
17804
17805 pub fn light_type(&self) -> LightType {
17807 unsafe { ffi::whiteout_m3_M3Light_get_lightType(self.raw.as_ptr()) }
17809 .try_into()
17810 .expect("unknown enum discriminant from the native library")
17811 }
17812
17813 pub fn set_light_type(&mut self, value: LightType) {
17814 unsafe { ffi::whiteout_m3_M3Light_set_lightType(self.raw.as_ptr(), value as i32) }
17816 }
17817
17818 pub fn bone_index(&self) -> u16 {
17820 unsafe { ffi::whiteout_m3_M3Light_get_boneIndex(self.raw.as_ptr()) }
17822 }
17823
17824 pub fn set_bone_index(&mut self, value: u16) {
17825 unsafe { ffi::whiteout_m3_M3Light_set_boneIndex(self.raw.as_ptr(), value) }
17827 }
17828
17829 pub fn flags(&self) -> LightFlag {
17831 LightFlag(unsafe { ffi::whiteout_m3_M3Light_get_flags(self.raw.as_ptr()) })
17833 }
17834
17835 pub fn set_flags(&mut self, value: LightFlag) {
17836 unsafe { ffi::whiteout_m3_M3Light_set_flags(self.raw.as_ptr(), value.0) }
17838 }
17839
17840 pub fn lod_cut(&self) -> u32 {
17842 unsafe { ffi::whiteout_m3_M3Light_get_lodCut(self.raw.as_ptr()) }
17844 }
17845
17846 pub fn set_lod_cut(&mut self, value: u32) {
17847 unsafe { ffi::whiteout_m3_M3Light_set_lodCut(self.raw.as_ptr(), value) }
17849 }
17850
17851 pub fn shadow_lod_cut(&self) -> u32 {
17853 unsafe { ffi::whiteout_m3_M3Light_get_shadowLodCut(self.raw.as_ptr()) }
17855 }
17856
17857 pub fn set_shadow_lod_cut(&mut self, value: u32) {
17858 unsafe { ffi::whiteout_m3_M3Light_set_shadowLodCut(self.raw.as_ptr(), value) }
17860 }
17861
17862 pub fn diffuse_color(&self) -> crate::support::Ref<'_, AnimRefVector3f> {
17865 unsafe {
17868 crate::support::Ref::new(AnimRefVector3f {
17869 raw: core::ptr::NonNull::new_unchecked(ffi::whiteout_m3_M3Light_get_diffuseColor(
17870 self.raw.as_ptr(),
17871 )),
17872 })
17873 }
17874 }
17875
17876 pub fn diffuse_color_mut(&mut self) -> crate::support::RefMut<'_, AnimRefVector3f> {
17877 unsafe {
17879 crate::support::RefMut::new(AnimRefVector3f {
17880 raw: core::ptr::NonNull::new_unchecked(ffi::whiteout_m3_M3Light_get_diffuseColor(
17881 self.raw.as_ptr(),
17882 )),
17883 })
17884 }
17885 }
17886
17887 pub fn intensity_multiplier(&self) -> crate::support::Ref<'_, AnimRefF32> {
17890 unsafe {
17893 crate::support::Ref::new(AnimRefF32 {
17894 raw: core::ptr::NonNull::new_unchecked(
17895 ffi::whiteout_m3_M3Light_get_intensityMultiplier(self.raw.as_ptr()),
17896 ),
17897 })
17898 }
17899 }
17900
17901 pub fn intensity_multiplier_mut(&mut self) -> crate::support::RefMut<'_, AnimRefF32> {
17902 unsafe {
17904 crate::support::RefMut::new(AnimRefF32 {
17905 raw: core::ptr::NonNull::new_unchecked(
17906 ffi::whiteout_m3_M3Light_get_intensityMultiplier(self.raw.as_ptr()),
17907 ),
17908 })
17909 }
17910 }
17911
17912 pub fn specular_color(&self) -> crate::support::Ref<'_, AnimRefVector3f> {
17915 unsafe {
17918 crate::support::Ref::new(AnimRefVector3f {
17919 raw: core::ptr::NonNull::new_unchecked(ffi::whiteout_m3_M3Light_get_specularColor(
17920 self.raw.as_ptr(),
17921 )),
17922 })
17923 }
17924 }
17925
17926 pub fn specular_color_mut(&mut self) -> crate::support::RefMut<'_, AnimRefVector3f> {
17927 unsafe {
17929 crate::support::RefMut::new(AnimRefVector3f {
17930 raw: core::ptr::NonNull::new_unchecked(ffi::whiteout_m3_M3Light_get_specularColor(
17931 self.raw.as_ptr(),
17932 )),
17933 })
17934 }
17935 }
17936
17937 pub fn specular_multiplier(&self) -> crate::support::Ref<'_, AnimRefF32> {
17940 unsafe {
17943 crate::support::Ref::new(AnimRefF32 {
17944 raw: core::ptr::NonNull::new_unchecked(
17945 ffi::whiteout_m3_M3Light_get_specularMultiplier(self.raw.as_ptr()),
17946 ),
17947 })
17948 }
17949 }
17950
17951 pub fn specular_multiplier_mut(&mut self) -> crate::support::RefMut<'_, AnimRefF32> {
17952 unsafe {
17954 crate::support::RefMut::new(AnimRefF32 {
17955 raw: core::ptr::NonNull::new_unchecked(
17956 ffi::whiteout_m3_M3Light_get_specularMultiplier(self.raw.as_ptr()),
17957 ),
17958 })
17959 }
17960 }
17961
17962 pub fn decay(&self) -> crate::support::Ref<'_, AnimRefF32> {
17965 unsafe {
17968 crate::support::Ref::new(AnimRefF32 {
17969 raw: core::ptr::NonNull::new_unchecked(ffi::whiteout_m3_M3Light_get_decay(
17970 self.raw.as_ptr(),
17971 )),
17972 })
17973 }
17974 }
17975
17976 pub fn decay_mut(&mut self) -> crate::support::RefMut<'_, AnimRefF32> {
17977 unsafe {
17979 crate::support::RefMut::new(AnimRefF32 {
17980 raw: core::ptr::NonNull::new_unchecked(ffi::whiteout_m3_M3Light_get_decay(
17981 self.raw.as_ptr(),
17982 )),
17983 })
17984 }
17985 }
17986
17987 pub fn attenuation_end(&self) -> f32 {
17989 unsafe { ffi::whiteout_m3_M3Light_get_attenuationEnd(self.raw.as_ptr()) }
17991 }
17992
17993 pub fn set_attenuation_end(&mut self, value: f32) {
17994 unsafe { ffi::whiteout_m3_M3Light_set_attenuationEnd(self.raw.as_ptr(), value) }
17996 }
17997
17998 pub fn attenuation_start(&self) -> crate::support::Ref<'_, AnimRefF32> {
18001 unsafe {
18004 crate::support::Ref::new(AnimRefF32 {
18005 raw: core::ptr::NonNull::new_unchecked(
18006 ffi::whiteout_m3_M3Light_get_attenuationStart(self.raw.as_ptr()),
18007 ),
18008 })
18009 }
18010 }
18011
18012 pub fn attenuation_start_mut(&mut self) -> crate::support::RefMut<'_, AnimRefF32> {
18013 unsafe {
18015 crate::support::RefMut::new(AnimRefF32 {
18016 raw: core::ptr::NonNull::new_unchecked(
18017 ffi::whiteout_m3_M3Light_get_attenuationStart(self.raw.as_ptr()),
18018 ),
18019 })
18020 }
18021 }
18022
18023 pub fn hot_spot(&self) -> crate::support::Ref<'_, AnimRefF32> {
18026 unsafe {
18029 crate::support::Ref::new(AnimRefF32 {
18030 raw: core::ptr::NonNull::new_unchecked(ffi::whiteout_m3_M3Light_get_hotSpot(
18031 self.raw.as_ptr(),
18032 )),
18033 })
18034 }
18035 }
18036
18037 pub fn hot_spot_mut(&mut self) -> crate::support::RefMut<'_, AnimRefF32> {
18038 unsafe {
18040 crate::support::RefMut::new(AnimRefF32 {
18041 raw: core::ptr::NonNull::new_unchecked(ffi::whiteout_m3_M3Light_get_hotSpot(
18042 self.raw.as_ptr(),
18043 )),
18044 })
18045 }
18046 }
18047
18048 pub fn falloff(&self) -> crate::support::Ref<'_, AnimRefF32> {
18051 unsafe {
18054 crate::support::Ref::new(AnimRefF32 {
18055 raw: core::ptr::NonNull::new_unchecked(ffi::whiteout_m3_M3Light_get_falloff(
18056 self.raw.as_ptr(),
18057 )),
18058 })
18059 }
18060 }
18061
18062 pub fn falloff_mut(&mut self) -> crate::support::RefMut<'_, AnimRefF32> {
18063 unsafe {
18065 crate::support::RefMut::new(AnimRefF32 {
18066 raw: core::ptr::NonNull::new_unchecked(ffi::whiteout_m3_M3Light_get_falloff(
18067 self.raw.as_ptr(),
18068 )),
18069 })
18070 }
18071 }
18072}
18073
18074impl Default for Light {
18075 fn default() -> Self {
18076 Self::new()
18077 }
18078}
18079
18080pub struct Camera {
18084 pub(crate) raw: core::ptr::NonNull<ffi::whiteout_M3Camera>,
18085}
18086
18087impl Drop for Camera {
18088 fn drop(&mut self) {
18089 unsafe { ffi::whiteout_m3_M3Camera_delete(self.raw.as_ptr()) }
18091 }
18092}
18093
18094impl Camera {
18095 #[allow(dead_code)] pub(crate) unsafe fn from_raw(raw: *mut ffi::whiteout_M3Camera) -> Option<Self> {
18099 core::ptr::NonNull::new(raw).map(|raw| Camera { raw })
18100 }
18101}
18102
18103unsafe impl Send for Camera {}
18108
18109impl core::fmt::Debug for Camera {
18110 fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
18111 f.debug_struct("Camera").finish_non_exhaustive()
18112 }
18113}
18114
18115impl Camera {
18116 pub fn new() -> Self {
18119 unsafe {
18122 let raw = ffi::whiteout_m3_M3Camera_new();
18123 Self::from_raw(raw).expect("native Camera allocation failed")
18124 }
18125 }
18126
18127 pub fn bone_index(&self) -> u32 {
18129 unsafe { ffi::whiteout_m3_M3Camera_get_boneIndex(self.raw.as_ptr()) }
18131 }
18132
18133 pub fn set_bone_index(&mut self, value: u32) {
18134 unsafe { ffi::whiteout_m3_M3Camera_set_boneIndex(self.raw.as_ptr(), value) }
18136 }
18137
18138 pub fn name(&self) -> String {
18140 unsafe {
18142 crate::support::take_string(ffi::whiteout_m3_M3Camera_get_name(self.raw.as_ptr()))
18143 }
18144 }
18145
18146 pub fn set_name(&mut self, value: &str) {
18147 let value = std::ffi::CString::new(value).unwrap_or_default();
18148 unsafe { ffi::whiteout_m3_M3Camera_set_name(self.raw.as_ptr(), value.as_ptr()) }
18150 }
18151
18152 pub fn field_of_view(&self) -> crate::support::Ref<'_, AnimRefF32> {
18155 unsafe {
18158 crate::support::Ref::new(AnimRefF32 {
18159 raw: core::ptr::NonNull::new_unchecked(ffi::whiteout_m3_M3Camera_get_fieldOfView(
18160 self.raw.as_ptr(),
18161 )),
18162 })
18163 }
18164 }
18165
18166 pub fn field_of_view_mut(&mut self) -> crate::support::RefMut<'_, AnimRefF32> {
18167 unsafe {
18169 crate::support::RefMut::new(AnimRefF32 {
18170 raw: core::ptr::NonNull::new_unchecked(ffi::whiteout_m3_M3Camera_get_fieldOfView(
18171 self.raw.as_ptr(),
18172 )),
18173 })
18174 }
18175 }
18176
18177 pub fn use_vertical_fov(&self) -> u32 {
18179 unsafe { ffi::whiteout_m3_M3Camera_get_useVerticalFOV(self.raw.as_ptr()) }
18181 }
18182
18183 pub fn set_use_vertical_fov(&mut self, value: u32) {
18184 unsafe { ffi::whiteout_m3_M3Camera_set_useVerticalFOV(self.raw.as_ptr(), value) }
18186 }
18187
18188 pub fn dof_type(&self) -> u32 {
18190 unsafe { ffi::whiteout_m3_M3Camera_get_dofType(self.raw.as_ptr()) }
18192 }
18193
18194 pub fn set_dof_type(&mut self, value: u32) {
18195 unsafe { ffi::whiteout_m3_M3Camera_set_dofType(self.raw.as_ptr(), value) }
18197 }
18198
18199 pub fn far_clip(&self) -> crate::support::Ref<'_, AnimRefF32> {
18202 unsafe {
18205 crate::support::Ref::new(AnimRefF32 {
18206 raw: core::ptr::NonNull::new_unchecked(ffi::whiteout_m3_M3Camera_get_farClip(
18207 self.raw.as_ptr(),
18208 )),
18209 })
18210 }
18211 }
18212
18213 pub fn far_clip_mut(&mut self) -> crate::support::RefMut<'_, AnimRefF32> {
18214 unsafe {
18216 crate::support::RefMut::new(AnimRefF32 {
18217 raw: core::ptr::NonNull::new_unchecked(ffi::whiteout_m3_M3Camera_get_farClip(
18218 self.raw.as_ptr(),
18219 )),
18220 })
18221 }
18222 }
18223
18224 pub fn near_clip(&self) -> crate::support::Ref<'_, AnimRefF32> {
18227 unsafe {
18230 crate::support::Ref::new(AnimRefF32 {
18231 raw: core::ptr::NonNull::new_unchecked(ffi::whiteout_m3_M3Camera_get_nearClip(
18232 self.raw.as_ptr(),
18233 )),
18234 })
18235 }
18236 }
18237
18238 pub fn near_clip_mut(&mut self) -> crate::support::RefMut<'_, AnimRefF32> {
18239 unsafe {
18241 crate::support::RefMut::new(AnimRefF32 {
18242 raw: core::ptr::NonNull::new_unchecked(ffi::whiteout_m3_M3Camera_get_nearClip(
18243 self.raw.as_ptr(),
18244 )),
18245 })
18246 }
18247 }
18248
18249 pub fn shadow_clip_distance(&self) -> crate::support::Ref<'_, AnimRefF32> {
18252 unsafe {
18255 crate::support::Ref::new(AnimRefF32 {
18256 raw: core::ptr::NonNull::new_unchecked(
18257 ffi::whiteout_m3_M3Camera_get_shadowClipDistance(self.raw.as_ptr()),
18258 ),
18259 })
18260 }
18261 }
18262
18263 pub fn shadow_clip_distance_mut(&mut self) -> crate::support::RefMut<'_, AnimRefF32> {
18264 unsafe {
18266 crate::support::RefMut::new(AnimRefF32 {
18267 raw: core::ptr::NonNull::new_unchecked(
18268 ffi::whiteout_m3_M3Camera_get_shadowClipDistance(self.raw.as_ptr()),
18269 ),
18270 })
18271 }
18272 }
18273
18274 pub fn focus_distance(&self) -> crate::support::Ref<'_, AnimRefF32> {
18277 unsafe {
18280 crate::support::Ref::new(AnimRefF32 {
18281 raw: core::ptr::NonNull::new_unchecked(
18282 ffi::whiteout_m3_M3Camera_get_focusDistance(self.raw.as_ptr()),
18283 ),
18284 })
18285 }
18286 }
18287
18288 pub fn focus_distance_mut(&mut self) -> crate::support::RefMut<'_, AnimRefF32> {
18289 unsafe {
18291 crate::support::RefMut::new(AnimRefF32 {
18292 raw: core::ptr::NonNull::new_unchecked(
18293 ffi::whiteout_m3_M3Camera_get_focusDistance(self.raw.as_ptr()),
18294 ),
18295 })
18296 }
18297 }
18298
18299 pub fn far_focus_range(&self) -> crate::support::Ref<'_, AnimRefF32> {
18302 unsafe {
18305 crate::support::Ref::new(AnimRefF32 {
18306 raw: core::ptr::NonNull::new_unchecked(
18307 ffi::whiteout_m3_M3Camera_get_farFocusRange(self.raw.as_ptr()),
18308 ),
18309 })
18310 }
18311 }
18312
18313 pub fn far_focus_range_mut(&mut self) -> crate::support::RefMut<'_, AnimRefF32> {
18314 unsafe {
18316 crate::support::RefMut::new(AnimRefF32 {
18317 raw: core::ptr::NonNull::new_unchecked(
18318 ffi::whiteout_m3_M3Camera_get_farFocusRange(self.raw.as_ptr()),
18319 ),
18320 })
18321 }
18322 }
18323
18324 pub fn near_focus_range(&self) -> crate::support::Ref<'_, AnimRefF32> {
18327 unsafe {
18330 crate::support::Ref::new(AnimRefF32 {
18331 raw: core::ptr::NonNull::new_unchecked(
18332 ffi::whiteout_m3_M3Camera_get_nearFocusRange(self.raw.as_ptr()),
18333 ),
18334 })
18335 }
18336 }
18337
18338 pub fn near_focus_range_mut(&mut self) -> crate::support::RefMut<'_, AnimRefF32> {
18339 unsafe {
18341 crate::support::RefMut::new(AnimRefF32 {
18342 raw: core::ptr::NonNull::new_unchecked(
18343 ffi::whiteout_m3_M3Camera_get_nearFocusRange(self.raw.as_ptr()),
18344 ),
18345 })
18346 }
18347 }
18348
18349 pub fn near_falloff_start(&self) -> crate::support::Ref<'_, AnimRefF32> {
18352 unsafe {
18355 crate::support::Ref::new(AnimRefF32 {
18356 raw: core::ptr::NonNull::new_unchecked(
18357 ffi::whiteout_m3_M3Camera_get_nearFalloffStart(self.raw.as_ptr()),
18358 ),
18359 })
18360 }
18361 }
18362
18363 pub fn near_falloff_start_mut(&mut self) -> crate::support::RefMut<'_, AnimRefF32> {
18364 unsafe {
18366 crate::support::RefMut::new(AnimRefF32 {
18367 raw: core::ptr::NonNull::new_unchecked(
18368 ffi::whiteout_m3_M3Camera_get_nearFalloffStart(self.raw.as_ptr()),
18369 ),
18370 })
18371 }
18372 }
18373
18374 pub fn near_falloff_end(&self) -> crate::support::Ref<'_, AnimRefF32> {
18377 unsafe {
18380 crate::support::Ref::new(AnimRefF32 {
18381 raw: core::ptr::NonNull::new_unchecked(
18382 ffi::whiteout_m3_M3Camera_get_nearFalloffEnd(self.raw.as_ptr()),
18383 ),
18384 })
18385 }
18386 }
18387
18388 pub fn near_falloff_end_mut(&mut self) -> crate::support::RefMut<'_, AnimRefF32> {
18389 unsafe {
18391 crate::support::RefMut::new(AnimRefF32 {
18392 raw: core::ptr::NonNull::new_unchecked(
18393 ffi::whiteout_m3_M3Camera_get_nearFalloffEnd(self.raw.as_ptr()),
18394 ),
18395 })
18396 }
18397 }
18398
18399 pub fn dof_amount(&self) -> crate::support::Ref<'_, AnimRefF32> {
18402 unsafe {
18405 crate::support::Ref::new(AnimRefF32 {
18406 raw: core::ptr::NonNull::new_unchecked(ffi::whiteout_m3_M3Camera_get_dofAmount(
18407 self.raw.as_ptr(),
18408 )),
18409 })
18410 }
18411 }
18412
18413 pub fn dof_amount_mut(&mut self) -> crate::support::RefMut<'_, AnimRefF32> {
18414 unsafe {
18416 crate::support::RefMut::new(AnimRefF32 {
18417 raw: core::ptr::NonNull::new_unchecked(ffi::whiteout_m3_M3Camera_get_dofAmount(
18418 self.raw.as_ptr(),
18419 )),
18420 })
18421 }
18422 }
18423
18424 pub fn bokeh_f_stop(&self) -> crate::support::Ref<'_, AnimRefF32> {
18427 unsafe {
18430 crate::support::Ref::new(AnimRefF32 {
18431 raw: core::ptr::NonNull::new_unchecked(ffi::whiteout_m3_M3Camera_get_bokehFStop(
18432 self.raw.as_ptr(),
18433 )),
18434 })
18435 }
18436 }
18437
18438 pub fn bokeh_f_stop_mut(&mut self) -> crate::support::RefMut<'_, AnimRefF32> {
18439 unsafe {
18441 crate::support::RefMut::new(AnimRefF32 {
18442 raw: core::ptr::NonNull::new_unchecked(ffi::whiteout_m3_M3Camera_get_bokehFStop(
18443 self.raw.as_ptr(),
18444 )),
18445 })
18446 }
18447 }
18448
18449 pub fn bokeh_max_co_c_diameter(&self) -> crate::support::Ref<'_, AnimRefF32> {
18452 unsafe {
18455 crate::support::Ref::new(AnimRefF32 {
18456 raw: core::ptr::NonNull::new_unchecked(
18457 ffi::whiteout_m3_M3Camera_get_bokehMaxCoCDiameter(self.raw.as_ptr()),
18458 ),
18459 })
18460 }
18461 }
18462
18463 pub fn bokeh_max_co_c_diameter_mut(&mut self) -> crate::support::RefMut<'_, AnimRefF32> {
18464 unsafe {
18466 crate::support::RefMut::new(AnimRefF32 {
18467 raw: core::ptr::NonNull::new_unchecked(
18468 ffi::whiteout_m3_M3Camera_get_bokehMaxCoCDiameter(self.raw.as_ptr()),
18469 ),
18470 })
18471 }
18472 }
18473}
18474
18475impl Default for Camera {
18476 fn default() -> Self {
18477 Self::new()
18478 }
18479}
18480
18481pub struct Model {
18487 pub(crate) raw: core::ptr::NonNull<ffi::whiteout_M3Model>,
18488}
18489
18490impl Drop for Model {
18491 fn drop(&mut self) {
18492 unsafe { ffi::whiteout_m3_M3Model_delete(self.raw.as_ptr()) }
18494 }
18495}
18496
18497impl Model {
18498 #[allow(dead_code)] pub(crate) unsafe fn from_raw(raw: *mut ffi::whiteout_M3Model) -> Option<Self> {
18502 core::ptr::NonNull::new(raw).map(|raw| Model { raw })
18503 }
18504}
18505
18506unsafe impl Send for Model {}
18511
18512impl core::fmt::Debug for Model {
18513 fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
18514 f.debug_struct("Model").finish_non_exhaustive()
18515 }
18516}
18517
18518impl Model {
18519 pub fn new() -> Self {
18522 unsafe {
18525 let raw = ffi::whiteout_m3_M3Model_new();
18526 Self::from_raw(raw).expect("native Model allocation failed")
18527 }
18528 }
18529
18530 pub fn name(&self) -> String {
18532 unsafe { crate::support::take_string(ffi::whiteout_m3_M3Model_get_name(self.raw.as_ptr())) }
18534 }
18535
18536 pub fn set_name(&mut self, value: &str) {
18537 let value = std::ffi::CString::new(value).unwrap_or_default();
18538 unsafe { ffi::whiteout_m3_M3Model_set_name(self.raw.as_ptr(), value.as_ptr()) }
18540 }
18541
18542 pub fn flags(&self) -> ModelFlag {
18544 ModelFlag(unsafe { ffi::whiteout_m3_M3Model_get_flags(self.raw.as_ptr()) })
18546 }
18547
18548 pub fn set_flags(&mut self, value: ModelFlag) {
18549 unsafe { ffi::whiteout_m3_M3Model_set_flags(self.raw.as_ptr(), value.0) }
18551 }
18552
18553 pub fn sequences_len(&self) -> usize {
18555 unsafe { ffi::whiteout_m3_M3Model_get_sequences_count(self.raw.as_ptr()) }
18557 }
18558
18559 pub fn sequences(&self, index: usize) -> Option<crate::support::Ref<'_, Sequence>> {
18561 if index >= self.sequences_len() {
18562 return None;
18563 }
18564 unsafe {
18566 Some(crate::support::Ref::new(Sequence {
18567 raw: core::ptr::NonNull::new_unchecked(ffi::whiteout_m3_M3Model_get_sequences_at(
18568 self.raw.as_ptr(),
18569 index,
18570 )),
18571 }))
18572 }
18573 }
18574
18575 pub fn sequences_mut(&mut self, index: usize) -> Option<crate::support::RefMut<'_, Sequence>> {
18576 if index >= self.sequences_len() {
18577 return None;
18578 }
18579 unsafe {
18581 Some(crate::support::RefMut::new(Sequence {
18582 raw: core::ptr::NonNull::new_unchecked(ffi::whiteout_m3_M3Model_get_sequences_at(
18583 self.raw.as_ptr(),
18584 index,
18585 )),
18586 }))
18587 }
18588 }
18589
18590 pub fn sequences_iter(
18592 &self,
18593 ) -> impl ExactSizeIterator<Item = crate::support::Ref<'_, Sequence>> {
18594 (0..self.sequences_len()).map(move |i| self.sequences(i).expect("index below len"))
18595 }
18596
18597 pub fn resize_sequences(&mut self, count: usize) {
18598 unsafe { ffi::whiteout_m3_M3Model_resize_sequences(self.raw.as_ptr(), count) }
18600 }
18601
18602 pub fn sub_track_collections_len(&self) -> usize {
18604 unsafe { ffi::whiteout_m3_M3Model_get_subTrackCollections_count(self.raw.as_ptr()) }
18606 }
18607
18608 pub fn sub_track_collections(
18610 &self,
18611 index: usize,
18612 ) -> Option<crate::support::Ref<'_, SubTrackContainer>> {
18613 if index >= self.sub_track_collections_len() {
18614 return None;
18615 }
18616 unsafe {
18618 Some(crate::support::Ref::new(SubTrackContainer {
18619 raw: core::ptr::NonNull::new_unchecked(
18620 ffi::whiteout_m3_M3Model_get_subTrackCollections_at(self.raw.as_ptr(), index),
18621 ),
18622 }))
18623 }
18624 }
18625
18626 pub fn sub_track_collections_mut(
18627 &mut self,
18628 index: usize,
18629 ) -> Option<crate::support::RefMut<'_, SubTrackContainer>> {
18630 if index >= self.sub_track_collections_len() {
18631 return None;
18632 }
18633 unsafe {
18635 Some(crate::support::RefMut::new(SubTrackContainer {
18636 raw: core::ptr::NonNull::new_unchecked(
18637 ffi::whiteout_m3_M3Model_get_subTrackCollections_at(self.raw.as_ptr(), index),
18638 ),
18639 }))
18640 }
18641 }
18642
18643 pub fn sub_track_collections_iter(
18645 &self,
18646 ) -> impl ExactSizeIterator<Item = crate::support::Ref<'_, SubTrackContainer>> {
18647 (0..self.sub_track_collections_len())
18648 .map(move |i| self.sub_track_collections(i).expect("index below len"))
18649 }
18650
18651 pub fn resize_sub_track_collections(&mut self, count: usize) {
18652 unsafe { ffi::whiteout_m3_M3Model_resize_subTrackCollections(self.raw.as_ptr(), count) }
18654 }
18655
18656 pub fn animation_groups_len(&self) -> usize {
18658 unsafe { ffi::whiteout_m3_M3Model_get_animationGroups_count(self.raw.as_ptr()) }
18660 }
18661
18662 pub fn animation_groups(
18664 &self,
18665 index: usize,
18666 ) -> Option<crate::support::Ref<'_, AnimationGroup>> {
18667 if index >= self.animation_groups_len() {
18668 return None;
18669 }
18670 unsafe {
18672 Some(crate::support::Ref::new(AnimationGroup {
18673 raw: core::ptr::NonNull::new_unchecked(
18674 ffi::whiteout_m3_M3Model_get_animationGroups_at(self.raw.as_ptr(), index),
18675 ),
18676 }))
18677 }
18678 }
18679
18680 pub fn animation_groups_mut(
18681 &mut self,
18682 index: usize,
18683 ) -> Option<crate::support::RefMut<'_, AnimationGroup>> {
18684 if index >= self.animation_groups_len() {
18685 return None;
18686 }
18687 unsafe {
18689 Some(crate::support::RefMut::new(AnimationGroup {
18690 raw: core::ptr::NonNull::new_unchecked(
18691 ffi::whiteout_m3_M3Model_get_animationGroups_at(self.raw.as_ptr(), index),
18692 ),
18693 }))
18694 }
18695 }
18696
18697 pub fn animation_groups_iter(
18699 &self,
18700 ) -> impl ExactSizeIterator<Item = crate::support::Ref<'_, AnimationGroup>> {
18701 (0..self.animation_groups_len())
18702 .map(move |i| self.animation_groups(i).expect("index below len"))
18703 }
18704
18705 pub fn resize_animation_groups(&mut self, count: usize) {
18706 unsafe { ffi::whiteout_m3_M3Model_resize_animationGroups(self.raw.as_ptr(), count) }
18708 }
18709
18710 pub fn bone_animation_sets_len(&self) -> usize {
18712 unsafe { ffi::whiteout_m3_M3Model_get_boneAnimationSets_count(self.raw.as_ptr()) }
18714 }
18715
18716 pub fn bone_animation_sets(
18718 &self,
18719 index: usize,
18720 ) -> Option<crate::support::Ref<'_, BoneAnimationSet>> {
18721 if index >= self.bone_animation_sets_len() {
18722 return None;
18723 }
18724 unsafe {
18726 Some(crate::support::Ref::new(BoneAnimationSet {
18727 raw: core::ptr::NonNull::new_unchecked(
18728 ffi::whiteout_m3_M3Model_get_boneAnimationSets_at(self.raw.as_ptr(), index),
18729 ),
18730 }))
18731 }
18732 }
18733
18734 pub fn bone_animation_sets_mut(
18735 &mut self,
18736 index: usize,
18737 ) -> Option<crate::support::RefMut<'_, BoneAnimationSet>> {
18738 if index >= self.bone_animation_sets_len() {
18739 return None;
18740 }
18741 unsafe {
18743 Some(crate::support::RefMut::new(BoneAnimationSet {
18744 raw: core::ptr::NonNull::new_unchecked(
18745 ffi::whiteout_m3_M3Model_get_boneAnimationSets_at(self.raw.as_ptr(), index),
18746 ),
18747 }))
18748 }
18749 }
18750
18751 pub fn bone_animation_sets_iter(
18753 &self,
18754 ) -> impl ExactSizeIterator<Item = crate::support::Ref<'_, BoneAnimationSet>> {
18755 (0..self.bone_animation_sets_len())
18756 .map(move |i| self.bone_animation_sets(i).expect("index below len"))
18757 }
18758
18759 pub fn resize_bone_animation_sets(&mut self, count: usize) {
18760 unsafe { ffi::whiteout_m3_M3Model_resize_boneAnimationSets(self.raw.as_ptr(), count) }
18762 }
18763
18764 pub fn animation_split_count(&self) -> u32 {
18766 unsafe { ffi::whiteout_m3_M3Model_get_animationSplitCount(self.raw.as_ptr()) }
18768 }
18769
18770 pub fn set_animation_split_count(&mut self, value: u32) {
18771 unsafe { ffi::whiteout_m3_M3Model_set_animationSplitCount(self.raw.as_ptr(), value) }
18773 }
18774
18775 pub fn animation_states_len(&self) -> usize {
18777 unsafe { ffi::whiteout_m3_M3Model_get_animationStates_count(self.raw.as_ptr()) }
18779 }
18780
18781 pub fn animation_states(
18783 &self,
18784 index: usize,
18785 ) -> Option<crate::support::Ref<'_, AnimationState>> {
18786 if index >= self.animation_states_len() {
18787 return None;
18788 }
18789 unsafe {
18791 Some(crate::support::Ref::new(AnimationState {
18792 raw: core::ptr::NonNull::new_unchecked(
18793 ffi::whiteout_m3_M3Model_get_animationStates_at(self.raw.as_ptr(), index),
18794 ),
18795 }))
18796 }
18797 }
18798
18799 pub fn animation_states_mut(
18800 &mut self,
18801 index: usize,
18802 ) -> Option<crate::support::RefMut<'_, AnimationState>> {
18803 if index >= self.animation_states_len() {
18804 return None;
18805 }
18806 unsafe {
18808 Some(crate::support::RefMut::new(AnimationState {
18809 raw: core::ptr::NonNull::new_unchecked(
18810 ffi::whiteout_m3_M3Model_get_animationStates_at(self.raw.as_ptr(), index),
18811 ),
18812 }))
18813 }
18814 }
18815
18816 pub fn animation_states_iter(
18818 &self,
18819 ) -> impl ExactSizeIterator<Item = crate::support::Ref<'_, AnimationState>> {
18820 (0..self.animation_states_len())
18821 .map(move |i| self.animation_states(i).expect("index below len"))
18822 }
18823
18824 pub fn resize_animation_states(&mut self, count: usize) {
18825 unsafe { ffi::whiteout_m3_M3Model_resize_animationStates(self.raw.as_ptr(), count) }
18827 }
18828
18829 pub fn bones_len(&self) -> usize {
18831 unsafe { ffi::whiteout_m3_M3Model_get_bones_count(self.raw.as_ptr()) }
18833 }
18834
18835 pub fn bones(&self, index: usize) -> Option<crate::support::Ref<'_, Bone>> {
18837 if index >= self.bones_len() {
18838 return None;
18839 }
18840 unsafe {
18842 Some(crate::support::Ref::new(Bone {
18843 raw: core::ptr::NonNull::new_unchecked(ffi::whiteout_m3_M3Model_get_bones_at(
18844 self.raw.as_ptr(),
18845 index,
18846 )),
18847 }))
18848 }
18849 }
18850
18851 pub fn bones_mut(&mut self, index: usize) -> Option<crate::support::RefMut<'_, Bone>> {
18852 if index >= self.bones_len() {
18853 return None;
18854 }
18855 unsafe {
18857 Some(crate::support::RefMut::new(Bone {
18858 raw: core::ptr::NonNull::new_unchecked(ffi::whiteout_m3_M3Model_get_bones_at(
18859 self.raw.as_ptr(),
18860 index,
18861 )),
18862 }))
18863 }
18864 }
18865
18866 pub fn bones_iter(&self) -> impl ExactSizeIterator<Item = crate::support::Ref<'_, Bone>> {
18868 (0..self.bones_len()).map(move |i| self.bones(i).expect("index below len"))
18869 }
18870
18871 pub fn resize_bones(&mut self, count: usize) {
18872 unsafe { ffi::whiteout_m3_M3Model_resize_bones(self.raw.as_ptr(), count) }
18874 }
18875
18876 pub fn skin_bone_count(&self) -> u32 {
18878 unsafe { ffi::whiteout_m3_M3Model_get_skinBoneCount(self.raw.as_ptr()) }
18880 }
18881
18882 pub fn set_skin_bone_count(&mut self, value: u32) {
18883 unsafe { ffi::whiteout_m3_M3Model_set_skinBoneCount(self.raw.as_ptr(), value) }
18885 }
18886
18887 pub fn divisions_len(&self) -> usize {
18889 unsafe { ffi::whiteout_m3_M3Model_get_divisions_count(self.raw.as_ptr()) }
18891 }
18892
18893 pub fn divisions(&self, index: usize) -> Option<crate::support::Ref<'_, MeshDivision>> {
18895 if index >= self.divisions_len() {
18896 return None;
18897 }
18898 unsafe {
18900 Some(crate::support::Ref::new(MeshDivision {
18901 raw: core::ptr::NonNull::new_unchecked(ffi::whiteout_m3_M3Model_get_divisions_at(
18902 self.raw.as_ptr(),
18903 index,
18904 )),
18905 }))
18906 }
18907 }
18908
18909 pub fn divisions_mut(
18910 &mut self,
18911 index: usize,
18912 ) -> Option<crate::support::RefMut<'_, MeshDivision>> {
18913 if index >= self.divisions_len() {
18914 return None;
18915 }
18916 unsafe {
18918 Some(crate::support::RefMut::new(MeshDivision {
18919 raw: core::ptr::NonNull::new_unchecked(ffi::whiteout_m3_M3Model_get_divisions_at(
18920 self.raw.as_ptr(),
18921 index,
18922 )),
18923 }))
18924 }
18925 }
18926
18927 pub fn divisions_iter(
18929 &self,
18930 ) -> impl ExactSizeIterator<Item = crate::support::Ref<'_, MeshDivision>> {
18931 (0..self.divisions_len()).map(move |i| self.divisions(i).expect("index below len"))
18932 }
18933
18934 pub fn resize_divisions(&mut self, count: usize) {
18935 unsafe { ffi::whiteout_m3_M3Model_resize_divisions(self.raw.as_ptr(), count) }
18937 }
18938
18939 pub fn bone_lookup(&self) -> &[u16] {
18942 unsafe {
18945 let n = ffi::whiteout_m3_M3Model_get_boneLookup_count(self.raw.as_ptr());
18946 let p = ffi::whiteout_m3_M3Model_get_boneLookup_data(self.raw.as_ptr());
18947 if p.is_null() || n == 0 {
18948 &[]
18949 } else {
18950 core::slice::from_raw_parts(p, n)
18951 }
18952 }
18953 }
18954
18955 pub fn bone_lookup_mut(&mut self) -> &mut [u16] {
18957 unsafe {
18959 let n = ffi::whiteout_m3_M3Model_get_boneLookup_count(self.raw.as_ptr());
18960 let p = ffi::whiteout_m3_M3Model_get_boneLookup_data(self.raw.as_ptr()) as *mut u16;
18961 if p.is_null() || n == 0 {
18962 &mut []
18963 } else {
18964 core::slice::from_raw_parts_mut(p, n)
18965 }
18966 }
18967 }
18968
18969 pub fn set_bone_lookup(&mut self, values: &[u16]) {
18970 unsafe {
18972 ffi::whiteout_m3_M3Model_assign_boneLookup(
18973 self.raw.as_ptr(),
18974 values.as_ptr() as *const _,
18975 values.len(),
18976 )
18977 }
18978 }
18979
18980 pub fn resize_bone_lookup(&mut self, count: usize) {
18981 unsafe { ffi::whiteout_m3_M3Model_resize_boneLookup(self.raw.as_ptr(), count) }
18984 }
18985
18986 pub fn bounds(&self) -> crate::support::Ref<'_, Extent> {
18989 unsafe {
18992 crate::support::Ref::new(Extent {
18993 raw: core::ptr::NonNull::new_unchecked(ffi::whiteout_m3_M3Model_get_bounds(
18994 self.raw.as_ptr(),
18995 )),
18996 })
18997 }
18998 }
18999
19000 pub fn bounds_mut(&mut self) -> crate::support::RefMut<'_, Extent> {
19001 unsafe {
19003 crate::support::RefMut::new(Extent {
19004 raw: core::ptr::NonNull::new_unchecked(ffi::whiteout_m3_M3Model_get_bounds(
19005 self.raw.as_ptr(),
19006 )),
19007 })
19008 }
19009 }
19010
19011 pub fn collision_bounds(&self) -> crate::support::Ref<'_, Extent> {
19014 unsafe {
19017 crate::support::Ref::new(Extent {
19018 raw: core::ptr::NonNull::new_unchecked(
19019 ffi::whiteout_m3_M3Model_get_collisionBounds(self.raw.as_ptr()),
19020 ),
19021 })
19022 }
19023 }
19024
19025 pub fn collision_bounds_mut(&mut self) -> crate::support::RefMut<'_, Extent> {
19026 unsafe {
19028 crate::support::RefMut::new(Extent {
19029 raw: core::ptr::NonNull::new_unchecked(
19030 ffi::whiteout_m3_M3Model_get_collisionBounds(self.raw.as_ptr()),
19031 ),
19032 })
19033 }
19034 }
19035
19036 pub fn collision_faces(&self) -> &[u16] {
19039 unsafe {
19042 let n = ffi::whiteout_m3_M3Model_get_collisionFaces_count(self.raw.as_ptr());
19043 let p = ffi::whiteout_m3_M3Model_get_collisionFaces_data(self.raw.as_ptr());
19044 if p.is_null() || n == 0 {
19045 &[]
19046 } else {
19047 core::slice::from_raw_parts(p, n)
19048 }
19049 }
19050 }
19051
19052 pub fn collision_faces_mut(&mut self) -> &mut [u16] {
19054 unsafe {
19056 let n = ffi::whiteout_m3_M3Model_get_collisionFaces_count(self.raw.as_ptr());
19057 let p = ffi::whiteout_m3_M3Model_get_collisionFaces_data(self.raw.as_ptr()) as *mut u16;
19058 if p.is_null() || n == 0 {
19059 &mut []
19060 } else {
19061 core::slice::from_raw_parts_mut(p, n)
19062 }
19063 }
19064 }
19065
19066 pub fn set_collision_faces(&mut self, values: &[u16]) {
19067 unsafe {
19069 ffi::whiteout_m3_M3Model_assign_collisionFaces(
19070 self.raw.as_ptr(),
19071 values.as_ptr() as *const _,
19072 values.len(),
19073 )
19074 }
19075 }
19076
19077 pub fn resize_collision_faces(&mut self, count: usize) {
19078 unsafe { ffi::whiteout_m3_M3Model_resize_collisionFaces(self.raw.as_ptr(), count) }
19081 }
19082
19083 pub fn collision_verts(&self) -> &[crate::math::Vector3f] {
19086 unsafe {
19089 let n = ffi::whiteout_m3_M3Model_get_collisionVerts_count(self.raw.as_ptr());
19090 let p = ffi::whiteout_m3_M3Model_get_collisionVerts_data(self.raw.as_ptr())
19091 as *const crate::math::Vector3f;
19092 if p.is_null() || n == 0 {
19093 &[]
19094 } else {
19095 core::slice::from_raw_parts(p, n)
19096 }
19097 }
19098 }
19099
19100 pub fn collision_verts_mut(&mut self) -> &mut [crate::math::Vector3f] {
19102 unsafe {
19104 let n = ffi::whiteout_m3_M3Model_get_collisionVerts_count(self.raw.as_ptr());
19105 let p = ffi::whiteout_m3_M3Model_get_collisionVerts_data(self.raw.as_ptr())
19106 as *const crate::math::Vector3f as *mut crate::math::Vector3f;
19107 if p.is_null() || n == 0 {
19108 &mut []
19109 } else {
19110 core::slice::from_raw_parts_mut(p, n)
19111 }
19112 }
19113 }
19114
19115 pub fn set_collision_verts(&mut self, values: &[crate::math::Vector3f]) {
19116 unsafe {
19118 ffi::whiteout_m3_M3Model_assign_collisionVerts(
19119 self.raw.as_ptr(),
19120 values.as_ptr() as *const _,
19121 values.len(),
19122 )
19123 }
19124 }
19125
19126 pub fn resize_collision_verts(&mut self, count: usize) {
19127 unsafe { ffi::whiteout_m3_M3Model_resize_collisionVerts(self.raw.as_ptr(), count) }
19130 }
19131
19132 pub fn collision_normals(&self) -> &[crate::math::Vector3f] {
19135 unsafe {
19138 let n = ffi::whiteout_m3_M3Model_get_collisionNormals_count(self.raw.as_ptr());
19139 let p = ffi::whiteout_m3_M3Model_get_collisionNormals_data(self.raw.as_ptr())
19140 as *const crate::math::Vector3f;
19141 if p.is_null() || n == 0 {
19142 &[]
19143 } else {
19144 core::slice::from_raw_parts(p, n)
19145 }
19146 }
19147 }
19148
19149 pub fn collision_normals_mut(&mut self) -> &mut [crate::math::Vector3f] {
19151 unsafe {
19153 let n = ffi::whiteout_m3_M3Model_get_collisionNormals_count(self.raw.as_ptr());
19154 let p = ffi::whiteout_m3_M3Model_get_collisionNormals_data(self.raw.as_ptr())
19155 as *const crate::math::Vector3f as *mut crate::math::Vector3f;
19156 if p.is_null() || n == 0 {
19157 &mut []
19158 } else {
19159 core::slice::from_raw_parts_mut(p, n)
19160 }
19161 }
19162 }
19163
19164 pub fn set_collision_normals(&mut self, values: &[crate::math::Vector3f]) {
19165 unsafe {
19167 ffi::whiteout_m3_M3Model_assign_collisionNormals(
19168 self.raw.as_ptr(),
19169 values.as_ptr() as *const _,
19170 values.len(),
19171 )
19172 }
19173 }
19174
19175 pub fn resize_collision_normals(&mut self, count: usize) {
19176 unsafe { ffi::whiteout_m3_M3Model_resize_collisionNormals(self.raw.as_ptr(), count) }
19179 }
19180
19181 pub fn attachment_points_len(&self) -> usize {
19183 unsafe { ffi::whiteout_m3_M3Model_get_attachmentPoints_count(self.raw.as_ptr()) }
19185 }
19186
19187 pub fn attachment_points(
19189 &self,
19190 index: usize,
19191 ) -> Option<crate::support::Ref<'_, AttachmentPoint>> {
19192 if index >= self.attachment_points_len() {
19193 return None;
19194 }
19195 unsafe {
19197 Some(crate::support::Ref::new(AttachmentPoint {
19198 raw: core::ptr::NonNull::new_unchecked(
19199 ffi::whiteout_m3_M3Model_get_attachmentPoints_at(self.raw.as_ptr(), index),
19200 ),
19201 }))
19202 }
19203 }
19204
19205 pub fn attachment_points_mut(
19206 &mut self,
19207 index: usize,
19208 ) -> Option<crate::support::RefMut<'_, AttachmentPoint>> {
19209 if index >= self.attachment_points_len() {
19210 return None;
19211 }
19212 unsafe {
19214 Some(crate::support::RefMut::new(AttachmentPoint {
19215 raw: core::ptr::NonNull::new_unchecked(
19216 ffi::whiteout_m3_M3Model_get_attachmentPoints_at(self.raw.as_ptr(), index),
19217 ),
19218 }))
19219 }
19220 }
19221
19222 pub fn attachment_points_iter(
19224 &self,
19225 ) -> impl ExactSizeIterator<Item = crate::support::Ref<'_, AttachmentPoint>> {
19226 (0..self.attachment_points_len())
19227 .map(move |i| self.attachment_points(i).expect("index below len"))
19228 }
19229
19230 pub fn resize_attachment_points(&mut self, count: usize) {
19231 unsafe { ffi::whiteout_m3_M3Model_resize_attachmentPoints(self.raw.as_ptr(), count) }
19233 }
19234
19235 pub fn attachment_point_addons(&self) -> &[u16] {
19238 unsafe {
19241 let n = ffi::whiteout_m3_M3Model_get_attachmentPointAddons_count(self.raw.as_ptr());
19242 let p = ffi::whiteout_m3_M3Model_get_attachmentPointAddons_data(self.raw.as_ptr());
19243 if p.is_null() || n == 0 {
19244 &[]
19245 } else {
19246 core::slice::from_raw_parts(p, n)
19247 }
19248 }
19249 }
19250
19251 pub fn attachment_point_addons_mut(&mut self) -> &mut [u16] {
19253 unsafe {
19255 let n = ffi::whiteout_m3_M3Model_get_attachmentPointAddons_count(self.raw.as_ptr());
19256 let p = ffi::whiteout_m3_M3Model_get_attachmentPointAddons_data(self.raw.as_ptr())
19257 as *mut u16;
19258 if p.is_null() || n == 0 {
19259 &mut []
19260 } else {
19261 core::slice::from_raw_parts_mut(p, n)
19262 }
19263 }
19264 }
19265
19266 pub fn set_attachment_point_addons(&mut self, values: &[u16]) {
19267 unsafe {
19269 ffi::whiteout_m3_M3Model_assign_attachmentPointAddons(
19270 self.raw.as_ptr(),
19271 values.as_ptr() as *const _,
19272 values.len(),
19273 )
19274 }
19275 }
19276
19277 pub fn resize_attachment_point_addons(&mut self, count: usize) {
19278 unsafe { ffi::whiteout_m3_M3Model_resize_attachmentPointAddons(self.raw.as_ptr(), count) }
19281 }
19282
19283 pub fn lights_len(&self) -> usize {
19285 unsafe { ffi::whiteout_m3_M3Model_get_lights_count(self.raw.as_ptr()) }
19287 }
19288
19289 pub fn lights(&self, index: usize) -> Option<crate::support::Ref<'_, Light>> {
19291 if index >= self.lights_len() {
19292 return None;
19293 }
19294 unsafe {
19296 Some(crate::support::Ref::new(Light {
19297 raw: core::ptr::NonNull::new_unchecked(ffi::whiteout_m3_M3Model_get_lights_at(
19298 self.raw.as_ptr(),
19299 index,
19300 )),
19301 }))
19302 }
19303 }
19304
19305 pub fn lights_mut(&mut self, index: usize) -> Option<crate::support::RefMut<'_, Light>> {
19306 if index >= self.lights_len() {
19307 return None;
19308 }
19309 unsafe {
19311 Some(crate::support::RefMut::new(Light {
19312 raw: core::ptr::NonNull::new_unchecked(ffi::whiteout_m3_M3Model_get_lights_at(
19313 self.raw.as_ptr(),
19314 index,
19315 )),
19316 }))
19317 }
19318 }
19319
19320 pub fn lights_iter(&self) -> impl ExactSizeIterator<Item = crate::support::Ref<'_, Light>> {
19322 (0..self.lights_len()).map(move |i| self.lights(i).expect("index below len"))
19323 }
19324
19325 pub fn resize_lights(&mut self, count: usize) {
19326 unsafe { ffi::whiteout_m3_M3Model_resize_lights(self.raw.as_ptr(), count) }
19328 }
19329
19330 pub fn shadow_boxes_len(&self) -> usize {
19332 unsafe { ffi::whiteout_m3_M3Model_get_shadowBoxes_count(self.raw.as_ptr()) }
19334 }
19335
19336 pub fn shadow_boxes(&self, index: usize) -> Option<crate::support::Ref<'_, ShadowBox>> {
19338 if index >= self.shadow_boxes_len() {
19339 return None;
19340 }
19341 unsafe {
19343 Some(crate::support::Ref::new(ShadowBox {
19344 raw: core::ptr::NonNull::new_unchecked(
19345 ffi::whiteout_m3_M3Model_get_shadowBoxes_at(self.raw.as_ptr(), index),
19346 ),
19347 }))
19348 }
19349 }
19350
19351 pub fn shadow_boxes_mut(
19352 &mut self,
19353 index: usize,
19354 ) -> Option<crate::support::RefMut<'_, ShadowBox>> {
19355 if index >= self.shadow_boxes_len() {
19356 return None;
19357 }
19358 unsafe {
19360 Some(crate::support::RefMut::new(ShadowBox {
19361 raw: core::ptr::NonNull::new_unchecked(
19362 ffi::whiteout_m3_M3Model_get_shadowBoxes_at(self.raw.as_ptr(), index),
19363 ),
19364 }))
19365 }
19366 }
19367
19368 pub fn shadow_boxes_iter(
19370 &self,
19371 ) -> impl ExactSizeIterator<Item = crate::support::Ref<'_, ShadowBox>> {
19372 (0..self.shadow_boxes_len()).map(move |i| self.shadow_boxes(i).expect("index below len"))
19373 }
19374
19375 pub fn resize_shadow_boxes(&mut self, count: usize) {
19376 unsafe { ffi::whiteout_m3_M3Model_resize_shadowBoxes(self.raw.as_ptr(), count) }
19378 }
19379
19380 pub fn cameras_len(&self) -> usize {
19382 unsafe { ffi::whiteout_m3_M3Model_get_cameras_count(self.raw.as_ptr()) }
19384 }
19385
19386 pub fn cameras(&self, index: usize) -> Option<crate::support::Ref<'_, Camera>> {
19388 if index >= self.cameras_len() {
19389 return None;
19390 }
19391 unsafe {
19393 Some(crate::support::Ref::new(Camera {
19394 raw: core::ptr::NonNull::new_unchecked(ffi::whiteout_m3_M3Model_get_cameras_at(
19395 self.raw.as_ptr(),
19396 index,
19397 )),
19398 }))
19399 }
19400 }
19401
19402 pub fn cameras_mut(&mut self, index: usize) -> Option<crate::support::RefMut<'_, Camera>> {
19403 if index >= self.cameras_len() {
19404 return None;
19405 }
19406 unsafe {
19408 Some(crate::support::RefMut::new(Camera {
19409 raw: core::ptr::NonNull::new_unchecked(ffi::whiteout_m3_M3Model_get_cameras_at(
19410 self.raw.as_ptr(),
19411 index,
19412 )),
19413 }))
19414 }
19415 }
19416
19417 pub fn cameras_iter(&self) -> impl ExactSizeIterator<Item = crate::support::Ref<'_, Camera>> {
19419 (0..self.cameras_len()).map(move |i| self.cameras(i).expect("index below len"))
19420 }
19421
19422 pub fn resize_cameras(&mut self, count: usize) {
19423 unsafe { ffi::whiteout_m3_M3Model_resize_cameras(self.raw.as_ptr(), count) }
19425 }
19426
19427 pub fn cameras_addons(&self) -> &[u16] {
19430 unsafe {
19433 let n = ffi::whiteout_m3_M3Model_get_camerasAddons_count(self.raw.as_ptr());
19434 let p = ffi::whiteout_m3_M3Model_get_camerasAddons_data(self.raw.as_ptr());
19435 if p.is_null() || n == 0 {
19436 &[]
19437 } else {
19438 core::slice::from_raw_parts(p, n)
19439 }
19440 }
19441 }
19442
19443 pub fn cameras_addons_mut(&mut self) -> &mut [u16] {
19445 unsafe {
19447 let n = ffi::whiteout_m3_M3Model_get_camerasAddons_count(self.raw.as_ptr());
19448 let p = ffi::whiteout_m3_M3Model_get_camerasAddons_data(self.raw.as_ptr()) as *mut u16;
19449 if p.is_null() || n == 0 {
19450 &mut []
19451 } else {
19452 core::slice::from_raw_parts_mut(p, n)
19453 }
19454 }
19455 }
19456
19457 pub fn set_cameras_addons(&mut self, values: &[u16]) {
19458 unsafe {
19460 ffi::whiteout_m3_M3Model_assign_camerasAddons(
19461 self.raw.as_ptr(),
19462 values.as_ptr() as *const _,
19463 values.len(),
19464 )
19465 }
19466 }
19467
19468 pub fn resize_cameras_addons(&mut self, count: usize) {
19469 unsafe { ffi::whiteout_m3_M3Model_resize_camerasAddons(self.raw.as_ptr(), count) }
19472 }
19473
19474 pub fn material_maps_len(&self) -> usize {
19476 unsafe { ffi::whiteout_m3_M3Model_get_materialMaps_count(self.raw.as_ptr()) }
19478 }
19479
19480 pub fn material_maps(&self, index: usize) -> Option<crate::support::Ref<'_, MaterialMap>> {
19482 if index >= self.material_maps_len() {
19483 return None;
19484 }
19485 unsafe {
19487 Some(crate::support::Ref::new(MaterialMap {
19488 raw: core::ptr::NonNull::new_unchecked(
19489 ffi::whiteout_m3_M3Model_get_materialMaps_at(self.raw.as_ptr(), index),
19490 ),
19491 }))
19492 }
19493 }
19494
19495 pub fn material_maps_mut(
19496 &mut self,
19497 index: usize,
19498 ) -> Option<crate::support::RefMut<'_, MaterialMap>> {
19499 if index >= self.material_maps_len() {
19500 return None;
19501 }
19502 unsafe {
19504 Some(crate::support::RefMut::new(MaterialMap {
19505 raw: core::ptr::NonNull::new_unchecked(
19506 ffi::whiteout_m3_M3Model_get_materialMaps_at(self.raw.as_ptr(), index),
19507 ),
19508 }))
19509 }
19510 }
19511
19512 pub fn material_maps_iter(
19514 &self,
19515 ) -> impl ExactSizeIterator<Item = crate::support::Ref<'_, MaterialMap>> {
19516 (0..self.material_maps_len()).map(move |i| self.material_maps(i).expect("index below len"))
19517 }
19518
19519 pub fn resize_material_maps(&mut self, count: usize) {
19520 unsafe { ffi::whiteout_m3_M3Model_resize_materialMaps(self.raw.as_ptr(), count) }
19522 }
19523
19524 pub fn standard_materials_len(&self) -> usize {
19526 unsafe { ffi::whiteout_m3_M3Model_get_standardMaterials_count(self.raw.as_ptr()) }
19528 }
19529
19530 pub fn standard_materials(
19532 &self,
19533 index: usize,
19534 ) -> Option<crate::support::Ref<'_, StandardMaterial>> {
19535 if index >= self.standard_materials_len() {
19536 return None;
19537 }
19538 unsafe {
19540 Some(crate::support::Ref::new(StandardMaterial {
19541 raw: core::ptr::NonNull::new_unchecked(
19542 ffi::whiteout_m3_M3Model_get_standardMaterials_at(self.raw.as_ptr(), index),
19543 ),
19544 }))
19545 }
19546 }
19547
19548 pub fn standard_materials_mut(
19549 &mut self,
19550 index: usize,
19551 ) -> Option<crate::support::RefMut<'_, StandardMaterial>> {
19552 if index >= self.standard_materials_len() {
19553 return None;
19554 }
19555 unsafe {
19557 Some(crate::support::RefMut::new(StandardMaterial {
19558 raw: core::ptr::NonNull::new_unchecked(
19559 ffi::whiteout_m3_M3Model_get_standardMaterials_at(self.raw.as_ptr(), index),
19560 ),
19561 }))
19562 }
19563 }
19564
19565 pub fn standard_materials_iter(
19567 &self,
19568 ) -> impl ExactSizeIterator<Item = crate::support::Ref<'_, StandardMaterial>> {
19569 (0..self.standard_materials_len())
19570 .map(move |i| self.standard_materials(i).expect("index below len"))
19571 }
19572
19573 pub fn resize_standard_materials(&mut self, count: usize) {
19574 unsafe { ffi::whiteout_m3_M3Model_resize_standardMaterials(self.raw.as_ptr(), count) }
19576 }
19577
19578 pub fn displacement_materials_len(&self) -> usize {
19580 unsafe { ffi::whiteout_m3_M3Model_get_displacementMaterials_count(self.raw.as_ptr()) }
19582 }
19583
19584 pub fn displacement_materials(
19586 &self,
19587 index: usize,
19588 ) -> Option<crate::support::Ref<'_, DisplacementMaterial>> {
19589 if index >= self.displacement_materials_len() {
19590 return None;
19591 }
19592 unsafe {
19594 Some(crate::support::Ref::new(DisplacementMaterial {
19595 raw: core::ptr::NonNull::new_unchecked(
19596 ffi::whiteout_m3_M3Model_get_displacementMaterials_at(self.raw.as_ptr(), index),
19597 ),
19598 }))
19599 }
19600 }
19601
19602 pub fn displacement_materials_mut(
19603 &mut self,
19604 index: usize,
19605 ) -> Option<crate::support::RefMut<'_, DisplacementMaterial>> {
19606 if index >= self.displacement_materials_len() {
19607 return None;
19608 }
19609 unsafe {
19611 Some(crate::support::RefMut::new(DisplacementMaterial {
19612 raw: core::ptr::NonNull::new_unchecked(
19613 ffi::whiteout_m3_M3Model_get_displacementMaterials_at(self.raw.as_ptr(), index),
19614 ),
19615 }))
19616 }
19617 }
19618
19619 pub fn displacement_materials_iter(
19621 &self,
19622 ) -> impl ExactSizeIterator<Item = crate::support::Ref<'_, DisplacementMaterial>> {
19623 (0..self.displacement_materials_len())
19624 .map(move |i| self.displacement_materials(i).expect("index below len"))
19625 }
19626
19627 pub fn resize_displacement_materials(&mut self, count: usize) {
19628 unsafe { ffi::whiteout_m3_M3Model_resize_displacementMaterials(self.raw.as_ptr(), count) }
19630 }
19631
19632 pub fn composite_materials_len(&self) -> usize {
19634 unsafe { ffi::whiteout_m3_M3Model_get_compositeMaterials_count(self.raw.as_ptr()) }
19636 }
19637
19638 pub fn composite_materials(
19640 &self,
19641 index: usize,
19642 ) -> Option<crate::support::Ref<'_, CompositeMaterial>> {
19643 if index >= self.composite_materials_len() {
19644 return None;
19645 }
19646 unsafe {
19648 Some(crate::support::Ref::new(CompositeMaterial {
19649 raw: core::ptr::NonNull::new_unchecked(
19650 ffi::whiteout_m3_M3Model_get_compositeMaterials_at(self.raw.as_ptr(), index),
19651 ),
19652 }))
19653 }
19654 }
19655
19656 pub fn composite_materials_mut(
19657 &mut self,
19658 index: usize,
19659 ) -> Option<crate::support::RefMut<'_, CompositeMaterial>> {
19660 if index >= self.composite_materials_len() {
19661 return None;
19662 }
19663 unsafe {
19665 Some(crate::support::RefMut::new(CompositeMaterial {
19666 raw: core::ptr::NonNull::new_unchecked(
19667 ffi::whiteout_m3_M3Model_get_compositeMaterials_at(self.raw.as_ptr(), index),
19668 ),
19669 }))
19670 }
19671 }
19672
19673 pub fn composite_materials_iter(
19675 &self,
19676 ) -> impl ExactSizeIterator<Item = crate::support::Ref<'_, CompositeMaterial>> {
19677 (0..self.composite_materials_len())
19678 .map(move |i| self.composite_materials(i).expect("index below len"))
19679 }
19680
19681 pub fn resize_composite_materials(&mut self, count: usize) {
19682 unsafe { ffi::whiteout_m3_M3Model_resize_compositeMaterials(self.raw.as_ptr(), count) }
19684 }
19685
19686 pub fn terrain_materials_len(&self) -> usize {
19688 unsafe { ffi::whiteout_m3_M3Model_get_terrainMaterials_count(self.raw.as_ptr()) }
19690 }
19691
19692 pub fn terrain_materials(
19694 &self,
19695 index: usize,
19696 ) -> Option<crate::support::Ref<'_, TerrainMaterial>> {
19697 if index >= self.terrain_materials_len() {
19698 return None;
19699 }
19700 unsafe {
19702 Some(crate::support::Ref::new(TerrainMaterial {
19703 raw: core::ptr::NonNull::new_unchecked(
19704 ffi::whiteout_m3_M3Model_get_terrainMaterials_at(self.raw.as_ptr(), index),
19705 ),
19706 }))
19707 }
19708 }
19709
19710 pub fn terrain_materials_mut(
19711 &mut self,
19712 index: usize,
19713 ) -> Option<crate::support::RefMut<'_, TerrainMaterial>> {
19714 if index >= self.terrain_materials_len() {
19715 return None;
19716 }
19717 unsafe {
19719 Some(crate::support::RefMut::new(TerrainMaterial {
19720 raw: core::ptr::NonNull::new_unchecked(
19721 ffi::whiteout_m3_M3Model_get_terrainMaterials_at(self.raw.as_ptr(), index),
19722 ),
19723 }))
19724 }
19725 }
19726
19727 pub fn terrain_materials_iter(
19729 &self,
19730 ) -> impl ExactSizeIterator<Item = crate::support::Ref<'_, TerrainMaterial>> {
19731 (0..self.terrain_materials_len())
19732 .map(move |i| self.terrain_materials(i).expect("index below len"))
19733 }
19734
19735 pub fn resize_terrain_materials(&mut self, count: usize) {
19736 unsafe { ffi::whiteout_m3_M3Model_resize_terrainMaterials(self.raw.as_ptr(), count) }
19738 }
19739
19740 pub fn volume_materials_len(&self) -> usize {
19742 unsafe { ffi::whiteout_m3_M3Model_get_volumeMaterials_count(self.raw.as_ptr()) }
19744 }
19745
19746 pub fn volume_materials(
19748 &self,
19749 index: usize,
19750 ) -> Option<crate::support::Ref<'_, VolumeMaterial>> {
19751 if index >= self.volume_materials_len() {
19752 return None;
19753 }
19754 unsafe {
19756 Some(crate::support::Ref::new(VolumeMaterial {
19757 raw: core::ptr::NonNull::new_unchecked(
19758 ffi::whiteout_m3_M3Model_get_volumeMaterials_at(self.raw.as_ptr(), index),
19759 ),
19760 }))
19761 }
19762 }
19763
19764 pub fn volume_materials_mut(
19765 &mut self,
19766 index: usize,
19767 ) -> Option<crate::support::RefMut<'_, VolumeMaterial>> {
19768 if index >= self.volume_materials_len() {
19769 return None;
19770 }
19771 unsafe {
19773 Some(crate::support::RefMut::new(VolumeMaterial {
19774 raw: core::ptr::NonNull::new_unchecked(
19775 ffi::whiteout_m3_M3Model_get_volumeMaterials_at(self.raw.as_ptr(), index),
19776 ),
19777 }))
19778 }
19779 }
19780
19781 pub fn volume_materials_iter(
19783 &self,
19784 ) -> impl ExactSizeIterator<Item = crate::support::Ref<'_, VolumeMaterial>> {
19785 (0..self.volume_materials_len())
19786 .map(move |i| self.volume_materials(i).expect("index below len"))
19787 }
19788
19789 pub fn resize_volume_materials(&mut self, count: usize) {
19790 unsafe { ffi::whiteout_m3_M3Model_resize_volumeMaterials(self.raw.as_ptr(), count) }
19792 }
19793
19794 pub fn hair_materials_len(&self) -> usize {
19796 unsafe { ffi::whiteout_m3_M3Model_get_hairMaterials_count(self.raw.as_ptr()) }
19798 }
19799
19800 pub fn hair_materials(&self, index: usize) -> Option<crate::support::Ref<'_, HairMaterial>> {
19802 if index >= self.hair_materials_len() {
19803 return None;
19804 }
19805 unsafe {
19807 Some(crate::support::Ref::new(HairMaterial {
19808 raw: core::ptr::NonNull::new_unchecked(
19809 ffi::whiteout_m3_M3Model_get_hairMaterials_at(self.raw.as_ptr(), index),
19810 ),
19811 }))
19812 }
19813 }
19814
19815 pub fn hair_materials_mut(
19816 &mut self,
19817 index: usize,
19818 ) -> Option<crate::support::RefMut<'_, HairMaterial>> {
19819 if index >= self.hair_materials_len() {
19820 return None;
19821 }
19822 unsafe {
19824 Some(crate::support::RefMut::new(HairMaterial {
19825 raw: core::ptr::NonNull::new_unchecked(
19826 ffi::whiteout_m3_M3Model_get_hairMaterials_at(self.raw.as_ptr(), index),
19827 ),
19828 }))
19829 }
19830 }
19831
19832 pub fn hair_materials_iter(
19834 &self,
19835 ) -> impl ExactSizeIterator<Item = crate::support::Ref<'_, HairMaterial>> {
19836 (0..self.hair_materials_len())
19837 .map(move |i| self.hair_materials(i).expect("index below len"))
19838 }
19839
19840 pub fn resize_hair_materials(&mut self, count: usize) {
19841 unsafe { ffi::whiteout_m3_M3Model_resize_hairMaterials(self.raw.as_ptr(), count) }
19843 }
19844
19845 pub fn creep_materials_len(&self) -> usize {
19847 unsafe { ffi::whiteout_m3_M3Model_get_creepMaterials_count(self.raw.as_ptr()) }
19849 }
19850
19851 pub fn creep_materials(&self, index: usize) -> Option<crate::support::Ref<'_, CreepMaterial>> {
19853 if index >= self.creep_materials_len() {
19854 return None;
19855 }
19856 unsafe {
19858 Some(crate::support::Ref::new(CreepMaterial {
19859 raw: core::ptr::NonNull::new_unchecked(
19860 ffi::whiteout_m3_M3Model_get_creepMaterials_at(self.raw.as_ptr(), index),
19861 ),
19862 }))
19863 }
19864 }
19865
19866 pub fn creep_materials_mut(
19867 &mut self,
19868 index: usize,
19869 ) -> Option<crate::support::RefMut<'_, CreepMaterial>> {
19870 if index >= self.creep_materials_len() {
19871 return None;
19872 }
19873 unsafe {
19875 Some(crate::support::RefMut::new(CreepMaterial {
19876 raw: core::ptr::NonNull::new_unchecked(
19877 ffi::whiteout_m3_M3Model_get_creepMaterials_at(self.raw.as_ptr(), index),
19878 ),
19879 }))
19880 }
19881 }
19882
19883 pub fn creep_materials_iter(
19885 &self,
19886 ) -> impl ExactSizeIterator<Item = crate::support::Ref<'_, CreepMaterial>> {
19887 (0..self.creep_materials_len())
19888 .map(move |i| self.creep_materials(i).expect("index below len"))
19889 }
19890
19891 pub fn resize_creep_materials(&mut self, count: usize) {
19892 unsafe { ffi::whiteout_m3_M3Model_resize_creepMaterials(self.raw.as_ptr(), count) }
19894 }
19895
19896 pub fn volume_noise_materials_len(&self) -> usize {
19898 unsafe { ffi::whiteout_m3_M3Model_get_volumeNoiseMaterials_count(self.raw.as_ptr()) }
19900 }
19901
19902 pub fn volume_noise_materials(
19904 &self,
19905 index: usize,
19906 ) -> Option<crate::support::Ref<'_, VolumeNoiseMaterial>> {
19907 if index >= self.volume_noise_materials_len() {
19908 return None;
19909 }
19910 unsafe {
19912 Some(crate::support::Ref::new(VolumeNoiseMaterial {
19913 raw: core::ptr::NonNull::new_unchecked(
19914 ffi::whiteout_m3_M3Model_get_volumeNoiseMaterials_at(self.raw.as_ptr(), index),
19915 ),
19916 }))
19917 }
19918 }
19919
19920 pub fn volume_noise_materials_mut(
19921 &mut self,
19922 index: usize,
19923 ) -> Option<crate::support::RefMut<'_, VolumeNoiseMaterial>> {
19924 if index >= self.volume_noise_materials_len() {
19925 return None;
19926 }
19927 unsafe {
19929 Some(crate::support::RefMut::new(VolumeNoiseMaterial {
19930 raw: core::ptr::NonNull::new_unchecked(
19931 ffi::whiteout_m3_M3Model_get_volumeNoiseMaterials_at(self.raw.as_ptr(), index),
19932 ),
19933 }))
19934 }
19935 }
19936
19937 pub fn volume_noise_materials_iter(
19939 &self,
19940 ) -> impl ExactSizeIterator<Item = crate::support::Ref<'_, VolumeNoiseMaterial>> {
19941 (0..self.volume_noise_materials_len())
19942 .map(move |i| self.volume_noise_materials(i).expect("index below len"))
19943 }
19944
19945 pub fn resize_volume_noise_materials(&mut self, count: usize) {
19946 unsafe { ffi::whiteout_m3_M3Model_resize_volumeNoiseMaterials(self.raw.as_ptr(), count) }
19948 }
19949
19950 pub fn stb_materials_len(&self) -> usize {
19952 unsafe { ffi::whiteout_m3_M3Model_get_stbMaterials_count(self.raw.as_ptr()) }
19954 }
19955
19956 pub fn stb_materials(&self, index: usize) -> Option<crate::support::Ref<'_, STBMaterial>> {
19958 if index >= self.stb_materials_len() {
19959 return None;
19960 }
19961 unsafe {
19963 Some(crate::support::Ref::new(STBMaterial {
19964 raw: core::ptr::NonNull::new_unchecked(
19965 ffi::whiteout_m3_M3Model_get_stbMaterials_at(self.raw.as_ptr(), index),
19966 ),
19967 }))
19968 }
19969 }
19970
19971 pub fn stb_materials_mut(
19972 &mut self,
19973 index: usize,
19974 ) -> Option<crate::support::RefMut<'_, STBMaterial>> {
19975 if index >= self.stb_materials_len() {
19976 return None;
19977 }
19978 unsafe {
19980 Some(crate::support::RefMut::new(STBMaterial {
19981 raw: core::ptr::NonNull::new_unchecked(
19982 ffi::whiteout_m3_M3Model_get_stbMaterials_at(self.raw.as_ptr(), index),
19983 ),
19984 }))
19985 }
19986 }
19987
19988 pub fn stb_materials_iter(
19990 &self,
19991 ) -> impl ExactSizeIterator<Item = crate::support::Ref<'_, STBMaterial>> {
19992 (0..self.stb_materials_len()).map(move |i| self.stb_materials(i).expect("index below len"))
19993 }
19994
19995 pub fn resize_stb_materials(&mut self, count: usize) {
19996 unsafe { ffi::whiteout_m3_M3Model_resize_stbMaterials(self.raw.as_ptr(), count) }
19998 }
19999
20000 pub fn reflection_materials_len(&self) -> usize {
20002 unsafe { ffi::whiteout_m3_M3Model_get_reflectionMaterials_count(self.raw.as_ptr()) }
20004 }
20005
20006 pub fn reflection_materials(
20008 &self,
20009 index: usize,
20010 ) -> Option<crate::support::Ref<'_, ReflectionMaterial>> {
20011 if index >= self.reflection_materials_len() {
20012 return None;
20013 }
20014 unsafe {
20016 Some(crate::support::Ref::new(ReflectionMaterial {
20017 raw: core::ptr::NonNull::new_unchecked(
20018 ffi::whiteout_m3_M3Model_get_reflectionMaterials_at(self.raw.as_ptr(), index),
20019 ),
20020 }))
20021 }
20022 }
20023
20024 pub fn reflection_materials_mut(
20025 &mut self,
20026 index: usize,
20027 ) -> Option<crate::support::RefMut<'_, ReflectionMaterial>> {
20028 if index >= self.reflection_materials_len() {
20029 return None;
20030 }
20031 unsafe {
20033 Some(crate::support::RefMut::new(ReflectionMaterial {
20034 raw: core::ptr::NonNull::new_unchecked(
20035 ffi::whiteout_m3_M3Model_get_reflectionMaterials_at(self.raw.as_ptr(), index),
20036 ),
20037 }))
20038 }
20039 }
20040
20041 pub fn reflection_materials_iter(
20043 &self,
20044 ) -> impl ExactSizeIterator<Item = crate::support::Ref<'_, ReflectionMaterial>> {
20045 (0..self.reflection_materials_len())
20046 .map(move |i| self.reflection_materials(i).expect("index below len"))
20047 }
20048
20049 pub fn resize_reflection_materials(&mut self, count: usize) {
20050 unsafe { ffi::whiteout_m3_M3Model_resize_reflectionMaterials(self.raw.as_ptr(), count) }
20052 }
20053
20054 pub fn lens_flare_materials_len(&self) -> usize {
20056 unsafe { ffi::whiteout_m3_M3Model_get_lensFlareMaterials_count(self.raw.as_ptr()) }
20058 }
20059
20060 pub fn lens_flare_materials(&self, index: usize) -> Option<crate::support::Ref<'_, LensFlare>> {
20062 if index >= self.lens_flare_materials_len() {
20063 return None;
20064 }
20065 unsafe {
20067 Some(crate::support::Ref::new(LensFlare {
20068 raw: core::ptr::NonNull::new_unchecked(
20069 ffi::whiteout_m3_M3Model_get_lensFlareMaterials_at(self.raw.as_ptr(), index),
20070 ),
20071 }))
20072 }
20073 }
20074
20075 pub fn lens_flare_materials_mut(
20076 &mut self,
20077 index: usize,
20078 ) -> Option<crate::support::RefMut<'_, LensFlare>> {
20079 if index >= self.lens_flare_materials_len() {
20080 return None;
20081 }
20082 unsafe {
20084 Some(crate::support::RefMut::new(LensFlare {
20085 raw: core::ptr::NonNull::new_unchecked(
20086 ffi::whiteout_m3_M3Model_get_lensFlareMaterials_at(self.raw.as_ptr(), index),
20087 ),
20088 }))
20089 }
20090 }
20091
20092 pub fn lens_flare_materials_iter(
20094 &self,
20095 ) -> impl ExactSizeIterator<Item = crate::support::Ref<'_, LensFlare>> {
20096 (0..self.lens_flare_materials_len())
20097 .map(move |i| self.lens_flare_materials(i).expect("index below len"))
20098 }
20099
20100 pub fn resize_lens_flare_materials(&mut self, count: usize) {
20101 unsafe { ffi::whiteout_m3_M3Model_resize_lensFlareMaterials(self.raw.as_ptr(), count) }
20103 }
20104
20105 pub fn material_add_data_len(&self) -> usize {
20107 unsafe { ffi::whiteout_m3_M3Model_get_materialAddData_count(self.raw.as_ptr()) }
20109 }
20110
20111 pub fn material_add_data(
20113 &self,
20114 index: usize,
20115 ) -> Option<crate::support::Ref<'_, MaterialAddData>> {
20116 if index >= self.material_add_data_len() {
20117 return None;
20118 }
20119 unsafe {
20121 Some(crate::support::Ref::new(MaterialAddData {
20122 raw: core::ptr::NonNull::new_unchecked(
20123 ffi::whiteout_m3_M3Model_get_materialAddData_at(self.raw.as_ptr(), index),
20124 ),
20125 }))
20126 }
20127 }
20128
20129 pub fn material_add_data_mut(
20130 &mut self,
20131 index: usize,
20132 ) -> Option<crate::support::RefMut<'_, MaterialAddData>> {
20133 if index >= self.material_add_data_len() {
20134 return None;
20135 }
20136 unsafe {
20138 Some(crate::support::RefMut::new(MaterialAddData {
20139 raw: core::ptr::NonNull::new_unchecked(
20140 ffi::whiteout_m3_M3Model_get_materialAddData_at(self.raw.as_ptr(), index),
20141 ),
20142 }))
20143 }
20144 }
20145
20146 pub fn material_add_data_iter(
20148 &self,
20149 ) -> impl ExactSizeIterator<Item = crate::support::Ref<'_, MaterialAddData>> {
20150 (0..self.material_add_data_len())
20151 .map(move |i| self.material_add_data(i).expect("index below len"))
20152 }
20153
20154 pub fn resize_material_add_data(&mut self, count: usize) {
20155 unsafe { ffi::whiteout_m3_M3Model_resize_materialAddData(self.raw.as_ptr(), count) }
20157 }
20158
20159 pub fn particle_emitters_len(&self) -> usize {
20161 unsafe { ffi::whiteout_m3_M3Model_get_particleEmitters_count(self.raw.as_ptr()) }
20163 }
20164
20165 pub fn particle_emitters(
20167 &self,
20168 index: usize,
20169 ) -> Option<crate::support::Ref<'_, ParticleEmitter>> {
20170 if index >= self.particle_emitters_len() {
20171 return None;
20172 }
20173 unsafe {
20175 Some(crate::support::Ref::new(ParticleEmitter {
20176 raw: core::ptr::NonNull::new_unchecked(
20177 ffi::whiteout_m3_M3Model_get_particleEmitters_at(self.raw.as_ptr(), index),
20178 ),
20179 }))
20180 }
20181 }
20182
20183 pub fn particle_emitters_mut(
20184 &mut self,
20185 index: usize,
20186 ) -> Option<crate::support::RefMut<'_, ParticleEmitter>> {
20187 if index >= self.particle_emitters_len() {
20188 return None;
20189 }
20190 unsafe {
20192 Some(crate::support::RefMut::new(ParticleEmitter {
20193 raw: core::ptr::NonNull::new_unchecked(
20194 ffi::whiteout_m3_M3Model_get_particleEmitters_at(self.raw.as_ptr(), index),
20195 ),
20196 }))
20197 }
20198 }
20199
20200 pub fn particle_emitters_iter(
20202 &self,
20203 ) -> impl ExactSizeIterator<Item = crate::support::Ref<'_, ParticleEmitter>> {
20204 (0..self.particle_emitters_len())
20205 .map(move |i| self.particle_emitters(i).expect("index below len"))
20206 }
20207
20208 pub fn resize_particle_emitters(&mut self, count: usize) {
20209 unsafe { ffi::whiteout_m3_M3Model_resize_particleEmitters(self.raw.as_ptr(), count) }
20211 }
20212
20213 pub fn particle_emitter_copies_len(&self) -> usize {
20215 unsafe { ffi::whiteout_m3_M3Model_get_particleEmitterCopies_count(self.raw.as_ptr()) }
20217 }
20218
20219 pub fn particle_emitter_copies(
20221 &self,
20222 index: usize,
20223 ) -> Option<crate::support::Ref<'_, ParticleEmitterCopy>> {
20224 if index >= self.particle_emitter_copies_len() {
20225 return None;
20226 }
20227 unsafe {
20229 Some(crate::support::Ref::new(ParticleEmitterCopy {
20230 raw: core::ptr::NonNull::new_unchecked(
20231 ffi::whiteout_m3_M3Model_get_particleEmitterCopies_at(self.raw.as_ptr(), index),
20232 ),
20233 }))
20234 }
20235 }
20236
20237 pub fn particle_emitter_copies_mut(
20238 &mut self,
20239 index: usize,
20240 ) -> Option<crate::support::RefMut<'_, ParticleEmitterCopy>> {
20241 if index >= self.particle_emitter_copies_len() {
20242 return None;
20243 }
20244 unsafe {
20246 Some(crate::support::RefMut::new(ParticleEmitterCopy {
20247 raw: core::ptr::NonNull::new_unchecked(
20248 ffi::whiteout_m3_M3Model_get_particleEmitterCopies_at(self.raw.as_ptr(), index),
20249 ),
20250 }))
20251 }
20252 }
20253
20254 pub fn particle_emitter_copies_iter(
20256 &self,
20257 ) -> impl ExactSizeIterator<Item = crate::support::Ref<'_, ParticleEmitterCopy>> {
20258 (0..self.particle_emitter_copies_len())
20259 .map(move |i| self.particle_emitter_copies(i).expect("index below len"))
20260 }
20261
20262 pub fn resize_particle_emitter_copies(&mut self, count: usize) {
20263 unsafe { ffi::whiteout_m3_M3Model_resize_particleEmitterCopies(self.raw.as_ptr(), count) }
20265 }
20266
20267 pub fn ribbon_emitters_len(&self) -> usize {
20269 unsafe { ffi::whiteout_m3_M3Model_get_ribbonEmitters_count(self.raw.as_ptr()) }
20271 }
20272
20273 pub fn ribbon_emitters(&self, index: usize) -> Option<crate::support::Ref<'_, RibbonEmitter>> {
20275 if index >= self.ribbon_emitters_len() {
20276 return None;
20277 }
20278 unsafe {
20280 Some(crate::support::Ref::new(RibbonEmitter {
20281 raw: core::ptr::NonNull::new_unchecked(
20282 ffi::whiteout_m3_M3Model_get_ribbonEmitters_at(self.raw.as_ptr(), index),
20283 ),
20284 }))
20285 }
20286 }
20287
20288 pub fn ribbon_emitters_mut(
20289 &mut self,
20290 index: usize,
20291 ) -> Option<crate::support::RefMut<'_, RibbonEmitter>> {
20292 if index >= self.ribbon_emitters_len() {
20293 return None;
20294 }
20295 unsafe {
20297 Some(crate::support::RefMut::new(RibbonEmitter {
20298 raw: core::ptr::NonNull::new_unchecked(
20299 ffi::whiteout_m3_M3Model_get_ribbonEmitters_at(self.raw.as_ptr(), index),
20300 ),
20301 }))
20302 }
20303 }
20304
20305 pub fn ribbon_emitters_iter(
20307 &self,
20308 ) -> impl ExactSizeIterator<Item = crate::support::Ref<'_, RibbonEmitter>> {
20309 (0..self.ribbon_emitters_len())
20310 .map(move |i| self.ribbon_emitters(i).expect("index below len"))
20311 }
20312
20313 pub fn resize_ribbon_emitters(&mut self, count: usize) {
20314 unsafe { ffi::whiteout_m3_M3Model_resize_ribbonEmitters(self.raw.as_ptr(), count) }
20316 }
20317
20318 pub fn projections_len(&self) -> usize {
20320 unsafe { ffi::whiteout_m3_M3Model_get_projections_count(self.raw.as_ptr()) }
20322 }
20323
20324 pub fn projections(&self, index: usize) -> Option<crate::support::Ref<'_, Projector>> {
20326 if index >= self.projections_len() {
20327 return None;
20328 }
20329 unsafe {
20331 Some(crate::support::Ref::new(Projector {
20332 raw: core::ptr::NonNull::new_unchecked(
20333 ffi::whiteout_m3_M3Model_get_projections_at(self.raw.as_ptr(), index),
20334 ),
20335 }))
20336 }
20337 }
20338
20339 pub fn projections_mut(
20340 &mut self,
20341 index: usize,
20342 ) -> Option<crate::support::RefMut<'_, Projector>> {
20343 if index >= self.projections_len() {
20344 return None;
20345 }
20346 unsafe {
20348 Some(crate::support::RefMut::new(Projector {
20349 raw: core::ptr::NonNull::new_unchecked(
20350 ffi::whiteout_m3_M3Model_get_projections_at(self.raw.as_ptr(), index),
20351 ),
20352 }))
20353 }
20354 }
20355
20356 pub fn projections_iter(
20358 &self,
20359 ) -> impl ExactSizeIterator<Item = crate::support::Ref<'_, Projector>> {
20360 (0..self.projections_len()).map(move |i| self.projections(i).expect("index below len"))
20361 }
20362
20363 pub fn resize_projections(&mut self, count: usize) {
20364 unsafe { ffi::whiteout_m3_M3Model_resize_projections(self.raw.as_ptr(), count) }
20366 }
20367
20368 pub fn forces_len(&self) -> usize {
20370 unsafe { ffi::whiteout_m3_M3Model_get_forces_count(self.raw.as_ptr()) }
20372 }
20373
20374 pub fn forces(&self, index: usize) -> Option<crate::support::Ref<'_, Force>> {
20376 if index >= self.forces_len() {
20377 return None;
20378 }
20379 unsafe {
20381 Some(crate::support::Ref::new(Force {
20382 raw: core::ptr::NonNull::new_unchecked(ffi::whiteout_m3_M3Model_get_forces_at(
20383 self.raw.as_ptr(),
20384 index,
20385 )),
20386 }))
20387 }
20388 }
20389
20390 pub fn forces_mut(&mut self, index: usize) -> Option<crate::support::RefMut<'_, Force>> {
20391 if index >= self.forces_len() {
20392 return None;
20393 }
20394 unsafe {
20396 Some(crate::support::RefMut::new(Force {
20397 raw: core::ptr::NonNull::new_unchecked(ffi::whiteout_m3_M3Model_get_forces_at(
20398 self.raw.as_ptr(),
20399 index,
20400 )),
20401 }))
20402 }
20403 }
20404
20405 pub fn forces_iter(&self) -> impl ExactSizeIterator<Item = crate::support::Ref<'_, Force>> {
20407 (0..self.forces_len()).map(move |i| self.forces(i).expect("index below len"))
20408 }
20409
20410 pub fn resize_forces(&mut self, count: usize) {
20411 unsafe { ffi::whiteout_m3_M3Model_resize_forces(self.raw.as_ptr(), count) }
20413 }
20414
20415 pub fn warps_len(&self) -> usize {
20417 unsafe { ffi::whiteout_m3_M3Model_get_warps_count(self.raw.as_ptr()) }
20419 }
20420
20421 pub fn warps(&self, index: usize) -> Option<crate::support::Ref<'_, Warp>> {
20423 if index >= self.warps_len() {
20424 return None;
20425 }
20426 unsafe {
20428 Some(crate::support::Ref::new(Warp {
20429 raw: core::ptr::NonNull::new_unchecked(ffi::whiteout_m3_M3Model_get_warps_at(
20430 self.raw.as_ptr(),
20431 index,
20432 )),
20433 }))
20434 }
20435 }
20436
20437 pub fn warps_mut(&mut self, index: usize) -> Option<crate::support::RefMut<'_, Warp>> {
20438 if index >= self.warps_len() {
20439 return None;
20440 }
20441 unsafe {
20443 Some(crate::support::RefMut::new(Warp {
20444 raw: core::ptr::NonNull::new_unchecked(ffi::whiteout_m3_M3Model_get_warps_at(
20445 self.raw.as_ptr(),
20446 index,
20447 )),
20448 }))
20449 }
20450 }
20451
20452 pub fn warps_iter(&self) -> impl ExactSizeIterator<Item = crate::support::Ref<'_, Warp>> {
20454 (0..self.warps_len()).map(move |i| self.warps(i).expect("index below len"))
20455 }
20456
20457 pub fn resize_warps(&mut self, count: usize) {
20458 unsafe { ffi::whiteout_m3_M3Model_resize_warps(self.raw.as_ptr(), count) }
20460 }
20461
20462 pub fn view_volumes_len(&self) -> usize {
20464 unsafe { ffi::whiteout_m3_M3Model_get_viewVolumes_count(self.raw.as_ptr()) }
20466 }
20467
20468 pub fn view_volumes(&self, index: usize) -> Option<crate::support::Ref<'_, ViewVolume>> {
20470 if index >= self.view_volumes_len() {
20471 return None;
20472 }
20473 unsafe {
20475 Some(crate::support::Ref::new(ViewVolume {
20476 raw: core::ptr::NonNull::new_unchecked(
20477 ffi::whiteout_m3_M3Model_get_viewVolumes_at(self.raw.as_ptr(), index),
20478 ),
20479 }))
20480 }
20481 }
20482
20483 pub fn view_volumes_mut(
20484 &mut self,
20485 index: usize,
20486 ) -> Option<crate::support::RefMut<'_, ViewVolume>> {
20487 if index >= self.view_volumes_len() {
20488 return None;
20489 }
20490 unsafe {
20492 Some(crate::support::RefMut::new(ViewVolume {
20493 raw: core::ptr::NonNull::new_unchecked(
20494 ffi::whiteout_m3_M3Model_get_viewVolumes_at(self.raw.as_ptr(), index),
20495 ),
20496 }))
20497 }
20498 }
20499
20500 pub fn view_volumes_iter(
20502 &self,
20503 ) -> impl ExactSizeIterator<Item = crate::support::Ref<'_, ViewVolume>> {
20504 (0..self.view_volumes_len()).map(move |i| self.view_volumes(i).expect("index below len"))
20505 }
20506
20507 pub fn resize_view_volumes(&mut self, count: usize) {
20508 unsafe { ffi::whiteout_m3_M3Model_resize_viewVolumes(self.raw.as_ptr(), count) }
20510 }
20511
20512 pub fn rigid_bodies_len(&self) -> usize {
20514 unsafe { ffi::whiteout_m3_M3Model_get_rigidBodies_count(self.raw.as_ptr()) }
20516 }
20517
20518 pub fn rigid_bodies(&self, index: usize) -> Option<crate::support::Ref<'_, RigidBody>> {
20520 if index >= self.rigid_bodies_len() {
20521 return None;
20522 }
20523 unsafe {
20525 Some(crate::support::Ref::new(RigidBody {
20526 raw: core::ptr::NonNull::new_unchecked(
20527 ffi::whiteout_m3_M3Model_get_rigidBodies_at(self.raw.as_ptr(), index),
20528 ),
20529 }))
20530 }
20531 }
20532
20533 pub fn rigid_bodies_mut(
20534 &mut self,
20535 index: usize,
20536 ) -> Option<crate::support::RefMut<'_, RigidBody>> {
20537 if index >= self.rigid_bodies_len() {
20538 return None;
20539 }
20540 unsafe {
20542 Some(crate::support::RefMut::new(RigidBody {
20543 raw: core::ptr::NonNull::new_unchecked(
20544 ffi::whiteout_m3_M3Model_get_rigidBodies_at(self.raw.as_ptr(), index),
20545 ),
20546 }))
20547 }
20548 }
20549
20550 pub fn rigid_bodies_iter(
20552 &self,
20553 ) -> impl ExactSizeIterator<Item = crate::support::Ref<'_, RigidBody>> {
20554 (0..self.rigid_bodies_len()).map(move |i| self.rigid_bodies(i).expect("index below len"))
20555 }
20556
20557 pub fn resize_rigid_bodies(&mut self, count: usize) {
20558 unsafe { ffi::whiteout_m3_M3Model_resize_rigidBodies(self.raw.as_ptr(), count) }
20560 }
20561
20562 pub fn physics_constraints_len(&self) -> usize {
20564 unsafe { ffi::whiteout_m3_M3Model_get_physicsConstraints_count(self.raw.as_ptr()) }
20566 }
20567
20568 pub fn physics_constraints(
20570 &self,
20571 index: usize,
20572 ) -> Option<crate::support::Ref<'_, PhysicsConstraint>> {
20573 if index >= self.physics_constraints_len() {
20574 return None;
20575 }
20576 unsafe {
20578 Some(crate::support::Ref::new(PhysicsConstraint {
20579 raw: core::ptr::NonNull::new_unchecked(
20580 ffi::whiteout_m3_M3Model_get_physicsConstraints_at(self.raw.as_ptr(), index),
20581 ),
20582 }))
20583 }
20584 }
20585
20586 pub fn physics_constraints_mut(
20587 &mut self,
20588 index: usize,
20589 ) -> Option<crate::support::RefMut<'_, PhysicsConstraint>> {
20590 if index >= self.physics_constraints_len() {
20591 return None;
20592 }
20593 unsafe {
20595 Some(crate::support::RefMut::new(PhysicsConstraint {
20596 raw: core::ptr::NonNull::new_unchecked(
20597 ffi::whiteout_m3_M3Model_get_physicsConstraints_at(self.raw.as_ptr(), index),
20598 ),
20599 }))
20600 }
20601 }
20602
20603 pub fn physics_constraints_iter(
20605 &self,
20606 ) -> impl ExactSizeIterator<Item = crate::support::Ref<'_, PhysicsConstraint>> {
20607 (0..self.physics_constraints_len())
20608 .map(move |i| self.physics_constraints(i).expect("index below len"))
20609 }
20610
20611 pub fn resize_physics_constraints(&mut self, count: usize) {
20612 unsafe { ffi::whiteout_m3_M3Model_resize_physicsConstraints(self.raw.as_ptr(), count) }
20614 }
20615
20616 pub fn physics_joints_len(&self) -> usize {
20618 unsafe { ffi::whiteout_m3_M3Model_get_physicsJoints_count(self.raw.as_ptr()) }
20620 }
20621
20622 pub fn physics_joints(&self, index: usize) -> Option<crate::support::Ref<'_, PhysicsJoint>> {
20624 if index >= self.physics_joints_len() {
20625 return None;
20626 }
20627 unsafe {
20629 Some(crate::support::Ref::new(PhysicsJoint {
20630 raw: core::ptr::NonNull::new_unchecked(
20631 ffi::whiteout_m3_M3Model_get_physicsJoints_at(self.raw.as_ptr(), index),
20632 ),
20633 }))
20634 }
20635 }
20636
20637 pub fn physics_joints_mut(
20638 &mut self,
20639 index: usize,
20640 ) -> Option<crate::support::RefMut<'_, PhysicsJoint>> {
20641 if index >= self.physics_joints_len() {
20642 return None;
20643 }
20644 unsafe {
20646 Some(crate::support::RefMut::new(PhysicsJoint {
20647 raw: core::ptr::NonNull::new_unchecked(
20648 ffi::whiteout_m3_M3Model_get_physicsJoints_at(self.raw.as_ptr(), index),
20649 ),
20650 }))
20651 }
20652 }
20653
20654 pub fn physics_joints_iter(
20656 &self,
20657 ) -> impl ExactSizeIterator<Item = crate::support::Ref<'_, PhysicsJoint>> {
20658 (0..self.physics_joints_len())
20659 .map(move |i| self.physics_joints(i).expect("index below len"))
20660 }
20661
20662 pub fn resize_physics_joints(&mut self, count: usize) {
20663 unsafe { ffi::whiteout_m3_M3Model_resize_physicsJoints(self.raw.as_ptr(), count) }
20665 }
20666
20667 pub fn cloth_physics_len(&self) -> usize {
20669 unsafe { ffi::whiteout_m3_M3Model_get_clothPhysics_count(self.raw.as_ptr()) }
20671 }
20672
20673 pub fn cloth_physics(&self, index: usize) -> Option<crate::support::Ref<'_, ClothPhysics>> {
20675 if index >= self.cloth_physics_len() {
20676 return None;
20677 }
20678 unsafe {
20680 Some(crate::support::Ref::new(ClothPhysics {
20681 raw: core::ptr::NonNull::new_unchecked(
20682 ffi::whiteout_m3_M3Model_get_clothPhysics_at(self.raw.as_ptr(), index),
20683 ),
20684 }))
20685 }
20686 }
20687
20688 pub fn cloth_physics_mut(
20689 &mut self,
20690 index: usize,
20691 ) -> Option<crate::support::RefMut<'_, ClothPhysics>> {
20692 if index >= self.cloth_physics_len() {
20693 return None;
20694 }
20695 unsafe {
20697 Some(crate::support::RefMut::new(ClothPhysics {
20698 raw: core::ptr::NonNull::new_unchecked(
20699 ffi::whiteout_m3_M3Model_get_clothPhysics_at(self.raw.as_ptr(), index),
20700 ),
20701 }))
20702 }
20703 }
20704
20705 pub fn cloth_physics_iter(
20707 &self,
20708 ) -> impl ExactSizeIterator<Item = crate::support::Ref<'_, ClothPhysics>> {
20709 (0..self.cloth_physics_len()).map(move |i| self.cloth_physics(i).expect("index below len"))
20710 }
20711
20712 pub fn resize_cloth_physics(&mut self, count: usize) {
20713 unsafe { ffi::whiteout_m3_M3Model_resize_clothPhysics(self.raw.as_ptr(), count) }
20715 }
20716
20717 pub fn ik_two_joints_len(&self) -> usize {
20719 unsafe { ffi::whiteout_m3_M3Model_get_ikTwoJoints_count(self.raw.as_ptr()) }
20721 }
20722
20723 pub fn ik_two_joints(&self, index: usize) -> Option<crate::support::Ref<'_, IKTwoJoint>> {
20725 if index >= self.ik_two_joints_len() {
20726 return None;
20727 }
20728 unsafe {
20730 Some(crate::support::Ref::new(IKTwoJoint {
20731 raw: core::ptr::NonNull::new_unchecked(
20732 ffi::whiteout_m3_M3Model_get_ikTwoJoints_at(self.raw.as_ptr(), index),
20733 ),
20734 }))
20735 }
20736 }
20737
20738 pub fn ik_two_joints_mut(
20739 &mut self,
20740 index: usize,
20741 ) -> Option<crate::support::RefMut<'_, IKTwoJoint>> {
20742 if index >= self.ik_two_joints_len() {
20743 return None;
20744 }
20745 unsafe {
20747 Some(crate::support::RefMut::new(IKTwoJoint {
20748 raw: core::ptr::NonNull::new_unchecked(
20749 ffi::whiteout_m3_M3Model_get_ikTwoJoints_at(self.raw.as_ptr(), index),
20750 ),
20751 }))
20752 }
20753 }
20754
20755 pub fn ik_two_joints_iter(
20757 &self,
20758 ) -> impl ExactSizeIterator<Item = crate::support::Ref<'_, IKTwoJoint>> {
20759 (0..self.ik_two_joints_len()).map(move |i| self.ik_two_joints(i).expect("index below len"))
20760 }
20761
20762 pub fn resize_ik_two_joints(&mut self, count: usize) {
20763 unsafe { ffi::whiteout_m3_M3Model_resize_ikTwoJoints(self.raw.as_ptr(), count) }
20765 }
20766
20767 pub fn ik_ccd_len(&self) -> usize {
20769 unsafe { ffi::whiteout_m3_M3Model_get_ikCCD_count(self.raw.as_ptr()) }
20771 }
20772
20773 pub fn ik_ccd(&self, index: usize) -> Option<crate::support::Ref<'_, IKCCD>> {
20775 if index >= self.ik_ccd_len() {
20776 return None;
20777 }
20778 unsafe {
20780 Some(crate::support::Ref::new(IKCCD {
20781 raw: core::ptr::NonNull::new_unchecked(ffi::whiteout_m3_M3Model_get_ikCCD_at(
20782 self.raw.as_ptr(),
20783 index,
20784 )),
20785 }))
20786 }
20787 }
20788
20789 pub fn ik_ccd_mut(&mut self, index: usize) -> Option<crate::support::RefMut<'_, IKCCD>> {
20790 if index >= self.ik_ccd_len() {
20791 return None;
20792 }
20793 unsafe {
20795 Some(crate::support::RefMut::new(IKCCD {
20796 raw: core::ptr::NonNull::new_unchecked(ffi::whiteout_m3_M3Model_get_ikCCD_at(
20797 self.raw.as_ptr(),
20798 index,
20799 )),
20800 }))
20801 }
20802 }
20803
20804 pub fn ik_ccd_iter(&self) -> impl ExactSizeIterator<Item = crate::support::Ref<'_, IKCCD>> {
20806 (0..self.ik_ccd_len()).map(move |i| self.ik_ccd(i).expect("index below len"))
20807 }
20808
20809 pub fn resize_ik_ccd(&mut self, count: usize) {
20810 unsafe { ffi::whiteout_m3_M3Model_resize_ikCCD(self.raw.as_ptr(), count) }
20812 }
20813
20814 pub fn ik_joints_len(&self) -> usize {
20816 unsafe { ffi::whiteout_m3_M3Model_get_ikJoints_count(self.raw.as_ptr()) }
20818 }
20819
20820 pub fn ik_joints(&self, index: usize) -> Option<crate::support::Ref<'_, IKJoint>> {
20822 if index >= self.ik_joints_len() {
20823 return None;
20824 }
20825 unsafe {
20827 Some(crate::support::Ref::new(IKJoint {
20828 raw: core::ptr::NonNull::new_unchecked(ffi::whiteout_m3_M3Model_get_ikJoints_at(
20829 self.raw.as_ptr(),
20830 index,
20831 )),
20832 }))
20833 }
20834 }
20835
20836 pub fn ik_joints_mut(&mut self, index: usize) -> Option<crate::support::RefMut<'_, IKJoint>> {
20837 if index >= self.ik_joints_len() {
20838 return None;
20839 }
20840 unsafe {
20842 Some(crate::support::RefMut::new(IKJoint {
20843 raw: core::ptr::NonNull::new_unchecked(ffi::whiteout_m3_M3Model_get_ikJoints_at(
20844 self.raw.as_ptr(),
20845 index,
20846 )),
20847 }))
20848 }
20849 }
20850
20851 pub fn ik_joints_iter(
20853 &self,
20854 ) -> impl ExactSizeIterator<Item = crate::support::Ref<'_, IKJoint>> {
20855 (0..self.ik_joints_len()).map(move |i| self.ik_joints(i).expect("index below len"))
20856 }
20857
20858 pub fn resize_ik_joints(&mut self, count: usize) {
20859 unsafe { ffi::whiteout_m3_M3Model_resize_ikJoints(self.raw.as_ptr(), count) }
20861 }
20862
20863 pub fn one_bone_solvers_len(&self) -> usize {
20865 unsafe { ffi::whiteout_m3_M3Model_get_oneBoneSolvers_count(self.raw.as_ptr()) }
20867 }
20868
20869 pub fn one_bone_solvers(&self, index: usize) -> Option<crate::support::Ref<'_, OneBoneSolver>> {
20871 if index >= self.one_bone_solvers_len() {
20872 return None;
20873 }
20874 unsafe {
20876 Some(crate::support::Ref::new(OneBoneSolver {
20877 raw: core::ptr::NonNull::new_unchecked(
20878 ffi::whiteout_m3_M3Model_get_oneBoneSolvers_at(self.raw.as_ptr(), index),
20879 ),
20880 }))
20881 }
20882 }
20883
20884 pub fn one_bone_solvers_mut(
20885 &mut self,
20886 index: usize,
20887 ) -> Option<crate::support::RefMut<'_, OneBoneSolver>> {
20888 if index >= self.one_bone_solvers_len() {
20889 return None;
20890 }
20891 unsafe {
20893 Some(crate::support::RefMut::new(OneBoneSolver {
20894 raw: core::ptr::NonNull::new_unchecked(
20895 ffi::whiteout_m3_M3Model_get_oneBoneSolvers_at(self.raw.as_ptr(), index),
20896 ),
20897 }))
20898 }
20899 }
20900
20901 pub fn one_bone_solvers_iter(
20903 &self,
20904 ) -> impl ExactSizeIterator<Item = crate::support::Ref<'_, OneBoneSolver>> {
20905 (0..self.one_bone_solvers_len())
20906 .map(move |i| self.one_bone_solvers(i).expect("index below len"))
20907 }
20908
20909 pub fn resize_one_bone_solvers(&mut self, count: usize) {
20910 unsafe { ffi::whiteout_m3_M3Model_resize_oneBoneSolvers(self.raw.as_ptr(), count) }
20912 }
20913
20914 pub fn turret_behaviors_len(&self) -> usize {
20916 unsafe { ffi::whiteout_m3_M3Model_get_turretBehaviors_count(self.raw.as_ptr()) }
20918 }
20919
20920 pub fn turret_behaviors(
20922 &self,
20923 index: usize,
20924 ) -> Option<crate::support::Ref<'_, TurretBehavior>> {
20925 if index >= self.turret_behaviors_len() {
20926 return None;
20927 }
20928 unsafe {
20930 Some(crate::support::Ref::new(TurretBehavior {
20931 raw: core::ptr::NonNull::new_unchecked(
20932 ffi::whiteout_m3_M3Model_get_turretBehaviors_at(self.raw.as_ptr(), index),
20933 ),
20934 }))
20935 }
20936 }
20937
20938 pub fn turret_behaviors_mut(
20939 &mut self,
20940 index: usize,
20941 ) -> Option<crate::support::RefMut<'_, TurretBehavior>> {
20942 if index >= self.turret_behaviors_len() {
20943 return None;
20944 }
20945 unsafe {
20947 Some(crate::support::RefMut::new(TurretBehavior {
20948 raw: core::ptr::NonNull::new_unchecked(
20949 ffi::whiteout_m3_M3Model_get_turretBehaviors_at(self.raw.as_ptr(), index),
20950 ),
20951 }))
20952 }
20953 }
20954
20955 pub fn turret_behaviors_iter(
20957 &self,
20958 ) -> impl ExactSizeIterator<Item = crate::support::Ref<'_, TurretBehavior>> {
20959 (0..self.turret_behaviors_len())
20960 .map(move |i| self.turret_behaviors(i).expect("index below len"))
20961 }
20962
20963 pub fn resize_turret_behaviors(&mut self, count: usize) {
20964 unsafe { ffi::whiteout_m3_M3Model_resize_turretBehaviors(self.raw.as_ptr(), count) }
20966 }
20967
20968 pub fn trigger_data_len(&self) -> usize {
20970 unsafe { ffi::whiteout_m3_M3Model_get_triggerData_count(self.raw.as_ptr()) }
20972 }
20973
20974 pub fn trigger_data(&self, index: usize) -> Option<crate::support::Ref<'_, TriggerData>> {
20976 if index >= self.trigger_data_len() {
20977 return None;
20978 }
20979 unsafe {
20981 Some(crate::support::Ref::new(TriggerData {
20982 raw: core::ptr::NonNull::new_unchecked(
20983 ffi::whiteout_m3_M3Model_get_triggerData_at(self.raw.as_ptr(), index),
20984 ),
20985 }))
20986 }
20987 }
20988
20989 pub fn trigger_data_mut(
20990 &mut self,
20991 index: usize,
20992 ) -> Option<crate::support::RefMut<'_, TriggerData>> {
20993 if index >= self.trigger_data_len() {
20994 return None;
20995 }
20996 unsafe {
20998 Some(crate::support::RefMut::new(TriggerData {
20999 raw: core::ptr::NonNull::new_unchecked(
21000 ffi::whiteout_m3_M3Model_get_triggerData_at(self.raw.as_ptr(), index),
21001 ),
21002 }))
21003 }
21004 }
21005
21006 pub fn trigger_data_iter(
21008 &self,
21009 ) -> impl ExactSizeIterator<Item = crate::support::Ref<'_, TriggerData>> {
21010 (0..self.trigger_data_len()).map(move |i| self.trigger_data(i).expect("index below len"))
21011 }
21012
21013 pub fn resize_trigger_data(&mut self, count: usize) {
21014 unsafe { ffi::whiteout_m3_M3Model_resize_triggerData(self.raw.as_ptr(), count) }
21016 }
21017
21018 pub fn initial_reference_len(&self) -> usize {
21020 unsafe { ffi::whiteout_m3_M3Model_get_initialReference_count(self.raw.as_ptr()) }
21022 }
21023
21024 pub fn initial_reference(
21026 &self,
21027 index: usize,
21028 ) -> Option<crate::support::Ref<'_, InitialReference>> {
21029 if index >= self.initial_reference_len() {
21030 return None;
21031 }
21032 unsafe {
21034 Some(crate::support::Ref::new(InitialReference {
21035 raw: core::ptr::NonNull::new_unchecked(
21036 ffi::whiteout_m3_M3Model_get_initialReference_at(self.raw.as_ptr(), index),
21037 ),
21038 }))
21039 }
21040 }
21041
21042 pub fn initial_reference_mut(
21043 &mut self,
21044 index: usize,
21045 ) -> Option<crate::support::RefMut<'_, InitialReference>> {
21046 if index >= self.initial_reference_len() {
21047 return None;
21048 }
21049 unsafe {
21051 Some(crate::support::RefMut::new(InitialReference {
21052 raw: core::ptr::NonNull::new_unchecked(
21053 ffi::whiteout_m3_M3Model_get_initialReference_at(self.raw.as_ptr(), index),
21054 ),
21055 }))
21056 }
21057 }
21058
21059 pub fn initial_reference_iter(
21061 &self,
21062 ) -> impl ExactSizeIterator<Item = crate::support::Ref<'_, InitialReference>> {
21063 (0..self.initial_reference_len())
21064 .map(move |i| self.initial_reference(i).expect("index below len"))
21065 }
21066
21067 pub fn resize_initial_reference(&mut self, count: usize) {
21068 unsafe { ffi::whiteout_m3_M3Model_resize_initialReference(self.raw.as_ptr(), count) }
21070 }
21071
21072 pub fn tight_hit_test_object(&self) -> crate::support::Ref<'_, HitTestShape> {
21075 unsafe {
21078 crate::support::Ref::new(HitTestShape {
21079 raw: core::ptr::NonNull::new_unchecked(
21080 ffi::whiteout_m3_M3Model_get_tightHitTestObject(self.raw.as_ptr()),
21081 ),
21082 })
21083 }
21084 }
21085
21086 pub fn tight_hit_test_object_mut(&mut self) -> crate::support::RefMut<'_, HitTestShape> {
21087 unsafe {
21089 crate::support::RefMut::new(HitTestShape {
21090 raw: core::ptr::NonNull::new_unchecked(
21091 ffi::whiteout_m3_M3Model_get_tightHitTestObject(self.raw.as_ptr()),
21092 ),
21093 })
21094 }
21095 }
21096
21097 pub fn fuzzy_hit_test_objects_len(&self) -> usize {
21099 unsafe { ffi::whiteout_m3_M3Model_get_fuzzyHitTestObjects_count(self.raw.as_ptr()) }
21101 }
21102
21103 pub fn fuzzy_hit_test_objects(
21105 &self,
21106 index: usize,
21107 ) -> Option<crate::support::Ref<'_, HitTestShape>> {
21108 if index >= self.fuzzy_hit_test_objects_len() {
21109 return None;
21110 }
21111 unsafe {
21113 Some(crate::support::Ref::new(HitTestShape {
21114 raw: core::ptr::NonNull::new_unchecked(
21115 ffi::whiteout_m3_M3Model_get_fuzzyHitTestObjects_at(self.raw.as_ptr(), index),
21116 ),
21117 }))
21118 }
21119 }
21120
21121 pub fn fuzzy_hit_test_objects_mut(
21122 &mut self,
21123 index: usize,
21124 ) -> Option<crate::support::RefMut<'_, HitTestShape>> {
21125 if index >= self.fuzzy_hit_test_objects_len() {
21126 return None;
21127 }
21128 unsafe {
21130 Some(crate::support::RefMut::new(HitTestShape {
21131 raw: core::ptr::NonNull::new_unchecked(
21132 ffi::whiteout_m3_M3Model_get_fuzzyHitTestObjects_at(self.raw.as_ptr(), index),
21133 ),
21134 }))
21135 }
21136 }
21137
21138 pub fn fuzzy_hit_test_objects_iter(
21140 &self,
21141 ) -> impl ExactSizeIterator<Item = crate::support::Ref<'_, HitTestShape>> {
21142 (0..self.fuzzy_hit_test_objects_len())
21143 .map(move |i| self.fuzzy_hit_test_objects(i).expect("index below len"))
21144 }
21145
21146 pub fn resize_fuzzy_hit_test_objects(&mut self, count: usize) {
21147 unsafe { ffi::whiteout_m3_M3Model_resize_fuzzyHitTestObjects(self.raw.as_ptr(), count) }
21149 }
21150
21151 pub fn attachment_volumes_len(&self) -> usize {
21153 unsafe { ffi::whiteout_m3_M3Model_get_attachmentVolumes_count(self.raw.as_ptr()) }
21155 }
21156
21157 pub fn attachment_volumes(
21159 &self,
21160 index: usize,
21161 ) -> Option<crate::support::Ref<'_, AttachmentVolume>> {
21162 if index >= self.attachment_volumes_len() {
21163 return None;
21164 }
21165 unsafe {
21167 Some(crate::support::Ref::new(AttachmentVolume {
21168 raw: core::ptr::NonNull::new_unchecked(
21169 ffi::whiteout_m3_M3Model_get_attachmentVolumes_at(self.raw.as_ptr(), index),
21170 ),
21171 }))
21172 }
21173 }
21174
21175 pub fn attachment_volumes_mut(
21176 &mut self,
21177 index: usize,
21178 ) -> Option<crate::support::RefMut<'_, AttachmentVolume>> {
21179 if index >= self.attachment_volumes_len() {
21180 return None;
21181 }
21182 unsafe {
21184 Some(crate::support::RefMut::new(AttachmentVolume {
21185 raw: core::ptr::NonNull::new_unchecked(
21186 ffi::whiteout_m3_M3Model_get_attachmentVolumes_at(self.raw.as_ptr(), index),
21187 ),
21188 }))
21189 }
21190 }
21191
21192 pub fn attachment_volumes_iter(
21194 &self,
21195 ) -> impl ExactSizeIterator<Item = crate::support::Ref<'_, AttachmentVolume>> {
21196 (0..self.attachment_volumes_len())
21197 .map(move |i| self.attachment_volumes(i).expect("index below len"))
21198 }
21199
21200 pub fn resize_attachment_volumes(&mut self, count: usize) {
21201 unsafe { ffi::whiteout_m3_M3Model_resize_attachmentVolumes(self.raw.as_ptr(), count) }
21203 }
21204
21205 pub fn attachment_volumes_addon_0(&self) -> &[u16] {
21208 unsafe {
21211 let n = ffi::whiteout_m3_M3Model_get_attachmentVolumesAddon0_count(self.raw.as_ptr());
21212 let p = ffi::whiteout_m3_M3Model_get_attachmentVolumesAddon0_data(self.raw.as_ptr());
21213 if p.is_null() || n == 0 {
21214 &[]
21215 } else {
21216 core::slice::from_raw_parts(p, n)
21217 }
21218 }
21219 }
21220
21221 pub fn attachment_volumes_addon_0_mut(&mut self) -> &mut [u16] {
21223 unsafe {
21225 let n = ffi::whiteout_m3_M3Model_get_attachmentVolumesAddon0_count(self.raw.as_ptr());
21226 let p = ffi::whiteout_m3_M3Model_get_attachmentVolumesAddon0_data(self.raw.as_ptr())
21227 as *mut u16;
21228 if p.is_null() || n == 0 {
21229 &mut []
21230 } else {
21231 core::slice::from_raw_parts_mut(p, n)
21232 }
21233 }
21234 }
21235
21236 pub fn set_attachment_volumes_addon_0(&mut self, values: &[u16]) {
21237 unsafe {
21239 ffi::whiteout_m3_M3Model_assign_attachmentVolumesAddon0(
21240 self.raw.as_ptr(),
21241 values.as_ptr() as *const _,
21242 values.len(),
21243 )
21244 }
21245 }
21246
21247 pub fn resize_attachment_volumes_addon_0(&mut self, count: usize) {
21248 unsafe { ffi::whiteout_m3_M3Model_resize_attachmentVolumesAddon0(self.raw.as_ptr(), count) }
21251 }
21252
21253 pub fn attachment_volumes_addon_1(&self) -> &[u16] {
21256 unsafe {
21259 let n = ffi::whiteout_m3_M3Model_get_attachmentVolumesAddon1_count(self.raw.as_ptr());
21260 let p = ffi::whiteout_m3_M3Model_get_attachmentVolumesAddon1_data(self.raw.as_ptr());
21261 if p.is_null() || n == 0 {
21262 &[]
21263 } else {
21264 core::slice::from_raw_parts(p, n)
21265 }
21266 }
21267 }
21268
21269 pub fn attachment_volumes_addon_1_mut(&mut self) -> &mut [u16] {
21271 unsafe {
21273 let n = ffi::whiteout_m3_M3Model_get_attachmentVolumesAddon1_count(self.raw.as_ptr());
21274 let p = ffi::whiteout_m3_M3Model_get_attachmentVolumesAddon1_data(self.raw.as_ptr())
21275 as *mut u16;
21276 if p.is_null() || n == 0 {
21277 &mut []
21278 } else {
21279 core::slice::from_raw_parts_mut(p, n)
21280 }
21281 }
21282 }
21283
21284 pub fn set_attachment_volumes_addon_1(&mut self, values: &[u16]) {
21285 unsafe {
21287 ffi::whiteout_m3_M3Model_assign_attachmentVolumesAddon1(
21288 self.raw.as_ptr(),
21289 values.as_ptr() as *const _,
21290 values.len(),
21291 )
21292 }
21293 }
21294
21295 pub fn resize_attachment_volumes_addon_1(&mut self, count: usize) {
21296 unsafe { ffi::whiteout_m3_M3Model_resize_attachmentVolumesAddon1(self.raw.as_ptr(), count) }
21299 }
21300
21301 pub fn billboard_behaviors_len(&self) -> usize {
21303 unsafe { ffi::whiteout_m3_M3Model_get_billboardBehaviors_count(self.raw.as_ptr()) }
21305 }
21306
21307 pub fn billboard_behaviors(
21309 &self,
21310 index: usize,
21311 ) -> Option<crate::support::Ref<'_, BillboardBehavior>> {
21312 if index >= self.billboard_behaviors_len() {
21313 return None;
21314 }
21315 unsafe {
21317 Some(crate::support::Ref::new(BillboardBehavior {
21318 raw: core::ptr::NonNull::new_unchecked(
21319 ffi::whiteout_m3_M3Model_get_billboardBehaviors_at(self.raw.as_ptr(), index),
21320 ),
21321 }))
21322 }
21323 }
21324
21325 pub fn billboard_behaviors_mut(
21326 &mut self,
21327 index: usize,
21328 ) -> Option<crate::support::RefMut<'_, BillboardBehavior>> {
21329 if index >= self.billboard_behaviors_len() {
21330 return None;
21331 }
21332 unsafe {
21334 Some(crate::support::RefMut::new(BillboardBehavior {
21335 raw: core::ptr::NonNull::new_unchecked(
21336 ffi::whiteout_m3_M3Model_get_billboardBehaviors_at(self.raw.as_ptr(), index),
21337 ),
21338 }))
21339 }
21340 }
21341
21342 pub fn billboard_behaviors_iter(
21344 &self,
21345 ) -> impl ExactSizeIterator<Item = crate::support::Ref<'_, BillboardBehavior>> {
21346 (0..self.billboard_behaviors_len())
21347 .map(move |i| self.billboard_behaviors(i).expect("index below len"))
21348 }
21349
21350 pub fn resize_billboard_behaviors(&mut self, count: usize) {
21351 unsafe { ffi::whiteout_m3_M3Model_resize_billboardBehaviors(self.raw.as_ptr(), count) }
21353 }
21354
21355 pub fn trailing_models_len(&self) -> usize {
21357 unsafe { ffi::whiteout_m3_M3Model_get_trailingModels_count(self.raw.as_ptr()) }
21359 }
21360
21361 pub fn trailing_models(&self, index: usize) -> Option<crate::support::Ref<'_, TrailingModel>> {
21363 if index >= self.trailing_models_len() {
21364 return None;
21365 }
21366 unsafe {
21368 Some(crate::support::Ref::new(TrailingModel {
21369 raw: core::ptr::NonNull::new_unchecked(
21370 ffi::whiteout_m3_M3Model_get_trailingModels_at(self.raw.as_ptr(), index),
21371 ),
21372 }))
21373 }
21374 }
21375
21376 pub fn trailing_models_mut(
21377 &mut self,
21378 index: usize,
21379 ) -> Option<crate::support::RefMut<'_, TrailingModel>> {
21380 if index >= self.trailing_models_len() {
21381 return None;
21382 }
21383 unsafe {
21385 Some(crate::support::RefMut::new(TrailingModel {
21386 raw: core::ptr::NonNull::new_unchecked(
21387 ffi::whiteout_m3_M3Model_get_trailingModels_at(self.raw.as_ptr(), index),
21388 ),
21389 }))
21390 }
21391 }
21392
21393 pub fn trailing_models_iter(
21395 &self,
21396 ) -> impl ExactSizeIterator<Item = crate::support::Ref<'_, TrailingModel>> {
21397 (0..self.trailing_models_len())
21398 .map(move |i| self.trailing_models(i).expect("index below len"))
21399 }
21400
21401 pub fn resize_trailing_models(&mut self, count: usize) {
21402 unsafe { ffi::whiteout_m3_M3Model_resize_trailingModels(self.raw.as_ptr(), count) }
21404 }
21405
21406 pub fn m_3a_anim_hash(&self) -> u32 {
21408 unsafe { ffi::whiteout_m3_M3Model_get_m3aAnimHash(self.raw.as_ptr()) }
21410 }
21411
21412 pub fn set_m_3a_anim_hash(&mut self, value: u32) {
21413 unsafe { ffi::whiteout_m3_M3Model_set_m3aAnimHash(self.raw.as_ptr(), value) }
21415 }
21416
21417 pub fn m_3a_anim_hashes(&self) -> &[u32] {
21420 unsafe {
21423 let n = ffi::whiteout_m3_M3Model_get_m3aAnimHashes_count(self.raw.as_ptr());
21424 let p = ffi::whiteout_m3_M3Model_get_m3aAnimHashes_data(self.raw.as_ptr());
21425 if p.is_null() || n == 0 {
21426 &[]
21427 } else {
21428 core::slice::from_raw_parts(p, n)
21429 }
21430 }
21431 }
21432
21433 pub fn m_3a_anim_hashes_mut(&mut self) -> &mut [u32] {
21435 unsafe {
21437 let n = ffi::whiteout_m3_M3Model_get_m3aAnimHashes_count(self.raw.as_ptr());
21438 let p = ffi::whiteout_m3_M3Model_get_m3aAnimHashes_data(self.raw.as_ptr()) as *mut u32;
21439 if p.is_null() || n == 0 {
21440 &mut []
21441 } else {
21442 core::slice::from_raw_parts_mut(p, n)
21443 }
21444 }
21445 }
21446
21447 pub fn set_m_3a_anim_hashes(&mut self, values: &[u32]) {
21448 unsafe {
21450 ffi::whiteout_m3_M3Model_assign_m3aAnimHashes(
21451 self.raw.as_ptr(),
21452 values.as_ptr() as *const _,
21453 values.len(),
21454 )
21455 }
21456 }
21457
21458 pub fn resize_m_3a_anim_hashes(&mut self, count: usize) {
21459 unsafe { ffi::whiteout_m3_M3Model_resize_m3aAnimHashes(self.raw.as_ptr(), count) }
21462 }
21463}
21464
21465impl Default for Model {
21466 fn default() -> Self {
21467 Self::new()
21468 }
21469}
21470
21471pub struct Parser {
21477 pub(crate) raw: core::ptr::NonNull<ffi::whiteout_M3Parser>,
21478}
21479
21480impl Drop for Parser {
21481 fn drop(&mut self) {
21482 unsafe { ffi::whiteout_m3_M3Parser_delete(self.raw.as_ptr()) }
21484 }
21485}
21486
21487impl Parser {
21488 #[allow(dead_code)] pub(crate) unsafe fn from_raw(raw: *mut ffi::whiteout_M3Parser) -> Option<Self> {
21492 core::ptr::NonNull::new(raw).map(|raw| Parser { raw })
21493 }
21494}
21495
21496unsafe impl Send for Parser {}
21501
21502impl core::fmt::Debug for Parser {
21503 fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
21504 f.debug_struct("Parser").finish_non_exhaustive()
21505 }
21506}
21507
21508impl Parser {
21509 pub fn new() -> Self {
21512 unsafe {
21515 let raw = ffi::whiteout_m3_M3Parser_new();
21516 Self::from_raw(raw).expect("native Parser allocation failed")
21517 }
21518 }
21519
21520 pub fn parse_file(&mut self, file_path: &str) -> Option<Model> {
21522 let file_path_cstr = std::ffi::CString::new(file_path).unwrap_or_default();
21523 unsafe {
21525 Model::from_raw(ffi::whiteout_m3_M3Parser_parse(
21526 self.raw.as_ptr(),
21527 file_path_cstr.as_ptr(),
21528 ))
21529 }
21530 }
21531
21532 pub fn parse(&mut self, buffer: &[u8]) -> Option<Model> {
21534 unsafe {
21536 Model::from_raw(ffi::whiteout_m3_M3Parser_parse_buffer(
21537 self.raw.as_ptr(),
21538 buffer.as_ptr(),
21539 buffer.len(),
21540 ))
21541 }
21542 }
21543
21544 pub fn has_issues(&self) -> bool {
21546 unsafe { ffi::whiteout_m3_M3Parser_hasIssues(self.raw.as_ptr()) != 0 }
21548 }
21549
21550 pub fn issues(&self) -> Vec<String> {
21552 unsafe {
21554 let n = ffi::whiteout_m3_M3Parser_getIssues_count(self.raw.as_ptr());
21555 (0..n)
21556 .map(|i| {
21557 crate::support::take_string(ffi::whiteout_m3_M3Parser_getIssues_at(
21558 self.raw.as_ptr(),
21559 i,
21560 ))
21561 })
21562 .collect()
21563 }
21564 }
21565}
21566
21567impl Default for Parser {
21568 fn default() -> Self {
21569 Self::new()
21570 }
21571}
21572
21573pub struct Writer {
21577 pub(crate) raw: core::ptr::NonNull<ffi::whiteout_M3Writer>,
21578}
21579
21580impl Drop for Writer {
21581 fn drop(&mut self) {
21582 unsafe { ffi::whiteout_m3_M3Writer_delete(self.raw.as_ptr()) }
21584 }
21585}
21586
21587impl Writer {
21588 #[allow(dead_code)] pub(crate) unsafe fn from_raw(raw: *mut ffi::whiteout_M3Writer) -> Option<Self> {
21592 core::ptr::NonNull::new(raw).map(|raw| Writer { raw })
21593 }
21594}
21595
21596unsafe impl Send for Writer {}
21601
21602impl core::fmt::Debug for Writer {
21603 fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
21604 f.debug_struct("Writer").finish_non_exhaustive()
21605 }
21606}
21607
21608impl Writer {
21609 pub fn new() -> Self {
21612 unsafe {
21615 let raw = ffi::whiteout_m3_M3Writer_new();
21616 Self::from_raw(raw).expect("native Writer allocation failed")
21617 }
21618 }
21619
21620 pub fn write_file(&mut self, file_path: &str, model: &Model) {
21622 let file_path_cstr = std::ffi::CString::new(file_path).unwrap_or_default();
21623 unsafe {
21625 ffi::whiteout_m3_M3Writer_write(
21626 self.raw.as_ptr(),
21627 file_path_cstr.as_ptr(),
21628 model.raw.as_ptr(),
21629 );
21630 }
21631 }
21632
21633 pub fn write(&mut self, model: &Model) -> Bytes {
21635 unsafe {
21637 Bytes::from_raw(ffi::whiteout_m3_M3Writer_write_model(
21638 self.raw.as_ptr(),
21639 model.raw.as_ptr(),
21640 ))
21641 .unwrap_or_else(Bytes::empty)
21642 }
21643 }
21644}
21645
21646impl Default for Writer {
21647 fn default() -> Self {
21648 Self::new()
21649 }
21650}
21651
21652pub struct AnimRefF32 {
21658 pub(crate) raw: core::ptr::NonNull<ffi::whiteout_M3AnimRefF32>,
21659}
21660
21661impl Drop for AnimRefF32 {
21662 fn drop(&mut self) {
21663 unsafe { ffi::whiteout_m3_M3AnimRefF32_delete(self.raw.as_ptr()) }
21665 }
21666}
21667
21668impl AnimRefF32 {
21669 #[allow(dead_code)] pub(crate) unsafe fn from_raw(raw: *mut ffi::whiteout_M3AnimRefF32) -> Option<Self> {
21673 core::ptr::NonNull::new(raw).map(|raw| AnimRefF32 { raw })
21674 }
21675}
21676
21677unsafe impl Send for AnimRefF32 {}
21682
21683impl core::fmt::Debug for AnimRefF32 {
21684 fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
21685 f.debug_struct("AnimRefF32").finish_non_exhaustive()
21686 }
21687}
21688
21689impl AnimRefF32 {
21690 pub fn new() -> Self {
21693 unsafe {
21696 let raw = ffi::whiteout_m3_M3AnimRefF32_new();
21697 Self::from_raw(raw).expect("native AnimRefF32 allocation failed")
21698 }
21699 }
21700
21701 pub fn interp_type(&self) -> u16 {
21703 unsafe { ffi::whiteout_m3_M3AnimRefF32_get_interpType(self.raw.as_ptr()) }
21705 }
21706
21707 pub fn set_interp_type(&mut self, value: u16) {
21708 unsafe { ffi::whiteout_m3_M3AnimRefF32_set_interpType(self.raw.as_ptr(), value) }
21710 }
21711
21712 pub fn flags(&self) -> u16 {
21714 unsafe { ffi::whiteout_m3_M3AnimRefF32_get_flags(self.raw.as_ptr()) }
21716 }
21717
21718 pub fn set_flags(&mut self, value: u16) {
21719 unsafe { ffi::whiteout_m3_M3AnimRefF32_set_flags(self.raw.as_ptr(), value) }
21721 }
21722
21723 pub fn anim_id(&self) -> u32 {
21725 unsafe { ffi::whiteout_m3_M3AnimRefF32_get_animId(self.raw.as_ptr()) }
21727 }
21728
21729 pub fn set_anim_id(&mut self, value: u32) {
21730 unsafe { ffi::whiteout_m3_M3AnimRefF32_set_animId(self.raw.as_ptr(), value) }
21732 }
21733
21734 pub fn init_value(&self) -> f32 {
21736 unsafe { ffi::whiteout_m3_M3AnimRefF32_get_initValue(self.raw.as_ptr()) }
21738 }
21739
21740 pub fn set_init_value(&mut self, value: f32) {
21741 unsafe { ffi::whiteout_m3_M3AnimRefF32_set_initValue(self.raw.as_ptr(), value) }
21743 }
21744
21745 pub fn null_value(&self) -> f32 {
21747 unsafe { ffi::whiteout_m3_M3AnimRefF32_get_nullValue(self.raw.as_ptr()) }
21749 }
21750
21751 pub fn set_null_value(&mut self, value: f32) {
21752 unsafe { ffi::whiteout_m3_M3AnimRefF32_set_nullValue(self.raw.as_ptr(), value) }
21754 }
21755
21756 pub fn unused(&self) -> i32 {
21758 unsafe { ffi::whiteout_m3_M3AnimRefF32_get_unused(self.raw.as_ptr()) }
21760 }
21761
21762 pub fn set_unused(&mut self, value: i32) {
21763 unsafe { ffi::whiteout_m3_M3AnimRefF32_set_unused(self.raw.as_ptr(), value) }
21765 }
21766}
21767
21768impl Default for AnimRefF32 {
21769 fn default() -> Self {
21770 Self::new()
21771 }
21772}
21773
21774pub struct AnimRefVector3f {
21780 pub(crate) raw: core::ptr::NonNull<ffi::whiteout_M3AnimRefVector3f>,
21781}
21782
21783impl Drop for AnimRefVector3f {
21784 fn drop(&mut self) {
21785 unsafe { ffi::whiteout_m3_M3AnimRefVector3f_delete(self.raw.as_ptr()) }
21787 }
21788}
21789
21790impl AnimRefVector3f {
21791 #[allow(dead_code)] pub(crate) unsafe fn from_raw(raw: *mut ffi::whiteout_M3AnimRefVector3f) -> Option<Self> {
21795 core::ptr::NonNull::new(raw).map(|raw| AnimRefVector3f { raw })
21796 }
21797}
21798
21799unsafe impl Send for AnimRefVector3f {}
21804
21805impl core::fmt::Debug for AnimRefVector3f {
21806 fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
21807 f.debug_struct("AnimRefVector3f").finish_non_exhaustive()
21808 }
21809}
21810
21811impl AnimRefVector3f {
21812 pub fn new() -> Self {
21815 unsafe {
21818 let raw = ffi::whiteout_m3_M3AnimRefVector3f_new();
21819 Self::from_raw(raw).expect("native AnimRefVector3f allocation failed")
21820 }
21821 }
21822
21823 pub fn interp_type(&self) -> u16 {
21825 unsafe { ffi::whiteout_m3_M3AnimRefVector3f_get_interpType(self.raw.as_ptr()) }
21827 }
21828
21829 pub fn set_interp_type(&mut self, value: u16) {
21830 unsafe { ffi::whiteout_m3_M3AnimRefVector3f_set_interpType(self.raw.as_ptr(), value) }
21832 }
21833
21834 pub fn flags(&self) -> u16 {
21836 unsafe { ffi::whiteout_m3_M3AnimRefVector3f_get_flags(self.raw.as_ptr()) }
21838 }
21839
21840 pub fn set_flags(&mut self, value: u16) {
21841 unsafe { ffi::whiteout_m3_M3AnimRefVector3f_set_flags(self.raw.as_ptr(), value) }
21843 }
21844
21845 pub fn anim_id(&self) -> u32 {
21847 unsafe { ffi::whiteout_m3_M3AnimRefVector3f_get_animId(self.raw.as_ptr()) }
21849 }
21850
21851 pub fn set_anim_id(&mut self, value: u32) {
21852 unsafe { ffi::whiteout_m3_M3AnimRefVector3f_set_animId(self.raw.as_ptr(), value) }
21854 }
21855
21856 pub fn init_value(&self) -> crate::math::Vector3f {
21858 unsafe {
21861 *(ffi::whiteout_m3_M3AnimRefVector3f_get_initValue(self.raw.as_ptr())
21862 as *const crate::math::Vector3f)
21863 }
21864 }
21865
21866 pub fn set_init_value(&mut self, value: crate::math::Vector3f) {
21867 unsafe {
21869 ffi::whiteout_m3_M3AnimRefVector3f_set_initValue(
21870 self.raw.as_ptr(),
21871 &value as *const crate::math::Vector3f as *const _,
21872 )
21873 }
21874 }
21875
21876 pub fn null_value(&self) -> crate::math::Vector3f {
21878 unsafe {
21881 *(ffi::whiteout_m3_M3AnimRefVector3f_get_nullValue(self.raw.as_ptr())
21882 as *const crate::math::Vector3f)
21883 }
21884 }
21885
21886 pub fn set_null_value(&mut self, value: crate::math::Vector3f) {
21887 unsafe {
21889 ffi::whiteout_m3_M3AnimRefVector3f_set_nullValue(
21890 self.raw.as_ptr(),
21891 &value as *const crate::math::Vector3f as *const _,
21892 )
21893 }
21894 }
21895
21896 pub fn unused(&self) -> i32 {
21898 unsafe { ffi::whiteout_m3_M3AnimRefVector3f_get_unused(self.raw.as_ptr()) }
21900 }
21901
21902 pub fn set_unused(&mut self, value: i32) {
21903 unsafe { ffi::whiteout_m3_M3AnimRefVector3f_set_unused(self.raw.as_ptr(), value) }
21905 }
21906}
21907
21908impl Default for AnimRefVector3f {
21909 fn default() -> Self {
21910 Self::new()
21911 }
21912}
21913
21914pub struct AnimRefM3ColorBGRA {
21920 pub(crate) raw: core::ptr::NonNull<ffi::whiteout_M3AnimRefM3ColorBGRA>,
21921}
21922
21923impl Drop for AnimRefM3ColorBGRA {
21924 fn drop(&mut self) {
21925 unsafe { ffi::whiteout_m3_M3AnimRefM3ColorBGRA_delete(self.raw.as_ptr()) }
21927 }
21928}
21929
21930impl AnimRefM3ColorBGRA {
21931 #[allow(dead_code)] pub(crate) unsafe fn from_raw(raw: *mut ffi::whiteout_M3AnimRefM3ColorBGRA) -> Option<Self> {
21935 core::ptr::NonNull::new(raw).map(|raw| AnimRefM3ColorBGRA { raw })
21936 }
21937}
21938
21939unsafe impl Send for AnimRefM3ColorBGRA {}
21944
21945impl core::fmt::Debug for AnimRefM3ColorBGRA {
21946 fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
21947 f.debug_struct("AnimRefM3ColorBGRA").finish_non_exhaustive()
21948 }
21949}
21950
21951impl AnimRefM3ColorBGRA {
21952 pub fn new() -> Self {
21955 unsafe {
21958 let raw = ffi::whiteout_m3_M3AnimRefM3ColorBGRA_new();
21959 Self::from_raw(raw).expect("native AnimRefM3ColorBGRA allocation failed")
21960 }
21961 }
21962
21963 pub fn interp_type(&self) -> u16 {
21965 unsafe { ffi::whiteout_m3_M3AnimRefM3ColorBGRA_get_interpType(self.raw.as_ptr()) }
21967 }
21968
21969 pub fn set_interp_type(&mut self, value: u16) {
21970 unsafe { ffi::whiteout_m3_M3AnimRefM3ColorBGRA_set_interpType(self.raw.as_ptr(), value) }
21972 }
21973
21974 pub fn flags(&self) -> u16 {
21976 unsafe { ffi::whiteout_m3_M3AnimRefM3ColorBGRA_get_flags(self.raw.as_ptr()) }
21978 }
21979
21980 pub fn set_flags(&mut self, value: u16) {
21981 unsafe { ffi::whiteout_m3_M3AnimRefM3ColorBGRA_set_flags(self.raw.as_ptr(), value) }
21983 }
21984
21985 pub fn anim_id(&self) -> u32 {
21987 unsafe { ffi::whiteout_m3_M3AnimRefM3ColorBGRA_get_animId(self.raw.as_ptr()) }
21989 }
21990
21991 pub fn set_anim_id(&mut self, value: u32) {
21992 unsafe { ffi::whiteout_m3_M3AnimRefM3ColorBGRA_set_animId(self.raw.as_ptr(), value) }
21994 }
21995
21996 pub fn init_value(&self) -> crate::support::Ref<'_, ColorBGRA> {
21999 unsafe {
22002 crate::support::Ref::new(ColorBGRA {
22003 raw: core::ptr::NonNull::new_unchecked(
22004 ffi::whiteout_m3_M3AnimRefM3ColorBGRA_get_initValue(self.raw.as_ptr()),
22005 ),
22006 })
22007 }
22008 }
22009
22010 pub fn init_value_mut(&mut self) -> crate::support::RefMut<'_, ColorBGRA> {
22011 unsafe {
22013 crate::support::RefMut::new(ColorBGRA {
22014 raw: core::ptr::NonNull::new_unchecked(
22015 ffi::whiteout_m3_M3AnimRefM3ColorBGRA_get_initValue(self.raw.as_ptr()),
22016 ),
22017 })
22018 }
22019 }
22020
22021 pub fn null_value(&self) -> crate::support::Ref<'_, ColorBGRA> {
22024 unsafe {
22027 crate::support::Ref::new(ColorBGRA {
22028 raw: core::ptr::NonNull::new_unchecked(
22029 ffi::whiteout_m3_M3AnimRefM3ColorBGRA_get_nullValue(self.raw.as_ptr()),
22030 ),
22031 })
22032 }
22033 }
22034
22035 pub fn null_value_mut(&mut self) -> crate::support::RefMut<'_, ColorBGRA> {
22036 unsafe {
22038 crate::support::RefMut::new(ColorBGRA {
22039 raw: core::ptr::NonNull::new_unchecked(
22040 ffi::whiteout_m3_M3AnimRefM3ColorBGRA_get_nullValue(self.raw.as_ptr()),
22041 ),
22042 })
22043 }
22044 }
22045
22046 pub fn unused(&self) -> i32 {
22048 unsafe { ffi::whiteout_m3_M3AnimRefM3ColorBGRA_get_unused(self.raw.as_ptr()) }
22050 }
22051
22052 pub fn set_unused(&mut self, value: i32) {
22053 unsafe { ffi::whiteout_m3_M3AnimRefM3ColorBGRA_set_unused(self.raw.as_ptr(), value) }
22055 }
22056}
22057
22058impl Default for AnimRefM3ColorBGRA {
22059 fn default() -> Self {
22060 Self::new()
22061 }
22062}
22063
22064pub struct AnimRefU16 {
22070 pub(crate) raw: core::ptr::NonNull<ffi::whiteout_M3AnimRefU16>,
22071}
22072
22073impl Drop for AnimRefU16 {
22074 fn drop(&mut self) {
22075 unsafe { ffi::whiteout_m3_M3AnimRefU16_delete(self.raw.as_ptr()) }
22077 }
22078}
22079
22080impl AnimRefU16 {
22081 #[allow(dead_code)] pub(crate) unsafe fn from_raw(raw: *mut ffi::whiteout_M3AnimRefU16) -> Option<Self> {
22085 core::ptr::NonNull::new(raw).map(|raw| AnimRefU16 { raw })
22086 }
22087}
22088
22089unsafe impl Send for AnimRefU16 {}
22094
22095impl core::fmt::Debug for AnimRefU16 {
22096 fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
22097 f.debug_struct("AnimRefU16").finish_non_exhaustive()
22098 }
22099}
22100
22101impl AnimRefU16 {
22102 pub fn new() -> Self {
22105 unsafe {
22108 let raw = ffi::whiteout_m3_M3AnimRefU16_new();
22109 Self::from_raw(raw).expect("native AnimRefU16 allocation failed")
22110 }
22111 }
22112
22113 pub fn interp_type(&self) -> u16 {
22115 unsafe { ffi::whiteout_m3_M3AnimRefU16_get_interpType(self.raw.as_ptr()) }
22117 }
22118
22119 pub fn set_interp_type(&mut self, value: u16) {
22120 unsafe { ffi::whiteout_m3_M3AnimRefU16_set_interpType(self.raw.as_ptr(), value) }
22122 }
22123
22124 pub fn flags(&self) -> u16 {
22126 unsafe { ffi::whiteout_m3_M3AnimRefU16_get_flags(self.raw.as_ptr()) }
22128 }
22129
22130 pub fn set_flags(&mut self, value: u16) {
22131 unsafe { ffi::whiteout_m3_M3AnimRefU16_set_flags(self.raw.as_ptr(), value) }
22133 }
22134
22135 pub fn anim_id(&self) -> u32 {
22137 unsafe { ffi::whiteout_m3_M3AnimRefU16_get_animId(self.raw.as_ptr()) }
22139 }
22140
22141 pub fn set_anim_id(&mut self, value: u32) {
22142 unsafe { ffi::whiteout_m3_M3AnimRefU16_set_animId(self.raw.as_ptr(), value) }
22144 }
22145
22146 pub fn init_value(&self) -> u16 {
22148 unsafe { ffi::whiteout_m3_M3AnimRefU16_get_initValue(self.raw.as_ptr()) }
22150 }
22151
22152 pub fn set_init_value(&mut self, value: u16) {
22153 unsafe { ffi::whiteout_m3_M3AnimRefU16_set_initValue(self.raw.as_ptr(), value) }
22155 }
22156
22157 pub fn null_value(&self) -> u16 {
22159 unsafe { ffi::whiteout_m3_M3AnimRefU16_get_nullValue(self.raw.as_ptr()) }
22161 }
22162
22163 pub fn set_null_value(&mut self, value: u16) {
22164 unsafe { ffi::whiteout_m3_M3AnimRefU16_set_nullValue(self.raw.as_ptr(), value) }
22166 }
22167
22168 pub fn unused(&self) -> i32 {
22170 unsafe { ffi::whiteout_m3_M3AnimRefU16_get_unused(self.raw.as_ptr()) }
22172 }
22173
22174 pub fn set_unused(&mut self, value: i32) {
22175 unsafe { ffi::whiteout_m3_M3AnimRefU16_set_unused(self.raw.as_ptr(), value) }
22177 }
22178}
22179
22180impl Default for AnimRefU16 {
22181 fn default() -> Self {
22182 Self::new()
22183 }
22184}
22185
22186pub struct AnimRefVector2f {
22192 pub(crate) raw: core::ptr::NonNull<ffi::whiteout_M3AnimRefVector2f>,
22193}
22194
22195impl Drop for AnimRefVector2f {
22196 fn drop(&mut self) {
22197 unsafe { ffi::whiteout_m3_M3AnimRefVector2f_delete(self.raw.as_ptr()) }
22199 }
22200}
22201
22202impl AnimRefVector2f {
22203 #[allow(dead_code)] pub(crate) unsafe fn from_raw(raw: *mut ffi::whiteout_M3AnimRefVector2f) -> Option<Self> {
22207 core::ptr::NonNull::new(raw).map(|raw| AnimRefVector2f { raw })
22208 }
22209}
22210
22211unsafe impl Send for AnimRefVector2f {}
22216
22217impl core::fmt::Debug for AnimRefVector2f {
22218 fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
22219 f.debug_struct("AnimRefVector2f").finish_non_exhaustive()
22220 }
22221}
22222
22223impl AnimRefVector2f {
22224 pub fn new() -> Self {
22227 unsafe {
22230 let raw = ffi::whiteout_m3_M3AnimRefVector2f_new();
22231 Self::from_raw(raw).expect("native AnimRefVector2f allocation failed")
22232 }
22233 }
22234
22235 pub fn interp_type(&self) -> u16 {
22237 unsafe { ffi::whiteout_m3_M3AnimRefVector2f_get_interpType(self.raw.as_ptr()) }
22239 }
22240
22241 pub fn set_interp_type(&mut self, value: u16) {
22242 unsafe { ffi::whiteout_m3_M3AnimRefVector2f_set_interpType(self.raw.as_ptr(), value) }
22244 }
22245
22246 pub fn flags(&self) -> u16 {
22248 unsafe { ffi::whiteout_m3_M3AnimRefVector2f_get_flags(self.raw.as_ptr()) }
22250 }
22251
22252 pub fn set_flags(&mut self, value: u16) {
22253 unsafe { ffi::whiteout_m3_M3AnimRefVector2f_set_flags(self.raw.as_ptr(), value) }
22255 }
22256
22257 pub fn anim_id(&self) -> u32 {
22259 unsafe { ffi::whiteout_m3_M3AnimRefVector2f_get_animId(self.raw.as_ptr()) }
22261 }
22262
22263 pub fn set_anim_id(&mut self, value: u32) {
22264 unsafe { ffi::whiteout_m3_M3AnimRefVector2f_set_animId(self.raw.as_ptr(), value) }
22266 }
22267
22268 pub fn init_value(&self) -> crate::math::Vector2f {
22270 unsafe {
22273 *(ffi::whiteout_m3_M3AnimRefVector2f_get_initValue(self.raw.as_ptr())
22274 as *const crate::math::Vector2f)
22275 }
22276 }
22277
22278 pub fn set_init_value(&mut self, value: crate::math::Vector2f) {
22279 unsafe {
22281 ffi::whiteout_m3_M3AnimRefVector2f_set_initValue(
22282 self.raw.as_ptr(),
22283 &value as *const crate::math::Vector2f as *const _,
22284 )
22285 }
22286 }
22287
22288 pub fn null_value(&self) -> crate::math::Vector2f {
22290 unsafe {
22293 *(ffi::whiteout_m3_M3AnimRefVector2f_get_nullValue(self.raw.as_ptr())
22294 as *const crate::math::Vector2f)
22295 }
22296 }
22297
22298 pub fn set_null_value(&mut self, value: crate::math::Vector2f) {
22299 unsafe {
22301 ffi::whiteout_m3_M3AnimRefVector2f_set_nullValue(
22302 self.raw.as_ptr(),
22303 &value as *const crate::math::Vector2f as *const _,
22304 )
22305 }
22306 }
22307
22308 pub fn unused(&self) -> i32 {
22310 unsafe { ffi::whiteout_m3_M3AnimRefVector2f_get_unused(self.raw.as_ptr()) }
22312 }
22313
22314 pub fn set_unused(&mut self, value: i32) {
22315 unsafe { ffi::whiteout_m3_M3AnimRefVector2f_set_unused(self.raw.as_ptr(), value) }
22317 }
22318}
22319
22320impl Default for AnimRefVector2f {
22321 fn default() -> Self {
22322 Self::new()
22323 }
22324}
22325
22326pub struct AnimRefU32 {
22332 pub(crate) raw: core::ptr::NonNull<ffi::whiteout_M3AnimRefU32>,
22333}
22334
22335impl Drop for AnimRefU32 {
22336 fn drop(&mut self) {
22337 unsafe { ffi::whiteout_m3_M3AnimRefU32_delete(self.raw.as_ptr()) }
22339 }
22340}
22341
22342impl AnimRefU32 {
22343 #[allow(dead_code)] pub(crate) unsafe fn from_raw(raw: *mut ffi::whiteout_M3AnimRefU32) -> Option<Self> {
22347 core::ptr::NonNull::new(raw).map(|raw| AnimRefU32 { raw })
22348 }
22349}
22350
22351unsafe impl Send for AnimRefU32 {}
22356
22357impl core::fmt::Debug for AnimRefU32 {
22358 fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
22359 f.debug_struct("AnimRefU32").finish_non_exhaustive()
22360 }
22361}
22362
22363impl AnimRefU32 {
22364 pub fn new() -> Self {
22367 unsafe {
22370 let raw = ffi::whiteout_m3_M3AnimRefU32_new();
22371 Self::from_raw(raw).expect("native AnimRefU32 allocation failed")
22372 }
22373 }
22374
22375 pub fn interp_type(&self) -> u16 {
22377 unsafe { ffi::whiteout_m3_M3AnimRefU32_get_interpType(self.raw.as_ptr()) }
22379 }
22380
22381 pub fn set_interp_type(&mut self, value: u16) {
22382 unsafe { ffi::whiteout_m3_M3AnimRefU32_set_interpType(self.raw.as_ptr(), value) }
22384 }
22385
22386 pub fn flags(&self) -> u16 {
22388 unsafe { ffi::whiteout_m3_M3AnimRefU32_get_flags(self.raw.as_ptr()) }
22390 }
22391
22392 pub fn set_flags(&mut self, value: u16) {
22393 unsafe { ffi::whiteout_m3_M3AnimRefU32_set_flags(self.raw.as_ptr(), value) }
22395 }
22396
22397 pub fn anim_id(&self) -> u32 {
22399 unsafe { ffi::whiteout_m3_M3AnimRefU32_get_animId(self.raw.as_ptr()) }
22401 }
22402
22403 pub fn set_anim_id(&mut self, value: u32) {
22404 unsafe { ffi::whiteout_m3_M3AnimRefU32_set_animId(self.raw.as_ptr(), value) }
22406 }
22407
22408 pub fn init_value(&self) -> u32 {
22410 unsafe { ffi::whiteout_m3_M3AnimRefU32_get_initValue(self.raw.as_ptr()) }
22412 }
22413
22414 pub fn set_init_value(&mut self, value: u32) {
22415 unsafe { ffi::whiteout_m3_M3AnimRefU32_set_initValue(self.raw.as_ptr(), value) }
22417 }
22418
22419 pub fn null_value(&self) -> u32 {
22421 unsafe { ffi::whiteout_m3_M3AnimRefU32_get_nullValue(self.raw.as_ptr()) }
22423 }
22424
22425 pub fn set_null_value(&mut self, value: u32) {
22426 unsafe { ffi::whiteout_m3_M3AnimRefU32_set_nullValue(self.raw.as_ptr(), value) }
22428 }
22429
22430 pub fn unused(&self) -> i32 {
22432 unsafe { ffi::whiteout_m3_M3AnimRefU32_get_unused(self.raw.as_ptr()) }
22434 }
22435
22436 pub fn set_unused(&mut self, value: i32) {
22437 unsafe { ffi::whiteout_m3_M3AnimRefU32_set_unused(self.raw.as_ptr(), value) }
22439 }
22440}
22441
22442impl Default for AnimRefU32 {
22443 fn default() -> Self {
22444 Self::new()
22445 }
22446}
22447
22448pub struct AnimRefQuaternion {
22454 pub(crate) raw: core::ptr::NonNull<ffi::whiteout_M3AnimRefQuaternion>,
22455}
22456
22457impl Drop for AnimRefQuaternion {
22458 fn drop(&mut self) {
22459 unsafe { ffi::whiteout_m3_M3AnimRefQuaternion_delete(self.raw.as_ptr()) }
22461 }
22462}
22463
22464impl AnimRefQuaternion {
22465 #[allow(dead_code)] pub(crate) unsafe fn from_raw(raw: *mut ffi::whiteout_M3AnimRefQuaternion) -> Option<Self> {
22469 core::ptr::NonNull::new(raw).map(|raw| AnimRefQuaternion { raw })
22470 }
22471}
22472
22473unsafe impl Send for AnimRefQuaternion {}
22478
22479impl core::fmt::Debug for AnimRefQuaternion {
22480 fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
22481 f.debug_struct("AnimRefQuaternion").finish_non_exhaustive()
22482 }
22483}
22484
22485impl AnimRefQuaternion {
22486 pub fn new() -> Self {
22489 unsafe {
22492 let raw = ffi::whiteout_m3_M3AnimRefQuaternion_new();
22493 Self::from_raw(raw).expect("native AnimRefQuaternion allocation failed")
22494 }
22495 }
22496
22497 pub fn interp_type(&self) -> u16 {
22499 unsafe { ffi::whiteout_m3_M3AnimRefQuaternion_get_interpType(self.raw.as_ptr()) }
22501 }
22502
22503 pub fn set_interp_type(&mut self, value: u16) {
22504 unsafe { ffi::whiteout_m3_M3AnimRefQuaternion_set_interpType(self.raw.as_ptr(), value) }
22506 }
22507
22508 pub fn flags(&self) -> u16 {
22510 unsafe { ffi::whiteout_m3_M3AnimRefQuaternion_get_flags(self.raw.as_ptr()) }
22512 }
22513
22514 pub fn set_flags(&mut self, value: u16) {
22515 unsafe { ffi::whiteout_m3_M3AnimRefQuaternion_set_flags(self.raw.as_ptr(), value) }
22517 }
22518
22519 pub fn anim_id(&self) -> u32 {
22521 unsafe { ffi::whiteout_m3_M3AnimRefQuaternion_get_animId(self.raw.as_ptr()) }
22523 }
22524
22525 pub fn set_anim_id(&mut self, value: u32) {
22526 unsafe { ffi::whiteout_m3_M3AnimRefQuaternion_set_animId(self.raw.as_ptr(), value) }
22528 }
22529
22530 pub fn init_value(&self) -> crate::math::Quaternion {
22532 unsafe {
22535 *(ffi::whiteout_m3_M3AnimRefQuaternion_get_initValue(self.raw.as_ptr())
22536 as *const crate::math::Quaternion)
22537 }
22538 }
22539
22540 pub fn set_init_value(&mut self, value: crate::math::Quaternion) {
22541 unsafe {
22543 ffi::whiteout_m3_M3AnimRefQuaternion_set_initValue(
22544 self.raw.as_ptr(),
22545 &value as *const crate::math::Quaternion as *const _,
22546 )
22547 }
22548 }
22549
22550 pub fn null_value(&self) -> crate::math::Quaternion {
22552 unsafe {
22555 *(ffi::whiteout_m3_M3AnimRefQuaternion_get_nullValue(self.raw.as_ptr())
22556 as *const crate::math::Quaternion)
22557 }
22558 }
22559
22560 pub fn set_null_value(&mut self, value: crate::math::Quaternion) {
22561 unsafe {
22563 ffi::whiteout_m3_M3AnimRefQuaternion_set_nullValue(
22564 self.raw.as_ptr(),
22565 &value as *const crate::math::Quaternion as *const _,
22566 )
22567 }
22568 }
22569
22570 pub fn unused(&self) -> i32 {
22572 unsafe { ffi::whiteout_m3_M3AnimRefQuaternion_get_unused(self.raw.as_ptr()) }
22574 }
22575
22576 pub fn set_unused(&mut self, value: i32) {
22577 unsafe { ffi::whiteout_m3_M3AnimRefQuaternion_set_unused(self.raw.as_ptr(), value) }
22579 }
22580}
22581
22582impl Default for AnimRefQuaternion {
22583 fn default() -> Self {
22584 Self::new()
22585 }
22586}
22587
22588pub struct AnimRefM3Extent {
22594 pub(crate) raw: core::ptr::NonNull<ffi::whiteout_M3AnimRefM3Extent>,
22595}
22596
22597impl Drop for AnimRefM3Extent {
22598 fn drop(&mut self) {
22599 unsafe { ffi::whiteout_m3_M3AnimRefM3Extent_delete(self.raw.as_ptr()) }
22601 }
22602}
22603
22604impl AnimRefM3Extent {
22605 #[allow(dead_code)] pub(crate) unsafe fn from_raw(raw: *mut ffi::whiteout_M3AnimRefM3Extent) -> Option<Self> {
22609 core::ptr::NonNull::new(raw).map(|raw| AnimRefM3Extent { raw })
22610 }
22611}
22612
22613unsafe impl Send for AnimRefM3Extent {}
22618
22619impl core::fmt::Debug for AnimRefM3Extent {
22620 fn fmt(&self, f: &mut core::fmt::Formatter<'_>) -> core::fmt::Result {
22621 f.debug_struct("AnimRefM3Extent").finish_non_exhaustive()
22622 }
22623}
22624
22625impl AnimRefM3Extent {
22626 pub fn new() -> Self {
22629 unsafe {
22632 let raw = ffi::whiteout_m3_M3AnimRefM3Extent_new();
22633 Self::from_raw(raw).expect("native AnimRefM3Extent allocation failed")
22634 }
22635 }
22636
22637 pub fn interp_type(&self) -> u16 {
22639 unsafe { ffi::whiteout_m3_M3AnimRefM3Extent_get_interpType(self.raw.as_ptr()) }
22641 }
22642
22643 pub fn set_interp_type(&mut self, value: u16) {
22644 unsafe { ffi::whiteout_m3_M3AnimRefM3Extent_set_interpType(self.raw.as_ptr(), value) }
22646 }
22647
22648 pub fn flags(&self) -> u16 {
22650 unsafe { ffi::whiteout_m3_M3AnimRefM3Extent_get_flags(self.raw.as_ptr()) }
22652 }
22653
22654 pub fn set_flags(&mut self, value: u16) {
22655 unsafe { ffi::whiteout_m3_M3AnimRefM3Extent_set_flags(self.raw.as_ptr(), value) }
22657 }
22658
22659 pub fn anim_id(&self) -> u32 {
22661 unsafe { ffi::whiteout_m3_M3AnimRefM3Extent_get_animId(self.raw.as_ptr()) }
22663 }
22664
22665 pub fn set_anim_id(&mut self, value: u32) {
22666 unsafe { ffi::whiteout_m3_M3AnimRefM3Extent_set_animId(self.raw.as_ptr(), value) }
22668 }
22669
22670 pub fn init_value(&self) -> crate::support::Ref<'_, Extent> {
22673 unsafe {
22676 crate::support::Ref::new(Extent {
22677 raw: core::ptr::NonNull::new_unchecked(
22678 ffi::whiteout_m3_M3AnimRefM3Extent_get_initValue(self.raw.as_ptr()),
22679 ),
22680 })
22681 }
22682 }
22683
22684 pub fn init_value_mut(&mut self) -> crate::support::RefMut<'_, Extent> {
22685 unsafe {
22687 crate::support::RefMut::new(Extent {
22688 raw: core::ptr::NonNull::new_unchecked(
22689 ffi::whiteout_m3_M3AnimRefM3Extent_get_initValue(self.raw.as_ptr()),
22690 ),
22691 })
22692 }
22693 }
22694
22695 pub fn null_value(&self) -> crate::support::Ref<'_, Extent> {
22698 unsafe {
22701 crate::support::Ref::new(Extent {
22702 raw: core::ptr::NonNull::new_unchecked(
22703 ffi::whiteout_m3_M3AnimRefM3Extent_get_nullValue(self.raw.as_ptr()),
22704 ),
22705 })
22706 }
22707 }
22708
22709 pub fn null_value_mut(&mut self) -> crate::support::RefMut<'_, Extent> {
22710 unsafe {
22712 crate::support::RefMut::new(Extent {
22713 raw: core::ptr::NonNull::new_unchecked(
22714 ffi::whiteout_m3_M3AnimRefM3Extent_get_nullValue(self.raw.as_ptr()),
22715 ),
22716 })
22717 }
22718 }
22719
22720 pub fn unused(&self) -> i32 {
22722 unsafe { ffi::whiteout_m3_M3AnimRefM3Extent_get_unused(self.raw.as_ptr()) }
22724 }
22725
22726 pub fn set_unused(&mut self, value: i32) {
22727 unsafe { ffi::whiteout_m3_M3AnimRefM3Extent_set_unused(self.raw.as_ptr(), value) }
22729 }
22730}
22731
22732impl Default for AnimRefM3Extent {
22733 fn default() -> Self {
22734 Self::new()
22735 }
22736}
22737
22738#[doc(hidden)]
22739pub mod ffi {
22740 #![allow(missing_debug_implementations)]
22741
22742 #[allow(unused_imports)]
22743 use crate::support::{RawBytes, RawCString};
22744
22745 #[repr(C)]
22746 pub struct whiteout_M3ColorBGRA {
22747 _private: [u8; 0],
22748 }
22749 #[repr(C)]
22750 pub struct whiteout_M3ColorBGR {
22751 _private: [u8; 0],
22752 }
22753 #[repr(C)]
22754 pub struct whiteout_M3Extent {
22755 _private: [u8; 0],
22756 }
22757 #[repr(C)]
22758 pub struct whiteout_M3Event {
22759 _private: [u8; 0],
22760 }
22761 #[repr(C)]
22762 pub struct whiteout_M3Sequence {
22763 _private: [u8; 0],
22764 }
22765 #[repr(C)]
22766 pub struct whiteout_M3SubTrackContainer {
22767 _private: [u8; 0],
22768 }
22769 #[repr(C)]
22770 pub struct whiteout_M3AnimationGroup {
22771 _private: [u8; 0],
22772 }
22773 #[repr(C)]
22774 pub struct whiteout_M3AnimationState {
22775 _private: [u8; 0],
22776 }
22777 #[repr(C)]
22778 pub struct whiteout_M3BoneAnimationSet {
22779 _private: [u8; 0],
22780 }
22781 #[repr(C)]
22782 pub struct whiteout_M3ParticleEmitter {
22783 _private: [u8; 0],
22784 }
22785 #[repr(C)]
22786 pub struct whiteout_M3ParticleEmitterCopy {
22787 _private: [u8; 0],
22788 }
22789 #[repr(C)]
22790 pub struct whiteout_M3SplineRibbon {
22791 _private: [u8; 0],
22792 }
22793 #[repr(C)]
22794 pub struct whiteout_M3RibbonEmitter {
22795 _private: [u8; 0],
22796 }
22797 #[repr(C)]
22798 pub struct whiteout_M3Projector {
22799 _private: [u8; 0],
22800 }
22801 #[repr(C)]
22802 pub struct whiteout_M3MaterialMap {
22803 _private: [u8; 0],
22804 }
22805 #[repr(C)]
22806 pub struct whiteout_M3TextureLayer {
22807 _private: [u8; 0],
22808 }
22809 #[repr(C)]
22810 pub struct whiteout_M3StandardMaterial {
22811 _private: [u8; 0],
22812 }
22813 #[repr(C)]
22814 pub struct whiteout_M3DisplacementMaterial {
22815 _private: [u8; 0],
22816 }
22817 #[repr(C)]
22818 pub struct whiteout_M3CompositeSection {
22819 _private: [u8; 0],
22820 }
22821 #[repr(C)]
22822 pub struct whiteout_M3CompositeMaterial {
22823 _private: [u8; 0],
22824 }
22825 #[repr(C)]
22826 pub struct whiteout_M3TerrainMaterial {
22827 _private: [u8; 0],
22828 }
22829 #[repr(C)]
22830 pub struct whiteout_M3VolumeMaterial {
22831 _private: [u8; 0],
22832 }
22833 #[repr(C)]
22834 pub struct whiteout_M3HairMaterial {
22835 _private: [u8; 0],
22836 }
22837 #[repr(C)]
22838 pub struct whiteout_M3VolumeNoiseMaterial {
22839 _private: [u8; 0],
22840 }
22841 #[repr(C)]
22842 pub struct whiteout_M3CreepMaterial {
22843 _private: [u8; 0],
22844 }
22845 #[repr(C)]
22846 pub struct whiteout_M3STBMaterial {
22847 _private: [u8; 0],
22848 }
22849 #[repr(C)]
22850 pub struct whiteout_M3ReflectionMaterial {
22851 _private: [u8; 0],
22852 }
22853 #[repr(C)]
22854 pub struct whiteout_M3SubFlare {
22855 _private: [u8; 0],
22856 }
22857 #[repr(C)]
22858 pub struct whiteout_M3LensFlare {
22859 _private: [u8; 0],
22860 }
22861 #[repr(C)]
22862 pub struct whiteout_M3MaterialAddData {
22863 _private: [u8; 0],
22864 }
22865 #[repr(C)]
22866 pub struct whiteout_M3Bone {
22867 _private: [u8; 0],
22868 }
22869 #[repr(C)]
22870 pub struct whiteout_M3Region {
22871 _private: [u8; 0],
22872 }
22873 #[repr(C)]
22874 pub struct whiteout_M3Batch {
22875 _private: [u8; 0],
22876 }
22877 #[repr(C)]
22878 pub struct whiteout_M3MeshSection {
22879 _private: [u8; 0],
22880 }
22881 #[repr(C)]
22882 pub struct whiteout_M3MeshDivision {
22883 _private: [u8; 0],
22884 }
22885 #[repr(C)]
22886 pub struct whiteout_M3InitialReference {
22887 _private: [u8; 0],
22888 }
22889 #[repr(C)]
22890 pub struct whiteout_M3AttachmentPoint {
22891 _private: [u8; 0],
22892 }
22893 #[repr(C)]
22894 pub struct whiteout_M3HitTestShape {
22895 _private: [u8; 0],
22896 }
22897 #[repr(C)]
22898 pub struct whiteout_M3AttachmentVolume {
22899 _private: [u8; 0],
22900 }
22901 #[repr(C)]
22902 pub struct whiteout_M3TriggerData {
22903 _private: [u8; 0],
22904 }
22905 #[repr(C)]
22906 pub struct whiteout_M3TurretBehavior {
22907 _private: [u8; 0],
22908 }
22909 #[repr(C)]
22910 pub struct whiteout_M3BillboardBehavior {
22911 _private: [u8; 0],
22912 }
22913 #[repr(C)]
22914 pub struct whiteout_M3IKJoint {
22915 _private: [u8; 0],
22916 }
22917 #[repr(C)]
22918 pub struct whiteout_M3IKTwoJoint {
22919 _private: [u8; 0],
22920 }
22921 #[repr(C)]
22922 pub struct whiteout_M3IKCCD {
22923 _private: [u8; 0],
22924 }
22925 #[repr(C)]
22926 pub struct whiteout_M3OneBoneSolver {
22927 _private: [u8; 0],
22928 }
22929 #[repr(C)]
22930 pub struct whiteout_M3ShadowBox {
22931 _private: [u8; 0],
22932 }
22933 #[repr(C)]
22934 pub struct whiteout_M3ViewVolume {
22935 _private: [u8; 0],
22936 }
22937 #[repr(C)]
22938 pub struct whiteout_M3TrailingModel {
22939 _private: [u8; 0],
22940 }
22941 #[repr(C)]
22942 pub struct whiteout_M3Force {
22943 _private: [u8; 0],
22944 }
22945 #[repr(C)]
22946 pub struct whiteout_M3Warp {
22947 _private: [u8; 0],
22948 }
22949 #[repr(C)]
22950 pub struct whiteout_M3ConvexHullHalfEdge {
22951 _private: [u8; 0],
22952 }
22953 #[repr(C)]
22954 pub struct whiteout_M3PhysicsMeshBvhNode {
22955 _private: [u8; 0],
22956 }
22957 #[repr(C)]
22958 pub struct whiteout_M3PhysicsMeshTriangle {
22959 _private: [u8; 0],
22960 }
22961 #[repr(C)]
22962 pub struct whiteout_M3PhysicsMeshEdge {
22963 _private: [u8; 0],
22964 }
22965 #[repr(C)]
22966 pub struct whiteout_M3PhysicsShape {
22967 _private: [u8; 0],
22968 }
22969 #[repr(C)]
22970 pub struct whiteout_M3RigidBody {
22971 _private: [u8; 0],
22972 }
22973 #[repr(C)]
22974 pub struct whiteout_M3PhysicsJoint {
22975 _private: [u8; 0],
22976 }
22977 #[repr(C)]
22978 pub struct whiteout_M3PhysicsConstraint {
22979 _private: [u8; 0],
22980 }
22981 #[repr(C)]
22982 pub struct whiteout_M3ClothCollider {
22983 _private: [u8; 0],
22984 }
22985 #[repr(C)]
22986 pub struct whiteout_M3ClothProxy {
22987 _private: [u8; 0],
22988 }
22989 #[repr(C)]
22990 pub struct whiteout_M3ClothPhysics {
22991 _private: [u8; 0],
22992 }
22993 #[repr(C)]
22994 pub struct whiteout_M3Light {
22995 _private: [u8; 0],
22996 }
22997 #[repr(C)]
22998 pub struct whiteout_M3Camera {
22999 _private: [u8; 0],
23000 }
23001 #[repr(C)]
23002 pub struct whiteout_M3Model {
23003 _private: [u8; 0],
23004 }
23005 #[repr(C)]
23006 pub struct whiteout_M3Parser {
23007 _private: [u8; 0],
23008 }
23009 #[repr(C)]
23010 pub struct whiteout_M3Writer {
23011 _private: [u8; 0],
23012 }
23013 #[repr(C)]
23014 pub struct whiteout_M3AnimRefF32 {
23015 _private: [u8; 0],
23016 }
23017 #[repr(C)]
23018 pub struct whiteout_M3AnimRefVector3f {
23019 _private: [u8; 0],
23020 }
23021 #[repr(C)]
23022 pub struct whiteout_M3AnimRefM3ColorBGRA {
23023 _private: [u8; 0],
23024 }
23025 #[repr(C)]
23026 pub struct whiteout_M3AnimRefU16 {
23027 _private: [u8; 0],
23028 }
23029 #[repr(C)]
23030 pub struct whiteout_M3AnimRefVector2f {
23031 _private: [u8; 0],
23032 }
23033 #[repr(C)]
23034 pub struct whiteout_M3AnimRefU32 {
23035 _private: [u8; 0],
23036 }
23037 #[repr(C)]
23038 pub struct whiteout_M3AnimRefQuaternion {
23039 _private: [u8; 0],
23040 }
23041 #[repr(C)]
23042 pub struct whiteout_M3AnimRefM3Extent {
23043 _private: [u8; 0],
23044 }
23045
23046 extern "C" {
23047 pub fn whiteout_m3_M3ColorBGRA_new() -> *mut whiteout_M3ColorBGRA;
23049 pub fn whiteout_m3_M3ColorBGRA_delete(self_: *mut whiteout_M3ColorBGRA);
23050 pub fn whiteout_m3_M3ColorBGRA_get_b(self_: *mut whiteout_M3ColorBGRA) -> u8;
23051 pub fn whiteout_m3_M3ColorBGRA_set_b(self_: *mut whiteout_M3ColorBGRA, value: u8);
23052 pub fn whiteout_m3_M3ColorBGRA_get_g(self_: *mut whiteout_M3ColorBGRA) -> u8;
23053 pub fn whiteout_m3_M3ColorBGRA_set_g(self_: *mut whiteout_M3ColorBGRA, value: u8);
23054 pub fn whiteout_m3_M3ColorBGRA_get_r(self_: *mut whiteout_M3ColorBGRA) -> u8;
23055 pub fn whiteout_m3_M3ColorBGRA_set_r(self_: *mut whiteout_M3ColorBGRA, value: u8);
23056 pub fn whiteout_m3_M3ColorBGRA_get_a(self_: *mut whiteout_M3ColorBGRA) -> u8;
23057 pub fn whiteout_m3_M3ColorBGRA_set_a(self_: *mut whiteout_M3ColorBGRA, value: u8);
23058 pub fn whiteout_m3_M3ColorBGR_new() -> *mut whiteout_M3ColorBGR;
23060 pub fn whiteout_m3_M3ColorBGR_delete(self_: *mut whiteout_M3ColorBGR);
23061 pub fn whiteout_m3_M3ColorBGR_get_b(self_: *mut whiteout_M3ColorBGR) -> u8;
23062 pub fn whiteout_m3_M3ColorBGR_set_b(self_: *mut whiteout_M3ColorBGR, value: u8);
23063 pub fn whiteout_m3_M3ColorBGR_get_g(self_: *mut whiteout_M3ColorBGR) -> u8;
23064 pub fn whiteout_m3_M3ColorBGR_set_g(self_: *mut whiteout_M3ColorBGR, value: u8);
23065 pub fn whiteout_m3_M3ColorBGR_get_r(self_: *mut whiteout_M3ColorBGR) -> u8;
23066 pub fn whiteout_m3_M3ColorBGR_set_r(self_: *mut whiteout_M3ColorBGR, value: u8);
23067 pub fn whiteout_m3_M3Extent_new() -> *mut whiteout_M3Extent;
23069 pub fn whiteout_m3_M3Extent_delete(self_: *mut whiteout_M3Extent);
23070 pub fn whiteout_m3_M3Extent_get_min(
23071 self_: *mut whiteout_M3Extent,
23072 ) -> *mut core::ffi::c_void;
23073 pub fn whiteout_m3_M3Extent_set_min(
23074 self_: *mut whiteout_M3Extent,
23075 value: *const core::ffi::c_void,
23076 );
23077 pub fn whiteout_m3_M3Extent_get_max(
23078 self_: *mut whiteout_M3Extent,
23079 ) -> *mut core::ffi::c_void;
23080 pub fn whiteout_m3_M3Extent_set_max(
23081 self_: *mut whiteout_M3Extent,
23082 value: *const core::ffi::c_void,
23083 );
23084 pub fn whiteout_m3_M3Extent_get_radius(self_: *mut whiteout_M3Extent) -> f32;
23085 pub fn whiteout_m3_M3Extent_set_radius(self_: *mut whiteout_M3Extent, value: f32);
23086 pub fn whiteout_m3_M3Event_new() -> *mut whiteout_M3Event;
23088 pub fn whiteout_m3_M3Event_delete(self_: *mut whiteout_M3Event);
23089 pub fn whiteout_m3_M3Event_get_name(self_: *mut whiteout_M3Event) -> RawCString;
23090 pub fn whiteout_m3_M3Event_set_name(
23091 self_: *mut whiteout_M3Event,
23092 value: *const core::ffi::c_char,
23093 );
23094 pub fn whiteout_m3_M3Event_get_unknown(self_: *mut whiteout_M3Event) -> u32;
23095 pub fn whiteout_m3_M3Event_set_unknown(self_: *mut whiteout_M3Event, value: u32);
23096 pub fn whiteout_m3_M3Event_get_boneIndex(self_: *mut whiteout_M3Event) -> u16;
23097 pub fn whiteout_m3_M3Event_set_boneIndex(self_: *mut whiteout_M3Event, value: u16);
23098 pub fn whiteout_m3_M3Event_get_padding(self_: *mut whiteout_M3Event) -> u16;
23099 pub fn whiteout_m3_M3Event_set_padding(self_: *mut whiteout_M3Event, value: u16);
23100 pub fn whiteout_m3_M3Event_get_eventType(self_: *mut whiteout_M3Event) -> u32;
23101 pub fn whiteout_m3_M3Event_set_eventType(self_: *mut whiteout_M3Event, value: u32);
23102 pub fn whiteout_m3_M3Event_get_optionString(self_: *mut whiteout_M3Event) -> RawCString;
23103 pub fn whiteout_m3_M3Event_set_optionString(
23104 self_: *mut whiteout_M3Event,
23105 value: *const core::ffi::c_char,
23106 );
23107 pub fn whiteout_m3_M3Event_get_rttChannelIndex(self_: *mut whiteout_M3Event) -> u32;
23108 pub fn whiteout_m3_M3Event_set_rttChannelIndex(self_: *mut whiteout_M3Event, value: u32);
23109 pub fn whiteout_m3_M3Event_get_extraParameter(self_: *mut whiteout_M3Event) -> u32;
23110 pub fn whiteout_m3_M3Event_set_extraParameter(self_: *mut whiteout_M3Event, value: u32);
23111 pub fn whiteout_m3_M3Sequence_new() -> *mut whiteout_M3Sequence;
23113 pub fn whiteout_m3_M3Sequence_delete(self_: *mut whiteout_M3Sequence);
23114 pub fn whiteout_m3_M3Sequence_get_id(self_: *mut whiteout_M3Sequence) -> i32;
23115 pub fn whiteout_m3_M3Sequence_set_id(self_: *mut whiteout_M3Sequence, value: i32);
23116 pub fn whiteout_m3_M3Sequence_get_index(self_: *mut whiteout_M3Sequence) -> i32;
23117 pub fn whiteout_m3_M3Sequence_set_index(self_: *mut whiteout_M3Sequence, value: i32);
23118 pub fn whiteout_m3_M3Sequence_get_name(self_: *mut whiteout_M3Sequence) -> RawCString;
23119 pub fn whiteout_m3_M3Sequence_set_name(
23120 self_: *mut whiteout_M3Sequence,
23121 value: *const core::ffi::c_char,
23122 );
23123 pub fn whiteout_m3_M3Sequence_get_startFrame(self_: *mut whiteout_M3Sequence) -> u32;
23124 pub fn whiteout_m3_M3Sequence_set_startFrame(self_: *mut whiteout_M3Sequence, value: u32);
23125 pub fn whiteout_m3_M3Sequence_get_endFrame(self_: *mut whiteout_M3Sequence) -> u32;
23126 pub fn whiteout_m3_M3Sequence_set_endFrame(self_: *mut whiteout_M3Sequence, value: u32);
23127 pub fn whiteout_m3_M3Sequence_get_moveSpeed(self_: *mut whiteout_M3Sequence) -> f32;
23128 pub fn whiteout_m3_M3Sequence_set_moveSpeed(self_: *mut whiteout_M3Sequence, value: f32);
23129 pub fn whiteout_m3_M3Sequence_get_flags(self_: *mut whiteout_M3Sequence) -> i32;
23130 pub fn whiteout_m3_M3Sequence_set_flags(self_: *mut whiteout_M3Sequence, value: i32);
23131 pub fn whiteout_m3_M3Sequence_get_frequency(self_: *mut whiteout_M3Sequence) -> u32;
23132 pub fn whiteout_m3_M3Sequence_set_frequency(self_: *mut whiteout_M3Sequence, value: u32);
23133 pub fn whiteout_m3_M3Sequence_get_replayStart(self_: *mut whiteout_M3Sequence) -> u32;
23134 pub fn whiteout_m3_M3Sequence_set_replayStart(self_: *mut whiteout_M3Sequence, value: u32);
23135 pub fn whiteout_m3_M3Sequence_get_replayEnd(self_: *mut whiteout_M3Sequence) -> u32;
23136 pub fn whiteout_m3_M3Sequence_set_replayEnd(self_: *mut whiteout_M3Sequence, value: u32);
23137 pub fn whiteout_m3_M3Sequence_get_blendTime(self_: *mut whiteout_M3Sequence) -> u32;
23138 pub fn whiteout_m3_M3Sequence_set_blendTime(self_: *mut whiteout_M3Sequence, value: u32);
23139 pub fn whiteout_m3_M3Sequence_get_bounds(
23140 self_: *mut whiteout_M3Sequence,
23141 ) -> *mut whiteout_M3Extent;
23142 pub fn whiteout_m3_M3Sequence_set_bounds(
23143 self_: *mut whiteout_M3Sequence,
23144 value: *const whiteout_M3Extent,
23145 );
23146 pub fn whiteout_m3_M3Sequence_get_animationSets_count(
23147 self_: *mut whiteout_M3Sequence,
23148 ) -> usize;
23149 pub fn whiteout_m3_M3Sequence_resize_animationSets(
23150 self_: *mut whiteout_M3Sequence,
23151 count: usize,
23152 );
23153 pub fn whiteout_m3_M3Sequence_get_animationSets_data(
23154 self_: *mut whiteout_M3Sequence,
23155 ) -> *const u8;
23156 pub fn whiteout_m3_M3Sequence_assign_animationSets(
23157 self_: *mut whiteout_M3Sequence,
23158 data: *const u8,
23159 count: usize,
23160 );
23161 pub fn whiteout_m3_M3SubTrackContainer_new() -> *mut whiteout_M3SubTrackContainer;
23163 pub fn whiteout_m3_M3SubTrackContainer_delete(self_: *mut whiteout_M3SubTrackContainer);
23164 pub fn whiteout_m3_M3SubTrackContainer_get_name(
23165 self_: *mut whiteout_M3SubTrackContainer,
23166 ) -> RawCString;
23167 pub fn whiteout_m3_M3SubTrackContainer_set_name(
23168 self_: *mut whiteout_M3SubTrackContainer,
23169 value: *const core::ffi::c_char,
23170 );
23171 pub fn whiteout_m3_M3SubTrackContainer_get_runsConcurrent(
23172 self_: *mut whiteout_M3SubTrackContainer,
23173 ) -> u16;
23174 pub fn whiteout_m3_M3SubTrackContainer_set_runsConcurrent(
23175 self_: *mut whiteout_M3SubTrackContainer,
23176 value: u16,
23177 );
23178 pub fn whiteout_m3_M3SubTrackContainer_get_animPriority(
23179 self_: *mut whiteout_M3SubTrackContainer,
23180 ) -> u16;
23181 pub fn whiteout_m3_M3SubTrackContainer_set_animPriority(
23182 self_: *mut whiteout_M3SubTrackContainer,
23183 value: u16,
23184 );
23185 pub fn whiteout_m3_M3SubTrackContainer_get_animationStateIndex(
23186 self_: *mut whiteout_M3SubTrackContainer,
23187 ) -> u16;
23188 pub fn whiteout_m3_M3SubTrackContainer_set_animationStateIndex(
23189 self_: *mut whiteout_M3SubTrackContainer,
23190 value: u16,
23191 );
23192 pub fn whiteout_m3_M3SubTrackContainer_get_padding(
23193 self_: *mut whiteout_M3SubTrackContainer,
23194 ) -> u16;
23195 pub fn whiteout_m3_M3SubTrackContainer_set_padding(
23196 self_: *mut whiteout_M3SubTrackContainer,
23197 value: u16,
23198 );
23199 pub fn whiteout_m3_M3SubTrackContainer_get_animIds_count(
23200 self_: *mut whiteout_M3SubTrackContainer,
23201 ) -> usize;
23202 pub fn whiteout_m3_M3SubTrackContainer_resize_animIds(
23203 self_: *mut whiteout_M3SubTrackContainer,
23204 count: usize,
23205 );
23206 pub fn whiteout_m3_M3SubTrackContainer_get_animIds_data(
23207 self_: *mut whiteout_M3SubTrackContainer,
23208 ) -> *const u32;
23209 pub fn whiteout_m3_M3SubTrackContainer_assign_animIds(
23210 self_: *mut whiteout_M3SubTrackContainer,
23211 data: *const u32,
23212 count: usize,
23213 );
23214 pub fn whiteout_m3_M3SubTrackContainer_get_animRefs_count(
23215 self_: *mut whiteout_M3SubTrackContainer,
23216 ) -> usize;
23217 pub fn whiteout_m3_M3SubTrackContainer_resize_animRefs(
23218 self_: *mut whiteout_M3SubTrackContainer,
23219 count: usize,
23220 );
23221 pub fn whiteout_m3_M3SubTrackContainer_get_animRefs_data(
23222 self_: *mut whiteout_M3SubTrackContainer,
23223 ) -> *const u32;
23224 pub fn whiteout_m3_M3SubTrackContainer_assign_animRefs(
23225 self_: *mut whiteout_M3SubTrackContainer,
23226 data: *const u32,
23227 count: usize,
23228 );
23229 pub fn whiteout_m3_M3SubTrackContainer_get_unknown(
23230 self_: *mut whiteout_M3SubTrackContainer,
23231 ) -> u32;
23232 pub fn whiteout_m3_M3SubTrackContainer_set_unknown(
23233 self_: *mut whiteout_M3SubTrackContainer,
23234 value: u32,
23235 );
23236 pub fn whiteout_m3_M3AnimationGroup_new() -> *mut whiteout_M3AnimationGroup;
23238 pub fn whiteout_m3_M3AnimationGroup_delete(self_: *mut whiteout_M3AnimationGroup);
23239 pub fn whiteout_m3_M3AnimationGroup_get_name(
23240 self_: *mut whiteout_M3AnimationGroup,
23241 ) -> RawCString;
23242 pub fn whiteout_m3_M3AnimationGroup_set_name(
23243 self_: *mut whiteout_M3AnimationGroup,
23244 value: *const core::ffi::c_char,
23245 );
23246 pub fn whiteout_m3_M3AnimationGroup_get_subtrackIndices_count(
23247 self_: *mut whiteout_M3AnimationGroup,
23248 ) -> usize;
23249 pub fn whiteout_m3_M3AnimationGroup_resize_subtrackIndices(
23250 self_: *mut whiteout_M3AnimationGroup,
23251 count: usize,
23252 );
23253 pub fn whiteout_m3_M3AnimationGroup_get_subtrackIndices_data(
23254 self_: *mut whiteout_M3AnimationGroup,
23255 ) -> *const u32;
23256 pub fn whiteout_m3_M3AnimationGroup_assign_subtrackIndices(
23257 self_: *mut whiteout_M3AnimationGroup,
23258 data: *const u32,
23259 count: usize,
23260 );
23261 pub fn whiteout_m3_M3AnimationState_new() -> *mut whiteout_M3AnimationState;
23263 pub fn whiteout_m3_M3AnimationState_delete(self_: *mut whiteout_M3AnimationState);
23264 pub fn whiteout_m3_M3AnimationState_get_animIds_count(
23265 self_: *mut whiteout_M3AnimationState,
23266 ) -> usize;
23267 pub fn whiteout_m3_M3AnimationState_resize_animIds(
23268 self_: *mut whiteout_M3AnimationState,
23269 count: usize,
23270 );
23271 pub fn whiteout_m3_M3AnimationState_get_animIds_data(
23272 self_: *mut whiteout_M3AnimationState,
23273 ) -> *const u32;
23274 pub fn whiteout_m3_M3AnimationState_assign_animIds(
23275 self_: *mut whiteout_M3AnimationState,
23276 data: *const u32,
23277 count: usize,
23278 );
23279 pub fn whiteout_m3_M3AnimationState_unknown_size() -> usize;
23280 pub fn whiteout_m3_M3AnimationState_get_unknown_at(
23281 self_: *mut whiteout_M3AnimationState,
23282 index: usize,
23283 ) -> u8;
23284 pub fn whiteout_m3_M3AnimationState_set_unknown_at(
23285 self_: *mut whiteout_M3AnimationState,
23286 index: usize,
23287 value: u8,
23288 );
23289 pub fn whiteout_m3_M3BoneAnimationSet_new() -> *mut whiteout_M3BoneAnimationSet;
23291 pub fn whiteout_m3_M3BoneAnimationSet_delete(self_: *mut whiteout_M3BoneAnimationSet);
23292 pub fn whiteout_m3_M3BoneAnimationSet_get_animationSequenceIndex(
23293 self_: *mut whiteout_M3BoneAnimationSet,
23294 ) -> u16;
23295 pub fn whiteout_m3_M3BoneAnimationSet_set_animationSequenceIndex(
23296 self_: *mut whiteout_M3BoneAnimationSet,
23297 value: u16,
23298 );
23299 pub fn whiteout_m3_M3BoneAnimationSet_get_fallbackSequenceIndex(
23300 self_: *mut whiteout_M3BoneAnimationSet,
23301 ) -> u16;
23302 pub fn whiteout_m3_M3BoneAnimationSet_set_fallbackSequenceIndex(
23303 self_: *mut whiteout_M3BoneAnimationSet,
23304 value: u16,
23305 );
23306 pub fn whiteout_m3_M3BoneAnimationSet_get_name(
23307 self_: *mut whiteout_M3BoneAnimationSet,
23308 ) -> RawCString;
23309 pub fn whiteout_m3_M3BoneAnimationSet_set_name(
23310 self_: *mut whiteout_M3BoneAnimationSet,
23311 value: *const core::ffi::c_char,
23312 );
23313 pub fn whiteout_m3_M3BoneAnimationSet_get_splitItems_count(
23314 self_: *mut whiteout_M3BoneAnimationSet,
23315 ) -> usize;
23316 pub fn whiteout_m3_M3BoneAnimationSet_resize_splitItems(
23317 self_: *mut whiteout_M3BoneAnimationSet,
23318 count: usize,
23319 );
23320 pub fn whiteout_m3_M3BoneAnimationSet_get_splitItems_data(
23321 self_: *mut whiteout_M3BoneAnimationSet,
23322 ) -> *const u16;
23323 pub fn whiteout_m3_M3BoneAnimationSet_assign_splitItems(
23324 self_: *mut whiteout_M3BoneAnimationSet,
23325 data: *const u16,
23326 count: usize,
23327 );
23328 pub fn whiteout_m3_M3ParticleEmitter_new() -> *mut whiteout_M3ParticleEmitter;
23330 pub fn whiteout_m3_M3ParticleEmitter_delete(self_: *mut whiteout_M3ParticleEmitter);
23331 pub fn whiteout_m3_M3ParticleEmitter_get_boneIndex(
23332 self_: *mut whiteout_M3ParticleEmitter,
23333 ) -> u32;
23334 pub fn whiteout_m3_M3ParticleEmitter_set_boneIndex(
23335 self_: *mut whiteout_M3ParticleEmitter,
23336 value: u32,
23337 );
23338 pub fn whiteout_m3_M3ParticleEmitter_get_materialIndex(
23339 self_: *mut whiteout_M3ParticleEmitter,
23340 ) -> u32;
23341 pub fn whiteout_m3_M3ParticleEmitter_set_materialIndex(
23342 self_: *mut whiteout_M3ParticleEmitter,
23343 value: u32,
23344 );
23345 pub fn whiteout_m3_M3ParticleEmitter_get_additionalFlags(
23346 self_: *mut whiteout_M3ParticleEmitter,
23347 ) -> i32;
23348 pub fn whiteout_m3_M3ParticleEmitter_set_additionalFlags(
23349 self_: *mut whiteout_M3ParticleEmitter,
23350 value: i32,
23351 );
23352 pub fn whiteout_m3_M3ParticleEmitter_get_initialSpeed(
23353 self_: *mut whiteout_M3ParticleEmitter,
23354 ) -> *mut whiteout_M3AnimRefF32;
23355 pub fn whiteout_m3_M3ParticleEmitter_set_initialSpeed(
23356 self_: *mut whiteout_M3ParticleEmitter,
23357 value: *const whiteout_M3AnimRefF32,
23358 );
23359 pub fn whiteout_m3_M3ParticleEmitter_get_initialSpeedRandom(
23360 self_: *mut whiteout_M3ParticleEmitter,
23361 ) -> *mut whiteout_M3AnimRefF32;
23362 pub fn whiteout_m3_M3ParticleEmitter_set_initialSpeedRandom(
23363 self_: *mut whiteout_M3ParticleEmitter,
23364 value: *const whiteout_M3AnimRefF32,
23365 );
23366 pub fn whiteout_m3_M3ParticleEmitter_get_initialYaw(
23367 self_: *mut whiteout_M3ParticleEmitter,
23368 ) -> *mut whiteout_M3AnimRefF32;
23369 pub fn whiteout_m3_M3ParticleEmitter_set_initialYaw(
23370 self_: *mut whiteout_M3ParticleEmitter,
23371 value: *const whiteout_M3AnimRefF32,
23372 );
23373 pub fn whiteout_m3_M3ParticleEmitter_get_initialPitch(
23374 self_: *mut whiteout_M3ParticleEmitter,
23375 ) -> *mut whiteout_M3AnimRefF32;
23376 pub fn whiteout_m3_M3ParticleEmitter_set_initialPitch(
23377 self_: *mut whiteout_M3ParticleEmitter,
23378 value: *const whiteout_M3AnimRefF32,
23379 );
23380 pub fn whiteout_m3_M3ParticleEmitter_get_initialHorizontal(
23381 self_: *mut whiteout_M3ParticleEmitter,
23382 ) -> *mut whiteout_M3AnimRefF32;
23383 pub fn whiteout_m3_M3ParticleEmitter_set_initialHorizontal(
23384 self_: *mut whiteout_M3ParticleEmitter,
23385 value: *const whiteout_M3AnimRefF32,
23386 );
23387 pub fn whiteout_m3_M3ParticleEmitter_get_initialVertical(
23388 self_: *mut whiteout_M3ParticleEmitter,
23389 ) -> *mut whiteout_M3AnimRefF32;
23390 pub fn whiteout_m3_M3ParticleEmitter_set_initialVertical(
23391 self_: *mut whiteout_M3ParticleEmitter,
23392 value: *const whiteout_M3AnimRefF32,
23393 );
23394 pub fn whiteout_m3_M3ParticleEmitter_get_lifetime(
23395 self_: *mut whiteout_M3ParticleEmitter,
23396 ) -> *mut whiteout_M3AnimRefF32;
23397 pub fn whiteout_m3_M3ParticleEmitter_set_lifetime(
23398 self_: *mut whiteout_M3ParticleEmitter,
23399 value: *const whiteout_M3AnimRefF32,
23400 );
23401 pub fn whiteout_m3_M3ParticleEmitter_get_lifetimeRandom(
23402 self_: *mut whiteout_M3ParticleEmitter,
23403 ) -> *mut whiteout_M3AnimRefF32;
23404 pub fn whiteout_m3_M3ParticleEmitter_set_lifetimeRandom(
23405 self_: *mut whiteout_M3ParticleEmitter,
23406 value: *const whiteout_M3AnimRefF32,
23407 );
23408 pub fn whiteout_m3_M3ParticleEmitter_get_killRadius(
23409 self_: *mut whiteout_M3ParticleEmitter,
23410 ) -> f32;
23411 pub fn whiteout_m3_M3ParticleEmitter_set_killRadius(
23412 self_: *mut whiteout_M3ParticleEmitter,
23413 value: f32,
23414 );
23415 pub fn whiteout_m3_M3ParticleEmitter_get_gravityX(
23416 self_: *mut whiteout_M3ParticleEmitter,
23417 ) -> u32;
23418 pub fn whiteout_m3_M3ParticleEmitter_set_gravityX(
23419 self_: *mut whiteout_M3ParticleEmitter,
23420 value: u32,
23421 );
23422 pub fn whiteout_m3_M3ParticleEmitter_get_gravityY(
23423 self_: *mut whiteout_M3ParticleEmitter,
23424 ) -> u32;
23425 pub fn whiteout_m3_M3ParticleEmitter_set_gravityY(
23426 self_: *mut whiteout_M3ParticleEmitter,
23427 value: u32,
23428 );
23429 pub fn whiteout_m3_M3ParticleEmitter_get_gravity(
23430 self_: *mut whiteout_M3ParticleEmitter,
23431 ) -> f32;
23432 pub fn whiteout_m3_M3ParticleEmitter_set_gravity(
23433 self_: *mut whiteout_M3ParticleEmitter,
23434 value: f32,
23435 );
23436 pub fn whiteout_m3_M3ParticleEmitter_get_sizeMidTime(
23437 self_: *mut whiteout_M3ParticleEmitter,
23438 ) -> f32;
23439 pub fn whiteout_m3_M3ParticleEmitter_set_sizeMidTime(
23440 self_: *mut whiteout_M3ParticleEmitter,
23441 value: f32,
23442 );
23443 pub fn whiteout_m3_M3ParticleEmitter_get_colorMidTime(
23444 self_: *mut whiteout_M3ParticleEmitter,
23445 ) -> f32;
23446 pub fn whiteout_m3_M3ParticleEmitter_set_colorMidTime(
23447 self_: *mut whiteout_M3ParticleEmitter,
23448 value: f32,
23449 );
23450 pub fn whiteout_m3_M3ParticleEmitter_get_alphaMidTime(
23451 self_: *mut whiteout_M3ParticleEmitter,
23452 ) -> f32;
23453 pub fn whiteout_m3_M3ParticleEmitter_set_alphaMidTime(
23454 self_: *mut whiteout_M3ParticleEmitter,
23455 value: f32,
23456 );
23457 pub fn whiteout_m3_M3ParticleEmitter_get_rotationMidTime(
23458 self_: *mut whiteout_M3ParticleEmitter,
23459 ) -> f32;
23460 pub fn whiteout_m3_M3ParticleEmitter_set_rotationMidTime(
23461 self_: *mut whiteout_M3ParticleEmitter,
23462 value: f32,
23463 );
23464 pub fn whiteout_m3_M3ParticleEmitter_get_sizeMidHoldTime(
23465 self_: *mut whiteout_M3ParticleEmitter,
23466 ) -> f32;
23467 pub fn whiteout_m3_M3ParticleEmitter_set_sizeMidHoldTime(
23468 self_: *mut whiteout_M3ParticleEmitter,
23469 value: f32,
23470 );
23471 pub fn whiteout_m3_M3ParticleEmitter_get_colorMidHoldTime(
23472 self_: *mut whiteout_M3ParticleEmitter,
23473 ) -> f32;
23474 pub fn whiteout_m3_M3ParticleEmitter_set_colorMidHoldTime(
23475 self_: *mut whiteout_M3ParticleEmitter,
23476 value: f32,
23477 );
23478 pub fn whiteout_m3_M3ParticleEmitter_get_alphaMidHoldTime(
23479 self_: *mut whiteout_M3ParticleEmitter,
23480 ) -> f32;
23481 pub fn whiteout_m3_M3ParticleEmitter_set_alphaMidHoldTime(
23482 self_: *mut whiteout_M3ParticleEmitter,
23483 value: f32,
23484 );
23485 pub fn whiteout_m3_M3ParticleEmitter_get_rotationMidHoldTime(
23486 self_: *mut whiteout_M3ParticleEmitter,
23487 ) -> f32;
23488 pub fn whiteout_m3_M3ParticleEmitter_set_rotationMidHoldTime(
23489 self_: *mut whiteout_M3ParticleEmitter,
23490 value: f32,
23491 );
23492 pub fn whiteout_m3_M3ParticleEmitter_get_sizeAnimation(
23493 self_: *mut whiteout_M3ParticleEmitter,
23494 ) -> *mut whiteout_M3AnimRefVector3f;
23495 pub fn whiteout_m3_M3ParticleEmitter_set_sizeAnimation(
23496 self_: *mut whiteout_M3ParticleEmitter,
23497 value: *const whiteout_M3AnimRefVector3f,
23498 );
23499 pub fn whiteout_m3_M3ParticleEmitter_get_rotationAnimation(
23500 self_: *mut whiteout_M3ParticleEmitter,
23501 ) -> *mut whiteout_M3AnimRefVector3f;
23502 pub fn whiteout_m3_M3ParticleEmitter_set_rotationAnimation(
23503 self_: *mut whiteout_M3ParticleEmitter,
23504 value: *const whiteout_M3AnimRefVector3f,
23505 );
23506 pub fn whiteout_m3_M3ParticleEmitter_get_colorStart(
23507 self_: *mut whiteout_M3ParticleEmitter,
23508 ) -> *mut whiteout_M3AnimRefM3ColorBGRA;
23509 pub fn whiteout_m3_M3ParticleEmitter_set_colorStart(
23510 self_: *mut whiteout_M3ParticleEmitter,
23511 value: *const whiteout_M3AnimRefM3ColorBGRA,
23512 );
23513 pub fn whiteout_m3_M3ParticleEmitter_get_colorMid(
23514 self_: *mut whiteout_M3ParticleEmitter,
23515 ) -> *mut whiteout_M3AnimRefM3ColorBGRA;
23516 pub fn whiteout_m3_M3ParticleEmitter_set_colorMid(
23517 self_: *mut whiteout_M3ParticleEmitter,
23518 value: *const whiteout_M3AnimRefM3ColorBGRA,
23519 );
23520 pub fn whiteout_m3_M3ParticleEmitter_get_colorEnd(
23521 self_: *mut whiteout_M3ParticleEmitter,
23522 ) -> *mut whiteout_M3AnimRefM3ColorBGRA;
23523 pub fn whiteout_m3_M3ParticleEmitter_set_colorEnd(
23524 self_: *mut whiteout_M3ParticleEmitter,
23525 value: *const whiteout_M3AnimRefM3ColorBGRA,
23526 );
23527 pub fn whiteout_m3_M3ParticleEmitter_get_drag(
23528 self_: *mut whiteout_M3ParticleEmitter,
23529 ) -> f32;
23530 pub fn whiteout_m3_M3ParticleEmitter_set_drag(
23531 self_: *mut whiteout_M3ParticleEmitter,
23532 value: f32,
23533 );
23534 pub fn whiteout_m3_M3ParticleEmitter_get_mass(
23535 self_: *mut whiteout_M3ParticleEmitter,
23536 ) -> f32;
23537 pub fn whiteout_m3_M3ParticleEmitter_set_mass(
23538 self_: *mut whiteout_M3ParticleEmitter,
23539 value: f32,
23540 );
23541 pub fn whiteout_m3_M3ParticleEmitter_get_massRandom(
23542 self_: *mut whiteout_M3ParticleEmitter,
23543 ) -> f32;
23544 pub fn whiteout_m3_M3ParticleEmitter_set_massRandom(
23545 self_: *mut whiteout_M3ParticleEmitter,
23546 value: f32,
23547 );
23548 pub fn whiteout_m3_M3ParticleEmitter_get_massSizeMultiplier(
23549 self_: *mut whiteout_M3ParticleEmitter,
23550 ) -> f32;
23551 pub fn whiteout_m3_M3ParticleEmitter_set_massSizeMultiplier(
23552 self_: *mut whiteout_M3ParticleEmitter,
23553 value: f32,
23554 );
23555 pub fn whiteout_m3_M3ParticleEmitter_get_localForces(
23556 self_: *mut whiteout_M3ParticleEmitter,
23557 ) -> u16;
23558 pub fn whiteout_m3_M3ParticleEmitter_set_localForces(
23559 self_: *mut whiteout_M3ParticleEmitter,
23560 value: u16,
23561 );
23562 pub fn whiteout_m3_M3ParticleEmitter_get_worldForces(
23563 self_: *mut whiteout_M3ParticleEmitter,
23564 ) -> u16;
23565 pub fn whiteout_m3_M3ParticleEmitter_set_worldForces(
23566 self_: *mut whiteout_M3ParticleEmitter,
23567 value: u16,
23568 );
23569 pub fn whiteout_m3_M3ParticleEmitter_get_localForcesFallback(
23570 self_: *mut whiteout_M3ParticleEmitter,
23571 ) -> u16;
23572 pub fn whiteout_m3_M3ParticleEmitter_set_localForcesFallback(
23573 self_: *mut whiteout_M3ParticleEmitter,
23574 value: u16,
23575 );
23576 pub fn whiteout_m3_M3ParticleEmitter_get_worldForcesFallback(
23577 self_: *mut whiteout_M3ParticleEmitter,
23578 ) -> u16;
23579 pub fn whiteout_m3_M3ParticleEmitter_set_worldForcesFallback(
23580 self_: *mut whiteout_M3ParticleEmitter,
23581 value: u16,
23582 );
23583 pub fn whiteout_m3_M3ParticleEmitter_get_worldForcesMassMultiplier(
23584 self_: *mut whiteout_M3ParticleEmitter,
23585 ) -> f32;
23586 pub fn whiteout_m3_M3ParticleEmitter_set_worldForcesMassMultiplier(
23587 self_: *mut whiteout_M3ParticleEmitter,
23588 value: f32,
23589 );
23590 pub fn whiteout_m3_M3ParticleEmitter_get_noiseAmplitude(
23591 self_: *mut whiteout_M3ParticleEmitter,
23592 ) -> f32;
23593 pub fn whiteout_m3_M3ParticleEmitter_set_noiseAmplitude(
23594 self_: *mut whiteout_M3ParticleEmitter,
23595 value: f32,
23596 );
23597 pub fn whiteout_m3_M3ParticleEmitter_get_noiseFrequency(
23598 self_: *mut whiteout_M3ParticleEmitter,
23599 ) -> f32;
23600 pub fn whiteout_m3_M3ParticleEmitter_set_noiseFrequency(
23601 self_: *mut whiteout_M3ParticleEmitter,
23602 value: f32,
23603 );
23604 pub fn whiteout_m3_M3ParticleEmitter_get_noiseCoherence(
23605 self_: *mut whiteout_M3ParticleEmitter,
23606 ) -> f32;
23607 pub fn whiteout_m3_M3ParticleEmitter_set_noiseCoherence(
23608 self_: *mut whiteout_M3ParticleEmitter,
23609 value: f32,
23610 );
23611 pub fn whiteout_m3_M3ParticleEmitter_get_noiseEdge(
23612 self_: *mut whiteout_M3ParticleEmitter,
23613 ) -> f32;
23614 pub fn whiteout_m3_M3ParticleEmitter_set_noiseEdge(
23615 self_: *mut whiteout_M3ParticleEmitter,
23616 value: f32,
23617 );
23618 pub fn whiteout_m3_M3ParticleEmitter_get_indexPlusLength(
23619 self_: *mut whiteout_M3ParticleEmitter,
23620 ) -> u32;
23621 pub fn whiteout_m3_M3ParticleEmitter_set_indexPlusLength(
23622 self_: *mut whiteout_M3ParticleEmitter,
23623 value: u32,
23624 );
23625 pub fn whiteout_m3_M3ParticleEmitter_get_maxParticles(
23626 self_: *mut whiteout_M3ParticleEmitter,
23627 ) -> u32;
23628 pub fn whiteout_m3_M3ParticleEmitter_set_maxParticles(
23629 self_: *mut whiteout_M3ParticleEmitter,
23630 value: u32,
23631 );
23632 pub fn whiteout_m3_M3ParticleEmitter_get_emissionRate(
23633 self_: *mut whiteout_M3ParticleEmitter,
23634 ) -> *mut whiteout_M3AnimRefF32;
23635 pub fn whiteout_m3_M3ParticleEmitter_set_emissionRate(
23636 self_: *mut whiteout_M3ParticleEmitter,
23637 value: *const whiteout_M3AnimRefF32,
23638 );
23639 pub fn whiteout_m3_M3ParticleEmitter_get_emitterShape(
23640 self_: *mut whiteout_M3ParticleEmitter,
23641 ) -> i32;
23642 pub fn whiteout_m3_M3ParticleEmitter_set_emitterShape(
23643 self_: *mut whiteout_M3ParticleEmitter,
23644 value: i32,
23645 );
23646 pub fn whiteout_m3_M3ParticleEmitter_get_shapeOuter(
23647 self_: *mut whiteout_M3ParticleEmitter,
23648 ) -> *mut whiteout_M3AnimRefVector3f;
23649 pub fn whiteout_m3_M3ParticleEmitter_set_shapeOuter(
23650 self_: *mut whiteout_M3ParticleEmitter,
23651 value: *const whiteout_M3AnimRefVector3f,
23652 );
23653 pub fn whiteout_m3_M3ParticleEmitter_get_shapeInner(
23654 self_: *mut whiteout_M3ParticleEmitter,
23655 ) -> *mut whiteout_M3AnimRefVector3f;
23656 pub fn whiteout_m3_M3ParticleEmitter_set_shapeInner(
23657 self_: *mut whiteout_M3ParticleEmitter,
23658 value: *const whiteout_M3AnimRefVector3f,
23659 );
23660 pub fn whiteout_m3_M3ParticleEmitter_get_outerRadius(
23661 self_: *mut whiteout_M3ParticleEmitter,
23662 ) -> *mut whiteout_M3AnimRefF32;
23663 pub fn whiteout_m3_M3ParticleEmitter_set_outerRadius(
23664 self_: *mut whiteout_M3ParticleEmitter,
23665 value: *const whiteout_M3AnimRefF32,
23666 );
23667 pub fn whiteout_m3_M3ParticleEmitter_get_innerRadius(
23668 self_: *mut whiteout_M3ParticleEmitter,
23669 ) -> *mut whiteout_M3AnimRefF32;
23670 pub fn whiteout_m3_M3ParticleEmitter_set_innerRadius(
23671 self_: *mut whiteout_M3ParticleEmitter,
23672 value: *const whiteout_M3AnimRefF32,
23673 );
23674 pub fn whiteout_m3_M3ParticleEmitter_get_shapeRegions_count(
23675 self_: *mut whiteout_M3ParticleEmitter,
23676 ) -> usize;
23677 pub fn whiteout_m3_M3ParticleEmitter_resize_shapeRegions(
23678 self_: *mut whiteout_M3ParticleEmitter,
23679 count: usize,
23680 );
23681 pub fn whiteout_m3_M3ParticleEmitter_get_shapeRegions_data(
23682 self_: *mut whiteout_M3ParticleEmitter,
23683 ) -> *const u32;
23684 pub fn whiteout_m3_M3ParticleEmitter_assign_shapeRegions(
23685 self_: *mut whiteout_M3ParticleEmitter,
23686 data: *const u32,
23687 count: usize,
23688 );
23689 pub fn whiteout_m3_M3ParticleEmitter_get_velocityType(
23690 self_: *mut whiteout_M3ParticleEmitter,
23691 ) -> u32;
23692 pub fn whiteout_m3_M3ParticleEmitter_set_velocityType(
23693 self_: *mut whiteout_M3ParticleEmitter,
23694 value: u32,
23695 );
23696 pub fn whiteout_m3_M3ParticleEmitter_get_sizeRandomEnable(
23697 self_: *mut whiteout_M3ParticleEmitter,
23698 ) -> u32;
23699 pub fn whiteout_m3_M3ParticleEmitter_set_sizeRandomEnable(
23700 self_: *mut whiteout_M3ParticleEmitter,
23701 value: u32,
23702 );
23703 pub fn whiteout_m3_M3ParticleEmitter_get_sizeRandomAnimation(
23704 self_: *mut whiteout_M3ParticleEmitter,
23705 ) -> *mut whiteout_M3AnimRefVector3f;
23706 pub fn whiteout_m3_M3ParticleEmitter_set_sizeRandomAnimation(
23707 self_: *mut whiteout_M3ParticleEmitter,
23708 value: *const whiteout_M3AnimRefVector3f,
23709 );
23710 pub fn whiteout_m3_M3ParticleEmitter_get_rotationRandomEnable(
23711 self_: *mut whiteout_M3ParticleEmitter,
23712 ) -> u32;
23713 pub fn whiteout_m3_M3ParticleEmitter_set_rotationRandomEnable(
23714 self_: *mut whiteout_M3ParticleEmitter,
23715 value: u32,
23716 );
23717 pub fn whiteout_m3_M3ParticleEmitter_get_rotationRandomAnimation(
23718 self_: *mut whiteout_M3ParticleEmitter,
23719 ) -> *mut whiteout_M3AnimRefVector3f;
23720 pub fn whiteout_m3_M3ParticleEmitter_set_rotationRandomAnimation(
23721 self_: *mut whiteout_M3ParticleEmitter,
23722 value: *const whiteout_M3AnimRefVector3f,
23723 );
23724 pub fn whiteout_m3_M3ParticleEmitter_get_colorRandomEnable(
23725 self_: *mut whiteout_M3ParticleEmitter,
23726 ) -> u32;
23727 pub fn whiteout_m3_M3ParticleEmitter_set_colorRandomEnable(
23728 self_: *mut whiteout_M3ParticleEmitter,
23729 value: u32,
23730 );
23731 pub fn whiteout_m3_M3ParticleEmitter_get_colorStartRandom(
23732 self_: *mut whiteout_M3ParticleEmitter,
23733 ) -> *mut whiteout_M3AnimRefM3ColorBGRA;
23734 pub fn whiteout_m3_M3ParticleEmitter_set_colorStartRandom(
23735 self_: *mut whiteout_M3ParticleEmitter,
23736 value: *const whiteout_M3AnimRefM3ColorBGRA,
23737 );
23738 pub fn whiteout_m3_M3ParticleEmitter_get_colorMidRandom(
23739 self_: *mut whiteout_M3ParticleEmitter,
23740 ) -> *mut whiteout_M3AnimRefM3ColorBGRA;
23741 pub fn whiteout_m3_M3ParticleEmitter_set_colorMidRandom(
23742 self_: *mut whiteout_M3ParticleEmitter,
23743 value: *const whiteout_M3AnimRefM3ColorBGRA,
23744 );
23745 pub fn whiteout_m3_M3ParticleEmitter_get_colorEndRandom(
23746 self_: *mut whiteout_M3ParticleEmitter,
23747 ) -> *mut whiteout_M3AnimRefM3ColorBGRA;
23748 pub fn whiteout_m3_M3ParticleEmitter_set_colorEndRandom(
23749 self_: *mut whiteout_M3ParticleEmitter,
23750 value: *const whiteout_M3AnimRefM3ColorBGRA,
23751 );
23752 pub fn whiteout_m3_M3ParticleEmitter_get_alphaRandomEnable(
23753 self_: *mut whiteout_M3ParticleEmitter,
23754 ) -> u32;
23755 pub fn whiteout_m3_M3ParticleEmitter_set_alphaRandomEnable(
23756 self_: *mut whiteout_M3ParticleEmitter,
23757 value: u32,
23758 );
23759 pub fn whiteout_m3_M3ParticleEmitter_get_squirtAmount(
23760 self_: *mut whiteout_M3ParticleEmitter,
23761 ) -> *mut whiteout_M3AnimRefU16;
23762 pub fn whiteout_m3_M3ParticleEmitter_set_squirtAmount(
23763 self_: *mut whiteout_M3ParticleEmitter,
23764 value: *const whiteout_M3AnimRefU16,
23765 );
23766 pub fn whiteout_m3_M3ParticleEmitter_get_flipbookStartInitIndex(
23767 self_: *mut whiteout_M3ParticleEmitter,
23768 ) -> u8;
23769 pub fn whiteout_m3_M3ParticleEmitter_set_flipbookStartInitIndex(
23770 self_: *mut whiteout_M3ParticleEmitter,
23771 value: u8,
23772 );
23773 pub fn whiteout_m3_M3ParticleEmitter_get_flipbookStartStopIndex(
23774 self_: *mut whiteout_M3ParticleEmitter,
23775 ) -> u8;
23776 pub fn whiteout_m3_M3ParticleEmitter_set_flipbookStartStopIndex(
23777 self_: *mut whiteout_M3ParticleEmitter,
23778 value: u8,
23779 );
23780 pub fn whiteout_m3_M3ParticleEmitter_get_flipbookEndInitIndex(
23781 self_: *mut whiteout_M3ParticleEmitter,
23782 ) -> u8;
23783 pub fn whiteout_m3_M3ParticleEmitter_set_flipbookEndInitIndex(
23784 self_: *mut whiteout_M3ParticleEmitter,
23785 value: u8,
23786 );
23787 pub fn whiteout_m3_M3ParticleEmitter_get_flipbookEndStopIndex(
23788 self_: *mut whiteout_M3ParticleEmitter,
23789 ) -> u8;
23790 pub fn whiteout_m3_M3ParticleEmitter_set_flipbookEndStopIndex(
23791 self_: *mut whiteout_M3ParticleEmitter,
23792 value: u8,
23793 );
23794 pub fn whiteout_m3_M3ParticleEmitter_get_flipbookMidTime(
23795 self_: *mut whiteout_M3ParticleEmitter,
23796 ) -> f32;
23797 pub fn whiteout_m3_M3ParticleEmitter_set_flipbookMidTime(
23798 self_: *mut whiteout_M3ParticleEmitter,
23799 value: f32,
23800 );
23801 pub fn whiteout_m3_M3ParticleEmitter_get_flipbookColumns(
23802 self_: *mut whiteout_M3ParticleEmitter,
23803 ) -> u16;
23804 pub fn whiteout_m3_M3ParticleEmitter_set_flipbookColumns(
23805 self_: *mut whiteout_M3ParticleEmitter,
23806 value: u16,
23807 );
23808 pub fn whiteout_m3_M3ParticleEmitter_get_flipbookRows(
23809 self_: *mut whiteout_M3ParticleEmitter,
23810 ) -> u16;
23811 pub fn whiteout_m3_M3ParticleEmitter_set_flipbookRows(
23812 self_: *mut whiteout_M3ParticleEmitter,
23813 value: u16,
23814 );
23815 pub fn whiteout_m3_M3ParticleEmitter_get_flipbookColumnFraction(
23816 self_: *mut whiteout_M3ParticleEmitter,
23817 ) -> f32;
23818 pub fn whiteout_m3_M3ParticleEmitter_set_flipbookColumnFraction(
23819 self_: *mut whiteout_M3ParticleEmitter,
23820 value: f32,
23821 );
23822 pub fn whiteout_m3_M3ParticleEmitter_get_flipbookRowFraction(
23823 self_: *mut whiteout_M3ParticleEmitter,
23824 ) -> f32;
23825 pub fn whiteout_m3_M3ParticleEmitter_set_flipbookRowFraction(
23826 self_: *mut whiteout_M3ParticleEmitter,
23827 value: f32,
23828 );
23829 pub fn whiteout_m3_M3ParticleEmitter_get_bounce(
23830 self_: *mut whiteout_M3ParticleEmitter,
23831 ) -> f32;
23832 pub fn whiteout_m3_M3ParticleEmitter_set_bounce(
23833 self_: *mut whiteout_M3ParticleEmitter,
23834 value: f32,
23835 );
23836 pub fn whiteout_m3_M3ParticleEmitter_get_friction(
23837 self_: *mut whiteout_M3ParticleEmitter,
23838 ) -> f32;
23839 pub fn whiteout_m3_M3ParticleEmitter_set_friction(
23840 self_: *mut whiteout_M3ParticleEmitter,
23841 value: f32,
23842 );
23843 pub fn whiteout_m3_M3ParticleEmitter_get_collisionSpawnIndex(
23844 self_: *mut whiteout_M3ParticleEmitter,
23845 ) -> i32;
23846 pub fn whiteout_m3_M3ParticleEmitter_set_collisionSpawnIndex(
23847 self_: *mut whiteout_M3ParticleEmitter,
23848 value: i32,
23849 );
23850 pub fn whiteout_m3_M3ParticleEmitter_get_collisionSpawnMin(
23851 self_: *mut whiteout_M3ParticleEmitter,
23852 ) -> u32;
23853 pub fn whiteout_m3_M3ParticleEmitter_set_collisionSpawnMin(
23854 self_: *mut whiteout_M3ParticleEmitter,
23855 value: u32,
23856 );
23857 pub fn whiteout_m3_M3ParticleEmitter_get_collisionSpawnMax(
23858 self_: *mut whiteout_M3ParticleEmitter,
23859 ) -> u32;
23860 pub fn whiteout_m3_M3ParticleEmitter_set_collisionSpawnMax(
23861 self_: *mut whiteout_M3ParticleEmitter,
23862 value: u32,
23863 );
23864 pub fn whiteout_m3_M3ParticleEmitter_get_collisionSpawnChance(
23865 self_: *mut whiteout_M3ParticleEmitter,
23866 ) -> f32;
23867 pub fn whiteout_m3_M3ParticleEmitter_set_collisionSpawnChance(
23868 self_: *mut whiteout_M3ParticleEmitter,
23869 value: f32,
23870 );
23871 pub fn whiteout_m3_M3ParticleEmitter_get_collisionSpawnEnergy(
23872 self_: *mut whiteout_M3ParticleEmitter,
23873 ) -> f32;
23874 pub fn whiteout_m3_M3ParticleEmitter_set_collisionSpawnEnergy(
23875 self_: *mut whiteout_M3ParticleEmitter,
23876 value: f32,
23877 );
23878 pub fn whiteout_m3_M3ParticleEmitter_get_collisionDieBounce(
23879 self_: *mut whiteout_M3ParticleEmitter,
23880 ) -> u32;
23881 pub fn whiteout_m3_M3ParticleEmitter_set_collisionDieBounce(
23882 self_: *mut whiteout_M3ParticleEmitter,
23883 value: u32,
23884 );
23885 pub fn whiteout_m3_M3ParticleEmitter_get_instanceType(
23886 self_: *mut whiteout_M3ParticleEmitter,
23887 ) -> i32;
23888 pub fn whiteout_m3_M3ParticleEmitter_set_instanceType(
23889 self_: *mut whiteout_M3ParticleEmitter,
23890 value: i32,
23891 );
23892 pub fn whiteout_m3_M3ParticleEmitter_get_tailLength(
23893 self_: *mut whiteout_M3ParticleEmitter,
23894 ) -> f32;
23895 pub fn whiteout_m3_M3ParticleEmitter_set_tailLength(
23896 self_: *mut whiteout_M3ParticleEmitter,
23897 value: f32,
23898 );
23899 pub fn whiteout_m3_M3ParticleEmitter_get_instanceAngle(
23900 self_: *mut whiteout_M3ParticleEmitter,
23901 ) -> *mut core::ffi::c_void;
23902 pub fn whiteout_m3_M3ParticleEmitter_set_instanceAngle(
23903 self_: *mut whiteout_M3ParticleEmitter,
23904 value: *const core::ffi::c_void,
23905 );
23906 pub fn whiteout_m3_M3ParticleEmitter_get_instanceDistance(
23907 self_: *mut whiteout_M3ParticleEmitter,
23908 ) -> f32;
23909 pub fn whiteout_m3_M3ParticleEmitter_set_instanceDistance(
23910 self_: *mut whiteout_M3ParticleEmitter,
23911 value: f32,
23912 );
23913 pub fn whiteout_m3_M3ParticleEmitter_get_pitchType(
23914 self_: *mut whiteout_M3ParticleEmitter,
23915 ) -> u32;
23916 pub fn whiteout_m3_M3ParticleEmitter_set_pitchType(
23917 self_: *mut whiteout_M3ParticleEmitter,
23918 value: u32,
23919 );
23920 pub fn whiteout_m3_M3ParticleEmitter_get_pitchAmplitude(
23921 self_: *mut whiteout_M3ParticleEmitter,
23922 ) -> *mut whiteout_M3AnimRefF32;
23923 pub fn whiteout_m3_M3ParticleEmitter_set_pitchAmplitude(
23924 self_: *mut whiteout_M3ParticleEmitter,
23925 value: *const whiteout_M3AnimRefF32,
23926 );
23927 pub fn whiteout_m3_M3ParticleEmitter_get_pitchFrequency(
23928 self_: *mut whiteout_M3ParticleEmitter,
23929 ) -> *mut whiteout_M3AnimRefF32;
23930 pub fn whiteout_m3_M3ParticleEmitter_set_pitchFrequency(
23931 self_: *mut whiteout_M3ParticleEmitter,
23932 value: *const whiteout_M3AnimRefF32,
23933 );
23934 pub fn whiteout_m3_M3ParticleEmitter_get_yawType(
23935 self_: *mut whiteout_M3ParticleEmitter,
23936 ) -> u32;
23937 pub fn whiteout_m3_M3ParticleEmitter_set_yawType(
23938 self_: *mut whiteout_M3ParticleEmitter,
23939 value: u32,
23940 );
23941 pub fn whiteout_m3_M3ParticleEmitter_get_yawAmplitude(
23942 self_: *mut whiteout_M3ParticleEmitter,
23943 ) -> *mut whiteout_M3AnimRefF32;
23944 pub fn whiteout_m3_M3ParticleEmitter_set_yawAmplitude(
23945 self_: *mut whiteout_M3ParticleEmitter,
23946 value: *const whiteout_M3AnimRefF32,
23947 );
23948 pub fn whiteout_m3_M3ParticleEmitter_get_yawFrequency(
23949 self_: *mut whiteout_M3ParticleEmitter,
23950 ) -> *mut whiteout_M3AnimRefF32;
23951 pub fn whiteout_m3_M3ParticleEmitter_set_yawFrequency(
23952 self_: *mut whiteout_M3ParticleEmitter,
23953 value: *const whiteout_M3AnimRefF32,
23954 );
23955 pub fn whiteout_m3_M3ParticleEmitter_get_speedType(
23956 self_: *mut whiteout_M3ParticleEmitter,
23957 ) -> u32;
23958 pub fn whiteout_m3_M3ParticleEmitter_set_speedType(
23959 self_: *mut whiteout_M3ParticleEmitter,
23960 value: u32,
23961 );
23962 pub fn whiteout_m3_M3ParticleEmitter_get_speedAmplitude(
23963 self_: *mut whiteout_M3ParticleEmitter,
23964 ) -> *mut whiteout_M3AnimRefF32;
23965 pub fn whiteout_m3_M3ParticleEmitter_set_speedAmplitude(
23966 self_: *mut whiteout_M3ParticleEmitter,
23967 value: *const whiteout_M3AnimRefF32,
23968 );
23969 pub fn whiteout_m3_M3ParticleEmitter_get_speedFrequency(
23970 self_: *mut whiteout_M3ParticleEmitter,
23971 ) -> *mut whiteout_M3AnimRefF32;
23972 pub fn whiteout_m3_M3ParticleEmitter_set_speedFrequency(
23973 self_: *mut whiteout_M3ParticleEmitter,
23974 value: *const whiteout_M3AnimRefF32,
23975 );
23976 pub fn whiteout_m3_M3ParticleEmitter_get_sizeType(
23977 self_: *mut whiteout_M3ParticleEmitter,
23978 ) -> u32;
23979 pub fn whiteout_m3_M3ParticleEmitter_set_sizeType(
23980 self_: *mut whiteout_M3ParticleEmitter,
23981 value: u32,
23982 );
23983 pub fn whiteout_m3_M3ParticleEmitter_get_sizeAmplitude(
23984 self_: *mut whiteout_M3ParticleEmitter,
23985 ) -> *mut whiteout_M3AnimRefF32;
23986 pub fn whiteout_m3_M3ParticleEmitter_set_sizeAmplitude(
23987 self_: *mut whiteout_M3ParticleEmitter,
23988 value: *const whiteout_M3AnimRefF32,
23989 );
23990 pub fn whiteout_m3_M3ParticleEmitter_get_sizeFrequency(
23991 self_: *mut whiteout_M3ParticleEmitter,
23992 ) -> *mut whiteout_M3AnimRefF32;
23993 pub fn whiteout_m3_M3ParticleEmitter_set_sizeFrequency(
23994 self_: *mut whiteout_M3ParticleEmitter,
23995 value: *const whiteout_M3AnimRefF32,
23996 );
23997 pub fn whiteout_m3_M3ParticleEmitter_get_alphaType(
23998 self_: *mut whiteout_M3ParticleEmitter,
23999 ) -> u32;
24000 pub fn whiteout_m3_M3ParticleEmitter_set_alphaType(
24001 self_: *mut whiteout_M3ParticleEmitter,
24002 value: u32,
24003 );
24004 pub fn whiteout_m3_M3ParticleEmitter_get_alphaAmplitude(
24005 self_: *mut whiteout_M3ParticleEmitter,
24006 ) -> *mut whiteout_M3AnimRefF32;
24007 pub fn whiteout_m3_M3ParticleEmitter_set_alphaAmplitude(
24008 self_: *mut whiteout_M3ParticleEmitter,
24009 value: *const whiteout_M3AnimRefF32,
24010 );
24011 pub fn whiteout_m3_M3ParticleEmitter_get_alphaFrequency(
24012 self_: *mut whiteout_M3ParticleEmitter,
24013 ) -> *mut whiteout_M3AnimRefF32;
24014 pub fn whiteout_m3_M3ParticleEmitter_set_alphaFrequency(
24015 self_: *mut whiteout_M3ParticleEmitter,
24016 value: *const whiteout_M3AnimRefF32,
24017 );
24018 pub fn whiteout_m3_M3ParticleEmitter_get_colorType(
24019 self_: *mut whiteout_M3ParticleEmitter,
24020 ) -> u32;
24021 pub fn whiteout_m3_M3ParticleEmitter_set_colorType(
24022 self_: *mut whiteout_M3ParticleEmitter,
24023 value: u32,
24024 );
24025 pub fn whiteout_m3_M3ParticleEmitter_get_colorAmplitude(
24026 self_: *mut whiteout_M3ParticleEmitter,
24027 ) -> *mut whiteout_M3AnimRefF32;
24028 pub fn whiteout_m3_M3ParticleEmitter_set_colorAmplitude(
24029 self_: *mut whiteout_M3ParticleEmitter,
24030 value: *const whiteout_M3AnimRefF32,
24031 );
24032 pub fn whiteout_m3_M3ParticleEmitter_get_colorFrequency(
24033 self_: *mut whiteout_M3ParticleEmitter,
24034 ) -> *mut whiteout_M3AnimRefF32;
24035 pub fn whiteout_m3_M3ParticleEmitter_set_colorFrequency(
24036 self_: *mut whiteout_M3ParticleEmitter,
24037 value: *const whiteout_M3AnimRefF32,
24038 );
24039 pub fn whiteout_m3_M3ParticleEmitter_get_rotationType(
24040 self_: *mut whiteout_M3ParticleEmitter,
24041 ) -> u32;
24042 pub fn whiteout_m3_M3ParticleEmitter_set_rotationType(
24043 self_: *mut whiteout_M3ParticleEmitter,
24044 value: u32,
24045 );
24046 pub fn whiteout_m3_M3ParticleEmitter_get_rotationAmplitude(
24047 self_: *mut whiteout_M3ParticleEmitter,
24048 ) -> *mut whiteout_M3AnimRefF32;
24049 pub fn whiteout_m3_M3ParticleEmitter_set_rotationAmplitude(
24050 self_: *mut whiteout_M3ParticleEmitter,
24051 value: *const whiteout_M3AnimRefF32,
24052 );
24053 pub fn whiteout_m3_M3ParticleEmitter_get_rotationFrequency(
24054 self_: *mut whiteout_M3ParticleEmitter,
24055 ) -> *mut whiteout_M3AnimRefF32;
24056 pub fn whiteout_m3_M3ParticleEmitter_set_rotationFrequency(
24057 self_: *mut whiteout_M3ParticleEmitter,
24058 value: *const whiteout_M3AnimRefF32,
24059 );
24060 pub fn whiteout_m3_M3ParticleEmitter_get_horizontalType(
24061 self_: *mut whiteout_M3ParticleEmitter,
24062 ) -> u32;
24063 pub fn whiteout_m3_M3ParticleEmitter_set_horizontalType(
24064 self_: *mut whiteout_M3ParticleEmitter,
24065 value: u32,
24066 );
24067 pub fn whiteout_m3_M3ParticleEmitter_get_horizontalAmplitude(
24068 self_: *mut whiteout_M3ParticleEmitter,
24069 ) -> *mut whiteout_M3AnimRefF32;
24070 pub fn whiteout_m3_M3ParticleEmitter_set_horizontalAmplitude(
24071 self_: *mut whiteout_M3ParticleEmitter,
24072 value: *const whiteout_M3AnimRefF32,
24073 );
24074 pub fn whiteout_m3_M3ParticleEmitter_get_horizontalFrequency(
24075 self_: *mut whiteout_M3ParticleEmitter,
24076 ) -> *mut whiteout_M3AnimRefF32;
24077 pub fn whiteout_m3_M3ParticleEmitter_set_horizontalFrequency(
24078 self_: *mut whiteout_M3ParticleEmitter,
24079 value: *const whiteout_M3AnimRefF32,
24080 );
24081 pub fn whiteout_m3_M3ParticleEmitter_get_verticalType(
24082 self_: *mut whiteout_M3ParticleEmitter,
24083 ) -> u32;
24084 pub fn whiteout_m3_M3ParticleEmitter_set_verticalType(
24085 self_: *mut whiteout_M3ParticleEmitter,
24086 value: u32,
24087 );
24088 pub fn whiteout_m3_M3ParticleEmitter_get_verticalAmplitude(
24089 self_: *mut whiteout_M3ParticleEmitter,
24090 ) -> *mut whiteout_M3AnimRefF32;
24091 pub fn whiteout_m3_M3ParticleEmitter_set_verticalAmplitude(
24092 self_: *mut whiteout_M3ParticleEmitter,
24093 value: *const whiteout_M3AnimRefF32,
24094 );
24095 pub fn whiteout_m3_M3ParticleEmitter_get_verticalFrequency(
24096 self_: *mut whiteout_M3ParticleEmitter,
24097 ) -> *mut whiteout_M3AnimRefF32;
24098 pub fn whiteout_m3_M3ParticleEmitter_set_verticalFrequency(
24099 self_: *mut whiteout_M3ParticleEmitter,
24100 value: *const whiteout_M3AnimRefF32,
24101 );
24102 pub fn whiteout_m3_M3ParticleEmitter_get_particleVelocity(
24103 self_: *mut whiteout_M3ParticleEmitter,
24104 ) -> *mut whiteout_M3AnimRefF32;
24105 pub fn whiteout_m3_M3ParticleEmitter_set_particleVelocity(
24106 self_: *mut whiteout_M3ParticleEmitter,
24107 value: *const whiteout_M3AnimRefF32,
24108 );
24109 pub fn whiteout_m3_M3ParticleEmitter_get_phaseShift(
24110 self_: *mut whiteout_M3ParticleEmitter,
24111 ) -> *mut whiteout_M3AnimRefF32;
24112 pub fn whiteout_m3_M3ParticleEmitter_set_phaseShift(
24113 self_: *mut whiteout_M3ParticleEmitter,
24114 value: *const whiteout_M3AnimRefF32,
24115 );
24116 pub fn whiteout_m3_M3ParticleEmitter_get_flags(
24117 self_: *mut whiteout_M3ParticleEmitter,
24118 ) -> i32;
24119 pub fn whiteout_m3_M3ParticleEmitter_set_flags(
24120 self_: *mut whiteout_M3ParticleEmitter,
24121 value: i32,
24122 );
24123 pub fn whiteout_m3_M3ParticleEmitter_get_rotationFlags(
24124 self_: *mut whiteout_M3ParticleEmitter,
24125 ) -> i32;
24126 pub fn whiteout_m3_M3ParticleEmitter_set_rotationFlags(
24127 self_: *mut whiteout_M3ParticleEmitter,
24128 value: i32,
24129 );
24130 pub fn whiteout_m3_M3ParticleEmitter_get_colorSmoothing(
24131 self_: *mut whiteout_M3ParticleEmitter,
24132 ) -> i32;
24133 pub fn whiteout_m3_M3ParticleEmitter_set_colorSmoothing(
24134 self_: *mut whiteout_M3ParticleEmitter,
24135 value: i32,
24136 );
24137 pub fn whiteout_m3_M3ParticleEmitter_get_sizeSmoothing(
24138 self_: *mut whiteout_M3ParticleEmitter,
24139 ) -> i32;
24140 pub fn whiteout_m3_M3ParticleEmitter_set_sizeSmoothing(
24141 self_: *mut whiteout_M3ParticleEmitter,
24142 value: i32,
24143 );
24144 pub fn whiteout_m3_M3ParticleEmitter_get_rotationSmoothing(
24145 self_: *mut whiteout_M3ParticleEmitter,
24146 ) -> i32;
24147 pub fn whiteout_m3_M3ParticleEmitter_set_rotationSmoothing(
24148 self_: *mut whiteout_M3ParticleEmitter,
24149 value: i32,
24150 );
24151 pub fn whiteout_m3_M3ParticleEmitter_get_alphaThreshold(
24152 self_: *mut whiteout_M3ParticleEmitter,
24153 ) -> *mut whiteout_M3AnimRefF32;
24154 pub fn whiteout_m3_M3ParticleEmitter_set_alphaThreshold(
24155 self_: *mut whiteout_M3ParticleEmitter,
24156 value: *const whiteout_M3AnimRefF32,
24157 );
24158 pub fn whiteout_m3_M3ParticleEmitter_get_uvOffset(
24159 self_: *mut whiteout_M3ParticleEmitter,
24160 ) -> *mut whiteout_M3AnimRefVector2f;
24161 pub fn whiteout_m3_M3ParticleEmitter_set_uvOffset(
24162 self_: *mut whiteout_M3ParticleEmitter,
24163 value: *const whiteout_M3AnimRefVector2f,
24164 );
24165 pub fn whiteout_m3_M3ParticleEmitter_get_uvAngle(
24166 self_: *mut whiteout_M3ParticleEmitter,
24167 ) -> *mut whiteout_M3AnimRefVector3f;
24168 pub fn whiteout_m3_M3ParticleEmitter_set_uvAngle(
24169 self_: *mut whiteout_M3ParticleEmitter,
24170 value: *const whiteout_M3AnimRefVector3f,
24171 );
24172 pub fn whiteout_m3_M3ParticleEmitter_get_uvTiling(
24173 self_: *mut whiteout_M3ParticleEmitter,
24174 ) -> *mut whiteout_M3AnimRefVector2f;
24175 pub fn whiteout_m3_M3ParticleEmitter_set_uvTiling(
24176 self_: *mut whiteout_M3ParticleEmitter,
24177 value: *const whiteout_M3AnimRefVector2f,
24178 );
24179 pub fn whiteout_m3_M3ParticleEmitter_get_splineLineData_count(
24180 self_: *mut whiteout_M3ParticleEmitter,
24181 ) -> usize;
24182 pub fn whiteout_m3_M3ParticleEmitter_resize_splineLineData(
24183 self_: *mut whiteout_M3ParticleEmitter,
24184 count: usize,
24185 );
24186 pub fn whiteout_m3_M3ParticleEmitter_get_splineLineData_at(
24187 self_: *mut whiteout_M3ParticleEmitter,
24188 index: usize,
24189 ) -> *mut whiteout_M3AnimRefVector3f;
24190 pub fn whiteout_m3_M3ParticleEmitter_get_windMultiplier(
24191 self_: *mut whiteout_M3ParticleEmitter,
24192 ) -> f32;
24193 pub fn whiteout_m3_M3ParticleEmitter_set_windMultiplier(
24194 self_: *mut whiteout_M3ParticleEmitter,
24195 value: f32,
24196 );
24197 pub fn whiteout_m3_M3ParticleEmitter_get_lodReduce(
24198 self_: *mut whiteout_M3ParticleEmitter,
24199 ) -> u32;
24200 pub fn whiteout_m3_M3ParticleEmitter_set_lodReduce(
24201 self_: *mut whiteout_M3ParticleEmitter,
24202 value: u32,
24203 );
24204 pub fn whiteout_m3_M3ParticleEmitter_get_lodCut(
24205 self_: *mut whiteout_M3ParticleEmitter,
24206 ) -> u32;
24207 pub fn whiteout_m3_M3ParticleEmitter_set_lodCut(
24208 self_: *mut whiteout_M3ParticleEmitter,
24209 value: u32,
24210 );
24211 pub fn whiteout_m3_M3ParticleEmitter_get_lowerBound(
24212 self_: *mut whiteout_M3ParticleEmitter,
24213 ) -> *mut whiteout_M3AnimRefF32;
24214 pub fn whiteout_m3_M3ParticleEmitter_set_lowerBound(
24215 self_: *mut whiteout_M3ParticleEmitter,
24216 value: *const whiteout_M3AnimRefF32,
24217 );
24218 pub fn whiteout_m3_M3ParticleEmitter_get_upperBound(
24219 self_: *mut whiteout_M3ParticleEmitter,
24220 ) -> *mut whiteout_M3AnimRefF32;
24221 pub fn whiteout_m3_M3ParticleEmitter_set_upperBound(
24222 self_: *mut whiteout_M3ParticleEmitter,
24223 value: *const whiteout_M3AnimRefF32,
24224 );
24225 pub fn whiteout_m3_M3ParticleEmitter_get_trailLinkIndex(
24226 self_: *mut whiteout_M3ParticleEmitter,
24227 ) -> i32;
24228 pub fn whiteout_m3_M3ParticleEmitter_set_trailLinkIndex(
24229 self_: *mut whiteout_M3ParticleEmitter,
24230 value: i32,
24231 );
24232 pub fn whiteout_m3_M3ParticleEmitter_get_trailChance(
24233 self_: *mut whiteout_M3ParticleEmitter,
24234 ) -> f32;
24235 pub fn whiteout_m3_M3ParticleEmitter_set_trailChance(
24236 self_: *mut whiteout_M3ParticleEmitter,
24237 value: f32,
24238 );
24239 pub fn whiteout_m3_M3ParticleEmitter_get_trailEmissionRate(
24240 self_: *mut whiteout_M3ParticleEmitter,
24241 ) -> *mut whiteout_M3AnimRefF32;
24242 pub fn whiteout_m3_M3ParticleEmitter_set_trailEmissionRate(
24243 self_: *mut whiteout_M3ParticleEmitter,
24244 value: *const whiteout_M3AnimRefF32,
24245 );
24246 pub fn whiteout_m3_M3ParticleEmitter_get_splatProjectionIndex(
24247 self_: *mut whiteout_M3ParticleEmitter,
24248 ) -> i32;
24249 pub fn whiteout_m3_M3ParticleEmitter_set_splatProjectionIndex(
24250 self_: *mut whiteout_M3ParticleEmitter,
24251 value: i32,
24252 );
24253 pub fn whiteout_m3_M3ParticleEmitter_get_splatChance(
24254 self_: *mut whiteout_M3ParticleEmitter,
24255 ) -> f32;
24256 pub fn whiteout_m3_M3ParticleEmitter_set_splatChance(
24257 self_: *mut whiteout_M3ParticleEmitter,
24258 value: f32,
24259 );
24260 pub fn whiteout_m3_M3ParticleEmitter_get_copyIndices_count(
24261 self_: *mut whiteout_M3ParticleEmitter,
24262 ) -> usize;
24263 pub fn whiteout_m3_M3ParticleEmitter_resize_copyIndices(
24264 self_: *mut whiteout_M3ParticleEmitter,
24265 count: usize,
24266 );
24267 pub fn whiteout_m3_M3ParticleEmitter_get_copyIndices_data(
24268 self_: *mut whiteout_M3ParticleEmitter,
24269 ) -> *const u32;
24270 pub fn whiteout_m3_M3ParticleEmitter_assign_copyIndices(
24271 self_: *mut whiteout_M3ParticleEmitter,
24272 data: *const u32,
24273 count: usize,
24274 );
24275 pub fn whiteout_m3_M3ParticleEmitter_get_spawnRibbonOnBounceChance(
24276 self_: *mut whiteout_M3ParticleEmitter,
24277 ) -> f32;
24278 pub fn whiteout_m3_M3ParticleEmitter_set_spawnRibbonOnBounceChance(
24279 self_: *mut whiteout_M3ParticleEmitter,
24280 value: f32,
24281 );
24282 pub fn whiteout_m3_M3ParticleEmitter_get_ribbonLinkIndex(
24283 self_: *mut whiteout_M3ParticleEmitter,
24284 ) -> i32;
24285 pub fn whiteout_m3_M3ParticleEmitter_set_ribbonLinkIndex(
24286 self_: *mut whiteout_M3ParticleEmitter,
24287 value: i32,
24288 );
24289 pub fn whiteout_m3_M3ParticleEmitterCopy_new() -> *mut whiteout_M3ParticleEmitterCopy;
24291 pub fn whiteout_m3_M3ParticleEmitterCopy_delete(self_: *mut whiteout_M3ParticleEmitterCopy);
24292 pub fn whiteout_m3_M3ParticleEmitterCopy_get_emissionRate(
24293 self_: *mut whiteout_M3ParticleEmitterCopy,
24294 ) -> *mut whiteout_M3AnimRefF32;
24295 pub fn whiteout_m3_M3ParticleEmitterCopy_set_emissionRate(
24296 self_: *mut whiteout_M3ParticleEmitterCopy,
24297 value: *const whiteout_M3AnimRefF32,
24298 );
24299 pub fn whiteout_m3_M3ParticleEmitterCopy_get_squirtAmount(
24300 self_: *mut whiteout_M3ParticleEmitterCopy,
24301 ) -> *mut whiteout_M3AnimRefU16;
24302 pub fn whiteout_m3_M3ParticleEmitterCopy_set_squirtAmount(
24303 self_: *mut whiteout_M3ParticleEmitterCopy,
24304 value: *const whiteout_M3AnimRefU16,
24305 );
24306 pub fn whiteout_m3_M3ParticleEmitterCopy_get_boneIndex(
24307 self_: *mut whiteout_M3ParticleEmitterCopy,
24308 ) -> u32;
24309 pub fn whiteout_m3_M3ParticleEmitterCopy_set_boneIndex(
24310 self_: *mut whiteout_M3ParticleEmitterCopy,
24311 value: u32,
24312 );
24313 pub fn whiteout_m3_M3SplineRibbon_new() -> *mut whiteout_M3SplineRibbon;
24315 pub fn whiteout_m3_M3SplineRibbon_delete(self_: *mut whiteout_M3SplineRibbon);
24316 pub fn whiteout_m3_M3SplineRibbon_get_emissionOffset(
24317 self_: *mut whiteout_M3SplineRibbon,
24318 ) -> *mut core::ffi::c_void;
24319 pub fn whiteout_m3_M3SplineRibbon_set_emissionOffset(
24320 self_: *mut whiteout_M3SplineRibbon,
24321 value: *const core::ffi::c_void,
24322 );
24323 pub fn whiteout_m3_M3SplineRibbon_get_emissionVector(
24324 self_: *mut whiteout_M3SplineRibbon,
24325 ) -> *mut core::ffi::c_void;
24326 pub fn whiteout_m3_M3SplineRibbon_set_emissionVector(
24327 self_: *mut whiteout_M3SplineRibbon,
24328 value: *const core::ffi::c_void,
24329 );
24330 pub fn whiteout_m3_M3SplineRibbon_get_velocity(
24331 self_: *mut whiteout_M3SplineRibbon,
24332 ) -> *mut whiteout_M3AnimRefF32;
24333 pub fn whiteout_m3_M3SplineRibbon_set_velocity(
24334 self_: *mut whiteout_M3SplineRibbon,
24335 value: *const whiteout_M3AnimRefF32,
24336 );
24337 pub fn whiteout_m3_M3SplineRibbon_get_reserved(self_: *mut whiteout_M3SplineRibbon) -> u32;
24338 pub fn whiteout_m3_M3SplineRibbon_set_reserved(
24339 self_: *mut whiteout_M3SplineRibbon,
24340 value: u32,
24341 );
24342 pub fn whiteout_m3_M3SplineRibbon_get_boneIndex(self_: *mut whiteout_M3SplineRibbon)
24343 -> u32;
24344 pub fn whiteout_m3_M3SplineRibbon_set_boneIndex(
24345 self_: *mut whiteout_M3SplineRibbon,
24346 value: u32,
24347 );
24348 pub fn whiteout_m3_M3SplineRibbon_get_velocityBaseFactor(
24349 self_: *mut whiteout_M3SplineRibbon,
24350 ) -> *mut whiteout_M3AnimRefF32;
24351 pub fn whiteout_m3_M3SplineRibbon_set_velocityBaseFactor(
24352 self_: *mut whiteout_M3SplineRibbon,
24353 value: *const whiteout_M3AnimRefF32,
24354 );
24355 pub fn whiteout_m3_M3SplineRibbon_get_velocityEndFactor(
24356 self_: *mut whiteout_M3SplineRibbon,
24357 ) -> *mut whiteout_M3AnimRefF32;
24358 pub fn whiteout_m3_M3SplineRibbon_set_velocityEndFactor(
24359 self_: *mut whiteout_M3SplineRibbon,
24360 value: *const whiteout_M3AnimRefF32,
24361 );
24362 pub fn whiteout_m3_M3SplineRibbon_get_yawType(self_: *mut whiteout_M3SplineRibbon) -> u32;
24363 pub fn whiteout_m3_M3SplineRibbon_set_yawType(
24364 self_: *mut whiteout_M3SplineRibbon,
24365 value: u32,
24366 );
24367 pub fn whiteout_m3_M3SplineRibbon_get_yawAmplitude(
24368 self_: *mut whiteout_M3SplineRibbon,
24369 ) -> *mut whiteout_M3AnimRefF32;
24370 pub fn whiteout_m3_M3SplineRibbon_set_yawAmplitude(
24371 self_: *mut whiteout_M3SplineRibbon,
24372 value: *const whiteout_M3AnimRefF32,
24373 );
24374 pub fn whiteout_m3_M3SplineRibbon_get_yawFrequency(
24375 self_: *mut whiteout_M3SplineRibbon,
24376 ) -> *mut whiteout_M3AnimRefF32;
24377 pub fn whiteout_m3_M3SplineRibbon_set_yawFrequency(
24378 self_: *mut whiteout_M3SplineRibbon,
24379 value: *const whiteout_M3AnimRefF32,
24380 );
24381 pub fn whiteout_m3_M3SplineRibbon_get_pitchType(self_: *mut whiteout_M3SplineRibbon)
24382 -> u32;
24383 pub fn whiteout_m3_M3SplineRibbon_set_pitchType(
24384 self_: *mut whiteout_M3SplineRibbon,
24385 value: u32,
24386 );
24387 pub fn whiteout_m3_M3SplineRibbon_get_pitchAmplitude(
24388 self_: *mut whiteout_M3SplineRibbon,
24389 ) -> *mut whiteout_M3AnimRefF32;
24390 pub fn whiteout_m3_M3SplineRibbon_set_pitchAmplitude(
24391 self_: *mut whiteout_M3SplineRibbon,
24392 value: *const whiteout_M3AnimRefF32,
24393 );
24394 pub fn whiteout_m3_M3SplineRibbon_get_pitchFrequency(
24395 self_: *mut whiteout_M3SplineRibbon,
24396 ) -> *mut whiteout_M3AnimRefF32;
24397 pub fn whiteout_m3_M3SplineRibbon_set_pitchFrequency(
24398 self_: *mut whiteout_M3SplineRibbon,
24399 value: *const whiteout_M3AnimRefF32,
24400 );
24401 pub fn whiteout_m3_M3SplineRibbon_get_velocityType(
24402 self_: *mut whiteout_M3SplineRibbon,
24403 ) -> u32;
24404 pub fn whiteout_m3_M3SplineRibbon_set_velocityType(
24405 self_: *mut whiteout_M3SplineRibbon,
24406 value: u32,
24407 );
24408 pub fn whiteout_m3_M3SplineRibbon_get_velocityAmplitude(
24409 self_: *mut whiteout_M3SplineRibbon,
24410 ) -> *mut whiteout_M3AnimRefF32;
24411 pub fn whiteout_m3_M3SplineRibbon_set_velocityAmplitude(
24412 self_: *mut whiteout_M3SplineRibbon,
24413 value: *const whiteout_M3AnimRefF32,
24414 );
24415 pub fn whiteout_m3_M3SplineRibbon_get_velocityFrequency(
24416 self_: *mut whiteout_M3SplineRibbon,
24417 ) -> *mut whiteout_M3AnimRefF32;
24418 pub fn whiteout_m3_M3SplineRibbon_set_velocityFrequency(
24419 self_: *mut whiteout_M3SplineRibbon,
24420 value: *const whiteout_M3AnimRefF32,
24421 );
24422 pub fn whiteout_m3_M3SplineRibbon_get_yaw(
24423 self_: *mut whiteout_M3SplineRibbon,
24424 ) -> *mut whiteout_M3AnimRefF32;
24425 pub fn whiteout_m3_M3SplineRibbon_set_yaw(
24426 self_: *mut whiteout_M3SplineRibbon,
24427 value: *const whiteout_M3AnimRefF32,
24428 );
24429 pub fn whiteout_m3_M3SplineRibbon_get_pitch(
24430 self_: *mut whiteout_M3SplineRibbon,
24431 ) -> *mut whiteout_M3AnimRefF32;
24432 pub fn whiteout_m3_M3SplineRibbon_set_pitch(
24433 self_: *mut whiteout_M3SplineRibbon,
24434 value: *const whiteout_M3AnimRefF32,
24435 );
24436 pub fn whiteout_m3_M3SplineRibbon_get_emissionVectorNormFactor(
24437 self_: *mut whiteout_M3SplineRibbon,
24438 ) -> f32;
24439 pub fn whiteout_m3_M3SplineRibbon_set_emissionVectorNormFactor(
24440 self_: *mut whiteout_M3SplineRibbon,
24441 value: f32,
24442 );
24443 pub fn whiteout_m3_M3SplineRibbon_get_velocityNormFactor(
24444 self_: *mut whiteout_M3SplineRibbon,
24445 ) -> f32;
24446 pub fn whiteout_m3_M3SplineRibbon_set_velocityNormFactor(
24447 self_: *mut whiteout_M3SplineRibbon,
24448 value: f32,
24449 );
24450 pub fn whiteout_m3_M3RibbonEmitter_new() -> *mut whiteout_M3RibbonEmitter;
24452 pub fn whiteout_m3_M3RibbonEmitter_delete(self_: *mut whiteout_M3RibbonEmitter);
24453 pub fn whiteout_m3_M3RibbonEmitter_get_boneIndex(
24454 self_: *mut whiteout_M3RibbonEmitter,
24455 ) -> u16;
24456 pub fn whiteout_m3_M3RibbonEmitter_set_boneIndex(
24457 self_: *mut whiteout_M3RibbonEmitter,
24458 value: u16,
24459 );
24460 pub fn whiteout_m3_M3RibbonEmitter_get_boneIndexFallback(
24461 self_: *mut whiteout_M3RibbonEmitter,
24462 ) -> u16;
24463 pub fn whiteout_m3_M3RibbonEmitter_set_boneIndexFallback(
24464 self_: *mut whiteout_M3RibbonEmitter,
24465 value: u16,
24466 );
24467 pub fn whiteout_m3_M3RibbonEmitter_get_materialIndex(
24468 self_: *mut whiteout_M3RibbonEmitter,
24469 ) -> u32;
24470 pub fn whiteout_m3_M3RibbonEmitter_set_materialIndex(
24471 self_: *mut whiteout_M3RibbonEmitter,
24472 value: u32,
24473 );
24474 pub fn whiteout_m3_M3RibbonEmitter_get_additionalFlags(
24475 self_: *mut whiteout_M3RibbonEmitter,
24476 ) -> i32;
24477 pub fn whiteout_m3_M3RibbonEmitter_set_additionalFlags(
24478 self_: *mut whiteout_M3RibbonEmitter,
24479 value: i32,
24480 );
24481 pub fn whiteout_m3_M3RibbonEmitter_get_initialSpeed(
24482 self_: *mut whiteout_M3RibbonEmitter,
24483 ) -> *mut whiteout_M3AnimRefF32;
24484 pub fn whiteout_m3_M3RibbonEmitter_set_initialSpeed(
24485 self_: *mut whiteout_M3RibbonEmitter,
24486 value: *const whiteout_M3AnimRefF32,
24487 );
24488 pub fn whiteout_m3_M3RibbonEmitter_get_initialSpeedRandom(
24489 self_: *mut whiteout_M3RibbonEmitter,
24490 ) -> *mut whiteout_M3AnimRefF32;
24491 pub fn whiteout_m3_M3RibbonEmitter_set_initialSpeedRandom(
24492 self_: *mut whiteout_M3RibbonEmitter,
24493 value: *const whiteout_M3AnimRefF32,
24494 );
24495 pub fn whiteout_m3_M3RibbonEmitter_get_initialYaw(
24496 self_: *mut whiteout_M3RibbonEmitter,
24497 ) -> *mut whiteout_M3AnimRefF32;
24498 pub fn whiteout_m3_M3RibbonEmitter_set_initialYaw(
24499 self_: *mut whiteout_M3RibbonEmitter,
24500 value: *const whiteout_M3AnimRefF32,
24501 );
24502 pub fn whiteout_m3_M3RibbonEmitter_get_initialPitch(
24503 self_: *mut whiteout_M3RibbonEmitter,
24504 ) -> *mut whiteout_M3AnimRefF32;
24505 pub fn whiteout_m3_M3RibbonEmitter_set_initialPitch(
24506 self_: *mut whiteout_M3RibbonEmitter,
24507 value: *const whiteout_M3AnimRefF32,
24508 );
24509 pub fn whiteout_m3_M3RibbonEmitter_get_initialHorizontal(
24510 self_: *mut whiteout_M3RibbonEmitter,
24511 ) -> *mut whiteout_M3AnimRefF32;
24512 pub fn whiteout_m3_M3RibbonEmitter_set_initialHorizontal(
24513 self_: *mut whiteout_M3RibbonEmitter,
24514 value: *const whiteout_M3AnimRefF32,
24515 );
24516 pub fn whiteout_m3_M3RibbonEmitter_get_initialVertical(
24517 self_: *mut whiteout_M3RibbonEmitter,
24518 ) -> *mut whiteout_M3AnimRefF32;
24519 pub fn whiteout_m3_M3RibbonEmitter_set_initialVertical(
24520 self_: *mut whiteout_M3RibbonEmitter,
24521 value: *const whiteout_M3AnimRefF32,
24522 );
24523 pub fn whiteout_m3_M3RibbonEmitter_get_lifetime(
24524 self_: *mut whiteout_M3RibbonEmitter,
24525 ) -> *mut whiteout_M3AnimRefF32;
24526 pub fn whiteout_m3_M3RibbonEmitter_set_lifetime(
24527 self_: *mut whiteout_M3RibbonEmitter,
24528 value: *const whiteout_M3AnimRefF32,
24529 );
24530 pub fn whiteout_m3_M3RibbonEmitter_get_lifetimeRandom(
24531 self_: *mut whiteout_M3RibbonEmitter,
24532 ) -> *mut whiteout_M3AnimRefF32;
24533 pub fn whiteout_m3_M3RibbonEmitter_set_lifetimeRandom(
24534 self_: *mut whiteout_M3RibbonEmitter,
24535 value: *const whiteout_M3AnimRefF32,
24536 );
24537 pub fn whiteout_m3_M3RibbonEmitter_get_killRadius(
24538 self_: *mut whiteout_M3RibbonEmitter,
24539 ) -> u32;
24540 pub fn whiteout_m3_M3RibbonEmitter_set_killRadius(
24541 self_: *mut whiteout_M3RibbonEmitter,
24542 value: u32,
24543 );
24544 pub fn whiteout_m3_M3RibbonEmitter_get_gravityX(
24545 self_: *mut whiteout_M3RibbonEmitter,
24546 ) -> f32;
24547 pub fn whiteout_m3_M3RibbonEmitter_set_gravityX(
24548 self_: *mut whiteout_M3RibbonEmitter,
24549 value: f32,
24550 );
24551 pub fn whiteout_m3_M3RibbonEmitter_get_gravityY(
24552 self_: *mut whiteout_M3RibbonEmitter,
24553 ) -> f32;
24554 pub fn whiteout_m3_M3RibbonEmitter_set_gravityY(
24555 self_: *mut whiteout_M3RibbonEmitter,
24556 value: f32,
24557 );
24558 pub fn whiteout_m3_M3RibbonEmitter_get_gravity(self_: *mut whiteout_M3RibbonEmitter)
24559 -> f32;
24560 pub fn whiteout_m3_M3RibbonEmitter_set_gravity(
24561 self_: *mut whiteout_M3RibbonEmitter,
24562 value: f32,
24563 );
24564 pub fn whiteout_m3_M3RibbonEmitter_get_sizeMidTime(
24565 self_: *mut whiteout_M3RibbonEmitter,
24566 ) -> f32;
24567 pub fn whiteout_m3_M3RibbonEmitter_set_sizeMidTime(
24568 self_: *mut whiteout_M3RibbonEmitter,
24569 value: f32,
24570 );
24571 pub fn whiteout_m3_M3RibbonEmitter_get_colorMidTime(
24572 self_: *mut whiteout_M3RibbonEmitter,
24573 ) -> f32;
24574 pub fn whiteout_m3_M3RibbonEmitter_set_colorMidTime(
24575 self_: *mut whiteout_M3RibbonEmitter,
24576 value: f32,
24577 );
24578 pub fn whiteout_m3_M3RibbonEmitter_get_alphaMidTime(
24579 self_: *mut whiteout_M3RibbonEmitter,
24580 ) -> f32;
24581 pub fn whiteout_m3_M3RibbonEmitter_set_alphaMidTime(
24582 self_: *mut whiteout_M3RibbonEmitter,
24583 value: f32,
24584 );
24585 pub fn whiteout_m3_M3RibbonEmitter_get_rotationMidTime(
24586 self_: *mut whiteout_M3RibbonEmitter,
24587 ) -> f32;
24588 pub fn whiteout_m3_M3RibbonEmitter_set_rotationMidTime(
24589 self_: *mut whiteout_M3RibbonEmitter,
24590 value: f32,
24591 );
24592 pub fn whiteout_m3_M3RibbonEmitter_get_sizeMidHoldTime(
24593 self_: *mut whiteout_M3RibbonEmitter,
24594 ) -> f32;
24595 pub fn whiteout_m3_M3RibbonEmitter_set_sizeMidHoldTime(
24596 self_: *mut whiteout_M3RibbonEmitter,
24597 value: f32,
24598 );
24599 pub fn whiteout_m3_M3RibbonEmitter_get_colorMidHoldTime(
24600 self_: *mut whiteout_M3RibbonEmitter,
24601 ) -> f32;
24602 pub fn whiteout_m3_M3RibbonEmitter_set_colorMidHoldTime(
24603 self_: *mut whiteout_M3RibbonEmitter,
24604 value: f32,
24605 );
24606 pub fn whiteout_m3_M3RibbonEmitter_get_alphaMidHoldTime(
24607 self_: *mut whiteout_M3RibbonEmitter,
24608 ) -> f32;
24609 pub fn whiteout_m3_M3RibbonEmitter_set_alphaMidHoldTime(
24610 self_: *mut whiteout_M3RibbonEmitter,
24611 value: f32,
24612 );
24613 pub fn whiteout_m3_M3RibbonEmitter_get_rotationMidHoldTime(
24614 self_: *mut whiteout_M3RibbonEmitter,
24615 ) -> f32;
24616 pub fn whiteout_m3_M3RibbonEmitter_set_rotationMidHoldTime(
24617 self_: *mut whiteout_M3RibbonEmitter,
24618 value: f32,
24619 );
24620 pub fn whiteout_m3_M3RibbonEmitter_get_sizeAnimation(
24621 self_: *mut whiteout_M3RibbonEmitter,
24622 ) -> *mut whiteout_M3AnimRefVector3f;
24623 pub fn whiteout_m3_M3RibbonEmitter_set_sizeAnimation(
24624 self_: *mut whiteout_M3RibbonEmitter,
24625 value: *const whiteout_M3AnimRefVector3f,
24626 );
24627 pub fn whiteout_m3_M3RibbonEmitter_get_rotationAnimation(
24628 self_: *mut whiteout_M3RibbonEmitter,
24629 ) -> *mut whiteout_M3AnimRefVector3f;
24630 pub fn whiteout_m3_M3RibbonEmitter_set_rotationAnimation(
24631 self_: *mut whiteout_M3RibbonEmitter,
24632 value: *const whiteout_M3AnimRefVector3f,
24633 );
24634 pub fn whiteout_m3_M3RibbonEmitter_get_colorStart(
24635 self_: *mut whiteout_M3RibbonEmitter,
24636 ) -> *mut whiteout_M3AnimRefM3ColorBGRA;
24637 pub fn whiteout_m3_M3RibbonEmitter_set_colorStart(
24638 self_: *mut whiteout_M3RibbonEmitter,
24639 value: *const whiteout_M3AnimRefM3ColorBGRA,
24640 );
24641 pub fn whiteout_m3_M3RibbonEmitter_get_colorMid(
24642 self_: *mut whiteout_M3RibbonEmitter,
24643 ) -> *mut whiteout_M3AnimRefM3ColorBGRA;
24644 pub fn whiteout_m3_M3RibbonEmitter_set_colorMid(
24645 self_: *mut whiteout_M3RibbonEmitter,
24646 value: *const whiteout_M3AnimRefM3ColorBGRA,
24647 );
24648 pub fn whiteout_m3_M3RibbonEmitter_get_colorEnd(
24649 self_: *mut whiteout_M3RibbonEmitter,
24650 ) -> *mut whiteout_M3AnimRefM3ColorBGRA;
24651 pub fn whiteout_m3_M3RibbonEmitter_set_colorEnd(
24652 self_: *mut whiteout_M3RibbonEmitter,
24653 value: *const whiteout_M3AnimRefM3ColorBGRA,
24654 );
24655 pub fn whiteout_m3_M3RibbonEmitter_get_drag(self_: *mut whiteout_M3RibbonEmitter) -> f32;
24656 pub fn whiteout_m3_M3RibbonEmitter_set_drag(
24657 self_: *mut whiteout_M3RibbonEmitter,
24658 value: f32,
24659 );
24660 pub fn whiteout_m3_M3RibbonEmitter_get_mass(self_: *mut whiteout_M3RibbonEmitter) -> f32;
24661 pub fn whiteout_m3_M3RibbonEmitter_set_mass(
24662 self_: *mut whiteout_M3RibbonEmitter,
24663 value: f32,
24664 );
24665 pub fn whiteout_m3_M3RibbonEmitter_get_massRandom(
24666 self_: *mut whiteout_M3RibbonEmitter,
24667 ) -> f32;
24668 pub fn whiteout_m3_M3RibbonEmitter_set_massRandom(
24669 self_: *mut whiteout_M3RibbonEmitter,
24670 value: f32,
24671 );
24672 pub fn whiteout_m3_M3RibbonEmitter_get_massSizeMultiplier(
24673 self_: *mut whiteout_M3RibbonEmitter,
24674 ) -> f32;
24675 pub fn whiteout_m3_M3RibbonEmitter_set_massSizeMultiplier(
24676 self_: *mut whiteout_M3RibbonEmitter,
24677 value: f32,
24678 );
24679 pub fn whiteout_m3_M3RibbonEmitter_get_localForces(
24680 self_: *mut whiteout_M3RibbonEmitter,
24681 ) -> u16;
24682 pub fn whiteout_m3_M3RibbonEmitter_set_localForces(
24683 self_: *mut whiteout_M3RibbonEmitter,
24684 value: u16,
24685 );
24686 pub fn whiteout_m3_M3RibbonEmitter_get_worldForces(
24687 self_: *mut whiteout_M3RibbonEmitter,
24688 ) -> u16;
24689 pub fn whiteout_m3_M3RibbonEmitter_set_worldForces(
24690 self_: *mut whiteout_M3RibbonEmitter,
24691 value: u16,
24692 );
24693 pub fn whiteout_m3_M3RibbonEmitter_get_localForcesFallback(
24694 self_: *mut whiteout_M3RibbonEmitter,
24695 ) -> u16;
24696 pub fn whiteout_m3_M3RibbonEmitter_set_localForcesFallback(
24697 self_: *mut whiteout_M3RibbonEmitter,
24698 value: u16,
24699 );
24700 pub fn whiteout_m3_M3RibbonEmitter_get_worldForcesFallback(
24701 self_: *mut whiteout_M3RibbonEmitter,
24702 ) -> u16;
24703 pub fn whiteout_m3_M3RibbonEmitter_set_worldForcesFallback(
24704 self_: *mut whiteout_M3RibbonEmitter,
24705 value: u16,
24706 );
24707 pub fn whiteout_m3_M3RibbonEmitter_get_worldForcesMassMultiplier(
24708 self_: *mut whiteout_M3RibbonEmitter,
24709 ) -> f32;
24710 pub fn whiteout_m3_M3RibbonEmitter_set_worldForcesMassMultiplier(
24711 self_: *mut whiteout_M3RibbonEmitter,
24712 value: f32,
24713 );
24714 pub fn whiteout_m3_M3RibbonEmitter_get_noiseAmplitude(
24715 self_: *mut whiteout_M3RibbonEmitter,
24716 ) -> f32;
24717 pub fn whiteout_m3_M3RibbonEmitter_set_noiseAmplitude(
24718 self_: *mut whiteout_M3RibbonEmitter,
24719 value: f32,
24720 );
24721 pub fn whiteout_m3_M3RibbonEmitter_get_noiseFrequency(
24722 self_: *mut whiteout_M3RibbonEmitter,
24723 ) -> f32;
24724 pub fn whiteout_m3_M3RibbonEmitter_set_noiseFrequency(
24725 self_: *mut whiteout_M3RibbonEmitter,
24726 value: f32,
24727 );
24728 pub fn whiteout_m3_M3RibbonEmitter_get_noiseCoherence(
24729 self_: *mut whiteout_M3RibbonEmitter,
24730 ) -> f32;
24731 pub fn whiteout_m3_M3RibbonEmitter_set_noiseCoherence(
24732 self_: *mut whiteout_M3RibbonEmitter,
24733 value: f32,
24734 );
24735 pub fn whiteout_m3_M3RibbonEmitter_get_noiseEdge(
24736 self_: *mut whiteout_M3RibbonEmitter,
24737 ) -> f32;
24738 pub fn whiteout_m3_M3RibbonEmitter_set_noiseEdge(
24739 self_: *mut whiteout_M3RibbonEmitter,
24740 value: f32,
24741 );
24742 pub fn whiteout_m3_M3RibbonEmitter_get_indexPlusLength(
24743 self_: *mut whiteout_M3RibbonEmitter,
24744 ) -> u32;
24745 pub fn whiteout_m3_M3RibbonEmitter_set_indexPlusLength(
24746 self_: *mut whiteout_M3RibbonEmitter,
24747 value: u32,
24748 );
24749 pub fn whiteout_m3_M3RibbonEmitter_get_emitterShape(
24750 self_: *mut whiteout_M3RibbonEmitter,
24751 ) -> u32;
24752 pub fn whiteout_m3_M3RibbonEmitter_set_emitterShape(
24753 self_: *mut whiteout_M3RibbonEmitter,
24754 value: u32,
24755 );
24756 pub fn whiteout_m3_M3RibbonEmitter_get_ribbonType(
24757 self_: *mut whiteout_M3RibbonEmitter,
24758 ) -> i32;
24759 pub fn whiteout_m3_M3RibbonEmitter_set_ribbonType(
24760 self_: *mut whiteout_M3RibbonEmitter,
24761 value: i32,
24762 );
24763 pub fn whiteout_m3_M3RibbonEmitter_get_divisions(
24764 self_: *mut whiteout_M3RibbonEmitter,
24765 ) -> f32;
24766 pub fn whiteout_m3_M3RibbonEmitter_set_divisions(
24767 self_: *mut whiteout_M3RibbonEmitter,
24768 value: f32,
24769 );
24770 pub fn whiteout_m3_M3RibbonEmitter_get_edges(self_: *mut whiteout_M3RibbonEmitter) -> u32;
24771 pub fn whiteout_m3_M3RibbonEmitter_set_edges(
24772 self_: *mut whiteout_M3RibbonEmitter,
24773 value: u32,
24774 );
24775 pub fn whiteout_m3_M3RibbonEmitter_get_innerRadius(
24776 self_: *mut whiteout_M3RibbonEmitter,
24777 ) -> f32;
24778 pub fn whiteout_m3_M3RibbonEmitter_set_innerRadius(
24779 self_: *mut whiteout_M3RibbonEmitter,
24780 value: f32,
24781 );
24782 pub fn whiteout_m3_M3RibbonEmitter_get_maxLength(
24783 self_: *mut whiteout_M3RibbonEmitter,
24784 ) -> *mut whiteout_M3AnimRefF32;
24785 pub fn whiteout_m3_M3RibbonEmitter_set_maxLength(
24786 self_: *mut whiteout_M3RibbonEmitter,
24787 value: *const whiteout_M3AnimRefF32,
24788 );
24789 pub fn whiteout_m3_M3RibbonEmitter_get_splineRibbons_count(
24790 self_: *mut whiteout_M3RibbonEmitter,
24791 ) -> usize;
24792 pub fn whiteout_m3_M3RibbonEmitter_resize_splineRibbons(
24793 self_: *mut whiteout_M3RibbonEmitter,
24794 count: usize,
24795 );
24796 pub fn whiteout_m3_M3RibbonEmitter_get_splineRibbons_at(
24797 self_: *mut whiteout_M3RibbonEmitter,
24798 index: usize,
24799 ) -> *mut whiteout_M3SplineRibbon;
24800 pub fn whiteout_m3_M3RibbonEmitter_get_active(
24801 self_: *mut whiteout_M3RibbonEmitter,
24802 ) -> *mut whiteout_M3AnimRefU32;
24803 pub fn whiteout_m3_M3RibbonEmitter_set_active(
24804 self_: *mut whiteout_M3RibbonEmitter,
24805 value: *const whiteout_M3AnimRefU32,
24806 );
24807 pub fn whiteout_m3_M3RibbonEmitter_get_flags(self_: *mut whiteout_M3RibbonEmitter) -> i32;
24808 pub fn whiteout_m3_M3RibbonEmitter_set_flags(
24809 self_: *mut whiteout_M3RibbonEmitter,
24810 value: i32,
24811 );
24812 pub fn whiteout_m3_M3RibbonEmitter_get_sizeSmoothing(
24813 self_: *mut whiteout_M3RibbonEmitter,
24814 ) -> i32;
24815 pub fn whiteout_m3_M3RibbonEmitter_set_sizeSmoothing(
24816 self_: *mut whiteout_M3RibbonEmitter,
24817 value: i32,
24818 );
24819 pub fn whiteout_m3_M3RibbonEmitter_get_colorSmoothing(
24820 self_: *mut whiteout_M3RibbonEmitter,
24821 ) -> i32;
24822 pub fn whiteout_m3_M3RibbonEmitter_set_colorSmoothing(
24823 self_: *mut whiteout_M3RibbonEmitter,
24824 value: i32,
24825 );
24826 pub fn whiteout_m3_M3RibbonEmitter_get_friction(
24827 self_: *mut whiteout_M3RibbonEmitter,
24828 ) -> f32;
24829 pub fn whiteout_m3_M3RibbonEmitter_set_friction(
24830 self_: *mut whiteout_M3RibbonEmitter,
24831 value: f32,
24832 );
24833 pub fn whiteout_m3_M3RibbonEmitter_get_bounce(self_: *mut whiteout_M3RibbonEmitter) -> f32;
24834 pub fn whiteout_m3_M3RibbonEmitter_set_bounce(
24835 self_: *mut whiteout_M3RibbonEmitter,
24836 value: f32,
24837 );
24838 pub fn whiteout_m3_M3RibbonEmitter_get_lodReduce(
24839 self_: *mut whiteout_M3RibbonEmitter,
24840 ) -> u32;
24841 pub fn whiteout_m3_M3RibbonEmitter_set_lodReduce(
24842 self_: *mut whiteout_M3RibbonEmitter,
24843 value: u32,
24844 );
24845 pub fn whiteout_m3_M3RibbonEmitter_get_lodCut(self_: *mut whiteout_M3RibbonEmitter) -> u32;
24846 pub fn whiteout_m3_M3RibbonEmitter_set_lodCut(
24847 self_: *mut whiteout_M3RibbonEmitter,
24848 value: u32,
24849 );
24850 pub fn whiteout_m3_M3RibbonEmitter_get_yawType(self_: *mut whiteout_M3RibbonEmitter)
24851 -> u32;
24852 pub fn whiteout_m3_M3RibbonEmitter_set_yawType(
24853 self_: *mut whiteout_M3RibbonEmitter,
24854 value: u32,
24855 );
24856 pub fn whiteout_m3_M3RibbonEmitter_get_yawAmplitude(
24857 self_: *mut whiteout_M3RibbonEmitter,
24858 ) -> *mut whiteout_M3AnimRefF32;
24859 pub fn whiteout_m3_M3RibbonEmitter_set_yawAmplitude(
24860 self_: *mut whiteout_M3RibbonEmitter,
24861 value: *const whiteout_M3AnimRefF32,
24862 );
24863 pub fn whiteout_m3_M3RibbonEmitter_get_yawFrequency(
24864 self_: *mut whiteout_M3RibbonEmitter,
24865 ) -> *mut whiteout_M3AnimRefF32;
24866 pub fn whiteout_m3_M3RibbonEmitter_set_yawFrequency(
24867 self_: *mut whiteout_M3RibbonEmitter,
24868 value: *const whiteout_M3AnimRefF32,
24869 );
24870 pub fn whiteout_m3_M3RibbonEmitter_get_pitchType(
24871 self_: *mut whiteout_M3RibbonEmitter,
24872 ) -> u32;
24873 pub fn whiteout_m3_M3RibbonEmitter_set_pitchType(
24874 self_: *mut whiteout_M3RibbonEmitter,
24875 value: u32,
24876 );
24877 pub fn whiteout_m3_M3RibbonEmitter_get_pitchAmplitude(
24878 self_: *mut whiteout_M3RibbonEmitter,
24879 ) -> *mut whiteout_M3AnimRefF32;
24880 pub fn whiteout_m3_M3RibbonEmitter_set_pitchAmplitude(
24881 self_: *mut whiteout_M3RibbonEmitter,
24882 value: *const whiteout_M3AnimRefF32,
24883 );
24884 pub fn whiteout_m3_M3RibbonEmitter_get_pitchFrequency(
24885 self_: *mut whiteout_M3RibbonEmitter,
24886 ) -> *mut whiteout_M3AnimRefF32;
24887 pub fn whiteout_m3_M3RibbonEmitter_set_pitchFrequency(
24888 self_: *mut whiteout_M3RibbonEmitter,
24889 value: *const whiteout_M3AnimRefF32,
24890 );
24891 pub fn whiteout_m3_M3RibbonEmitter_get_speedType(
24892 self_: *mut whiteout_M3RibbonEmitter,
24893 ) -> u32;
24894 pub fn whiteout_m3_M3RibbonEmitter_set_speedType(
24895 self_: *mut whiteout_M3RibbonEmitter,
24896 value: u32,
24897 );
24898 pub fn whiteout_m3_M3RibbonEmitter_get_speedAmplitude(
24899 self_: *mut whiteout_M3RibbonEmitter,
24900 ) -> *mut whiteout_M3AnimRefF32;
24901 pub fn whiteout_m3_M3RibbonEmitter_set_speedAmplitude(
24902 self_: *mut whiteout_M3RibbonEmitter,
24903 value: *const whiteout_M3AnimRefF32,
24904 );
24905 pub fn whiteout_m3_M3RibbonEmitter_get_speedFrequency(
24906 self_: *mut whiteout_M3RibbonEmitter,
24907 ) -> *mut whiteout_M3AnimRefF32;
24908 pub fn whiteout_m3_M3RibbonEmitter_set_speedFrequency(
24909 self_: *mut whiteout_M3RibbonEmitter,
24910 value: *const whiteout_M3AnimRefF32,
24911 );
24912 pub fn whiteout_m3_M3RibbonEmitter_get_sizeType(
24913 self_: *mut whiteout_M3RibbonEmitter,
24914 ) -> u32;
24915 pub fn whiteout_m3_M3RibbonEmitter_set_sizeType(
24916 self_: *mut whiteout_M3RibbonEmitter,
24917 value: u32,
24918 );
24919 pub fn whiteout_m3_M3RibbonEmitter_get_sizeAmplitude(
24920 self_: *mut whiteout_M3RibbonEmitter,
24921 ) -> *mut whiteout_M3AnimRefF32;
24922 pub fn whiteout_m3_M3RibbonEmitter_set_sizeAmplitude(
24923 self_: *mut whiteout_M3RibbonEmitter,
24924 value: *const whiteout_M3AnimRefF32,
24925 );
24926 pub fn whiteout_m3_M3RibbonEmitter_get_sizeFrequency(
24927 self_: *mut whiteout_M3RibbonEmitter,
24928 ) -> *mut whiteout_M3AnimRefF32;
24929 pub fn whiteout_m3_M3RibbonEmitter_set_sizeFrequency(
24930 self_: *mut whiteout_M3RibbonEmitter,
24931 value: *const whiteout_M3AnimRefF32,
24932 );
24933 pub fn whiteout_m3_M3RibbonEmitter_get_alphaType(
24934 self_: *mut whiteout_M3RibbonEmitter,
24935 ) -> u32;
24936 pub fn whiteout_m3_M3RibbonEmitter_set_alphaType(
24937 self_: *mut whiteout_M3RibbonEmitter,
24938 value: u32,
24939 );
24940 pub fn whiteout_m3_M3RibbonEmitter_get_alphaAmplitude(
24941 self_: *mut whiteout_M3RibbonEmitter,
24942 ) -> *mut whiteout_M3AnimRefF32;
24943 pub fn whiteout_m3_M3RibbonEmitter_set_alphaAmplitude(
24944 self_: *mut whiteout_M3RibbonEmitter,
24945 value: *const whiteout_M3AnimRefF32,
24946 );
24947 pub fn whiteout_m3_M3RibbonEmitter_get_alphaFrequency(
24948 self_: *mut whiteout_M3RibbonEmitter,
24949 ) -> *mut whiteout_M3AnimRefF32;
24950 pub fn whiteout_m3_M3RibbonEmitter_set_alphaFrequency(
24951 self_: *mut whiteout_M3RibbonEmitter,
24952 value: *const whiteout_M3AnimRefF32,
24953 );
24954 pub fn whiteout_m3_M3RibbonEmitter_get_particleVelocity(
24955 self_: *mut whiteout_M3RibbonEmitter,
24956 ) -> *mut whiteout_M3AnimRefF32;
24957 pub fn whiteout_m3_M3RibbonEmitter_set_particleVelocity(
24958 self_: *mut whiteout_M3RibbonEmitter,
24959 value: *const whiteout_M3AnimRefF32,
24960 );
24961 pub fn whiteout_m3_M3RibbonEmitter_get_overlay(
24962 self_: *mut whiteout_M3RibbonEmitter,
24963 ) -> *mut whiteout_M3AnimRefF32;
24964 pub fn whiteout_m3_M3RibbonEmitter_set_overlay(
24965 self_: *mut whiteout_M3RibbonEmitter,
24966 value: *const whiteout_M3AnimRefF32,
24967 );
24968 pub fn whiteout_m3_M3Projector_new() -> *mut whiteout_M3Projector;
24970 pub fn whiteout_m3_M3Projector_delete(self_: *mut whiteout_M3Projector);
24971 pub fn whiteout_m3_M3Projector_get_projectionType(self_: *mut whiteout_M3Projector) -> i32;
24972 pub fn whiteout_m3_M3Projector_set_projectionType(
24973 self_: *mut whiteout_M3Projector,
24974 value: i32,
24975 );
24976 pub fn whiteout_m3_M3Projector_get_bone(self_: *mut whiteout_M3Projector) -> u32;
24977 pub fn whiteout_m3_M3Projector_set_bone(self_: *mut whiteout_M3Projector, value: u32);
24978 pub fn whiteout_m3_M3Projector_get_materialReferenceIndex(
24979 self_: *mut whiteout_M3Projector,
24980 ) -> u32;
24981 pub fn whiteout_m3_M3Projector_set_materialReferenceIndex(
24982 self_: *mut whiteout_M3Projector,
24983 value: u32,
24984 );
24985 pub fn whiteout_m3_M3Projector_get_offset(
24986 self_: *mut whiteout_M3Projector,
24987 ) -> *mut whiteout_M3AnimRefVector3f;
24988 pub fn whiteout_m3_M3Projector_set_offset(
24989 self_: *mut whiteout_M3Projector,
24990 value: *const whiteout_M3AnimRefVector3f,
24991 );
24992 pub fn whiteout_m3_M3Projector_get_pitch(
24993 self_: *mut whiteout_M3Projector,
24994 ) -> *mut whiteout_M3AnimRefF32;
24995 pub fn whiteout_m3_M3Projector_set_pitch(
24996 self_: *mut whiteout_M3Projector,
24997 value: *const whiteout_M3AnimRefF32,
24998 );
24999 pub fn whiteout_m3_M3Projector_get_yaw(
25000 self_: *mut whiteout_M3Projector,
25001 ) -> *mut whiteout_M3AnimRefF32;
25002 pub fn whiteout_m3_M3Projector_set_yaw(
25003 self_: *mut whiteout_M3Projector,
25004 value: *const whiteout_M3AnimRefF32,
25005 );
25006 pub fn whiteout_m3_M3Projector_get_roll(
25007 self_: *mut whiteout_M3Projector,
25008 ) -> *mut whiteout_M3AnimRefF32;
25009 pub fn whiteout_m3_M3Projector_set_roll(
25010 self_: *mut whiteout_M3Projector,
25011 value: *const whiteout_M3AnimRefF32,
25012 );
25013 pub fn whiteout_m3_M3Projector_get_fieldOfView(
25014 self_: *mut whiteout_M3Projector,
25015 ) -> *mut whiteout_M3AnimRefF32;
25016 pub fn whiteout_m3_M3Projector_set_fieldOfView(
25017 self_: *mut whiteout_M3Projector,
25018 value: *const whiteout_M3AnimRefF32,
25019 );
25020 pub fn whiteout_m3_M3Projector_get_aspectRatio(
25021 self_: *mut whiteout_M3Projector,
25022 ) -> *mut whiteout_M3AnimRefF32;
25023 pub fn whiteout_m3_M3Projector_set_aspectRatio(
25024 self_: *mut whiteout_M3Projector,
25025 value: *const whiteout_M3AnimRefF32,
25026 );
25027 pub fn whiteout_m3_M3Projector_get_near(
25028 self_: *mut whiteout_M3Projector,
25029 ) -> *mut whiteout_M3AnimRefF32;
25030 pub fn whiteout_m3_M3Projector_set_near(
25031 self_: *mut whiteout_M3Projector,
25032 value: *const whiteout_M3AnimRefF32,
25033 );
25034 pub fn whiteout_m3_M3Projector_get_far(
25035 self_: *mut whiteout_M3Projector,
25036 ) -> *mut whiteout_M3AnimRefF32;
25037 pub fn whiteout_m3_M3Projector_set_far(
25038 self_: *mut whiteout_M3Projector,
25039 value: *const whiteout_M3AnimRefF32,
25040 );
25041 pub fn whiteout_m3_M3Projector_get_boxOffsetZBottom(
25042 self_: *mut whiteout_M3Projector,
25043 ) -> *mut whiteout_M3AnimRefF32;
25044 pub fn whiteout_m3_M3Projector_set_boxOffsetZBottom(
25045 self_: *mut whiteout_M3Projector,
25046 value: *const whiteout_M3AnimRefF32,
25047 );
25048 pub fn whiteout_m3_M3Projector_get_boxOffsetZTop(
25049 self_: *mut whiteout_M3Projector,
25050 ) -> *mut whiteout_M3AnimRefF32;
25051 pub fn whiteout_m3_M3Projector_set_boxOffsetZTop(
25052 self_: *mut whiteout_M3Projector,
25053 value: *const whiteout_M3AnimRefF32,
25054 );
25055 pub fn whiteout_m3_M3Projector_get_boxOffsetXLeft(
25056 self_: *mut whiteout_M3Projector,
25057 ) -> *mut whiteout_M3AnimRefF32;
25058 pub fn whiteout_m3_M3Projector_set_boxOffsetXLeft(
25059 self_: *mut whiteout_M3Projector,
25060 value: *const whiteout_M3AnimRefF32,
25061 );
25062 pub fn whiteout_m3_M3Projector_get_boxOffsetXRight(
25063 self_: *mut whiteout_M3Projector,
25064 ) -> *mut whiteout_M3AnimRefF32;
25065 pub fn whiteout_m3_M3Projector_set_boxOffsetXRight(
25066 self_: *mut whiteout_M3Projector,
25067 value: *const whiteout_M3AnimRefF32,
25068 );
25069 pub fn whiteout_m3_M3Projector_get_boxOffsetYFront(
25070 self_: *mut whiteout_M3Projector,
25071 ) -> *mut whiteout_M3AnimRefF32;
25072 pub fn whiteout_m3_M3Projector_set_boxOffsetYFront(
25073 self_: *mut whiteout_M3Projector,
25074 value: *const whiteout_M3AnimRefF32,
25075 );
25076 pub fn whiteout_m3_M3Projector_get_boxOffsetYBack(
25077 self_: *mut whiteout_M3Projector,
25078 ) -> *mut whiteout_M3AnimRefF32;
25079 pub fn whiteout_m3_M3Projector_set_boxOffsetYBack(
25080 self_: *mut whiteout_M3Projector,
25081 value: *const whiteout_M3AnimRefF32,
25082 );
25083 pub fn whiteout_m3_M3Projector_get_falloff(self_: *mut whiteout_M3Projector) -> f32;
25084 pub fn whiteout_m3_M3Projector_set_falloff(self_: *mut whiteout_M3Projector, value: f32);
25085 pub fn whiteout_m3_M3Projector_get_alphaInit(self_: *mut whiteout_M3Projector) -> f32;
25086 pub fn whiteout_m3_M3Projector_set_alphaInit(self_: *mut whiteout_M3Projector, value: f32);
25087 pub fn whiteout_m3_M3Projector_get_alphaMid(self_: *mut whiteout_M3Projector) -> f32;
25088 pub fn whiteout_m3_M3Projector_set_alphaMid(self_: *mut whiteout_M3Projector, value: f32);
25089 pub fn whiteout_m3_M3Projector_get_alphaEnd(self_: *mut whiteout_M3Projector) -> f32;
25090 pub fn whiteout_m3_M3Projector_set_alphaEnd(self_: *mut whiteout_M3Projector, value: f32);
25091 pub fn whiteout_m3_M3Projector_get_lifetimeAttack(self_: *mut whiteout_M3Projector) -> f32;
25092 pub fn whiteout_m3_M3Projector_set_lifetimeAttack(
25093 self_: *mut whiteout_M3Projector,
25094 value: f32,
25095 );
25096 pub fn whiteout_m3_M3Projector_get_lifetimeAttackTo(
25097 self_: *mut whiteout_M3Projector,
25098 ) -> f32;
25099 pub fn whiteout_m3_M3Projector_set_lifetimeAttackTo(
25100 self_: *mut whiteout_M3Projector,
25101 value: f32,
25102 );
25103 pub fn whiteout_m3_M3Projector_get_lifetimeHold(self_: *mut whiteout_M3Projector) -> f32;
25104 pub fn whiteout_m3_M3Projector_set_lifetimeHold(
25105 self_: *mut whiteout_M3Projector,
25106 value: f32,
25107 );
25108 pub fn whiteout_m3_M3Projector_get_lifetimeHoldTo(self_: *mut whiteout_M3Projector) -> f32;
25109 pub fn whiteout_m3_M3Projector_set_lifetimeHoldTo(
25110 self_: *mut whiteout_M3Projector,
25111 value: f32,
25112 );
25113 pub fn whiteout_m3_M3Projector_get_lifetimeDecay(self_: *mut whiteout_M3Projector) -> f32;
25114 pub fn whiteout_m3_M3Projector_set_lifetimeDecay(
25115 self_: *mut whiteout_M3Projector,
25116 value: f32,
25117 );
25118 pub fn whiteout_m3_M3Projector_get_lifetimeDecayTo(self_: *mut whiteout_M3Projector)
25119 -> f32;
25120 pub fn whiteout_m3_M3Projector_set_lifetimeDecayTo(
25121 self_: *mut whiteout_M3Projector,
25122 value: f32,
25123 );
25124 pub fn whiteout_m3_M3Projector_get_attenuationDistance(
25125 self_: *mut whiteout_M3Projector,
25126 ) -> f32;
25127 pub fn whiteout_m3_M3Projector_set_attenuationDistance(
25128 self_: *mut whiteout_M3Projector,
25129 value: f32,
25130 );
25131 pub fn whiteout_m3_M3Projector_get_active(
25132 self_: *mut whiteout_M3Projector,
25133 ) -> *mut whiteout_M3AnimRefU32;
25134 pub fn whiteout_m3_M3Projector_set_active(
25135 self_: *mut whiteout_M3Projector,
25136 value: *const whiteout_M3AnimRefU32,
25137 );
25138 pub fn whiteout_m3_M3Projector_get_layer(self_: *mut whiteout_M3Projector) -> u32;
25139 pub fn whiteout_m3_M3Projector_set_layer(self_: *mut whiteout_M3Projector, value: u32);
25140 pub fn whiteout_m3_M3Projector_get_lodReduce(self_: *mut whiteout_M3Projector) -> u32;
25141 pub fn whiteout_m3_M3Projector_set_lodReduce(self_: *mut whiteout_M3Projector, value: u32);
25142 pub fn whiteout_m3_M3Projector_get_lodCut(self_: *mut whiteout_M3Projector) -> u32;
25143 pub fn whiteout_m3_M3Projector_set_lodCut(self_: *mut whiteout_M3Projector, value: u32);
25144 pub fn whiteout_m3_M3Projector_get_flags(self_: *mut whiteout_M3Projector) -> i32;
25145 pub fn whiteout_m3_M3Projector_set_flags(self_: *mut whiteout_M3Projector, value: i32);
25146 pub fn whiteout_m3_M3MaterialMap_new() -> *mut whiteout_M3MaterialMap;
25148 pub fn whiteout_m3_M3MaterialMap_delete(self_: *mut whiteout_M3MaterialMap);
25149 pub fn whiteout_m3_M3MaterialMap_get_materialType(
25150 self_: *mut whiteout_M3MaterialMap,
25151 ) -> i32;
25152 pub fn whiteout_m3_M3MaterialMap_set_materialType(
25153 self_: *mut whiteout_M3MaterialMap,
25154 value: i32,
25155 );
25156 pub fn whiteout_m3_M3MaterialMap_get_materialIndex(
25157 self_: *mut whiteout_M3MaterialMap,
25158 ) -> u32;
25159 pub fn whiteout_m3_M3MaterialMap_set_materialIndex(
25160 self_: *mut whiteout_M3MaterialMap,
25161 value: u32,
25162 );
25163 pub fn whiteout_m3_M3TextureLayer_new() -> *mut whiteout_M3TextureLayer;
25165 pub fn whiteout_m3_M3TextureLayer_delete(self_: *mut whiteout_M3TextureLayer);
25166 pub fn whiteout_m3_M3TextureLayer_get_id(self_: *mut whiteout_M3TextureLayer) -> u32;
25167 pub fn whiteout_m3_M3TextureLayer_set_id(self_: *mut whiteout_M3TextureLayer, value: u32);
25168 pub fn whiteout_m3_M3TextureLayer_get_texturePath(
25169 self_: *mut whiteout_M3TextureLayer,
25170 ) -> RawCString;
25171 pub fn whiteout_m3_M3TextureLayer_set_texturePath(
25172 self_: *mut whiteout_M3TextureLayer,
25173 value: *const core::ffi::c_char,
25174 );
25175 pub fn whiteout_m3_M3TextureLayer_get_color(
25176 self_: *mut whiteout_M3TextureLayer,
25177 ) -> *mut whiteout_M3AnimRefM3ColorBGRA;
25178 pub fn whiteout_m3_M3TextureLayer_set_color(
25179 self_: *mut whiteout_M3TextureLayer,
25180 value: *const whiteout_M3AnimRefM3ColorBGRA,
25181 );
25182 pub fn whiteout_m3_M3TextureLayer_get_flags(self_: *mut whiteout_M3TextureLayer) -> i32;
25183 pub fn whiteout_m3_M3TextureLayer_set_flags(
25184 self_: *mut whiteout_M3TextureLayer,
25185 value: i32,
25186 );
25187 pub fn whiteout_m3_M3TextureLayer_get_uvMapping(self_: *mut whiteout_M3TextureLayer)
25188 -> i32;
25189 pub fn whiteout_m3_M3TextureLayer_set_uvMapping(
25190 self_: *mut whiteout_M3TextureLayer,
25191 value: i32,
25192 );
25193 pub fn whiteout_m3_M3TextureLayer_get_colorType(self_: *mut whiteout_M3TextureLayer)
25194 -> i32;
25195 pub fn whiteout_m3_M3TextureLayer_set_colorType(
25196 self_: *mut whiteout_M3TextureLayer,
25197 value: i32,
25198 );
25199 pub fn whiteout_m3_M3TextureLayer_get_rgbMultiply(
25200 self_: *mut whiteout_M3TextureLayer,
25201 ) -> *mut whiteout_M3AnimRefF32;
25202 pub fn whiteout_m3_M3TextureLayer_set_rgbMultiply(
25203 self_: *mut whiteout_M3TextureLayer,
25204 value: *const whiteout_M3AnimRefF32,
25205 );
25206 pub fn whiteout_m3_M3TextureLayer_get_rgbAdd(
25207 self_: *mut whiteout_M3TextureLayer,
25208 ) -> *mut whiteout_M3AnimRefF32;
25209 pub fn whiteout_m3_M3TextureLayer_set_rgbAdd(
25210 self_: *mut whiteout_M3TextureLayer,
25211 value: *const whiteout_M3AnimRefF32,
25212 );
25213 pub fn whiteout_m3_M3TextureLayer_get_pocTexture(
25214 self_: *mut whiteout_M3TextureLayer,
25215 ) -> u32;
25216 pub fn whiteout_m3_M3TextureLayer_set_pocTexture(
25217 self_: *mut whiteout_M3TextureLayer,
25218 value: u32,
25219 );
25220 pub fn whiteout_m3_M3TextureLayer_get_noiseAmplitude(
25221 self_: *mut whiteout_M3TextureLayer,
25222 ) -> f32;
25223 pub fn whiteout_m3_M3TextureLayer_set_noiseAmplitude(
25224 self_: *mut whiteout_M3TextureLayer,
25225 value: f32,
25226 );
25227 pub fn whiteout_m3_M3TextureLayer_get_noiseFrequency(
25228 self_: *mut whiteout_M3TextureLayer,
25229 ) -> f32;
25230 pub fn whiteout_m3_M3TextureLayer_set_noiseFrequency(
25231 self_: *mut whiteout_M3TextureLayer,
25232 value: f32,
25233 );
25234 pub fn whiteout_m3_M3TextureLayer_get_textureSource(
25235 self_: *mut whiteout_M3TextureLayer,
25236 ) -> u32;
25237 pub fn whiteout_m3_M3TextureLayer_set_textureSource(
25238 self_: *mut whiteout_M3TextureLayer,
25239 value: u32,
25240 );
25241 pub fn whiteout_m3_M3TextureLayer_get_aviFrameRate(
25242 self_: *mut whiteout_M3TextureLayer,
25243 ) -> u32;
25244 pub fn whiteout_m3_M3TextureLayer_set_aviFrameRate(
25245 self_: *mut whiteout_M3TextureLayer,
25246 value: u32,
25247 );
25248 pub fn whiteout_m3_M3TextureLayer_get_aviStart(self_: *mut whiteout_M3TextureLayer) -> u32;
25249 pub fn whiteout_m3_M3TextureLayer_set_aviStart(
25250 self_: *mut whiteout_M3TextureLayer,
25251 value: u32,
25252 );
25253 pub fn whiteout_m3_M3TextureLayer_get_aviStop(self_: *mut whiteout_M3TextureLayer) -> u32;
25254 pub fn whiteout_m3_M3TextureLayer_set_aviStop(
25255 self_: *mut whiteout_M3TextureLayer,
25256 value: u32,
25257 );
25258 pub fn whiteout_m3_M3TextureLayer_get_aviLoop(self_: *mut whiteout_M3TextureLayer) -> u32;
25259 pub fn whiteout_m3_M3TextureLayer_set_aviLoop(
25260 self_: *mut whiteout_M3TextureLayer,
25261 value: u32,
25262 );
25263 pub fn whiteout_m3_M3TextureLayer_get_aviSync(self_: *mut whiteout_M3TextureLayer) -> u32;
25264 pub fn whiteout_m3_M3TextureLayer_set_aviSync(
25265 self_: *mut whiteout_M3TextureLayer,
25266 value: u32,
25267 );
25268 pub fn whiteout_m3_M3TextureLayer_get_aviPlay(
25269 self_: *mut whiteout_M3TextureLayer,
25270 ) -> *mut whiteout_M3AnimRefU32;
25271 pub fn whiteout_m3_M3TextureLayer_set_aviPlay(
25272 self_: *mut whiteout_M3TextureLayer,
25273 value: *const whiteout_M3AnimRefU32,
25274 );
25275 pub fn whiteout_m3_M3TextureLayer_get_aviRestart(
25276 self_: *mut whiteout_M3TextureLayer,
25277 ) -> *mut whiteout_M3AnimRefU32;
25278 pub fn whiteout_m3_M3TextureLayer_set_aviRestart(
25279 self_: *mut whiteout_M3TextureLayer,
25280 value: *const whiteout_M3AnimRefU32,
25281 );
25282 pub fn whiteout_m3_M3TextureLayer_get_flipbookRows(
25283 self_: *mut whiteout_M3TextureLayer,
25284 ) -> u32;
25285 pub fn whiteout_m3_M3TextureLayer_set_flipbookRows(
25286 self_: *mut whiteout_M3TextureLayer,
25287 value: u32,
25288 );
25289 pub fn whiteout_m3_M3TextureLayer_get_flipbookColumns(
25290 self_: *mut whiteout_M3TextureLayer,
25291 ) -> u32;
25292 pub fn whiteout_m3_M3TextureLayer_set_flipbookColumns(
25293 self_: *mut whiteout_M3TextureLayer,
25294 value: u32,
25295 );
25296 pub fn whiteout_m3_M3TextureLayer_get_currentFrame(
25297 self_: *mut whiteout_M3TextureLayer,
25298 ) -> *mut whiteout_M3AnimRefU16;
25299 pub fn whiteout_m3_M3TextureLayer_set_currentFrame(
25300 self_: *mut whiteout_M3TextureLayer,
25301 value: *const whiteout_M3AnimRefU16,
25302 );
25303 pub fn whiteout_m3_M3TextureLayer_get_uvOffset(
25304 self_: *mut whiteout_M3TextureLayer,
25305 ) -> *mut whiteout_M3AnimRefVector2f;
25306 pub fn whiteout_m3_M3TextureLayer_set_uvOffset(
25307 self_: *mut whiteout_M3TextureLayer,
25308 value: *const whiteout_M3AnimRefVector2f,
25309 );
25310 pub fn whiteout_m3_M3TextureLayer_get_uvAngle(
25311 self_: *mut whiteout_M3TextureLayer,
25312 ) -> *mut whiteout_M3AnimRefVector3f;
25313 pub fn whiteout_m3_M3TextureLayer_set_uvAngle(
25314 self_: *mut whiteout_M3TextureLayer,
25315 value: *const whiteout_M3AnimRefVector3f,
25316 );
25317 pub fn whiteout_m3_M3TextureLayer_get_uvTiling(
25318 self_: *mut whiteout_M3TextureLayer,
25319 ) -> *mut whiteout_M3AnimRefVector2f;
25320 pub fn whiteout_m3_M3TextureLayer_set_uvTiling(
25321 self_: *mut whiteout_M3TextureLayer,
25322 value: *const whiteout_M3AnimRefVector2f,
25323 );
25324 pub fn whiteout_m3_M3TextureLayer_get_wOffset(
25325 self_: *mut whiteout_M3TextureLayer,
25326 ) -> *mut whiteout_M3AnimRefF32;
25327 pub fn whiteout_m3_M3TextureLayer_set_wOffset(
25328 self_: *mut whiteout_M3TextureLayer,
25329 value: *const whiteout_M3AnimRefF32,
25330 );
25331 pub fn whiteout_m3_M3TextureLayer_get_wTiling(
25332 self_: *mut whiteout_M3TextureLayer,
25333 ) -> *mut whiteout_M3AnimRefF32;
25334 pub fn whiteout_m3_M3TextureLayer_set_wTiling(
25335 self_: *mut whiteout_M3TextureLayer,
25336 value: *const whiteout_M3AnimRefF32,
25337 );
25338 pub fn whiteout_m3_M3TextureLayer_get_mapAlpha(
25339 self_: *mut whiteout_M3TextureLayer,
25340 ) -> *mut whiteout_M3AnimRefF32;
25341 pub fn whiteout_m3_M3TextureLayer_set_mapAlpha(
25342 self_: *mut whiteout_M3TextureLayer,
25343 value: *const whiteout_M3AnimRefF32,
25344 );
25345 pub fn whiteout_m3_M3TextureLayer_get_triplanarOffset(
25346 self_: *mut whiteout_M3TextureLayer,
25347 ) -> *mut whiteout_M3AnimRefVector3f;
25348 pub fn whiteout_m3_M3TextureLayer_set_triplanarOffset(
25349 self_: *mut whiteout_M3TextureLayer,
25350 value: *const whiteout_M3AnimRefVector3f,
25351 );
25352 pub fn whiteout_m3_M3TextureLayer_get_triplanarScale(
25353 self_: *mut whiteout_M3TextureLayer,
25354 ) -> *mut whiteout_M3AnimRefVector3f;
25355 pub fn whiteout_m3_M3TextureLayer_set_triplanarScale(
25356 self_: *mut whiteout_M3TextureLayer,
25357 value: *const whiteout_M3AnimRefVector3f,
25358 );
25359 pub fn whiteout_m3_M3TextureLayer_get_uvSourceRelated(
25360 self_: *mut whiteout_M3TextureLayer,
25361 ) -> u32;
25362 pub fn whiteout_m3_M3TextureLayer_set_uvSourceRelated(
25363 self_: *mut whiteout_M3TextureLayer,
25364 value: u32,
25365 );
25366 pub fn whiteout_m3_M3TextureLayer_get_fresnelMode(
25367 self_: *mut whiteout_M3TextureLayer,
25368 ) -> i32;
25369 pub fn whiteout_m3_M3TextureLayer_set_fresnelMode(
25370 self_: *mut whiteout_M3TextureLayer,
25371 value: i32,
25372 );
25373 pub fn whiteout_m3_M3TextureLayer_get_fresnelExponent(
25374 self_: *mut whiteout_M3TextureLayer,
25375 ) -> f32;
25376 pub fn whiteout_m3_M3TextureLayer_set_fresnelExponent(
25377 self_: *mut whiteout_M3TextureLayer,
25378 value: f32,
25379 );
25380 pub fn whiteout_m3_M3TextureLayer_get_fresnelMin(
25381 self_: *mut whiteout_M3TextureLayer,
25382 ) -> f32;
25383 pub fn whiteout_m3_M3TextureLayer_set_fresnelMin(
25384 self_: *mut whiteout_M3TextureLayer,
25385 value: f32,
25386 );
25387 pub fn whiteout_m3_M3TextureLayer_get_fresnelMax(
25388 self_: *mut whiteout_M3TextureLayer,
25389 ) -> f32;
25390 pub fn whiteout_m3_M3TextureLayer_set_fresnelMax(
25391 self_: *mut whiteout_M3TextureLayer,
25392 value: f32,
25393 );
25394 pub fn whiteout_m3_M3TextureLayer_get_fresnelTranslation(
25395 self_: *mut whiteout_M3TextureLayer,
25396 ) -> *mut core::ffi::c_void;
25397 pub fn whiteout_m3_M3TextureLayer_set_fresnelTranslation(
25398 self_: *mut whiteout_M3TextureLayer,
25399 value: *const core::ffi::c_void,
25400 );
25401 pub fn whiteout_m3_M3TextureLayer_get_fresnelMask(
25402 self_: *mut whiteout_M3TextureLayer,
25403 ) -> *mut core::ffi::c_void;
25404 pub fn whiteout_m3_M3TextureLayer_set_fresnelMask(
25405 self_: *mut whiteout_M3TextureLayer,
25406 value: *const core::ffi::c_void,
25407 );
25408 pub fn whiteout_m3_M3TextureLayer_get_fresnelRotation(
25409 self_: *mut whiteout_M3TextureLayer,
25410 ) -> *mut core::ffi::c_void;
25411 pub fn whiteout_m3_M3TextureLayer_set_fresnelRotation(
25412 self_: *mut whiteout_M3TextureLayer,
25413 value: *const core::ffi::c_void,
25414 );
25415 pub fn whiteout_m3_M3TextureLayer_get_uvDensity(self_: *mut whiteout_M3TextureLayer)
25416 -> u32;
25417 pub fn whiteout_m3_M3TextureLayer_set_uvDensity(
25418 self_: *mut whiteout_M3TextureLayer,
25419 value: u32,
25420 );
25421 pub fn whiteout_m3_M3StandardMaterial_new() -> *mut whiteout_M3StandardMaterial;
25423 pub fn whiteout_m3_M3StandardMaterial_delete(self_: *mut whiteout_M3StandardMaterial);
25424 pub fn whiteout_m3_M3StandardMaterial_get_name(
25425 self_: *mut whiteout_M3StandardMaterial,
25426 ) -> RawCString;
25427 pub fn whiteout_m3_M3StandardMaterial_set_name(
25428 self_: *mut whiteout_M3StandardMaterial,
25429 value: *const core::ffi::c_char,
25430 );
25431 pub fn whiteout_m3_M3StandardMaterial_get_additionalFlags(
25432 self_: *mut whiteout_M3StandardMaterial,
25433 ) -> i32;
25434 pub fn whiteout_m3_M3StandardMaterial_set_additionalFlags(
25435 self_: *mut whiteout_M3StandardMaterial,
25436 value: i32,
25437 );
25438 pub fn whiteout_m3_M3StandardMaterial_get_flags(
25439 self_: *mut whiteout_M3StandardMaterial,
25440 ) -> i32;
25441 pub fn whiteout_m3_M3StandardMaterial_set_flags(
25442 self_: *mut whiteout_M3StandardMaterial,
25443 value: i32,
25444 );
25445 pub fn whiteout_m3_M3StandardMaterial_get_blendMode(
25446 self_: *mut whiteout_M3StandardMaterial,
25447 ) -> i32;
25448 pub fn whiteout_m3_M3StandardMaterial_set_blendMode(
25449 self_: *mut whiteout_M3StandardMaterial,
25450 value: i32,
25451 );
25452 pub fn whiteout_m3_M3StandardMaterial_get_priority(
25453 self_: *mut whiteout_M3StandardMaterial,
25454 ) -> i32;
25455 pub fn whiteout_m3_M3StandardMaterial_set_priority(
25456 self_: *mut whiteout_M3StandardMaterial,
25457 value: i32,
25458 );
25459 pub fn whiteout_m3_M3StandardMaterial_get_rttChannels(
25460 self_: *mut whiteout_M3StandardMaterial,
25461 ) -> u32;
25462 pub fn whiteout_m3_M3StandardMaterial_set_rttChannels(
25463 self_: *mut whiteout_M3StandardMaterial,
25464 value: u32,
25465 );
25466 pub fn whiteout_m3_M3StandardMaterial_get_specularExponent(
25467 self_: *mut whiteout_M3StandardMaterial,
25468 ) -> f32;
25469 pub fn whiteout_m3_M3StandardMaterial_set_specularExponent(
25470 self_: *mut whiteout_M3StandardMaterial,
25471 value: f32,
25472 );
25473 pub fn whiteout_m3_M3StandardMaterial_get_depthBlendFalloff(
25474 self_: *mut whiteout_M3StandardMaterial,
25475 ) -> f32;
25476 pub fn whiteout_m3_M3StandardMaterial_set_depthBlendFalloff(
25477 self_: *mut whiteout_M3StandardMaterial,
25478 value: f32,
25479 );
25480 pub fn whiteout_m3_M3StandardMaterial_get_alphaTestThreshold(
25481 self_: *mut whiteout_M3StandardMaterial,
25482 ) -> u32;
25483 pub fn whiteout_m3_M3StandardMaterial_set_alphaTestThreshold(
25484 self_: *mut whiteout_M3StandardMaterial,
25485 value: u32,
25486 );
25487 pub fn whiteout_m3_M3StandardMaterial_get_hdrSpecularMultiplier(
25488 self_: *mut whiteout_M3StandardMaterial,
25489 ) -> f32;
25490 pub fn whiteout_m3_M3StandardMaterial_set_hdrSpecularMultiplier(
25491 self_: *mut whiteout_M3StandardMaterial,
25492 value: f32,
25493 );
25494 pub fn whiteout_m3_M3StandardMaterial_get_hdrEmissiveMultiplier(
25495 self_: *mut whiteout_M3StandardMaterial,
25496 ) -> f32;
25497 pub fn whiteout_m3_M3StandardMaterial_set_hdrEmissiveMultiplier(
25498 self_: *mut whiteout_M3StandardMaterial,
25499 value: f32,
25500 );
25501 pub fn whiteout_m3_M3StandardMaterial_get_hdrEnvironmentConstant(
25502 self_: *mut whiteout_M3StandardMaterial,
25503 ) -> f32;
25504 pub fn whiteout_m3_M3StandardMaterial_set_hdrEnvironmentConstant(
25505 self_: *mut whiteout_M3StandardMaterial,
25506 value: f32,
25507 );
25508 pub fn whiteout_m3_M3StandardMaterial_get_hdrEnvironmentDiffuse(
25509 self_: *mut whiteout_M3StandardMaterial,
25510 ) -> f32;
25511 pub fn whiteout_m3_M3StandardMaterial_set_hdrEnvironmentDiffuse(
25512 self_: *mut whiteout_M3StandardMaterial,
25513 value: f32,
25514 );
25515 pub fn whiteout_m3_M3StandardMaterial_get_hdrEnvironmentSpecular(
25516 self_: *mut whiteout_M3StandardMaterial,
25517 ) -> f32;
25518 pub fn whiteout_m3_M3StandardMaterial_set_hdrEnvironmentSpecular(
25519 self_: *mut whiteout_M3StandardMaterial,
25520 value: f32,
25521 );
25522 pub fn whiteout_m3_M3StandardMaterial_get_materialClass(
25523 self_: *mut whiteout_M3StandardMaterial,
25524 ) -> i32;
25525 pub fn whiteout_m3_M3StandardMaterial_set_materialClass(
25526 self_: *mut whiteout_M3StandardMaterial,
25527 value: i32,
25528 );
25529 pub fn whiteout_m3_M3StandardMaterial_get_layerBlendMode(
25530 self_: *mut whiteout_M3StandardMaterial,
25531 ) -> i32;
25532 pub fn whiteout_m3_M3StandardMaterial_set_layerBlendMode(
25533 self_: *mut whiteout_M3StandardMaterial,
25534 value: i32,
25535 );
25536 pub fn whiteout_m3_M3StandardMaterial_get_emissiveBlendMode1(
25537 self_: *mut whiteout_M3StandardMaterial,
25538 ) -> i32;
25539 pub fn whiteout_m3_M3StandardMaterial_set_emissiveBlendMode1(
25540 self_: *mut whiteout_M3StandardMaterial,
25541 value: i32,
25542 );
25543 pub fn whiteout_m3_M3StandardMaterial_get_emissiveBlendMode2(
25544 self_: *mut whiteout_M3StandardMaterial,
25545 ) -> i32;
25546 pub fn whiteout_m3_M3StandardMaterial_set_emissiveBlendMode2(
25547 self_: *mut whiteout_M3StandardMaterial,
25548 value: i32,
25549 );
25550 pub fn whiteout_m3_M3StandardMaterial_get_specularMode(
25551 self_: *mut whiteout_M3StandardMaterial,
25552 ) -> i32;
25553 pub fn whiteout_m3_M3StandardMaterial_set_specularMode(
25554 self_: *mut whiteout_M3StandardMaterial,
25555 value: i32,
25556 );
25557 pub fn whiteout_m3_M3StandardMaterial_get_parallaxHeight(
25558 self_: *mut whiteout_M3StandardMaterial,
25559 ) -> *mut whiteout_M3AnimRefF32;
25560 pub fn whiteout_m3_M3StandardMaterial_set_parallaxHeight(
25561 self_: *mut whiteout_M3StandardMaterial,
25562 value: *const whiteout_M3AnimRefF32,
25563 );
25564 pub fn whiteout_m3_M3StandardMaterial_get_motionBlurAmount(
25565 self_: *mut whiteout_M3StandardMaterial,
25566 ) -> *mut whiteout_M3AnimRefF32;
25567 pub fn whiteout_m3_M3StandardMaterial_set_motionBlurAmount(
25568 self_: *mut whiteout_M3StandardMaterial,
25569 value: *const whiteout_M3AnimRefF32,
25570 );
25571 pub fn whiteout_m3_M3StandardMaterial_get_normalBlendFactors_count(
25572 self_: *mut whiteout_M3StandardMaterial,
25573 ) -> usize;
25574 pub fn whiteout_m3_M3StandardMaterial_resize_normalBlendFactors(
25575 self_: *mut whiteout_M3StandardMaterial,
25576 count: usize,
25577 );
25578 pub fn whiteout_m3_M3StandardMaterial_get_normalBlendFactors_at(
25579 self_: *mut whiteout_M3StandardMaterial,
25580 index: usize,
25581 ) -> *mut whiteout_M3AnimRefF32;
25582 pub fn whiteout_m3_M3DisplacementMaterial_new() -> *mut whiteout_M3DisplacementMaterial;
25584 pub fn whiteout_m3_M3DisplacementMaterial_delete(
25585 self_: *mut whiteout_M3DisplacementMaterial,
25586 );
25587 pub fn whiteout_m3_M3DisplacementMaterial_get_name(
25588 self_: *mut whiteout_M3DisplacementMaterial,
25589 ) -> RawCString;
25590 pub fn whiteout_m3_M3DisplacementMaterial_set_name(
25591 self_: *mut whiteout_M3DisplacementMaterial,
25592 value: *const core::ffi::c_char,
25593 );
25594 pub fn whiteout_m3_M3DisplacementMaterial_get_unknown(
25595 self_: *mut whiteout_M3DisplacementMaterial,
25596 ) -> u32;
25597 pub fn whiteout_m3_M3DisplacementMaterial_set_unknown(
25598 self_: *mut whiteout_M3DisplacementMaterial,
25599 value: u32,
25600 );
25601 pub fn whiteout_m3_M3DisplacementMaterial_get_strength(
25602 self_: *mut whiteout_M3DisplacementMaterial,
25603 ) -> *mut whiteout_M3AnimRefF32;
25604 pub fn whiteout_m3_M3DisplacementMaterial_set_strength(
25605 self_: *mut whiteout_M3DisplacementMaterial,
25606 value: *const whiteout_M3AnimRefF32,
25607 );
25608 pub fn whiteout_m3_M3DisplacementMaterial_get_priority(
25609 self_: *mut whiteout_M3DisplacementMaterial,
25610 ) -> u32;
25611 pub fn whiteout_m3_M3DisplacementMaterial_set_priority(
25612 self_: *mut whiteout_M3DisplacementMaterial,
25613 value: u32,
25614 );
25615 pub fn whiteout_m3_M3CompositeSection_new() -> *mut whiteout_M3CompositeSection;
25617 pub fn whiteout_m3_M3CompositeSection_delete(self_: *mut whiteout_M3CompositeSection);
25618 pub fn whiteout_m3_M3CompositeSection_get_materialIndex(
25619 self_: *mut whiteout_M3CompositeSection,
25620 ) -> u32;
25621 pub fn whiteout_m3_M3CompositeSection_set_materialIndex(
25622 self_: *mut whiteout_M3CompositeSection,
25623 value: u32,
25624 );
25625 pub fn whiteout_m3_M3CompositeSection_get_mapMultiplier(
25626 self_: *mut whiteout_M3CompositeSection,
25627 ) -> *mut whiteout_M3AnimRefF32;
25628 pub fn whiteout_m3_M3CompositeSection_set_mapMultiplier(
25629 self_: *mut whiteout_M3CompositeSection,
25630 value: *const whiteout_M3AnimRefF32,
25631 );
25632 pub fn whiteout_m3_M3CompositeMaterial_new() -> *mut whiteout_M3CompositeMaterial;
25634 pub fn whiteout_m3_M3CompositeMaterial_delete(self_: *mut whiteout_M3CompositeMaterial);
25635 pub fn whiteout_m3_M3CompositeMaterial_get_name(
25636 self_: *mut whiteout_M3CompositeMaterial,
25637 ) -> RawCString;
25638 pub fn whiteout_m3_M3CompositeMaterial_set_name(
25639 self_: *mut whiteout_M3CompositeMaterial,
25640 value: *const core::ffi::c_char,
25641 );
25642 pub fn whiteout_m3_M3CompositeMaterial_get_priority(
25643 self_: *mut whiteout_M3CompositeMaterial,
25644 ) -> u32;
25645 pub fn whiteout_m3_M3CompositeMaterial_set_priority(
25646 self_: *mut whiteout_M3CompositeMaterial,
25647 value: u32,
25648 );
25649 pub fn whiteout_m3_M3CompositeMaterial_get_sections_count(
25650 self_: *mut whiteout_M3CompositeMaterial,
25651 ) -> usize;
25652 pub fn whiteout_m3_M3CompositeMaterial_resize_sections(
25653 self_: *mut whiteout_M3CompositeMaterial,
25654 count: usize,
25655 );
25656 pub fn whiteout_m3_M3CompositeMaterial_get_sections_at(
25657 self_: *mut whiteout_M3CompositeMaterial,
25658 index: usize,
25659 ) -> *mut whiteout_M3CompositeSection;
25660 pub fn whiteout_m3_M3TerrainMaterial_new() -> *mut whiteout_M3TerrainMaterial;
25662 pub fn whiteout_m3_M3TerrainMaterial_delete(self_: *mut whiteout_M3TerrainMaterial);
25663 pub fn whiteout_m3_M3TerrainMaterial_get_name(
25664 self_: *mut whiteout_M3TerrainMaterial,
25665 ) -> RawCString;
25666 pub fn whiteout_m3_M3TerrainMaterial_set_name(
25667 self_: *mut whiteout_M3TerrainMaterial,
25668 value: *const core::ffi::c_char,
25669 );
25670 pub fn whiteout_m3_M3TerrainMaterial_get_unknown(
25671 self_: *mut whiteout_M3TerrainMaterial,
25672 ) -> u32;
25673 pub fn whiteout_m3_M3TerrainMaterial_set_unknown(
25674 self_: *mut whiteout_M3TerrainMaterial,
25675 value: u32,
25676 );
25677 pub fn whiteout_m3_M3VolumeMaterial_new() -> *mut whiteout_M3VolumeMaterial;
25679 pub fn whiteout_m3_M3VolumeMaterial_delete(self_: *mut whiteout_M3VolumeMaterial);
25680 pub fn whiteout_m3_M3VolumeMaterial_get_name(
25681 self_: *mut whiteout_M3VolumeMaterial,
25682 ) -> RawCString;
25683 pub fn whiteout_m3_M3VolumeMaterial_set_name(
25684 self_: *mut whiteout_M3VolumeMaterial,
25685 value: *const core::ffi::c_char,
25686 );
25687 pub fn whiteout_m3_M3VolumeMaterial_get_blendMode(
25688 self_: *mut whiteout_M3VolumeMaterial,
25689 ) -> u32;
25690 pub fn whiteout_m3_M3VolumeMaterial_set_blendMode(
25691 self_: *mut whiteout_M3VolumeMaterial,
25692 value: u32,
25693 );
25694 pub fn whiteout_m3_M3VolumeMaterial_get_falloffType(
25695 self_: *mut whiteout_M3VolumeMaterial,
25696 ) -> i32;
25697 pub fn whiteout_m3_M3VolumeMaterial_set_falloffType(
25698 self_: *mut whiteout_M3VolumeMaterial,
25699 value: i32,
25700 );
25701 pub fn whiteout_m3_M3VolumeMaterial_get_density(
25702 self_: *mut whiteout_M3VolumeMaterial,
25703 ) -> *mut whiteout_M3AnimRefF32;
25704 pub fn whiteout_m3_M3VolumeMaterial_set_density(
25705 self_: *mut whiteout_M3VolumeMaterial,
25706 value: *const whiteout_M3AnimRefF32,
25707 );
25708 pub fn whiteout_m3_M3VolumeMaterial_get_alphaThreshold(
25709 self_: *mut whiteout_M3VolumeMaterial,
25710 ) -> u32;
25711 pub fn whiteout_m3_M3VolumeMaterial_set_alphaThreshold(
25712 self_: *mut whiteout_M3VolumeMaterial,
25713 value: u32,
25714 );
25715 pub fn whiteout_m3_M3HairMaterial_new() -> *mut whiteout_M3HairMaterial;
25717 pub fn whiteout_m3_M3HairMaterial_delete(self_: *mut whiteout_M3HairMaterial);
25718 pub fn whiteout_m3_M3HairMaterial_get_name(
25719 self_: *mut whiteout_M3HairMaterial,
25720 ) -> RawCString;
25721 pub fn whiteout_m3_M3HairMaterial_set_name(
25722 self_: *mut whiteout_M3HairMaterial,
25723 value: *const core::ffi::c_char,
25724 );
25725 pub fn whiteout_m3_M3HairMaterial_get_shiftPrimary(
25726 self_: *mut whiteout_M3HairMaterial,
25727 ) -> f32;
25728 pub fn whiteout_m3_M3HairMaterial_set_shiftPrimary(
25729 self_: *mut whiteout_M3HairMaterial,
25730 value: f32,
25731 );
25732 pub fn whiteout_m3_M3HairMaterial_get_shiftSecondary(
25733 self_: *mut whiteout_M3HairMaterial,
25734 ) -> f32;
25735 pub fn whiteout_m3_M3HairMaterial_set_shiftSecondary(
25736 self_: *mut whiteout_M3HairMaterial,
25737 value: f32,
25738 );
25739 pub fn whiteout_m3_M3HairMaterial_get_colorDiffuse(
25740 self_: *mut whiteout_M3HairMaterial,
25741 ) -> *mut whiteout_M3AnimRefM3ColorBGRA;
25742 pub fn whiteout_m3_M3HairMaterial_set_colorDiffuse(
25743 self_: *mut whiteout_M3HairMaterial,
25744 value: *const whiteout_M3AnimRefM3ColorBGRA,
25745 );
25746 pub fn whiteout_m3_M3HairMaterial_get_colorSpec(
25747 self_: *mut whiteout_M3HairMaterial,
25748 ) -> *mut whiteout_M3AnimRefM3ColorBGRA;
25749 pub fn whiteout_m3_M3HairMaterial_set_colorSpec(
25750 self_: *mut whiteout_M3HairMaterial,
25751 value: *const whiteout_M3AnimRefM3ColorBGRA,
25752 );
25753 pub fn whiteout_m3_M3HairMaterial_get_specExponent0(
25754 self_: *mut whiteout_M3HairMaterial,
25755 ) -> f32;
25756 pub fn whiteout_m3_M3HairMaterial_set_specExponent0(
25757 self_: *mut whiteout_M3HairMaterial,
25758 value: f32,
25759 );
25760 pub fn whiteout_m3_M3HairMaterial_get_specExponent1(
25761 self_: *mut whiteout_M3HairMaterial,
25762 ) -> f32;
25763 pub fn whiteout_m3_M3HairMaterial_set_specExponent1(
25764 self_: *mut whiteout_M3HairMaterial,
25765 value: f32,
25766 );
25767 pub fn whiteout_m3_M3VolumeNoiseMaterial_new() -> *mut whiteout_M3VolumeNoiseMaterial;
25769 pub fn whiteout_m3_M3VolumeNoiseMaterial_delete(self_: *mut whiteout_M3VolumeNoiseMaterial);
25770 pub fn whiteout_m3_M3VolumeNoiseMaterial_get_name(
25771 self_: *mut whiteout_M3VolumeNoiseMaterial,
25772 ) -> RawCString;
25773 pub fn whiteout_m3_M3VolumeNoiseMaterial_set_name(
25774 self_: *mut whiteout_M3VolumeNoiseMaterial,
25775 value: *const core::ffi::c_char,
25776 );
25777 pub fn whiteout_m3_M3VolumeNoiseMaterial_get_falloffType(
25778 self_: *mut whiteout_M3VolumeNoiseMaterial,
25779 ) -> i32;
25780 pub fn whiteout_m3_M3VolumeNoiseMaterial_set_falloffType(
25781 self_: *mut whiteout_M3VolumeNoiseMaterial,
25782 value: i32,
25783 );
25784 pub fn whiteout_m3_M3VolumeNoiseMaterial_get_drawTransparency(
25785 self_: *mut whiteout_M3VolumeNoiseMaterial,
25786 ) -> i32;
25787 pub fn whiteout_m3_M3VolumeNoiseMaterial_set_drawTransparency(
25788 self_: *mut whiteout_M3VolumeNoiseMaterial,
25789 value: i32,
25790 );
25791 pub fn whiteout_m3_M3VolumeNoiseMaterial_get_density(
25792 self_: *mut whiteout_M3VolumeNoiseMaterial,
25793 ) -> *mut whiteout_M3AnimRefF32;
25794 pub fn whiteout_m3_M3VolumeNoiseMaterial_set_density(
25795 self_: *mut whiteout_M3VolumeNoiseMaterial,
25796 value: *const whiteout_M3AnimRefF32,
25797 );
25798 pub fn whiteout_m3_M3VolumeNoiseMaterial_get_nearPlane(
25799 self_: *mut whiteout_M3VolumeNoiseMaterial,
25800 ) -> *mut whiteout_M3AnimRefF32;
25801 pub fn whiteout_m3_M3VolumeNoiseMaterial_set_nearPlane(
25802 self_: *mut whiteout_M3VolumeNoiseMaterial,
25803 value: *const whiteout_M3AnimRefF32,
25804 );
25805 pub fn whiteout_m3_M3VolumeNoiseMaterial_get_falloff(
25806 self_: *mut whiteout_M3VolumeNoiseMaterial,
25807 ) -> *mut whiteout_M3AnimRefF32;
25808 pub fn whiteout_m3_M3VolumeNoiseMaterial_set_falloff(
25809 self_: *mut whiteout_M3VolumeNoiseMaterial,
25810 value: *const whiteout_M3AnimRefF32,
25811 );
25812 pub fn whiteout_m3_M3VolumeNoiseMaterial_get_scrollRate(
25813 self_: *mut whiteout_M3VolumeNoiseMaterial,
25814 ) -> *mut whiteout_M3AnimRefVector3f;
25815 pub fn whiteout_m3_M3VolumeNoiseMaterial_set_scrollRate(
25816 self_: *mut whiteout_M3VolumeNoiseMaterial,
25817 value: *const whiteout_M3AnimRefVector3f,
25818 );
25819 pub fn whiteout_m3_M3VolumeNoiseMaterial_get_position(
25820 self_: *mut whiteout_M3VolumeNoiseMaterial,
25821 ) -> *mut whiteout_M3AnimRefVector3f;
25822 pub fn whiteout_m3_M3VolumeNoiseMaterial_set_position(
25823 self_: *mut whiteout_M3VolumeNoiseMaterial,
25824 value: *const whiteout_M3AnimRefVector3f,
25825 );
25826 pub fn whiteout_m3_M3VolumeNoiseMaterial_get_scale(
25827 self_: *mut whiteout_M3VolumeNoiseMaterial,
25828 ) -> *mut whiteout_M3AnimRefVector3f;
25829 pub fn whiteout_m3_M3VolumeNoiseMaterial_set_scale(
25830 self_: *mut whiteout_M3VolumeNoiseMaterial,
25831 value: *const whiteout_M3AnimRefVector3f,
25832 );
25833 pub fn whiteout_m3_M3VolumeNoiseMaterial_get_rotation(
25834 self_: *mut whiteout_M3VolumeNoiseMaterial,
25835 ) -> *mut whiteout_M3AnimRefVector3f;
25836 pub fn whiteout_m3_M3VolumeNoiseMaterial_set_rotation(
25837 self_: *mut whiteout_M3VolumeNoiseMaterial,
25838 value: *const whiteout_M3AnimRefVector3f,
25839 );
25840 pub fn whiteout_m3_M3VolumeNoiseMaterial_get_alphaThreshold(
25841 self_: *mut whiteout_M3VolumeNoiseMaterial,
25842 ) -> u32;
25843 pub fn whiteout_m3_M3VolumeNoiseMaterial_set_alphaThreshold(
25844 self_: *mut whiteout_M3VolumeNoiseMaterial,
25845 value: u32,
25846 );
25847 pub fn whiteout_m3_M3VolumeNoiseMaterial_get_flags(
25848 self_: *mut whiteout_M3VolumeNoiseMaterial,
25849 ) -> i32;
25850 pub fn whiteout_m3_M3VolumeNoiseMaterial_set_flags(
25851 self_: *mut whiteout_M3VolumeNoiseMaterial,
25852 value: i32,
25853 );
25854 pub fn whiteout_m3_M3CreepMaterial_new() -> *mut whiteout_M3CreepMaterial;
25856 pub fn whiteout_m3_M3CreepMaterial_delete(self_: *mut whiteout_M3CreepMaterial);
25857 pub fn whiteout_m3_M3CreepMaterial_get_name(
25858 self_: *mut whiteout_M3CreepMaterial,
25859 ) -> RawCString;
25860 pub fn whiteout_m3_M3CreepMaterial_set_name(
25861 self_: *mut whiteout_M3CreepMaterial,
25862 value: *const core::ffi::c_char,
25863 );
25864 pub fn whiteout_m3_M3CreepMaterial_get_creepLow(
25865 self_: *mut whiteout_M3CreepMaterial,
25866 ) -> u32;
25867 pub fn whiteout_m3_M3CreepMaterial_set_creepLow(
25868 self_: *mut whiteout_M3CreepMaterial,
25869 value: u32,
25870 );
25871 pub fn whiteout_m3_M3STBMaterial_new() -> *mut whiteout_M3STBMaterial;
25873 pub fn whiteout_m3_M3STBMaterial_delete(self_: *mut whiteout_M3STBMaterial);
25874 pub fn whiteout_m3_M3STBMaterial_get_name(self_: *mut whiteout_M3STBMaterial)
25875 -> RawCString;
25876 pub fn whiteout_m3_M3STBMaterial_set_name(
25877 self_: *mut whiteout_M3STBMaterial,
25878 value: *const core::ffi::c_char,
25879 );
25880 pub fn whiteout_m3_M3ReflectionMaterial_new() -> *mut whiteout_M3ReflectionMaterial;
25882 pub fn whiteout_m3_M3ReflectionMaterial_delete(self_: *mut whiteout_M3ReflectionMaterial);
25883 pub fn whiteout_m3_M3ReflectionMaterial_get_name(
25884 self_: *mut whiteout_M3ReflectionMaterial,
25885 ) -> RawCString;
25886 pub fn whiteout_m3_M3ReflectionMaterial_set_name(
25887 self_: *mut whiteout_M3ReflectionMaterial,
25888 value: *const core::ffi::c_char,
25889 );
25890 pub fn whiteout_m3_M3ReflectionMaterial_get_unknown(
25891 self_: *mut whiteout_M3ReflectionMaterial,
25892 ) -> u32;
25893 pub fn whiteout_m3_M3ReflectionMaterial_set_unknown(
25894 self_: *mut whiteout_M3ReflectionMaterial,
25895 value: u32,
25896 );
25897 pub fn whiteout_m3_M3ReflectionMaterial_get_reflectionStrength(
25898 self_: *mut whiteout_M3ReflectionMaterial,
25899 ) -> *mut whiteout_M3AnimRefF32;
25900 pub fn whiteout_m3_M3ReflectionMaterial_set_reflectionStrength(
25901 self_: *mut whiteout_M3ReflectionMaterial,
25902 value: *const whiteout_M3AnimRefF32,
25903 );
25904 pub fn whiteout_m3_M3ReflectionMaterial_get_displacementStrength(
25905 self_: *mut whiteout_M3ReflectionMaterial,
25906 ) -> *mut whiteout_M3AnimRefF32;
25907 pub fn whiteout_m3_M3ReflectionMaterial_set_displacementStrength(
25908 self_: *mut whiteout_M3ReflectionMaterial,
25909 value: *const whiteout_M3AnimRefF32,
25910 );
25911 pub fn whiteout_m3_M3ReflectionMaterial_get_reflectionOffset(
25912 self_: *mut whiteout_M3ReflectionMaterial,
25913 ) -> *mut whiteout_M3AnimRefF32;
25914 pub fn whiteout_m3_M3ReflectionMaterial_set_reflectionOffset(
25915 self_: *mut whiteout_M3ReflectionMaterial,
25916 value: *const whiteout_M3AnimRefF32,
25917 );
25918 pub fn whiteout_m3_M3ReflectionMaterial_get_blurAngle(
25919 self_: *mut whiteout_M3ReflectionMaterial,
25920 ) -> *mut whiteout_M3AnimRefF32;
25921 pub fn whiteout_m3_M3ReflectionMaterial_set_blurAngle(
25922 self_: *mut whiteout_M3ReflectionMaterial,
25923 value: *const whiteout_M3AnimRefF32,
25924 );
25925 pub fn whiteout_m3_M3ReflectionMaterial_get_blurDistanceMax(
25926 self_: *mut whiteout_M3ReflectionMaterial,
25927 ) -> *mut whiteout_M3AnimRefF32;
25928 pub fn whiteout_m3_M3ReflectionMaterial_set_blurDistanceMax(
25929 self_: *mut whiteout_M3ReflectionMaterial,
25930 value: *const whiteout_M3AnimRefF32,
25931 );
25932 pub fn whiteout_m3_M3ReflectionMaterial_get_flags(
25933 self_: *mut whiteout_M3ReflectionMaterial,
25934 ) -> i32;
25935 pub fn whiteout_m3_M3ReflectionMaterial_set_flags(
25936 self_: *mut whiteout_M3ReflectionMaterial,
25937 value: i32,
25938 );
25939 pub fn whiteout_m3_M3ReflectionMaterial_get_unknown2(
25940 self_: *mut whiteout_M3ReflectionMaterial,
25941 ) -> u32;
25942 pub fn whiteout_m3_M3ReflectionMaterial_set_unknown2(
25943 self_: *mut whiteout_M3ReflectionMaterial,
25944 value: u32,
25945 );
25946 pub fn whiteout_m3_M3SubFlare_new() -> *mut whiteout_M3SubFlare;
25948 pub fn whiteout_m3_M3SubFlare_delete(self_: *mut whiteout_M3SubFlare);
25949 pub fn whiteout_m3_M3SubFlare_get_index(self_: *mut whiteout_M3SubFlare) -> u32;
25950 pub fn whiteout_m3_M3SubFlare_set_index(self_: *mut whiteout_M3SubFlare, value: u32);
25951 pub fn whiteout_m3_M3SubFlare_get_position(self_: *mut whiteout_M3SubFlare) -> f32;
25952 pub fn whiteout_m3_M3SubFlare_set_position(self_: *mut whiteout_M3SubFlare, value: f32);
25953 pub fn whiteout_m3_M3SubFlare_get_sizeXY(
25954 self_: *mut whiteout_M3SubFlare,
25955 ) -> *mut core::ffi::c_void;
25956 pub fn whiteout_m3_M3SubFlare_set_sizeXY(
25957 self_: *mut whiteout_M3SubFlare,
25958 value: *const core::ffi::c_void,
25959 );
25960 pub fn whiteout_m3_M3SubFlare_get_scaleXY(
25961 self_: *mut whiteout_M3SubFlare,
25962 ) -> *mut core::ffi::c_void;
25963 pub fn whiteout_m3_M3SubFlare_set_scaleXY(
25964 self_: *mut whiteout_M3SubFlare,
25965 value: *const core::ffi::c_void,
25966 );
25967 pub fn whiteout_m3_M3SubFlare_get_fadeIn(
25968 self_: *mut whiteout_M3SubFlare,
25969 ) -> *mut core::ffi::c_void;
25970 pub fn whiteout_m3_M3SubFlare_set_fadeIn(
25971 self_: *mut whiteout_M3SubFlare,
25972 value: *const core::ffi::c_void,
25973 );
25974 pub fn whiteout_m3_M3SubFlare_get_fadeOut(
25975 self_: *mut whiteout_M3SubFlare,
25976 ) -> *mut core::ffi::c_void;
25977 pub fn whiteout_m3_M3SubFlare_set_fadeOut(
25978 self_: *mut whiteout_M3SubFlare,
25979 value: *const core::ffi::c_void,
25980 );
25981 pub fn whiteout_m3_M3SubFlare_get_colorAlpha(
25982 self_: *mut whiteout_M3SubFlare,
25983 ) -> *mut whiteout_M3ColorBGRA;
25984 pub fn whiteout_m3_M3SubFlare_set_colorAlpha(
25985 self_: *mut whiteout_M3SubFlare,
25986 value: *const whiteout_M3ColorBGRA,
25987 );
25988 pub fn whiteout_m3_M3SubFlare_get_faceCenter(self_: *mut whiteout_M3SubFlare) -> u32;
25989 pub fn whiteout_m3_M3SubFlare_set_faceCenter(self_: *mut whiteout_M3SubFlare, value: u32);
25990 pub fn whiteout_m3_M3SubFlare_get_offset(
25991 self_: *mut whiteout_M3SubFlare,
25992 ) -> *mut core::ffi::c_void;
25993 pub fn whiteout_m3_M3SubFlare_set_offset(
25994 self_: *mut whiteout_M3SubFlare,
25995 value: *const core::ffi::c_void,
25996 );
25997 pub fn whiteout_m3_M3LensFlare_new() -> *mut whiteout_M3LensFlare;
25999 pub fn whiteout_m3_M3LensFlare_delete(self_: *mut whiteout_M3LensFlare);
26000 pub fn whiteout_m3_M3LensFlare_get_name(self_: *mut whiteout_M3LensFlare) -> RawCString;
26001 pub fn whiteout_m3_M3LensFlare_set_name(
26002 self_: *mut whiteout_M3LensFlare,
26003 value: *const core::ffi::c_char,
26004 );
26005 pub fn whiteout_m3_M3LensFlare_get_subFlares_count(
26006 self_: *mut whiteout_M3LensFlare,
26007 ) -> usize;
26008 pub fn whiteout_m3_M3LensFlare_resize_subFlares(
26009 self_: *mut whiteout_M3LensFlare,
26010 count: usize,
26011 );
26012 pub fn whiteout_m3_M3LensFlare_get_subFlares_at(
26013 self_: *mut whiteout_M3LensFlare,
26014 index: usize,
26015 ) -> *mut whiteout_M3SubFlare;
26016 pub fn whiteout_m3_M3LensFlare_get_columns(self_: *mut whiteout_M3LensFlare) -> u32;
26017 pub fn whiteout_m3_M3LensFlare_set_columns(self_: *mut whiteout_M3LensFlare, value: u32);
26018 pub fn whiteout_m3_M3LensFlare_get_rows(self_: *mut whiteout_M3LensFlare) -> u32;
26019 pub fn whiteout_m3_M3LensFlare_set_rows(self_: *mut whiteout_M3LensFlare, value: u32);
26020 pub fn whiteout_m3_M3LensFlare_get_distanceFade(self_: *mut whiteout_M3LensFlare) -> f32;
26021 pub fn whiteout_m3_M3LensFlare_set_distanceFade(
26022 self_: *mut whiteout_M3LensFlare,
26023 value: f32,
26024 );
26025 pub fn whiteout_m3_M3LensFlare_get_libName(self_: *mut whiteout_M3LensFlare) -> RawCString;
26026 pub fn whiteout_m3_M3LensFlare_set_libName(
26027 self_: *mut whiteout_M3LensFlare,
26028 value: *const core::ffi::c_char,
26029 );
26030 pub fn whiteout_m3_M3LensFlare_get_intensity(
26031 self_: *mut whiteout_M3LensFlare,
26032 ) -> *mut whiteout_M3AnimRefF32;
26033 pub fn whiteout_m3_M3LensFlare_set_intensity(
26034 self_: *mut whiteout_M3LensFlare,
26035 value: *const whiteout_M3AnimRefF32,
26036 );
26037 pub fn whiteout_m3_M3LensFlare_get_color(
26038 self_: *mut whiteout_M3LensFlare,
26039 ) -> *mut whiteout_M3AnimRefM3ColorBGRA;
26040 pub fn whiteout_m3_M3LensFlare_set_color(
26041 self_: *mut whiteout_M3LensFlare,
26042 value: *const whiteout_M3AnimRefM3ColorBGRA,
26043 );
26044 pub fn whiteout_m3_M3LensFlare_get_hdr(
26045 self_: *mut whiteout_M3LensFlare,
26046 ) -> *mut whiteout_M3AnimRefF32;
26047 pub fn whiteout_m3_M3LensFlare_set_hdr(
26048 self_: *mut whiteout_M3LensFlare,
26049 value: *const whiteout_M3AnimRefF32,
26050 );
26051 pub fn whiteout_m3_M3LensFlare_get_size(
26052 self_: *mut whiteout_M3LensFlare,
26053 ) -> *mut whiteout_M3AnimRefF32;
26054 pub fn whiteout_m3_M3LensFlare_set_size(
26055 self_: *mut whiteout_M3LensFlare,
26056 value: *const whiteout_M3AnimRefF32,
26057 );
26058 pub fn whiteout_m3_M3MaterialAddData_new() -> *mut whiteout_M3MaterialAddData;
26060 pub fn whiteout_m3_M3MaterialAddData_delete(self_: *mut whiteout_M3MaterialAddData);
26061 pub fn whiteout_m3_M3MaterialAddData_get_keyName(
26062 self_: *mut whiteout_M3MaterialAddData,
26063 ) -> RawCString;
26064 pub fn whiteout_m3_M3MaterialAddData_set_keyName(
26065 self_: *mut whiteout_M3MaterialAddData,
26066 value: *const core::ffi::c_char,
26067 );
26068 pub fn whiteout_m3_M3MaterialAddData_get_keyHash_count(
26069 self_: *mut whiteout_M3MaterialAddData,
26070 ) -> usize;
26071 pub fn whiteout_m3_M3MaterialAddData_resize_keyHash(
26072 self_: *mut whiteout_M3MaterialAddData,
26073 count: usize,
26074 );
26075 pub fn whiteout_m3_M3MaterialAddData_get_keyHash_data(
26076 self_: *mut whiteout_M3MaterialAddData,
26077 ) -> *const u32;
26078 pub fn whiteout_m3_M3MaterialAddData_assign_keyHash(
26079 self_: *mut whiteout_M3MaterialAddData,
26080 data: *const u32,
26081 count: usize,
26082 );
26083 pub fn whiteout_m3_M3MaterialAddData_get_extraHash_count(
26084 self_: *mut whiteout_M3MaterialAddData,
26085 ) -> usize;
26086 pub fn whiteout_m3_M3MaterialAddData_resize_extraHash(
26087 self_: *mut whiteout_M3MaterialAddData,
26088 count: usize,
26089 );
26090 pub fn whiteout_m3_M3MaterialAddData_get_extraHash_data(
26091 self_: *mut whiteout_M3MaterialAddData,
26092 ) -> *const u32;
26093 pub fn whiteout_m3_M3MaterialAddData_assign_extraHash(
26094 self_: *mut whiteout_M3MaterialAddData,
26095 data: *const u32,
26096 count: usize,
26097 );
26098 pub fn whiteout_m3_M3MaterialAddData_get_valuePath(
26099 self_: *mut whiteout_M3MaterialAddData,
26100 ) -> RawCString;
26101 pub fn whiteout_m3_M3MaterialAddData_set_valuePath(
26102 self_: *mut whiteout_M3MaterialAddData,
26103 value: *const core::ffi::c_char,
26104 );
26105 pub fn whiteout_m3_M3MaterialAddData_get_frequency(
26106 self_: *mut whiteout_M3MaterialAddData,
26107 ) -> f32;
26108 pub fn whiteout_m3_M3MaterialAddData_set_frequency(
26109 self_: *mut whiteout_M3MaterialAddData,
26110 value: f32,
26111 );
26112 pub fn whiteout_m3_M3MaterialAddData_get_intensity(
26113 self_: *mut whiteout_M3MaterialAddData,
26114 ) -> f32;
26115 pub fn whiteout_m3_M3MaterialAddData_set_intensity(
26116 self_: *mut whiteout_M3MaterialAddData,
26117 value: f32,
26118 );
26119 pub fn whiteout_m3_M3MaterialAddData_get_holdTime(
26120 self_: *mut whiteout_M3MaterialAddData,
26121 ) -> f32;
26122 pub fn whiteout_m3_M3MaterialAddData_set_holdTime(
26123 self_: *mut whiteout_M3MaterialAddData,
26124 value: f32,
26125 );
26126 pub fn whiteout_m3_M3MaterialAddData_get_randomHash(
26127 self_: *mut whiteout_M3MaterialAddData,
26128 ) -> u32;
26129 pub fn whiteout_m3_M3MaterialAddData_set_randomHash(
26130 self_: *mut whiteout_M3MaterialAddData,
26131 value: u32,
26132 );
26133 pub fn whiteout_m3_M3MaterialAddData_get_animationType(
26134 self_: *mut whiteout_M3MaterialAddData,
26135 ) -> u32;
26136 pub fn whiteout_m3_M3MaterialAddData_set_animationType(
26137 self_: *mut whiteout_M3MaterialAddData,
26138 value: u32,
26139 );
26140 pub fn whiteout_m3_M3MaterialAddData_get_padding0(
26141 self_: *mut whiteout_M3MaterialAddData,
26142 ) -> u32;
26143 pub fn whiteout_m3_M3MaterialAddData_set_padding0(
26144 self_: *mut whiteout_M3MaterialAddData,
26145 value: u32,
26146 );
26147 pub fn whiteout_m3_M3MaterialAddData_get_loopCount(
26148 self_: *mut whiteout_M3MaterialAddData,
26149 ) -> i32;
26150 pub fn whiteout_m3_M3MaterialAddData_set_loopCount(
26151 self_: *mut whiteout_M3MaterialAddData,
26152 value: i32,
26153 );
26154 pub fn whiteout_m3_M3MaterialAddData_get_flags(
26155 self_: *mut whiteout_M3MaterialAddData,
26156 ) -> u32;
26157 pub fn whiteout_m3_M3MaterialAddData_set_flags(
26158 self_: *mut whiteout_M3MaterialAddData,
26159 value: u32,
26160 );
26161 pub fn whiteout_m3_M3MaterialAddData_get_subType(
26162 self_: *mut whiteout_M3MaterialAddData,
26163 ) -> u32;
26164 pub fn whiteout_m3_M3MaterialAddData_set_subType(
26165 self_: *mut whiteout_M3MaterialAddData,
26166 value: u32,
26167 );
26168 pub fn whiteout_m3_M3MaterialAddData_get_configA(
26169 self_: *mut whiteout_M3MaterialAddData,
26170 ) -> u32;
26171 pub fn whiteout_m3_M3MaterialAddData_set_configA(
26172 self_: *mut whiteout_M3MaterialAddData,
26173 value: u32,
26174 );
26175 pub fn whiteout_m3_M3MaterialAddData_get_configB(
26176 self_: *mut whiteout_M3MaterialAddData,
26177 ) -> u32;
26178 pub fn whiteout_m3_M3MaterialAddData_set_configB(
26179 self_: *mut whiteout_M3MaterialAddData,
26180 value: u32,
26181 );
26182 pub fn whiteout_m3_M3MaterialAddData_get_extraId0(
26183 self_: *mut whiteout_M3MaterialAddData,
26184 ) -> u32;
26185 pub fn whiteout_m3_M3MaterialAddData_set_extraId0(
26186 self_: *mut whiteout_M3MaterialAddData,
26187 value: u32,
26188 );
26189 pub fn whiteout_m3_M3MaterialAddData_get_extraId1(
26190 self_: *mut whiteout_M3MaterialAddData,
26191 ) -> u32;
26192 pub fn whiteout_m3_M3MaterialAddData_set_extraId1(
26193 self_: *mut whiteout_M3MaterialAddData,
26194 value: u32,
26195 );
26196 pub fn whiteout_m3_M3Bone_new() -> *mut whiteout_M3Bone;
26198 pub fn whiteout_m3_M3Bone_delete(self_: *mut whiteout_M3Bone);
26199 pub fn whiteout_m3_M3Bone_get_unknown(self_: *mut whiteout_M3Bone) -> u32;
26200 pub fn whiteout_m3_M3Bone_set_unknown(self_: *mut whiteout_M3Bone, value: u32);
26201 pub fn whiteout_m3_M3Bone_get_name(self_: *mut whiteout_M3Bone) -> RawCString;
26202 pub fn whiteout_m3_M3Bone_set_name(
26203 self_: *mut whiteout_M3Bone,
26204 value: *const core::ffi::c_char,
26205 );
26206 pub fn whiteout_m3_M3Bone_get_flags(self_: *mut whiteout_M3Bone) -> i32;
26207 pub fn whiteout_m3_M3Bone_set_flags(self_: *mut whiteout_M3Bone, value: i32);
26208 pub fn whiteout_m3_M3Bone_get_parentIndex(self_: *mut whiteout_M3Bone) -> u16;
26209 pub fn whiteout_m3_M3Bone_set_parentIndex(self_: *mut whiteout_M3Bone, value: u16);
26210 pub fn whiteout_m3_M3Bone_get_padding(self_: *mut whiteout_M3Bone) -> u16;
26211 pub fn whiteout_m3_M3Bone_set_padding(self_: *mut whiteout_M3Bone, value: u16);
26212 pub fn whiteout_m3_M3Bone_get_position(
26213 self_: *mut whiteout_M3Bone,
26214 ) -> *mut whiteout_M3AnimRefVector3f;
26215 pub fn whiteout_m3_M3Bone_set_position(
26216 self_: *mut whiteout_M3Bone,
26217 value: *const whiteout_M3AnimRefVector3f,
26218 );
26219 pub fn whiteout_m3_M3Bone_get_rotation(
26220 self_: *mut whiteout_M3Bone,
26221 ) -> *mut whiteout_M3AnimRefQuaternion;
26222 pub fn whiteout_m3_M3Bone_set_rotation(
26223 self_: *mut whiteout_M3Bone,
26224 value: *const whiteout_M3AnimRefQuaternion,
26225 );
26226 pub fn whiteout_m3_M3Bone_get_scale(
26227 self_: *mut whiteout_M3Bone,
26228 ) -> *mut whiteout_M3AnimRefVector3f;
26229 pub fn whiteout_m3_M3Bone_set_scale(
26230 self_: *mut whiteout_M3Bone,
26231 value: *const whiteout_M3AnimRefVector3f,
26232 );
26233 pub fn whiteout_m3_M3Bone_get_visibility(
26234 self_: *mut whiteout_M3Bone,
26235 ) -> *mut whiteout_M3AnimRefU32;
26236 pub fn whiteout_m3_M3Bone_set_visibility(
26237 self_: *mut whiteout_M3Bone,
26238 value: *const whiteout_M3AnimRefU32,
26239 );
26240 pub fn whiteout_m3_M3Region_new() -> *mut whiteout_M3Region;
26242 pub fn whiteout_m3_M3Region_delete(self_: *mut whiteout_M3Region);
26243 pub fn whiteout_m3_M3Region_get_index(self_: *mut whiteout_M3Region) -> u32;
26244 pub fn whiteout_m3_M3Region_set_index(self_: *mut whiteout_M3Region, value: u32);
26245 pub fn whiteout_m3_M3Region_get_unknown(self_: *mut whiteout_M3Region) -> u32;
26246 pub fn whiteout_m3_M3Region_set_unknown(self_: *mut whiteout_M3Region, value: u32);
26247 pub fn whiteout_m3_M3Region_get_firstVertex(self_: *mut whiteout_M3Region) -> u32;
26248 pub fn whiteout_m3_M3Region_set_firstVertex(self_: *mut whiteout_M3Region, value: u32);
26249 pub fn whiteout_m3_M3Region_get_vertexCount(self_: *mut whiteout_M3Region) -> u32;
26250 pub fn whiteout_m3_M3Region_set_vertexCount(self_: *mut whiteout_M3Region, value: u32);
26251 pub fn whiteout_m3_M3Region_get_firstIndex(self_: *mut whiteout_M3Region) -> u32;
26252 pub fn whiteout_m3_M3Region_set_firstIndex(self_: *mut whiteout_M3Region, value: u32);
26253 pub fn whiteout_m3_M3Region_get_indexCount(self_: *mut whiteout_M3Region) -> u32;
26254 pub fn whiteout_m3_M3Region_set_indexCount(self_: *mut whiteout_M3Region, value: u32);
26255 pub fn whiteout_m3_M3Region_get_unknown2(self_: *mut whiteout_M3Region) -> u16;
26256 pub fn whiteout_m3_M3Region_set_unknown2(self_: *mut whiteout_M3Region, value: u16);
26257 pub fn whiteout_m3_M3Region_get_firstBoneLookup(self_: *mut whiteout_M3Region) -> u16;
26258 pub fn whiteout_m3_M3Region_set_firstBoneLookup(self_: *mut whiteout_M3Region, value: u16);
26259 pub fn whiteout_m3_M3Region_get_boneLookupCount(self_: *mut whiteout_M3Region) -> u16;
26260 pub fn whiteout_m3_M3Region_set_boneLookupCount(self_: *mut whiteout_M3Region, value: u16);
26261 pub fn whiteout_m3_M3Region_get_padding(self_: *mut whiteout_M3Region) -> u16;
26262 pub fn whiteout_m3_M3Region_set_padding(self_: *mut whiteout_M3Region, value: u16);
26263 pub fn whiteout_m3_M3Region_get_boneWeightPairs(self_: *mut whiteout_M3Region) -> u8;
26264 pub fn whiteout_m3_M3Region_set_boneWeightPairs(self_: *mut whiteout_M3Region, value: u8);
26265 pub fn whiteout_m3_M3Region_get_boneIndexPairs(self_: *mut whiteout_M3Region) -> u8;
26266 pub fn whiteout_m3_M3Region_set_boneIndexPairs(self_: *mut whiteout_M3Region, value: u8);
26267 pub fn whiteout_m3_M3Region_get_rootBone(self_: *mut whiteout_M3Region) -> u16;
26268 pub fn whiteout_m3_M3Region_set_rootBone(self_: *mut whiteout_M3Region, value: u16);
26269 pub fn whiteout_m3_M3Region_get_flags(self_: *mut whiteout_M3Region) -> i32;
26270 pub fn whiteout_m3_M3Region_set_flags(self_: *mut whiteout_M3Region, value: i32);
26271 pub fn whiteout_m3_M3Region_get_uvScale(self_: *mut whiteout_M3Region) -> f32;
26272 pub fn whiteout_m3_M3Region_set_uvScale(self_: *mut whiteout_M3Region, value: f32);
26273 pub fn whiteout_m3_M3Region_get_uvOffset(self_: *mut whiteout_M3Region) -> f32;
26274 pub fn whiteout_m3_M3Region_set_uvOffset(self_: *mut whiteout_M3Region, value: f32);
26275 pub fn whiteout_m3_M3Batch_new() -> *mut whiteout_M3Batch;
26277 pub fn whiteout_m3_M3Batch_delete(self_: *mut whiteout_M3Batch);
26278 pub fn whiteout_m3_M3Batch_get_unknown(self_: *mut whiteout_M3Batch) -> u32;
26279 pub fn whiteout_m3_M3Batch_set_unknown(self_: *mut whiteout_M3Batch, value: u32);
26280 pub fn whiteout_m3_M3Batch_get_regionIndex(self_: *mut whiteout_M3Batch) -> u16;
26281 pub fn whiteout_m3_M3Batch_set_regionIndex(self_: *mut whiteout_M3Batch, value: u16);
26282 pub fn whiteout_m3_M3Batch_get_unknown2(self_: *mut whiteout_M3Batch) -> u32;
26283 pub fn whiteout_m3_M3Batch_set_unknown2(self_: *mut whiteout_M3Batch, value: u32);
26284 pub fn whiteout_m3_M3Batch_get_materialIndex(self_: *mut whiteout_M3Batch) -> u16;
26285 pub fn whiteout_m3_M3Batch_set_materialIndex(self_: *mut whiteout_M3Batch, value: u16);
26286 pub fn whiteout_m3_M3Batch_get_boneCount(self_: *mut whiteout_M3Batch) -> u16;
26287 pub fn whiteout_m3_M3Batch_set_boneCount(self_: *mut whiteout_M3Batch, value: u16);
26288 pub fn whiteout_m3_M3MeshSection_new() -> *mut whiteout_M3MeshSection;
26290 pub fn whiteout_m3_M3MeshSection_delete(self_: *mut whiteout_M3MeshSection);
26291 pub fn whiteout_m3_M3MeshSection_get_nodeIndex(self_: *mut whiteout_M3MeshSection) -> u32;
26292 pub fn whiteout_m3_M3MeshSection_set_nodeIndex(
26293 self_: *mut whiteout_M3MeshSection,
26294 value: u32,
26295 );
26296 pub fn whiteout_m3_M3MeshSection_get_bounds(
26297 self_: *mut whiteout_M3MeshSection,
26298 ) -> *mut whiteout_M3AnimRefM3Extent;
26299 pub fn whiteout_m3_M3MeshSection_set_bounds(
26300 self_: *mut whiteout_M3MeshSection,
26301 value: *const whiteout_M3AnimRefM3Extent,
26302 );
26303 pub fn whiteout_m3_M3MeshDivision_new() -> *mut whiteout_M3MeshDivision;
26305 pub fn whiteout_m3_M3MeshDivision_delete(self_: *mut whiteout_M3MeshDivision);
26306 pub fn whiteout_m3_M3MeshDivision_get_faces_count(
26307 self_: *mut whiteout_M3MeshDivision,
26308 ) -> usize;
26309 pub fn whiteout_m3_M3MeshDivision_resize_faces(
26310 self_: *mut whiteout_M3MeshDivision,
26311 count: usize,
26312 );
26313 pub fn whiteout_m3_M3MeshDivision_get_faces_data(
26314 self_: *mut whiteout_M3MeshDivision,
26315 ) -> *const u16;
26316 pub fn whiteout_m3_M3MeshDivision_assign_faces(
26317 self_: *mut whiteout_M3MeshDivision,
26318 data: *const u16,
26319 count: usize,
26320 );
26321 pub fn whiteout_m3_M3MeshDivision_get_regions_count(
26322 self_: *mut whiteout_M3MeshDivision,
26323 ) -> usize;
26324 pub fn whiteout_m3_M3MeshDivision_resize_regions(
26325 self_: *mut whiteout_M3MeshDivision,
26326 count: usize,
26327 );
26328 pub fn whiteout_m3_M3MeshDivision_get_regions_at(
26329 self_: *mut whiteout_M3MeshDivision,
26330 index: usize,
26331 ) -> *mut whiteout_M3Region;
26332 pub fn whiteout_m3_M3MeshDivision_get_batches_count(
26333 self_: *mut whiteout_M3MeshDivision,
26334 ) -> usize;
26335 pub fn whiteout_m3_M3MeshDivision_resize_batches(
26336 self_: *mut whiteout_M3MeshDivision,
26337 count: usize,
26338 );
26339 pub fn whiteout_m3_M3MeshDivision_get_batches_at(
26340 self_: *mut whiteout_M3MeshDivision,
26341 index: usize,
26342 ) -> *mut whiteout_M3Batch;
26343 pub fn whiteout_m3_M3MeshDivision_get_msec_count(
26344 self_: *mut whiteout_M3MeshDivision,
26345 ) -> usize;
26346 pub fn whiteout_m3_M3MeshDivision_resize_msec(
26347 self_: *mut whiteout_M3MeshDivision,
26348 count: usize,
26349 );
26350 pub fn whiteout_m3_M3MeshDivision_get_msec_at(
26351 self_: *mut whiteout_M3MeshDivision,
26352 index: usize,
26353 ) -> *mut whiteout_M3MeshSection;
26354 pub fn whiteout_m3_M3MeshDivision_get_instances(self_: *mut whiteout_M3MeshDivision)
26355 -> u32;
26356 pub fn whiteout_m3_M3MeshDivision_set_instances(
26357 self_: *mut whiteout_M3MeshDivision,
26358 value: u32,
26359 );
26360 pub fn whiteout_m3_M3InitialReference_new() -> *mut whiteout_M3InitialReference;
26362 pub fn whiteout_m3_M3InitialReference_delete(self_: *mut whiteout_M3InitialReference);
26363 pub fn whiteout_m3_M3AttachmentPoint_new() -> *mut whiteout_M3AttachmentPoint;
26365 pub fn whiteout_m3_M3AttachmentPoint_delete(self_: *mut whiteout_M3AttachmentPoint);
26366 pub fn whiteout_m3_M3AttachmentPoint_get_unknown(
26367 self_: *mut whiteout_M3AttachmentPoint,
26368 ) -> u32;
26369 pub fn whiteout_m3_M3AttachmentPoint_set_unknown(
26370 self_: *mut whiteout_M3AttachmentPoint,
26371 value: u32,
26372 );
26373 pub fn whiteout_m3_M3AttachmentPoint_get_name(
26374 self_: *mut whiteout_M3AttachmentPoint,
26375 ) -> RawCString;
26376 pub fn whiteout_m3_M3AttachmentPoint_set_name(
26377 self_: *mut whiteout_M3AttachmentPoint,
26378 value: *const core::ffi::c_char,
26379 );
26380 pub fn whiteout_m3_M3AttachmentPoint_get_boneIndex(
26381 self_: *mut whiteout_M3AttachmentPoint,
26382 ) -> u32;
26383 pub fn whiteout_m3_M3AttachmentPoint_set_boneIndex(
26384 self_: *mut whiteout_M3AttachmentPoint,
26385 value: u32,
26386 );
26387 pub fn whiteout_m3_M3HitTestShape_new() -> *mut whiteout_M3HitTestShape;
26389 pub fn whiteout_m3_M3HitTestShape_delete(self_: *mut whiteout_M3HitTestShape);
26390 pub fn whiteout_m3_M3HitTestShape_get_shapeType(self_: *mut whiteout_M3HitTestShape)
26391 -> i32;
26392 pub fn whiteout_m3_M3HitTestShape_set_shapeType(
26393 self_: *mut whiteout_M3HitTestShape,
26394 value: i32,
26395 );
26396 pub fn whiteout_m3_M3HitTestShape_get_boneIndex(self_: *mut whiteout_M3HitTestShape)
26397 -> u16;
26398 pub fn whiteout_m3_M3HitTestShape_set_boneIndex(
26399 self_: *mut whiteout_M3HitTestShape,
26400 value: u16,
26401 );
26402 pub fn whiteout_m3_M3HitTestShape_get_padding(self_: *mut whiteout_M3HitTestShape) -> u16;
26403 pub fn whiteout_m3_M3HitTestShape_set_padding(
26404 self_: *mut whiteout_M3HitTestShape,
26405 value: u16,
26406 );
26407 pub fn whiteout_m3_M3HitTestShape_get_vertexPositions_count(
26408 self_: *mut whiteout_M3HitTestShape,
26409 ) -> usize;
26410 pub fn whiteout_m3_M3HitTestShape_resize_vertexPositions(
26411 self_: *mut whiteout_M3HitTestShape,
26412 count: usize,
26413 );
26414 pub fn whiteout_m3_M3HitTestShape_get_vertexPositions_data(
26415 self_: *mut whiteout_M3HitTestShape,
26416 ) -> *const f32;
26417 pub fn whiteout_m3_M3HitTestShape_assign_vertexPositions(
26418 self_: *mut whiteout_M3HitTestShape,
26419 data: *const f32,
26420 count: usize,
26421 );
26422 pub fn whiteout_m3_M3HitTestShape_get_faceIndices_count(
26423 self_: *mut whiteout_M3HitTestShape,
26424 ) -> usize;
26425 pub fn whiteout_m3_M3HitTestShape_resize_faceIndices(
26426 self_: *mut whiteout_M3HitTestShape,
26427 count: usize,
26428 );
26429 pub fn whiteout_m3_M3HitTestShape_get_faceIndices_data(
26430 self_: *mut whiteout_M3HitTestShape,
26431 ) -> *const u16;
26432 pub fn whiteout_m3_M3HitTestShape_assign_faceIndices(
26433 self_: *mut whiteout_M3HitTestShape,
26434 data: *const u16,
26435 count: usize,
26436 );
26437 pub fn whiteout_m3_M3HitTestShape_get_sizeX(self_: *mut whiteout_M3HitTestShape) -> f32;
26438 pub fn whiteout_m3_M3HitTestShape_set_sizeX(
26439 self_: *mut whiteout_M3HitTestShape,
26440 value: f32,
26441 );
26442 pub fn whiteout_m3_M3HitTestShape_get_sizeY(self_: *mut whiteout_M3HitTestShape) -> f32;
26443 pub fn whiteout_m3_M3HitTestShape_set_sizeY(
26444 self_: *mut whiteout_M3HitTestShape,
26445 value: f32,
26446 );
26447 pub fn whiteout_m3_M3HitTestShape_get_sizeZ(self_: *mut whiteout_M3HitTestShape) -> f32;
26448 pub fn whiteout_m3_M3HitTestShape_set_sizeZ(
26449 self_: *mut whiteout_M3HitTestShape,
26450 value: f32,
26451 );
26452 pub fn whiteout_m3_M3AttachmentVolume_new() -> *mut whiteout_M3AttachmentVolume;
26454 pub fn whiteout_m3_M3AttachmentVolume_delete(self_: *mut whiteout_M3AttachmentVolume);
26455 pub fn whiteout_m3_M3AttachmentVolume_get_bone1(
26456 self_: *mut whiteout_M3AttachmentVolume,
26457 ) -> u32;
26458 pub fn whiteout_m3_M3AttachmentVolume_set_bone1(
26459 self_: *mut whiteout_M3AttachmentVolume,
26460 value: u32,
26461 );
26462 pub fn whiteout_m3_M3AttachmentVolume_get_bone2(
26463 self_: *mut whiteout_M3AttachmentVolume,
26464 ) -> u32;
26465 pub fn whiteout_m3_M3AttachmentVolume_set_bone2(
26466 self_: *mut whiteout_M3AttachmentVolume,
26467 value: u32,
26468 );
26469 pub fn whiteout_m3_M3AttachmentVolume_get_shapeType(
26470 self_: *mut whiteout_M3AttachmentVolume,
26471 ) -> i32;
26472 pub fn whiteout_m3_M3AttachmentVolume_set_shapeType(
26473 self_: *mut whiteout_M3AttachmentVolume,
26474 value: i32,
26475 );
26476 pub fn whiteout_m3_M3AttachmentVolume_get_boneIndex(
26477 self_: *mut whiteout_M3AttachmentVolume,
26478 ) -> u16;
26479 pub fn whiteout_m3_M3AttachmentVolume_set_boneIndex(
26480 self_: *mut whiteout_M3AttachmentVolume,
26481 value: u16,
26482 );
26483 pub fn whiteout_m3_M3AttachmentVolume_get_padding(
26484 self_: *mut whiteout_M3AttachmentVolume,
26485 ) -> u16;
26486 pub fn whiteout_m3_M3AttachmentVolume_set_padding(
26487 self_: *mut whiteout_M3AttachmentVolume,
26488 value: u16,
26489 );
26490 pub fn whiteout_m3_M3AttachmentVolume_get_vertexPositions_count(
26491 self_: *mut whiteout_M3AttachmentVolume,
26492 ) -> usize;
26493 pub fn whiteout_m3_M3AttachmentVolume_resize_vertexPositions(
26494 self_: *mut whiteout_M3AttachmentVolume,
26495 count: usize,
26496 );
26497 pub fn whiteout_m3_M3AttachmentVolume_get_vertexPositions_data(
26498 self_: *mut whiteout_M3AttachmentVolume,
26499 ) -> *const f32;
26500 pub fn whiteout_m3_M3AttachmentVolume_assign_vertexPositions(
26501 self_: *mut whiteout_M3AttachmentVolume,
26502 data: *const f32,
26503 count: usize,
26504 );
26505 pub fn whiteout_m3_M3AttachmentVolume_get_faceIndices_count(
26506 self_: *mut whiteout_M3AttachmentVolume,
26507 ) -> usize;
26508 pub fn whiteout_m3_M3AttachmentVolume_resize_faceIndices(
26509 self_: *mut whiteout_M3AttachmentVolume,
26510 count: usize,
26511 );
26512 pub fn whiteout_m3_M3AttachmentVolume_get_faceIndices_data(
26513 self_: *mut whiteout_M3AttachmentVolume,
26514 ) -> *const u16;
26515 pub fn whiteout_m3_M3AttachmentVolume_assign_faceIndices(
26516 self_: *mut whiteout_M3AttachmentVolume,
26517 data: *const u16,
26518 count: usize,
26519 );
26520 pub fn whiteout_m3_M3AttachmentVolume_get_sizeX(
26521 self_: *mut whiteout_M3AttachmentVolume,
26522 ) -> f32;
26523 pub fn whiteout_m3_M3AttachmentVolume_set_sizeX(
26524 self_: *mut whiteout_M3AttachmentVolume,
26525 value: f32,
26526 );
26527 pub fn whiteout_m3_M3AttachmentVolume_get_sizeY(
26528 self_: *mut whiteout_M3AttachmentVolume,
26529 ) -> f32;
26530 pub fn whiteout_m3_M3AttachmentVolume_set_sizeY(
26531 self_: *mut whiteout_M3AttachmentVolume,
26532 value: f32,
26533 );
26534 pub fn whiteout_m3_M3AttachmentVolume_get_sizeZ(
26535 self_: *mut whiteout_M3AttachmentVolume,
26536 ) -> f32;
26537 pub fn whiteout_m3_M3AttachmentVolume_set_sizeZ(
26538 self_: *mut whiteout_M3AttachmentVolume,
26539 value: f32,
26540 );
26541 pub fn whiteout_m3_M3TriggerData_new() -> *mut whiteout_M3TriggerData;
26543 pub fn whiteout_m3_M3TriggerData_delete(self_: *mut whiteout_M3TriggerData);
26544 pub fn whiteout_m3_M3TriggerData_get_dataIndices_count(
26545 self_: *mut whiteout_M3TriggerData,
26546 ) -> usize;
26547 pub fn whiteout_m3_M3TriggerData_resize_dataIndices(
26548 self_: *mut whiteout_M3TriggerData,
26549 count: usize,
26550 );
26551 pub fn whiteout_m3_M3TriggerData_get_dataIndices_data(
26552 self_: *mut whiteout_M3TriggerData,
26553 ) -> *const u32;
26554 pub fn whiteout_m3_M3TriggerData_assign_dataIndices(
26555 self_: *mut whiteout_M3TriggerData,
26556 data: *const u32,
26557 count: usize,
26558 );
26559 pub fn whiteout_m3_M3TriggerData_get_name(self_: *mut whiteout_M3TriggerData)
26560 -> RawCString;
26561 pub fn whiteout_m3_M3TriggerData_set_name(
26562 self_: *mut whiteout_M3TriggerData,
26563 value: *const core::ffi::c_char,
26564 );
26565 pub fn whiteout_m3_M3TurretBehavior_new() -> *mut whiteout_M3TurretBehavior;
26567 pub fn whiteout_m3_M3TurretBehavior_delete(self_: *mut whiteout_M3TurretBehavior);
26568 pub fn whiteout_m3_M3TurretBehavior_get_unknown1(
26569 self_: *mut whiteout_M3TurretBehavior,
26570 ) -> *mut core::ffi::c_void;
26571 pub fn whiteout_m3_M3TurretBehavior_set_unknown1(
26572 self_: *mut whiteout_M3TurretBehavior,
26573 value: *const core::ffi::c_void,
26574 );
26575 pub fn whiteout_m3_M3TurretBehavior_get_unknown2(
26576 self_: *mut whiteout_M3TurretBehavior,
26577 ) -> *mut core::ffi::c_void;
26578 pub fn whiteout_m3_M3TurretBehavior_set_unknown2(
26579 self_: *mut whiteout_M3TurretBehavior,
26580 value: *const core::ffi::c_void,
26581 );
26582 pub fn whiteout_m3_M3TurretBehavior_get_boneIndex(
26583 self_: *mut whiteout_M3TurretBehavior,
26584 ) -> u16;
26585 pub fn whiteout_m3_M3TurretBehavior_set_boneIndex(
26586 self_: *mut whiteout_M3TurretBehavior,
26587 value: u16,
26588 );
26589 pub fn whiteout_m3_M3TurretBehavior_get_useAsMainTurret(
26590 self_: *mut whiteout_M3TurretBehavior,
26591 ) -> u8;
26592 pub fn whiteout_m3_M3TurretBehavior_set_useAsMainTurret(
26593 self_: *mut whiteout_M3TurretBehavior,
26594 value: u8,
26595 );
26596 pub fn whiteout_m3_M3TurretBehavior_get_turretGroupId(
26597 self_: *mut whiteout_M3TurretBehavior,
26598 ) -> u8;
26599 pub fn whiteout_m3_M3TurretBehavior_set_turretGroupId(
26600 self_: *mut whiteout_M3TurretBehavior,
26601 value: u8,
26602 );
26603 pub fn whiteout_m3_M3TurretBehavior_get_yawLimited(
26604 self_: *mut whiteout_M3TurretBehavior,
26605 ) -> u32;
26606 pub fn whiteout_m3_M3TurretBehavior_set_yawLimited(
26607 self_: *mut whiteout_M3TurretBehavior,
26608 value: u32,
26609 );
26610 pub fn whiteout_m3_M3TurretBehavior_get_yawMin(
26611 self_: *mut whiteout_M3TurretBehavior,
26612 ) -> f32;
26613 pub fn whiteout_m3_M3TurretBehavior_set_yawMin(
26614 self_: *mut whiteout_M3TurretBehavior,
26615 value: f32,
26616 );
26617 pub fn whiteout_m3_M3TurretBehavior_get_yawMax(
26618 self_: *mut whiteout_M3TurretBehavior,
26619 ) -> f32;
26620 pub fn whiteout_m3_M3TurretBehavior_set_yawMax(
26621 self_: *mut whiteout_M3TurretBehavior,
26622 value: f32,
26623 );
26624 pub fn whiteout_m3_M3TurretBehavior_get_yawWeight(
26625 self_: *mut whiteout_M3TurretBehavior,
26626 ) -> f32;
26627 pub fn whiteout_m3_M3TurretBehavior_set_yawWeight(
26628 self_: *mut whiteout_M3TurretBehavior,
26629 value: f32,
26630 );
26631 pub fn whiteout_m3_M3TurretBehavior_get_pitchLimited(
26632 self_: *mut whiteout_M3TurretBehavior,
26633 ) -> u32;
26634 pub fn whiteout_m3_M3TurretBehavior_set_pitchLimited(
26635 self_: *mut whiteout_M3TurretBehavior,
26636 value: u32,
26637 );
26638 pub fn whiteout_m3_M3TurretBehavior_get_pitchMin(
26639 self_: *mut whiteout_M3TurretBehavior,
26640 ) -> f32;
26641 pub fn whiteout_m3_M3TurretBehavior_set_pitchMin(
26642 self_: *mut whiteout_M3TurretBehavior,
26643 value: f32,
26644 );
26645 pub fn whiteout_m3_M3TurretBehavior_get_pitchMax(
26646 self_: *mut whiteout_M3TurretBehavior,
26647 ) -> f32;
26648 pub fn whiteout_m3_M3TurretBehavior_set_pitchMax(
26649 self_: *mut whiteout_M3TurretBehavior,
26650 value: f32,
26651 );
26652 pub fn whiteout_m3_M3TurretBehavior_get_pitchWeight(
26653 self_: *mut whiteout_M3TurretBehavior,
26654 ) -> f32;
26655 pub fn whiteout_m3_M3TurretBehavior_set_pitchWeight(
26656 self_: *mut whiteout_M3TurretBehavior,
26657 value: f32,
26658 );
26659 pub fn whiteout_m3_M3TurretBehavior_get_unknown3(
26660 self_: *mut whiteout_M3TurretBehavior,
26661 ) -> f32;
26662 pub fn whiteout_m3_M3TurretBehavior_set_unknown3(
26663 self_: *mut whiteout_M3TurretBehavior,
26664 value: f32,
26665 );
26666 pub fn whiteout_m3_M3TurretBehavior_get_unknown4(
26667 self_: *mut whiteout_M3TurretBehavior,
26668 ) -> f32;
26669 pub fn whiteout_m3_M3TurretBehavior_set_unknown4(
26670 self_: *mut whiteout_M3TurretBehavior,
26671 value: f32,
26672 );
26673 pub fn whiteout_m3_M3TurretBehavior_get_mainBoneOffset(
26674 self_: *mut whiteout_M3TurretBehavior,
26675 ) -> *mut core::ffi::c_void;
26676 pub fn whiteout_m3_M3TurretBehavior_set_mainBoneOffset(
26677 self_: *mut whiteout_M3TurretBehavior,
26678 value: *const core::ffi::c_void,
26679 );
26680 pub fn whiteout_m3_M3BillboardBehavior_new() -> *mut whiteout_M3BillboardBehavior;
26682 pub fn whiteout_m3_M3BillboardBehavior_delete(self_: *mut whiteout_M3BillboardBehavior);
26683 pub fn whiteout_m3_M3BillboardBehavior_get_dependents_count(
26684 self_: *mut whiteout_M3BillboardBehavior,
26685 ) -> usize;
26686 pub fn whiteout_m3_M3BillboardBehavior_resize_dependents(
26687 self_: *mut whiteout_M3BillboardBehavior,
26688 count: usize,
26689 );
26690 pub fn whiteout_m3_M3BillboardBehavior_get_dependents_data(
26691 self_: *mut whiteout_M3BillboardBehavior,
26692 ) -> *const u16;
26693 pub fn whiteout_m3_M3BillboardBehavior_assign_dependents(
26694 self_: *mut whiteout_M3BillboardBehavior,
26695 data: *const u16,
26696 count: usize,
26697 );
26698 pub fn whiteout_m3_M3BillboardBehavior_get_boneIndex(
26699 self_: *mut whiteout_M3BillboardBehavior,
26700 ) -> u16;
26701 pub fn whiteout_m3_M3BillboardBehavior_set_boneIndex(
26702 self_: *mut whiteout_M3BillboardBehavior,
26703 value: u16,
26704 );
26705 pub fn whiteout_m3_M3BillboardBehavior_get_billboardType(
26706 self_: *mut whiteout_M3BillboardBehavior,
26707 ) -> u8;
26708 pub fn whiteout_m3_M3BillboardBehavior_set_billboardType(
26709 self_: *mut whiteout_M3BillboardBehavior,
26710 value: u8,
26711 );
26712 pub fn whiteout_m3_M3BillboardBehavior_get_cameraLookAt(
26713 self_: *mut whiteout_M3BillboardBehavior,
26714 ) -> u8;
26715 pub fn whiteout_m3_M3BillboardBehavior_set_cameraLookAt(
26716 self_: *mut whiteout_M3BillboardBehavior,
26717 value: u8,
26718 );
26719 pub fn whiteout_m3_M3BillboardBehavior_get_up(
26720 self_: *mut whiteout_M3BillboardBehavior,
26721 ) -> *mut core::ffi::c_void;
26722 pub fn whiteout_m3_M3BillboardBehavior_set_up(
26723 self_: *mut whiteout_M3BillboardBehavior,
26724 value: *const core::ffi::c_void,
26725 );
26726 pub fn whiteout_m3_M3BillboardBehavior_get_forward(
26727 self_: *mut whiteout_M3BillboardBehavior,
26728 ) -> *mut core::ffi::c_void;
26729 pub fn whiteout_m3_M3BillboardBehavior_set_forward(
26730 self_: *mut whiteout_M3BillboardBehavior,
26731 value: *const core::ffi::c_void,
26732 );
26733 pub fn whiteout_m3_M3IKJoint_new() -> *mut whiteout_M3IKJoint;
26735 pub fn whiteout_m3_M3IKJoint_delete(self_: *mut whiteout_M3IKJoint);
26736 pub fn whiteout_m3_M3IKJoint_get_dependents_count(self_: *mut whiteout_M3IKJoint) -> usize;
26737 pub fn whiteout_m3_M3IKJoint_resize_dependents(
26738 self_: *mut whiteout_M3IKJoint,
26739 count: usize,
26740 );
26741 pub fn whiteout_m3_M3IKJoint_get_dependents_data(
26742 self_: *mut whiteout_M3IKJoint,
26743 ) -> *const u16;
26744 pub fn whiteout_m3_M3IKJoint_assign_dependents(
26745 self_: *mut whiteout_M3IKJoint,
26746 data: *const u16,
26747 count: usize,
26748 );
26749 pub fn whiteout_m3_M3IKJoint_get_boneIndex1(self_: *mut whiteout_M3IKJoint) -> u16;
26750 pub fn whiteout_m3_M3IKJoint_set_boneIndex1(self_: *mut whiteout_M3IKJoint, value: u16);
26751 pub fn whiteout_m3_M3IKJoint_get_boneIndex2(self_: *mut whiteout_M3IKJoint) -> u16;
26752 pub fn whiteout_m3_M3IKJoint_set_boneIndex2(self_: *mut whiteout_M3IKJoint, value: u16);
26753 pub fn whiteout_m3_M3IKJoint_get_raycastUp(self_: *mut whiteout_M3IKJoint) -> f32;
26754 pub fn whiteout_m3_M3IKJoint_set_raycastUp(self_: *mut whiteout_M3IKJoint, value: f32);
26755 pub fn whiteout_m3_M3IKJoint_get_raycastDown(self_: *mut whiteout_M3IKJoint) -> f32;
26756 pub fn whiteout_m3_M3IKJoint_set_raycastDown(self_: *mut whiteout_M3IKJoint, value: f32);
26757 pub fn whiteout_m3_M3IKJoint_get_maxSpeed(self_: *mut whiteout_M3IKJoint) -> f32;
26758 pub fn whiteout_m3_M3IKJoint_set_maxSpeed(self_: *mut whiteout_M3IKJoint, value: f32);
26759 pub fn whiteout_m3_M3IKJoint_get_goalThreshold(self_: *mut whiteout_M3IKJoint) -> f32;
26760 pub fn whiteout_m3_M3IKJoint_set_goalThreshold(self_: *mut whiteout_M3IKJoint, value: f32);
26761 pub fn whiteout_m3_M3IKTwoJoint_new() -> *mut whiteout_M3IKTwoJoint;
26763 pub fn whiteout_m3_M3IKTwoJoint_delete(self_: *mut whiteout_M3IKTwoJoint);
26764 pub fn whiteout_m3_M3IKTwoJoint_get_dependents_count(
26765 self_: *mut whiteout_M3IKTwoJoint,
26766 ) -> usize;
26767 pub fn whiteout_m3_M3IKTwoJoint_resize_dependents(
26768 self_: *mut whiteout_M3IKTwoJoint,
26769 count: usize,
26770 );
26771 pub fn whiteout_m3_M3IKTwoJoint_get_dependents_data(
26772 self_: *mut whiteout_M3IKTwoJoint,
26773 ) -> *const u16;
26774 pub fn whiteout_m3_M3IKTwoJoint_assign_dependents(
26775 self_: *mut whiteout_M3IKTwoJoint,
26776 data: *const u16,
26777 count: usize,
26778 );
26779 pub fn whiteout_m3_M3IKTwoJoint_get_boneBase(self_: *mut whiteout_M3IKTwoJoint) -> u16;
26780 pub fn whiteout_m3_M3IKTwoJoint_set_boneBase(self_: *mut whiteout_M3IKTwoJoint, value: u16);
26781 pub fn whiteout_m3_M3IKTwoJoint_get_boneTarget(self_: *mut whiteout_M3IKTwoJoint) -> u16;
26782 pub fn whiteout_m3_M3IKTwoJoint_set_boneTarget(
26783 self_: *mut whiteout_M3IKTwoJoint,
26784 value: u16,
26785 );
26786 pub fn whiteout_m3_M3IKTwoJoint_get_boneEnd(self_: *mut whiteout_M3IKTwoJoint) -> u16;
26787 pub fn whiteout_m3_M3IKTwoJoint_set_boneEnd(self_: *mut whiteout_M3IKTwoJoint, value: u16);
26788 pub fn whiteout_m3_M3IKTwoJoint_get_padding(self_: *mut whiteout_M3IKTwoJoint) -> u16;
26789 pub fn whiteout_m3_M3IKTwoJoint_set_padding(self_: *mut whiteout_M3IKTwoJoint, value: u16);
26790 pub fn whiteout_m3_M3IKTwoJoint_get_hingeAxis(
26791 self_: *mut whiteout_M3IKTwoJoint,
26792 ) -> *mut core::ffi::c_void;
26793 pub fn whiteout_m3_M3IKTwoJoint_set_hingeAxis(
26794 self_: *mut whiteout_M3IKTwoJoint,
26795 value: *const core::ffi::c_void,
26796 );
26797 pub fn whiteout_m3_M3IKTwoJoint_get_maxAngleInner(self_: *mut whiteout_M3IKTwoJoint)
26798 -> f32;
26799 pub fn whiteout_m3_M3IKTwoJoint_set_maxAngleInner(
26800 self_: *mut whiteout_M3IKTwoJoint,
26801 value: f32,
26802 );
26803 pub fn whiteout_m3_M3IKTwoJoint_get_maxAngleOuter(self_: *mut whiteout_M3IKTwoJoint)
26804 -> f32;
26805 pub fn whiteout_m3_M3IKTwoJoint_set_maxAngleOuter(
26806 self_: *mut whiteout_M3IKTwoJoint,
26807 value: f32,
26808 );
26809 pub fn whiteout_m3_M3IKTwoJoint_get_searchUp(self_: *mut whiteout_M3IKTwoJoint) -> f32;
26810 pub fn whiteout_m3_M3IKTwoJoint_set_searchUp(self_: *mut whiteout_M3IKTwoJoint, value: f32);
26811 pub fn whiteout_m3_M3IKTwoJoint_get_searchDown(self_: *mut whiteout_M3IKTwoJoint) -> f32;
26812 pub fn whiteout_m3_M3IKTwoJoint_set_searchDown(
26813 self_: *mut whiteout_M3IKTwoJoint,
26814 value: f32,
26815 );
26816 pub fn whiteout_m3_M3IKCCD_new() -> *mut whiteout_M3IKCCD;
26818 pub fn whiteout_m3_M3IKCCD_delete(self_: *mut whiteout_M3IKCCD);
26819 pub fn whiteout_m3_M3IKCCD_get_dependents_count(self_: *mut whiteout_M3IKCCD) -> usize;
26820 pub fn whiteout_m3_M3IKCCD_resize_dependents(self_: *mut whiteout_M3IKCCD, count: usize);
26821 pub fn whiteout_m3_M3IKCCD_get_dependents_data(self_: *mut whiteout_M3IKCCD) -> *const u16;
26822 pub fn whiteout_m3_M3IKCCD_assign_dependents(
26823 self_: *mut whiteout_M3IKCCD,
26824 data: *const u16,
26825 count: usize,
26826 );
26827 pub fn whiteout_m3_M3IKCCD_get_boneBase(self_: *mut whiteout_M3IKCCD) -> u16;
26828 pub fn whiteout_m3_M3IKCCD_set_boneBase(self_: *mut whiteout_M3IKCCD, value: u16);
26829 pub fn whiteout_m3_M3IKCCD_get_boneTarget(self_: *mut whiteout_M3IKCCD) -> u16;
26830 pub fn whiteout_m3_M3IKCCD_set_boneTarget(self_: *mut whiteout_M3IKCCD, value: u16);
26831 pub fn whiteout_m3_M3IKCCD_get_searchUp(self_: *mut whiteout_M3IKCCD) -> f32;
26832 pub fn whiteout_m3_M3IKCCD_set_searchUp(self_: *mut whiteout_M3IKCCD, value: f32);
26833 pub fn whiteout_m3_M3IKCCD_get_searchDown(self_: *mut whiteout_M3IKCCD) -> f32;
26834 pub fn whiteout_m3_M3IKCCD_set_searchDown(self_: *mut whiteout_M3IKCCD, value: f32);
26835 pub fn whiteout_m3_M3OneBoneSolver_new() -> *mut whiteout_M3OneBoneSolver;
26837 pub fn whiteout_m3_M3OneBoneSolver_delete(self_: *mut whiteout_M3OneBoneSolver);
26838 pub fn whiteout_m3_M3OneBoneSolver_get_dependents_count(
26839 self_: *mut whiteout_M3OneBoneSolver,
26840 ) -> usize;
26841 pub fn whiteout_m3_M3OneBoneSolver_resize_dependents(
26842 self_: *mut whiteout_M3OneBoneSolver,
26843 count: usize,
26844 );
26845 pub fn whiteout_m3_M3OneBoneSolver_get_dependents_data(
26846 self_: *mut whiteout_M3OneBoneSolver,
26847 ) -> *const u16;
26848 pub fn whiteout_m3_M3OneBoneSolver_assign_dependents(
26849 self_: *mut whiteout_M3OneBoneSolver,
26850 data: *const u16,
26851 count: usize,
26852 );
26853 pub fn whiteout_m3_M3OneBoneSolver_get_bone(self_: *mut whiteout_M3OneBoneSolver) -> u16;
26854 pub fn whiteout_m3_M3OneBoneSolver_set_bone(
26855 self_: *mut whiteout_M3OneBoneSolver,
26856 value: u16,
26857 );
26858 pub fn whiteout_m3_M3OneBoneSolver_get_boneFallback(
26859 self_: *mut whiteout_M3OneBoneSolver,
26860 ) -> u16;
26861 pub fn whiteout_m3_M3OneBoneSolver_set_boneFallback(
26862 self_: *mut whiteout_M3OneBoneSolver,
26863 value: u16,
26864 );
26865 pub fn whiteout_m3_M3OneBoneSolver_get_maxAngle(
26866 self_: *mut whiteout_M3OneBoneSolver,
26867 ) -> f32;
26868 pub fn whiteout_m3_M3OneBoneSolver_set_maxAngle(
26869 self_: *mut whiteout_M3OneBoneSolver,
26870 value: f32,
26871 );
26872 pub fn whiteout_m3_M3ShadowBox_new() -> *mut whiteout_M3ShadowBox;
26874 pub fn whiteout_m3_M3ShadowBox_delete(self_: *mut whiteout_M3ShadowBox);
26875 pub fn whiteout_m3_M3ViewVolume_new() -> *mut whiteout_M3ViewVolume;
26877 pub fn whiteout_m3_M3ViewVolume_delete(self_: *mut whiteout_M3ViewVolume);
26878 pub fn whiteout_m3_M3ViewVolume_get_nodeIndex(self_: *mut whiteout_M3ViewVolume) -> u32;
26879 pub fn whiteout_m3_M3ViewVolume_set_nodeIndex(
26880 self_: *mut whiteout_M3ViewVolume,
26881 value: u32,
26882 );
26883 pub fn whiteout_m3_M3ViewVolume_get_size(
26884 self_: *mut whiteout_M3ViewVolume,
26885 ) -> *mut whiteout_M3AnimRefVector3f;
26886 pub fn whiteout_m3_M3ViewVolume_set_size(
26887 self_: *mut whiteout_M3ViewVolume,
26888 value: *const whiteout_M3AnimRefVector3f,
26889 );
26890 pub fn whiteout_m3_M3TrailingModel_new() -> *mut whiteout_M3TrailingModel;
26892 pub fn whiteout_m3_M3TrailingModel_delete(self_: *mut whiteout_M3TrailingModel);
26893 pub fn whiteout_m3_M3TrailingModel_get_vectors_count(
26894 self_: *mut whiteout_M3TrailingModel,
26895 ) -> usize;
26896 pub fn whiteout_m3_M3TrailingModel_resize_vectors(
26897 self_: *mut whiteout_M3TrailingModel,
26898 count: usize,
26899 );
26900 pub fn whiteout_m3_M3TrailingModel_get_vectors_data(
26901 self_: *mut whiteout_M3TrailingModel,
26902 ) -> *const f32;
26903 pub fn whiteout_m3_M3TrailingModel_assign_vectors(
26904 self_: *mut whiteout_M3TrailingModel,
26905 data: *const f32,
26906 count: usize,
26907 );
26908 pub fn whiteout_m3_M3TrailingModel_get_param0(self_: *mut whiteout_M3TrailingModel) -> f32;
26909 pub fn whiteout_m3_M3TrailingModel_set_param0(
26910 self_: *mut whiteout_M3TrailingModel,
26911 value: f32,
26912 );
26913 pub fn whiteout_m3_M3TrailingModel_get_param1(self_: *mut whiteout_M3TrailingModel) -> f32;
26914 pub fn whiteout_m3_M3TrailingModel_set_param1(
26915 self_: *mut whiteout_M3TrailingModel,
26916 value: f32,
26917 );
26918 pub fn whiteout_m3_M3TrailingModel_get_animFloat0(
26919 self_: *mut whiteout_M3TrailingModel,
26920 ) -> *mut whiteout_M3AnimRefF32;
26921 pub fn whiteout_m3_M3TrailingModel_set_animFloat0(
26922 self_: *mut whiteout_M3TrailingModel,
26923 value: *const whiteout_M3AnimRefF32,
26924 );
26925 pub fn whiteout_m3_M3TrailingModel_get_animFloat1(
26926 self_: *mut whiteout_M3TrailingModel,
26927 ) -> *mut whiteout_M3AnimRefF32;
26928 pub fn whiteout_m3_M3TrailingModel_set_animFloat1(
26929 self_: *mut whiteout_M3TrailingModel,
26930 value: *const whiteout_M3AnimRefF32,
26931 );
26932 pub fn whiteout_m3_M3TrailingModel_get_flag(self_: *mut whiteout_M3TrailingModel) -> u32;
26933 pub fn whiteout_m3_M3TrailingModel_set_flag(
26934 self_: *mut whiteout_M3TrailingModel,
26935 value: u32,
26936 );
26937 pub fn whiteout_m3_M3TrailingModel_get_reserved0(
26938 self_: *mut whiteout_M3TrailingModel,
26939 ) -> u32;
26940 pub fn whiteout_m3_M3TrailingModel_set_reserved0(
26941 self_: *mut whiteout_M3TrailingModel,
26942 value: u32,
26943 );
26944 pub fn whiteout_m3_M3TrailingModel_get_reserved1(
26945 self_: *mut whiteout_M3TrailingModel,
26946 ) -> u32;
26947 pub fn whiteout_m3_M3TrailingModel_set_reserved1(
26948 self_: *mut whiteout_M3TrailingModel,
26949 value: u32,
26950 );
26951 pub fn whiteout_m3_M3Force_new() -> *mut whiteout_M3Force;
26953 pub fn whiteout_m3_M3Force_delete(self_: *mut whiteout_M3Force);
26954 pub fn whiteout_m3_M3Force_get_forceType(self_: *mut whiteout_M3Force) -> i32;
26955 pub fn whiteout_m3_M3Force_set_forceType(self_: *mut whiteout_M3Force, value: i32);
26956 pub fn whiteout_m3_M3Force_get_forceShape(self_: *mut whiteout_M3Force) -> i32;
26957 pub fn whiteout_m3_M3Force_set_forceShape(self_: *mut whiteout_M3Force, value: i32);
26958 pub fn whiteout_m3_M3Force_get_unknown(self_: *mut whiteout_M3Force) -> u32;
26959 pub fn whiteout_m3_M3Force_set_unknown(self_: *mut whiteout_M3Force, value: u32);
26960 pub fn whiteout_m3_M3Force_get_boneIndex(self_: *mut whiteout_M3Force) -> u32;
26961 pub fn whiteout_m3_M3Force_set_boneIndex(self_: *mut whiteout_M3Force, value: u32);
26962 pub fn whiteout_m3_M3Force_get_flags(self_: *mut whiteout_M3Force) -> i32;
26963 pub fn whiteout_m3_M3Force_set_flags(self_: *mut whiteout_M3Force, value: i32);
26964 pub fn whiteout_m3_M3Force_get_localChannels(self_: *mut whiteout_M3Force) -> u32;
26965 pub fn whiteout_m3_M3Force_set_localChannels(self_: *mut whiteout_M3Force, value: u32);
26966 pub fn whiteout_m3_M3Force_get_strength(
26967 self_: *mut whiteout_M3Force,
26968 ) -> *mut whiteout_M3AnimRefF32;
26969 pub fn whiteout_m3_M3Force_set_strength(
26970 self_: *mut whiteout_M3Force,
26971 value: *const whiteout_M3AnimRefF32,
26972 );
26973 pub fn whiteout_m3_M3Force_get_width(
26974 self_: *mut whiteout_M3Force,
26975 ) -> *mut whiteout_M3AnimRefF32;
26976 pub fn whiteout_m3_M3Force_set_width(
26977 self_: *mut whiteout_M3Force,
26978 value: *const whiteout_M3AnimRefF32,
26979 );
26980 pub fn whiteout_m3_M3Force_get_height(
26981 self_: *mut whiteout_M3Force,
26982 ) -> *mut whiteout_M3AnimRefF32;
26983 pub fn whiteout_m3_M3Force_set_height(
26984 self_: *mut whiteout_M3Force,
26985 value: *const whiteout_M3AnimRefF32,
26986 );
26987 pub fn whiteout_m3_M3Force_get_length(
26988 self_: *mut whiteout_M3Force,
26989 ) -> *mut whiteout_M3AnimRefF32;
26990 pub fn whiteout_m3_M3Force_set_length(
26991 self_: *mut whiteout_M3Force,
26992 value: *const whiteout_M3AnimRefF32,
26993 );
26994 pub fn whiteout_m3_M3Warp_new() -> *mut whiteout_M3Warp;
26996 pub fn whiteout_m3_M3Warp_delete(self_: *mut whiteout_M3Warp);
26997 pub fn whiteout_m3_M3Warp_get_warpType(self_: *mut whiteout_M3Warp) -> u32;
26998 pub fn whiteout_m3_M3Warp_set_warpType(self_: *mut whiteout_M3Warp, value: u32);
26999 pub fn whiteout_m3_M3Warp_get_boneIndex(self_: *mut whiteout_M3Warp) -> u32;
27000 pub fn whiteout_m3_M3Warp_set_boneIndex(self_: *mut whiteout_M3Warp, value: u32);
27001 pub fn whiteout_m3_M3Warp_get_unknown(self_: *mut whiteout_M3Warp) -> u32;
27002 pub fn whiteout_m3_M3Warp_set_unknown(self_: *mut whiteout_M3Warp, value: u32);
27003 pub fn whiteout_m3_M3Warp_get_radius(
27004 self_: *mut whiteout_M3Warp,
27005 ) -> *mut whiteout_M3AnimRefF32;
27006 pub fn whiteout_m3_M3Warp_set_radius(
27007 self_: *mut whiteout_M3Warp,
27008 value: *const whiteout_M3AnimRefF32,
27009 );
27010 pub fn whiteout_m3_M3Warp_get_height(
27011 self_: *mut whiteout_M3Warp,
27012 ) -> *mut whiteout_M3AnimRefF32;
27013 pub fn whiteout_m3_M3Warp_set_height(
27014 self_: *mut whiteout_M3Warp,
27015 value: *const whiteout_M3AnimRefF32,
27016 );
27017 pub fn whiteout_m3_M3Warp_get_strength(
27018 self_: *mut whiteout_M3Warp,
27019 ) -> *mut whiteout_M3AnimRefF32;
27020 pub fn whiteout_m3_M3Warp_set_strength(
27021 self_: *mut whiteout_M3Warp,
27022 value: *const whiteout_M3AnimRefF32,
27023 );
27024 pub fn whiteout_m3_M3Warp_get_angular(
27025 self_: *mut whiteout_M3Warp,
27026 ) -> *mut whiteout_M3AnimRefF32;
27027 pub fn whiteout_m3_M3Warp_set_angular(
27028 self_: *mut whiteout_M3Warp,
27029 value: *const whiteout_M3AnimRefF32,
27030 );
27031 pub fn whiteout_m3_M3Warp_get_axial(
27032 self_: *mut whiteout_M3Warp,
27033 ) -> *mut whiteout_M3AnimRefF32;
27034 pub fn whiteout_m3_M3Warp_set_axial(
27035 self_: *mut whiteout_M3Warp,
27036 value: *const whiteout_M3AnimRefF32,
27037 );
27038 pub fn whiteout_m3_M3Warp_get_radial(
27039 self_: *mut whiteout_M3Warp,
27040 ) -> *mut whiteout_M3AnimRefF32;
27041 pub fn whiteout_m3_M3Warp_set_radial(
27042 self_: *mut whiteout_M3Warp,
27043 value: *const whiteout_M3AnimRefF32,
27044 );
27045 pub fn whiteout_m3_M3ConvexHullHalfEdge_new() -> *mut whiteout_M3ConvexHullHalfEdge;
27047 pub fn whiteout_m3_M3ConvexHullHalfEdge_delete(self_: *mut whiteout_M3ConvexHullHalfEdge);
27048 pub fn whiteout_m3_M3ConvexHullHalfEdge_get_type(
27049 self_: *mut whiteout_M3ConvexHullHalfEdge,
27050 ) -> u8;
27051 pub fn whiteout_m3_M3ConvexHullHalfEdge_set_type(
27052 self_: *mut whiteout_M3ConvexHullHalfEdge,
27053 value: u8,
27054 );
27055 pub fn whiteout_m3_M3ConvexHullHalfEdge_get_faceIndex(
27056 self_: *mut whiteout_M3ConvexHullHalfEdge,
27057 ) -> u8;
27058 pub fn whiteout_m3_M3ConvexHullHalfEdge_set_faceIndex(
27059 self_: *mut whiteout_M3ConvexHullHalfEdge,
27060 value: u8,
27061 );
27062 pub fn whiteout_m3_M3ConvexHullHalfEdge_get_vertexIndex(
27063 self_: *mut whiteout_M3ConvexHullHalfEdge,
27064 ) -> u8;
27065 pub fn whiteout_m3_M3ConvexHullHalfEdge_set_vertexIndex(
27066 self_: *mut whiteout_M3ConvexHullHalfEdge,
27067 value: u8,
27068 );
27069 pub fn whiteout_m3_M3ConvexHullHalfEdge_get_nextAroundVertex(
27070 self_: *mut whiteout_M3ConvexHullHalfEdge,
27071 ) -> u8;
27072 pub fn whiteout_m3_M3ConvexHullHalfEdge_set_nextAroundVertex(
27073 self_: *mut whiteout_M3ConvexHullHalfEdge,
27074 value: u8,
27075 );
27076 pub fn whiteout_m3_M3PhysicsMeshBvhNode_new() -> *mut whiteout_M3PhysicsMeshBvhNode;
27078 pub fn whiteout_m3_M3PhysicsMeshBvhNode_delete(self_: *mut whiteout_M3PhysicsMeshBvhNode);
27079 pub fn whiteout_m3_M3PhysicsMeshTriangle_new() -> *mut whiteout_M3PhysicsMeshTriangle;
27081 pub fn whiteout_m3_M3PhysicsMeshTriangle_delete(self_: *mut whiteout_M3PhysicsMeshTriangle);
27082 pub fn whiteout_m3_M3PhysicsMeshTriangle_get_vertexIndex0(
27083 self_: *mut whiteout_M3PhysicsMeshTriangle,
27084 ) -> u32;
27085 pub fn whiteout_m3_M3PhysicsMeshTriangle_set_vertexIndex0(
27086 self_: *mut whiteout_M3PhysicsMeshTriangle,
27087 value: u32,
27088 );
27089 pub fn whiteout_m3_M3PhysicsMeshTriangle_get_vertexIndex1(
27090 self_: *mut whiteout_M3PhysicsMeshTriangle,
27091 ) -> u32;
27092 pub fn whiteout_m3_M3PhysicsMeshTriangle_set_vertexIndex1(
27093 self_: *mut whiteout_M3PhysicsMeshTriangle,
27094 value: u32,
27095 );
27096 pub fn whiteout_m3_M3PhysicsMeshTriangle_get_vertexIndex2(
27097 self_: *mut whiteout_M3PhysicsMeshTriangle,
27098 ) -> u32;
27099 pub fn whiteout_m3_M3PhysicsMeshTriangle_set_vertexIndex2(
27100 self_: *mut whiteout_M3PhysicsMeshTriangle,
27101 value: u32,
27102 );
27103 pub fn whiteout_m3_M3PhysicsMeshTriangle_get_edgeIndex0(
27104 self_: *mut whiteout_M3PhysicsMeshTriangle,
27105 ) -> u32;
27106 pub fn whiteout_m3_M3PhysicsMeshTriangle_set_edgeIndex0(
27107 self_: *mut whiteout_M3PhysicsMeshTriangle,
27108 value: u32,
27109 );
27110 pub fn whiteout_m3_M3PhysicsMeshTriangle_get_edgeIndex1(
27111 self_: *mut whiteout_M3PhysicsMeshTriangle,
27112 ) -> u32;
27113 pub fn whiteout_m3_M3PhysicsMeshTriangle_set_edgeIndex1(
27114 self_: *mut whiteout_M3PhysicsMeshTriangle,
27115 value: u32,
27116 );
27117 pub fn whiteout_m3_M3PhysicsMeshTriangle_get_edgeIndex2(
27118 self_: *mut whiteout_M3PhysicsMeshTriangle,
27119 ) -> u32;
27120 pub fn whiteout_m3_M3PhysicsMeshTriangle_set_edgeIndex2(
27121 self_: *mut whiteout_M3PhysicsMeshTriangle,
27122 value: u32,
27123 );
27124 pub fn whiteout_m3_M3PhysicsMeshTriangle_get_reserved(
27125 self_: *mut whiteout_M3PhysicsMeshTriangle,
27126 ) -> u16;
27127 pub fn whiteout_m3_M3PhysicsMeshTriangle_set_reserved(
27128 self_: *mut whiteout_M3PhysicsMeshTriangle,
27129 value: u16,
27130 );
27131 pub fn whiteout_m3_M3PhysicsMeshTriangle_get_flags(
27132 self_: *mut whiteout_M3PhysicsMeshTriangle,
27133 ) -> u16;
27134 pub fn whiteout_m3_M3PhysicsMeshTriangle_set_flags(
27135 self_: *mut whiteout_M3PhysicsMeshTriangle,
27136 value: u16,
27137 );
27138 pub fn whiteout_m3_M3PhysicsMeshEdge_new() -> *mut whiteout_M3PhysicsMeshEdge;
27140 pub fn whiteout_m3_M3PhysicsMeshEdge_delete(self_: *mut whiteout_M3PhysicsMeshEdge);
27141 pub fn whiteout_m3_M3PhysicsMeshEdge_get_edgeType(
27142 self_: *mut whiteout_M3PhysicsMeshEdge,
27143 ) -> u32;
27144 pub fn whiteout_m3_M3PhysicsMeshEdge_set_edgeType(
27145 self_: *mut whiteout_M3PhysicsMeshEdge,
27146 value: u32,
27147 );
27148 pub fn whiteout_m3_M3PhysicsMeshEdge_get_vertexA(
27149 self_: *mut whiteout_M3PhysicsMeshEdge,
27150 ) -> u32;
27151 pub fn whiteout_m3_M3PhysicsMeshEdge_set_vertexA(
27152 self_: *mut whiteout_M3PhysicsMeshEdge,
27153 value: u32,
27154 );
27155 pub fn whiteout_m3_M3PhysicsMeshEdge_get_vertexB(
27156 self_: *mut whiteout_M3PhysicsMeshEdge,
27157 ) -> u32;
27158 pub fn whiteout_m3_M3PhysicsMeshEdge_set_vertexB(
27159 self_: *mut whiteout_M3PhysicsMeshEdge,
27160 value: u32,
27161 );
27162 pub fn whiteout_m3_M3PhysicsMeshEdge_get_faceA(
27163 self_: *mut whiteout_M3PhysicsMeshEdge,
27164 ) -> u32;
27165 pub fn whiteout_m3_M3PhysicsMeshEdge_set_faceA(
27166 self_: *mut whiteout_M3PhysicsMeshEdge,
27167 value: u32,
27168 );
27169 pub fn whiteout_m3_M3PhysicsMeshEdge_get_faceB(
27170 self_: *mut whiteout_M3PhysicsMeshEdge,
27171 ) -> u32;
27172 pub fn whiteout_m3_M3PhysicsMeshEdge_set_faceB(
27173 self_: *mut whiteout_M3PhysicsMeshEdge,
27174 value: u32,
27175 );
27176 pub fn whiteout_m3_M3PhysicsShape_new() -> *mut whiteout_M3PhysicsShape;
27178 pub fn whiteout_m3_M3PhysicsShape_delete(self_: *mut whiteout_M3PhysicsShape);
27179 pub fn whiteout_m3_M3PhysicsShape_get_collisionMargin(
27180 self_: *mut whiteout_M3PhysicsShape,
27181 ) -> f32;
27182 pub fn whiteout_m3_M3PhysicsShape_set_collisionMargin(
27183 self_: *mut whiteout_M3PhysicsShape,
27184 value: f32,
27185 );
27186 pub fn whiteout_m3_M3PhysicsShape_get_shapeType(self_: *mut whiteout_M3PhysicsShape)
27187 -> i32;
27188 pub fn whiteout_m3_M3PhysicsShape_set_shapeType(
27189 self_: *mut whiteout_M3PhysicsShape,
27190 value: i32,
27191 );
27192 pub fn whiteout_m3_M3PhysicsShape_get_oldSizes(
27193 self_: *mut whiteout_M3PhysicsShape,
27194 ) -> *mut core::ffi::c_void;
27195 pub fn whiteout_m3_M3PhysicsShape_set_oldSizes(
27196 self_: *mut whiteout_M3PhysicsShape,
27197 value: *const core::ffi::c_void,
27198 );
27199 pub fn whiteout_m3_M3PhysicsShape_get_shapeDimensions(
27200 self_: *mut whiteout_M3PhysicsShape,
27201 ) -> *mut core::ffi::c_void;
27202 pub fn whiteout_m3_M3PhysicsShape_set_shapeDimensions(
27203 self_: *mut whiteout_M3PhysicsShape,
27204 value: *const core::ffi::c_void,
27205 );
27206 pub fn whiteout_m3_M3PhysicsShape_get_hullFaceNormals_count(
27207 self_: *mut whiteout_M3PhysicsShape,
27208 ) -> usize;
27209 pub fn whiteout_m3_M3PhysicsShape_resize_hullFaceNormals(
27210 self_: *mut whiteout_M3PhysicsShape,
27211 count: usize,
27212 );
27213 pub fn whiteout_m3_M3PhysicsShape_get_hullFaceNormals_data(
27214 self_: *mut whiteout_M3PhysicsShape,
27215 ) -> *const f32;
27216 pub fn whiteout_m3_M3PhysicsShape_assign_hullFaceNormals(
27217 self_: *mut whiteout_M3PhysicsShape,
27218 data: *const f32,
27219 count: usize,
27220 );
27221 pub fn whiteout_m3_M3PhysicsShape_get_hullVertexPositions_count(
27222 self_: *mut whiteout_M3PhysicsShape,
27223 ) -> usize;
27224 pub fn whiteout_m3_M3PhysicsShape_resize_hullVertexPositions(
27225 self_: *mut whiteout_M3PhysicsShape,
27226 count: usize,
27227 );
27228 pub fn whiteout_m3_M3PhysicsShape_get_hullVertexPositions_data(
27229 self_: *mut whiteout_M3PhysicsShape,
27230 ) -> *const f32;
27231 pub fn whiteout_m3_M3PhysicsShape_assign_hullVertexPositions(
27232 self_: *mut whiteout_M3PhysicsShape,
27233 data: *const f32,
27234 count: usize,
27235 );
27236 pub fn whiteout_m3_M3PhysicsShape_get_hullHalfEdges_count(
27237 self_: *mut whiteout_M3PhysicsShape,
27238 ) -> usize;
27239 pub fn whiteout_m3_M3PhysicsShape_resize_hullHalfEdges(
27240 self_: *mut whiteout_M3PhysicsShape,
27241 count: usize,
27242 );
27243 pub fn whiteout_m3_M3PhysicsShape_get_hullHalfEdges_at(
27244 self_: *mut whiteout_M3PhysicsShape,
27245 index: usize,
27246 ) -> *mut whiteout_M3ConvexHullHalfEdge;
27247 pub fn whiteout_m3_M3PhysicsShape_get_hullVertexFaceIndices_count(
27248 self_: *mut whiteout_M3PhysicsShape,
27249 ) -> usize;
27250 pub fn whiteout_m3_M3PhysicsShape_resize_hullVertexFaceIndices(
27251 self_: *mut whiteout_M3PhysicsShape,
27252 count: usize,
27253 );
27254 pub fn whiteout_m3_M3PhysicsShape_get_hullVertexFaceIndices_data(
27255 self_: *mut whiteout_M3PhysicsShape,
27256 ) -> *const u8;
27257 pub fn whiteout_m3_M3PhysicsShape_assign_hullVertexFaceIndices(
27258 self_: *mut whiteout_M3PhysicsShape,
27259 data: *const u8,
27260 count: usize,
27261 );
27262 pub fn whiteout_m3_M3PhysicsShape_get_hullCenter(
27263 self_: *mut whiteout_M3PhysicsShape,
27264 ) -> *mut core::ffi::c_void;
27265 pub fn whiteout_m3_M3PhysicsShape_set_hullCenter(
27266 self_: *mut whiteout_M3PhysicsShape,
27267 value: *const core::ffi::c_void,
27268 );
27269 pub fn whiteout_m3_M3PhysicsShape_get_hullFaceNormalCount(
27270 self_: *mut whiteout_M3PhysicsShape,
27271 ) -> u32;
27272 pub fn whiteout_m3_M3PhysicsShape_set_hullFaceNormalCount(
27273 self_: *mut whiteout_M3PhysicsShape,
27274 value: u32,
27275 );
27276 pub fn whiteout_m3_M3PhysicsShape_get_hullVertexCount(
27277 self_: *mut whiteout_M3PhysicsShape,
27278 ) -> u32;
27279 pub fn whiteout_m3_M3PhysicsShape_set_hullVertexCount(
27280 self_: *mut whiteout_M3PhysicsShape,
27281 value: u32,
27282 );
27283 pub fn whiteout_m3_M3PhysicsShape_get_hullHalfEdgeCount(
27284 self_: *mut whiteout_M3PhysicsShape,
27285 ) -> u32;
27286 pub fn whiteout_m3_M3PhysicsShape_set_hullHalfEdgeCount(
27287 self_: *mut whiteout_M3PhysicsShape,
27288 value: u32,
27289 );
27290 pub fn whiteout_m3_M3PhysicsShape_get_hullUnknown0(
27291 self_: *mut whiteout_M3PhysicsShape,
27292 ) -> f32;
27293 pub fn whiteout_m3_M3PhysicsShape_set_hullUnknown0(
27294 self_: *mut whiteout_M3PhysicsShape,
27295 value: f32,
27296 );
27297 pub fn whiteout_m3_M3PhysicsShape_get_hullUnknown1(
27298 self_: *mut whiteout_M3PhysicsShape,
27299 ) -> f32;
27300 pub fn whiteout_m3_M3PhysicsShape_set_hullUnknown1(
27301 self_: *mut whiteout_M3PhysicsShape,
27302 value: f32,
27303 );
27304 pub fn whiteout_m3_M3PhysicsShape_get_meshBvhNodes_count(
27305 self_: *mut whiteout_M3PhysicsShape,
27306 ) -> usize;
27307 pub fn whiteout_m3_M3PhysicsShape_resize_meshBvhNodes(
27308 self_: *mut whiteout_M3PhysicsShape,
27309 count: usize,
27310 );
27311 pub fn whiteout_m3_M3PhysicsShape_get_meshBvhNodes_at(
27312 self_: *mut whiteout_M3PhysicsShape,
27313 index: usize,
27314 ) -> *mut whiteout_M3PhysicsMeshBvhNode;
27315 pub fn whiteout_m3_M3PhysicsShape_get_meshVertexPositions_count(
27316 self_: *mut whiteout_M3PhysicsShape,
27317 ) -> usize;
27318 pub fn whiteout_m3_M3PhysicsShape_resize_meshVertexPositions(
27319 self_: *mut whiteout_M3PhysicsShape,
27320 count: usize,
27321 );
27322 pub fn whiteout_m3_M3PhysicsShape_get_meshVertexPositions_data(
27323 self_: *mut whiteout_M3PhysicsShape,
27324 ) -> *const f32;
27325 pub fn whiteout_m3_M3PhysicsShape_assign_meshVertexPositions(
27326 self_: *mut whiteout_M3PhysicsShape,
27327 data: *const f32,
27328 count: usize,
27329 );
27330 pub fn whiteout_m3_M3PhysicsShape_get_meshBoundsCenter(
27331 self_: *mut whiteout_M3PhysicsShape,
27332 ) -> *mut core::ffi::c_void;
27333 pub fn whiteout_m3_M3PhysicsShape_set_meshBoundsCenter(
27334 self_: *mut whiteout_M3PhysicsShape,
27335 value: *const core::ffi::c_void,
27336 );
27337 pub fn whiteout_m3_M3PhysicsShape_get_meshBoundsExtent(
27338 self_: *mut whiteout_M3PhysicsShape,
27339 ) -> *mut core::ffi::c_void;
27340 pub fn whiteout_m3_M3PhysicsShape_set_meshBoundsExtent(
27341 self_: *mut whiteout_M3PhysicsShape,
27342 value: *const core::ffi::c_void,
27343 );
27344 pub fn whiteout_m3_M3PhysicsShape_get_meshTolerance(
27345 self_: *mut whiteout_M3PhysicsShape,
27346 ) -> *mut core::ffi::c_void;
27347 pub fn whiteout_m3_M3PhysicsShape_set_meshTolerance(
27348 self_: *mut whiteout_M3PhysicsShape,
27349 value: *const core::ffi::c_void,
27350 );
27351 pub fn whiteout_m3_M3PhysicsShape_get_meshNormalCount(
27352 self_: *mut whiteout_M3PhysicsShape,
27353 ) -> u32;
27354 pub fn whiteout_m3_M3PhysicsShape_set_meshNormalCount(
27355 self_: *mut whiteout_M3PhysicsShape,
27356 value: u32,
27357 );
27358 pub fn whiteout_m3_M3PhysicsShape_get_meshVertexCount(
27359 self_: *mut whiteout_M3PhysicsShape,
27360 ) -> u32;
27361 pub fn whiteout_m3_M3PhysicsShape_set_meshVertexCount(
27362 self_: *mut whiteout_M3PhysicsShape,
27363 value: u32,
27364 );
27365 pub fn whiteout_m3_M3PhysicsShape_get_meshFaceIndex16Count(
27366 self_: *mut whiteout_M3PhysicsShape,
27367 ) -> u32;
27368 pub fn whiteout_m3_M3PhysicsShape_set_meshFaceIndex16Count(
27369 self_: *mut whiteout_M3PhysicsShape,
27370 value: u32,
27371 );
27372 pub fn whiteout_m3_M3PhysicsShape_get_meshFaceIndex32Count(
27373 self_: *mut whiteout_M3PhysicsShape,
27374 ) -> u32;
27375 pub fn whiteout_m3_M3PhysicsShape_set_meshFaceIndex32Count(
27376 self_: *mut whiteout_M3PhysicsShape,
27377 value: u32,
27378 );
27379 pub fn whiteout_m3_M3PhysicsShape_get_meshUnknown1(
27380 self_: *mut whiteout_M3PhysicsShape,
27381 ) -> u32;
27382 pub fn whiteout_m3_M3PhysicsShape_set_meshUnknown1(
27383 self_: *mut whiteout_M3PhysicsShape,
27384 value: u32,
27385 );
27386 pub fn whiteout_m3_M3PhysicsShape_get_meshReserved(
27387 self_: *mut whiteout_M3PhysicsShape,
27388 ) -> u32;
27389 pub fn whiteout_m3_M3PhysicsShape_set_meshReserved(
27390 self_: *mut whiteout_M3PhysicsShape,
27391 value: u32,
27392 );
27393 pub fn whiteout_m3_M3PhysicsShape_get_meshTreeDepth(
27394 self_: *mut whiteout_M3PhysicsShape,
27395 ) -> u32;
27396 pub fn whiteout_m3_M3PhysicsShape_set_meshTreeDepth(
27397 self_: *mut whiteout_M3PhysicsShape,
27398 value: u32,
27399 );
27400 pub fn whiteout_m3_M3PhysicsShape_get_meshCollisionMargin(
27401 self_: *mut whiteout_M3PhysicsShape,
27402 ) -> f32;
27403 pub fn whiteout_m3_M3PhysicsShape_set_meshCollisionMargin(
27404 self_: *mut whiteout_M3PhysicsShape,
27405 value: f32,
27406 );
27407 pub fn whiteout_m3_M3RigidBody_new() -> *mut whiteout_M3RigidBody;
27409 pub fn whiteout_m3_M3RigidBody_delete(self_: *mut whiteout_M3RigidBody);
27410 pub fn whiteout_m3_M3RigidBody_get_simulationType(self_: *mut whiteout_M3RigidBody) -> u16;
27411 pub fn whiteout_m3_M3RigidBody_set_simulationType(
27412 self_: *mut whiteout_M3RigidBody,
27413 value: u16,
27414 );
27415 pub fn whiteout_m3_M3RigidBody_get_parentBoneIndex(self_: *mut whiteout_M3RigidBody)
27416 -> u16;
27417 pub fn whiteout_m3_M3RigidBody_set_parentBoneIndex(
27418 self_: *mut whiteout_M3RigidBody,
27419 value: u16,
27420 );
27421 pub fn whiteout_m3_M3RigidBody_get_physicsType(self_: *mut whiteout_M3RigidBody) -> u32;
27422 pub fn whiteout_m3_M3RigidBody_set_physicsType(
27423 self_: *mut whiteout_M3RigidBody,
27424 value: u32,
27425 );
27426 pub fn whiteout_m3_M3RigidBody_get_density(self_: *mut whiteout_M3RigidBody) -> f32;
27427 pub fn whiteout_m3_M3RigidBody_set_density(self_: *mut whiteout_M3RigidBody, value: f32);
27428 pub fn whiteout_m3_M3RigidBody_get_friction(self_: *mut whiteout_M3RigidBody) -> f32;
27429 pub fn whiteout_m3_M3RigidBody_set_friction(self_: *mut whiteout_M3RigidBody, value: f32);
27430 pub fn whiteout_m3_M3RigidBody_get_restitution(self_: *mut whiteout_M3RigidBody) -> f32;
27431 pub fn whiteout_m3_M3RigidBody_set_restitution(
27432 self_: *mut whiteout_M3RigidBody,
27433 value: f32,
27434 );
27435 pub fn whiteout_m3_M3RigidBody_get_linearDamping(self_: *mut whiteout_M3RigidBody) -> f32;
27436 pub fn whiteout_m3_M3RigidBody_set_linearDamping(
27437 self_: *mut whiteout_M3RigidBody,
27438 value: f32,
27439 );
27440 pub fn whiteout_m3_M3RigidBody_get_angularDamping(self_: *mut whiteout_M3RigidBody) -> f32;
27441 pub fn whiteout_m3_M3RigidBody_set_angularDamping(
27442 self_: *mut whiteout_M3RigidBody,
27443 value: f32,
27444 );
27445 pub fn whiteout_m3_M3RigidBody_get_gravityScale(self_: *mut whiteout_M3RigidBody) -> f32;
27446 pub fn whiteout_m3_M3RigidBody_set_gravityScale(
27447 self_: *mut whiteout_M3RigidBody,
27448 value: f32,
27449 );
27450 pub fn whiteout_m3_M3RigidBody_get_dynamicState(
27451 self_: *mut whiteout_M3RigidBody,
27452 ) -> *mut whiteout_M3AnimRefU32;
27453 pub fn whiteout_m3_M3RigidBody_set_dynamicState(
27454 self_: *mut whiteout_M3RigidBody,
27455 value: *const whiteout_M3AnimRefU32,
27456 );
27457 pub fn whiteout_m3_M3RigidBody_get_dynamicBlendOut(self_: *mut whiteout_M3RigidBody)
27458 -> f32;
27459 pub fn whiteout_m3_M3RigidBody_set_dynamicBlendOut(
27460 self_: *mut whiteout_M3RigidBody,
27461 value: f32,
27462 );
27463 pub fn whiteout_m3_M3RigidBody_get_rigidBodyShape_count(
27464 self_: *mut whiteout_M3RigidBody,
27465 ) -> usize;
27466 pub fn whiteout_m3_M3RigidBody_resize_rigidBodyShape(
27467 self_: *mut whiteout_M3RigidBody,
27468 count: usize,
27469 );
27470 pub fn whiteout_m3_M3RigidBody_get_rigidBodyShape_at(
27471 self_: *mut whiteout_M3RigidBody,
27472 index: usize,
27473 ) -> *mut whiteout_M3PhysicsShape;
27474 pub fn whiteout_m3_M3RigidBody_get_flags(self_: *mut whiteout_M3RigidBody) -> i32;
27475 pub fn whiteout_m3_M3RigidBody_set_flags(self_: *mut whiteout_M3RigidBody, value: i32);
27476 pub fn whiteout_m3_M3RigidBody_get_localForces(self_: *mut whiteout_M3RigidBody) -> u16;
27477 pub fn whiteout_m3_M3RigidBody_set_localForces(
27478 self_: *mut whiteout_M3RigidBody,
27479 value: u16,
27480 );
27481 pub fn whiteout_m3_M3RigidBody_get_worldForces(self_: *mut whiteout_M3RigidBody) -> u16;
27482 pub fn whiteout_m3_M3RigidBody_set_worldForces(
27483 self_: *mut whiteout_M3RigidBody,
27484 value: u16,
27485 );
27486 pub fn whiteout_m3_M3RigidBody_get_priority(self_: *mut whiteout_M3RigidBody) -> u32;
27487 pub fn whiteout_m3_M3RigidBody_set_priority(self_: *mut whiteout_M3RigidBody, value: u32);
27488 pub fn whiteout_m3_M3PhysicsJoint_new() -> *mut whiteout_M3PhysicsJoint;
27490 pub fn whiteout_m3_M3PhysicsJoint_delete(self_: *mut whiteout_M3PhysicsJoint);
27491 pub fn whiteout_m3_M3PhysicsJoint_get_jointType(self_: *mut whiteout_M3PhysicsJoint)
27492 -> u32;
27493 pub fn whiteout_m3_M3PhysicsJoint_set_jointType(
27494 self_: *mut whiteout_M3PhysicsJoint,
27495 value: u32,
27496 );
27497 pub fn whiteout_m3_M3PhysicsJoint_get_boneIndex1(
27498 self_: *mut whiteout_M3PhysicsJoint,
27499 ) -> u32;
27500 pub fn whiteout_m3_M3PhysicsJoint_set_boneIndex1(
27501 self_: *mut whiteout_M3PhysicsJoint,
27502 value: u32,
27503 );
27504 pub fn whiteout_m3_M3PhysicsJoint_get_boneIndex2(
27505 self_: *mut whiteout_M3PhysicsJoint,
27506 ) -> u32;
27507 pub fn whiteout_m3_M3PhysicsJoint_set_boneIndex2(
27508 self_: *mut whiteout_M3PhysicsJoint,
27509 value: u32,
27510 );
27511 pub fn whiteout_m3_M3PhysicsJoint_get_enableLimits(
27512 self_: *mut whiteout_M3PhysicsJoint,
27513 ) -> u32;
27514 pub fn whiteout_m3_M3PhysicsJoint_set_enableLimits(
27515 self_: *mut whiteout_M3PhysicsJoint,
27516 value: u32,
27517 );
27518 pub fn whiteout_m3_M3PhysicsJoint_get_limitMin(self_: *mut whiteout_M3PhysicsJoint) -> f32;
27519 pub fn whiteout_m3_M3PhysicsJoint_set_limitMin(
27520 self_: *mut whiteout_M3PhysicsJoint,
27521 value: f32,
27522 );
27523 pub fn whiteout_m3_M3PhysicsJoint_get_limitMax(self_: *mut whiteout_M3PhysicsJoint) -> f32;
27524 pub fn whiteout_m3_M3PhysicsJoint_set_limitMax(
27525 self_: *mut whiteout_M3PhysicsJoint,
27526 value: f32,
27527 );
27528 pub fn whiteout_m3_M3PhysicsJoint_get_coneAngle(self_: *mut whiteout_M3PhysicsJoint)
27529 -> f32;
27530 pub fn whiteout_m3_M3PhysicsJoint_set_coneAngle(
27531 self_: *mut whiteout_M3PhysicsJoint,
27532 value: f32,
27533 );
27534 pub fn whiteout_m3_M3PhysicsJoint_get_enableFriction(
27535 self_: *mut whiteout_M3PhysicsJoint,
27536 ) -> u32;
27537 pub fn whiteout_m3_M3PhysicsJoint_set_enableFriction(
27538 self_: *mut whiteout_M3PhysicsJoint,
27539 value: u32,
27540 );
27541 pub fn whiteout_m3_M3PhysicsJoint_get_friction(self_: *mut whiteout_M3PhysicsJoint) -> f32;
27542 pub fn whiteout_m3_M3PhysicsJoint_set_friction(
27543 self_: *mut whiteout_M3PhysicsJoint,
27544 value: f32,
27545 );
27546 pub fn whiteout_m3_M3PhysicsJoint_get_dampingRatio(
27547 self_: *mut whiteout_M3PhysicsJoint,
27548 ) -> f32;
27549 pub fn whiteout_m3_M3PhysicsJoint_set_dampingRatio(
27550 self_: *mut whiteout_M3PhysicsJoint,
27551 value: f32,
27552 );
27553 pub fn whiteout_m3_M3PhysicsJoint_get_angularFrequency(
27554 self_: *mut whiteout_M3PhysicsJoint,
27555 ) -> f32;
27556 pub fn whiteout_m3_M3PhysicsJoint_set_angularFrequency(
27557 self_: *mut whiteout_M3PhysicsJoint,
27558 value: f32,
27559 );
27560 pub fn whiteout_m3_M3PhysicsJoint_get_breakThreshold(
27561 self_: *mut whiteout_M3PhysicsJoint,
27562 ) -> f32;
27563 pub fn whiteout_m3_M3PhysicsJoint_set_breakThreshold(
27564 self_: *mut whiteout_M3PhysicsJoint,
27565 value: f32,
27566 );
27567 pub fn whiteout_m3_M3PhysicsJoint_get_enableShape(
27568 self_: *mut whiteout_M3PhysicsJoint,
27569 ) -> u8;
27570 pub fn whiteout_m3_M3PhysicsJoint_set_enableShape(
27571 self_: *mut whiteout_M3PhysicsJoint,
27572 value: u8,
27573 );
27574 pub fn whiteout_m3_M3PhysicsConstraint_new() -> *mut whiteout_M3PhysicsConstraint;
27576 pub fn whiteout_m3_M3PhysicsConstraint_delete(self_: *mut whiteout_M3PhysicsConstraint);
27577 pub fn whiteout_m3_M3PhysicsConstraint_get_dependents_count(
27578 self_: *mut whiteout_M3PhysicsConstraint,
27579 ) -> usize;
27580 pub fn whiteout_m3_M3PhysicsConstraint_resize_dependents(
27581 self_: *mut whiteout_M3PhysicsConstraint,
27582 count: usize,
27583 );
27584 pub fn whiteout_m3_M3PhysicsConstraint_get_dependents_data(
27585 self_: *mut whiteout_M3PhysicsConstraint,
27586 ) -> *const u16;
27587 pub fn whiteout_m3_M3PhysicsConstraint_assign_dependents(
27588 self_: *mut whiteout_M3PhysicsConstraint,
27589 data: *const u16,
27590 count: usize,
27591 );
27592 pub fn whiteout_m3_M3PhysicsConstraint_get_rigidBody1(
27593 self_: *mut whiteout_M3PhysicsConstraint,
27594 ) -> u16;
27595 pub fn whiteout_m3_M3PhysicsConstraint_set_rigidBody1(
27596 self_: *mut whiteout_M3PhysicsConstraint,
27597 value: u16,
27598 );
27599 pub fn whiteout_m3_M3PhysicsConstraint_get_rigidBody2(
27600 self_: *mut whiteout_M3PhysicsConstraint,
27601 ) -> u16;
27602 pub fn whiteout_m3_M3PhysicsConstraint_set_rigidBody2(
27603 self_: *mut whiteout_M3PhysicsConstraint,
27604 value: u16,
27605 );
27606 pub fn whiteout_m3_M3PhysicsConstraint_get_breakForce(
27607 self_: *mut whiteout_M3PhysicsConstraint,
27608 ) -> f32;
27609 pub fn whiteout_m3_M3PhysicsConstraint_set_breakForce(
27610 self_: *mut whiteout_M3PhysicsConstraint,
27611 value: f32,
27612 );
27613 pub fn whiteout_m3_M3ClothCollider_new() -> *mut whiteout_M3ClothCollider;
27615 pub fn whiteout_m3_M3ClothCollider_delete(self_: *mut whiteout_M3ClothCollider);
27616 pub fn whiteout_m3_M3ClothCollider_get_radius(self_: *mut whiteout_M3ClothCollider) -> f32;
27617 pub fn whiteout_m3_M3ClothCollider_set_radius(
27618 self_: *mut whiteout_M3ClothCollider,
27619 value: f32,
27620 );
27621 pub fn whiteout_m3_M3ClothCollider_get_height(self_: *mut whiteout_M3ClothCollider) -> f32;
27622 pub fn whiteout_m3_M3ClothCollider_set_height(
27623 self_: *mut whiteout_M3ClothCollider,
27624 value: f32,
27625 );
27626 pub fn whiteout_m3_M3ClothCollider_get_padding(self_: *mut whiteout_M3ClothCollider)
27627 -> u32;
27628 pub fn whiteout_m3_M3ClothCollider_set_padding(
27629 self_: *mut whiteout_M3ClothCollider,
27630 value: u32,
27631 );
27632 pub fn whiteout_m3_M3ClothProxy_new() -> *mut whiteout_M3ClothProxy;
27634 pub fn whiteout_m3_M3ClothProxy_delete(self_: *mut whiteout_M3ClothProxy);
27635 pub fn whiteout_m3_M3ClothProxy_get_proxyIndex(self_: *mut whiteout_M3ClothProxy) -> u32;
27636 pub fn whiteout_m3_M3ClothProxy_set_proxyIndex(
27637 self_: *mut whiteout_M3ClothProxy,
27638 value: u32,
27639 );
27640 pub fn whiteout_m3_M3ClothProxy_get_clothIndex(self_: *mut whiteout_M3ClothProxy) -> u32;
27641 pub fn whiteout_m3_M3ClothProxy_set_clothIndex(
27642 self_: *mut whiteout_M3ClothProxy,
27643 value: u32,
27644 );
27645 pub fn whiteout_m3_M3ClothProxy_get_proxyVertices_count(
27646 self_: *mut whiteout_M3ClothProxy,
27647 ) -> usize;
27648 pub fn whiteout_m3_M3ClothProxy_resize_proxyVertices(
27649 self_: *mut whiteout_M3ClothProxy,
27650 count: usize,
27651 );
27652 pub fn whiteout_m3_M3ClothProxy_get_proxyVertices_data(
27653 self_: *mut whiteout_M3ClothProxy,
27654 ) -> *const u64;
27655 pub fn whiteout_m3_M3ClothProxy_assign_proxyVertices(
27656 self_: *mut whiteout_M3ClothProxy,
27657 data: *const u64,
27658 count: usize,
27659 );
27660 pub fn whiteout_m3_M3ClothProxy_get_proxyWeights_count(
27661 self_: *mut whiteout_M3ClothProxy,
27662 ) -> usize;
27663 pub fn whiteout_m3_M3ClothProxy_resize_proxyWeights(
27664 self_: *mut whiteout_M3ClothProxy,
27665 count: usize,
27666 );
27667 pub fn whiteout_m3_M3ClothProxy_get_proxyWeights_data(
27668 self_: *mut whiteout_M3ClothProxy,
27669 ) -> *const u32;
27670 pub fn whiteout_m3_M3ClothProxy_assign_proxyWeights(
27671 self_: *mut whiteout_M3ClothProxy,
27672 data: *const u32,
27673 count: usize,
27674 );
27675 pub fn whiteout_m3_M3ClothPhysics_new() -> *mut whiteout_M3ClothPhysics;
27677 pub fn whiteout_m3_M3ClothPhysics_delete(self_: *mut whiteout_M3ClothPhysics);
27678 pub fn whiteout_m3_M3ClothPhysics_get_clothMeshCount(
27679 self_: *mut whiteout_M3ClothPhysics,
27680 ) -> u32;
27681 pub fn whiteout_m3_M3ClothPhysics_set_clothMeshCount(
27682 self_: *mut whiteout_M3ClothPhysics,
27683 value: u32,
27684 );
27685 pub fn whiteout_m3_M3ClothPhysics_get_skinBoneCount(
27686 self_: *mut whiteout_M3ClothPhysics,
27687 ) -> u32;
27688 pub fn whiteout_m3_M3ClothPhysics_set_skinBoneCount(
27689 self_: *mut whiteout_M3ClothPhysics,
27690 value: u32,
27691 );
27692 pub fn whiteout_m3_M3ClothPhysics_get_skinBones_count(
27693 self_: *mut whiteout_M3ClothPhysics,
27694 ) -> usize;
27695 pub fn whiteout_m3_M3ClothPhysics_resize_skinBones(
27696 self_: *mut whiteout_M3ClothPhysics,
27697 count: usize,
27698 );
27699 pub fn whiteout_m3_M3ClothPhysics_get_skinBones_data(
27700 self_: *mut whiteout_M3ClothPhysics,
27701 ) -> *const u16;
27702 pub fn whiteout_m3_M3ClothPhysics_assign_skinBones(
27703 self_: *mut whiteout_M3ClothPhysics,
27704 data: *const u16,
27705 count: usize,
27706 );
27707 pub fn whiteout_m3_M3ClothPhysics_get_simEnabled_count(
27708 self_: *mut whiteout_M3ClothPhysics,
27709 ) -> usize;
27710 pub fn whiteout_m3_M3ClothPhysics_resize_simEnabled(
27711 self_: *mut whiteout_M3ClothPhysics,
27712 count: usize,
27713 );
27714 pub fn whiteout_m3_M3ClothPhysics_get_simEnabled_data(
27715 self_: *mut whiteout_M3ClothPhysics,
27716 ) -> *const u8;
27717 pub fn whiteout_m3_M3ClothPhysics_assign_simEnabled(
27718 self_: *mut whiteout_M3ClothPhysics,
27719 data: *const u8,
27720 count: usize,
27721 );
27722 pub fn whiteout_m3_M3ClothPhysics_get_vertexBones_count(
27723 self_: *mut whiteout_M3ClothPhysics,
27724 ) -> usize;
27725 pub fn whiteout_m3_M3ClothPhysics_resize_vertexBones(
27726 self_: *mut whiteout_M3ClothPhysics,
27727 count: usize,
27728 );
27729 pub fn whiteout_m3_M3ClothPhysics_get_vertexBones_data(
27730 self_: *mut whiteout_M3ClothPhysics,
27731 ) -> *const u32;
27732 pub fn whiteout_m3_M3ClothPhysics_assign_vertexBones(
27733 self_: *mut whiteout_M3ClothPhysics,
27734 data: *const u32,
27735 count: usize,
27736 );
27737 pub fn whiteout_m3_M3ClothPhysics_get_vertexWeights_count(
27738 self_: *mut whiteout_M3ClothPhysics,
27739 ) -> usize;
27740 pub fn whiteout_m3_M3ClothPhysics_resize_vertexWeights(
27741 self_: *mut whiteout_M3ClothPhysics,
27742 count: usize,
27743 );
27744 pub fn whiteout_m3_M3ClothPhysics_get_vertexWeights_data(
27745 self_: *mut whiteout_M3ClothPhysics,
27746 ) -> *const u32;
27747 pub fn whiteout_m3_M3ClothPhysics_assign_vertexWeights(
27748 self_: *mut whiteout_M3ClothPhysics,
27749 data: *const u32,
27750 count: usize,
27751 );
27752 pub fn whiteout_m3_M3ClothPhysics_get_colliders_count(
27753 self_: *mut whiteout_M3ClothPhysics,
27754 ) -> usize;
27755 pub fn whiteout_m3_M3ClothPhysics_resize_colliders(
27756 self_: *mut whiteout_M3ClothPhysics,
27757 count: usize,
27758 );
27759 pub fn whiteout_m3_M3ClothPhysics_get_colliders_at(
27760 self_: *mut whiteout_M3ClothPhysics,
27761 index: usize,
27762 ) -> *mut whiteout_M3ClothCollider;
27763 pub fn whiteout_m3_M3ClothPhysics_get_proxies_count(
27764 self_: *mut whiteout_M3ClothPhysics,
27765 ) -> usize;
27766 pub fn whiteout_m3_M3ClothPhysics_resize_proxies(
27767 self_: *mut whiteout_M3ClothPhysics,
27768 count: usize,
27769 );
27770 pub fn whiteout_m3_M3ClothPhysics_get_proxies_at(
27771 self_: *mut whiteout_M3ClothPhysics,
27772 index: usize,
27773 ) -> *mut whiteout_M3ClothProxy;
27774 pub fn whiteout_m3_M3ClothPhysics_get_density(self_: *mut whiteout_M3ClothPhysics) -> f32;
27775 pub fn whiteout_m3_M3ClothPhysics_set_density(
27776 self_: *mut whiteout_M3ClothPhysics,
27777 value: f32,
27778 );
27779 pub fn whiteout_m3_M3ClothPhysics_get_tracking(self_: *mut whiteout_M3ClothPhysics) -> f32;
27780 pub fn whiteout_m3_M3ClothPhysics_set_tracking(
27781 self_: *mut whiteout_M3ClothPhysics,
27782 value: f32,
27783 );
27784 pub fn whiteout_m3_M3ClothPhysics_get_stretchStiffness(
27785 self_: *mut whiteout_M3ClothPhysics,
27786 ) -> f32;
27787 pub fn whiteout_m3_M3ClothPhysics_set_stretchStiffness(
27788 self_: *mut whiteout_M3ClothPhysics,
27789 value: f32,
27790 );
27791 pub fn whiteout_m3_M3ClothPhysics_get_horizontalStiffness(
27792 self_: *mut whiteout_M3ClothPhysics,
27793 ) -> f32;
27794 pub fn whiteout_m3_M3ClothPhysics_set_horizontalStiffness(
27795 self_: *mut whiteout_M3ClothPhysics,
27796 value: f32,
27797 );
27798 pub fn whiteout_m3_M3ClothPhysics_get_bendingStiffness(
27799 self_: *mut whiteout_M3ClothPhysics,
27800 ) -> f32;
27801 pub fn whiteout_m3_M3ClothPhysics_set_bendingStiffness(
27802 self_: *mut whiteout_M3ClothPhysics,
27803 value: f32,
27804 );
27805 pub fn whiteout_m3_M3ClothPhysics_get_damping(self_: *mut whiteout_M3ClothPhysics) -> f32;
27806 pub fn whiteout_m3_M3ClothPhysics_set_damping(
27807 self_: *mut whiteout_M3ClothPhysics,
27808 value: f32,
27809 );
27810 pub fn whiteout_m3_M3ClothPhysics_get_friction(self_: *mut whiteout_M3ClothPhysics) -> f32;
27811 pub fn whiteout_m3_M3ClothPhysics_set_friction(
27812 self_: *mut whiteout_M3ClothPhysics,
27813 value: f32,
27814 );
27815 pub fn whiteout_m3_M3ClothPhysics_get_gravity(self_: *mut whiteout_M3ClothPhysics) -> f32;
27816 pub fn whiteout_m3_M3ClothPhysics_set_gravity(
27817 self_: *mut whiteout_M3ClothPhysics,
27818 value: f32,
27819 );
27820 pub fn whiteout_m3_M3ClothPhysics_get_explosionScale(
27821 self_: *mut whiteout_M3ClothPhysics,
27822 ) -> f32;
27823 pub fn whiteout_m3_M3ClothPhysics_set_explosionScale(
27824 self_: *mut whiteout_M3ClothPhysics,
27825 value: f32,
27826 );
27827 pub fn whiteout_m3_M3ClothPhysics_get_windScale(self_: *mut whiteout_M3ClothPhysics)
27828 -> f32;
27829 pub fn whiteout_m3_M3ClothPhysics_set_windScale(
27830 self_: *mut whiteout_M3ClothPhysics,
27831 value: f32,
27832 );
27833 pub fn whiteout_m3_M3ClothPhysics_get_shearStiffness(
27834 self_: *mut whiteout_M3ClothPhysics,
27835 ) -> f32;
27836 pub fn whiteout_m3_M3ClothPhysics_set_shearStiffness(
27837 self_: *mut whiteout_M3ClothPhysics,
27838 value: f32,
27839 );
27840 pub fn whiteout_m3_M3ClothPhysics_get_dragFactor(
27841 self_: *mut whiteout_M3ClothPhysics,
27842 ) -> f32;
27843 pub fn whiteout_m3_M3ClothPhysics_set_dragFactor(
27844 self_: *mut whiteout_M3ClothPhysics,
27845 value: f32,
27846 );
27847 pub fn whiteout_m3_M3ClothPhysics_get_liftFactor(
27848 self_: *mut whiteout_M3ClothPhysics,
27849 ) -> f32;
27850 pub fn whiteout_m3_M3ClothPhysics_set_liftFactor(
27851 self_: *mut whiteout_M3ClothPhysics,
27852 value: f32,
27853 );
27854 pub fn whiteout_m3_M3ClothPhysics_get_sphereStiffness(
27855 self_: *mut whiteout_M3ClothPhysics,
27856 ) -> f32;
27857 pub fn whiteout_m3_M3ClothPhysics_set_sphereStiffness(
27858 self_: *mut whiteout_M3ClothPhysics,
27859 value: f32,
27860 );
27861 pub fn whiteout_m3_M3ClothPhysics_get_flatten(self_: *mut whiteout_M3ClothPhysics) -> u32;
27862 pub fn whiteout_m3_M3ClothPhysics_set_flatten(
27863 self_: *mut whiteout_M3ClothPhysics,
27864 value: u32,
27865 );
27866 pub fn whiteout_m3_M3ClothPhysics_get_active(
27867 self_: *mut whiteout_M3ClothPhysics,
27868 ) -> *mut whiteout_M3AnimRefU32;
27869 pub fn whiteout_m3_M3ClothPhysics_set_active(
27870 self_: *mut whiteout_M3ClothPhysics,
27871 value: *const whiteout_M3AnimRefU32,
27872 );
27873 pub fn whiteout_m3_M3ClothPhysics_get_useSkinCollision(
27874 self_: *mut whiteout_M3ClothPhysics,
27875 ) -> u32;
27876 pub fn whiteout_m3_M3ClothPhysics_set_useSkinCollision(
27877 self_: *mut whiteout_M3ClothPhysics,
27878 value: u32,
27879 );
27880 pub fn whiteout_m3_M3ClothPhysics_get_skinOffset(
27881 self_: *mut whiteout_M3ClothPhysics,
27882 ) -> f32;
27883 pub fn whiteout_m3_M3ClothPhysics_set_skinOffset(
27884 self_: *mut whiteout_M3ClothPhysics,
27885 value: f32,
27886 );
27887 pub fn whiteout_m3_M3ClothPhysics_get_skinExponent(
27888 self_: *mut whiteout_M3ClothPhysics,
27889 ) -> f32;
27890 pub fn whiteout_m3_M3ClothPhysics_set_skinExponent(
27891 self_: *mut whiteout_M3ClothPhysics,
27892 value: f32,
27893 );
27894 pub fn whiteout_m3_M3ClothPhysics_get_skinStiffness(
27895 self_: *mut whiteout_M3ClothPhysics,
27896 ) -> f32;
27897 pub fn whiteout_m3_M3ClothPhysics_set_skinStiffness(
27898 self_: *mut whiteout_M3ClothPhysics,
27899 value: f32,
27900 );
27901 pub fn whiteout_m3_M3ClothPhysics_get_localChannels(
27902 self_: *mut whiteout_M3ClothPhysics,
27903 ) -> u32;
27904 pub fn whiteout_m3_M3ClothPhysics_set_localChannels(
27905 self_: *mut whiteout_M3ClothPhysics,
27906 value: u32,
27907 );
27908 pub fn whiteout_m3_M3ClothPhysics_get_localWind(
27909 self_: *mut whiteout_M3ClothPhysics,
27910 ) -> *mut core::ffi::c_void;
27911 pub fn whiteout_m3_M3ClothPhysics_set_localWind(
27912 self_: *mut whiteout_M3ClothPhysics,
27913 value: *const core::ffi::c_void,
27914 );
27915 pub fn whiteout_m3_M3Light_new() -> *mut whiteout_M3Light;
27917 pub fn whiteout_m3_M3Light_delete(self_: *mut whiteout_M3Light);
27918 pub fn whiteout_m3_M3Light_get_lightType(self_: *mut whiteout_M3Light) -> i32;
27919 pub fn whiteout_m3_M3Light_set_lightType(self_: *mut whiteout_M3Light, value: i32);
27920 pub fn whiteout_m3_M3Light_get_boneIndex(self_: *mut whiteout_M3Light) -> u16;
27921 pub fn whiteout_m3_M3Light_set_boneIndex(self_: *mut whiteout_M3Light, value: u16);
27922 pub fn whiteout_m3_M3Light_get_flags(self_: *mut whiteout_M3Light) -> i32;
27923 pub fn whiteout_m3_M3Light_set_flags(self_: *mut whiteout_M3Light, value: i32);
27924 pub fn whiteout_m3_M3Light_get_lodCut(self_: *mut whiteout_M3Light) -> u32;
27925 pub fn whiteout_m3_M3Light_set_lodCut(self_: *mut whiteout_M3Light, value: u32);
27926 pub fn whiteout_m3_M3Light_get_shadowLodCut(self_: *mut whiteout_M3Light) -> u32;
27927 pub fn whiteout_m3_M3Light_set_shadowLodCut(self_: *mut whiteout_M3Light, value: u32);
27928 pub fn whiteout_m3_M3Light_get_diffuseColor(
27929 self_: *mut whiteout_M3Light,
27930 ) -> *mut whiteout_M3AnimRefVector3f;
27931 pub fn whiteout_m3_M3Light_set_diffuseColor(
27932 self_: *mut whiteout_M3Light,
27933 value: *const whiteout_M3AnimRefVector3f,
27934 );
27935 pub fn whiteout_m3_M3Light_get_intensityMultiplier(
27936 self_: *mut whiteout_M3Light,
27937 ) -> *mut whiteout_M3AnimRefF32;
27938 pub fn whiteout_m3_M3Light_set_intensityMultiplier(
27939 self_: *mut whiteout_M3Light,
27940 value: *const whiteout_M3AnimRefF32,
27941 );
27942 pub fn whiteout_m3_M3Light_get_specularColor(
27943 self_: *mut whiteout_M3Light,
27944 ) -> *mut whiteout_M3AnimRefVector3f;
27945 pub fn whiteout_m3_M3Light_set_specularColor(
27946 self_: *mut whiteout_M3Light,
27947 value: *const whiteout_M3AnimRefVector3f,
27948 );
27949 pub fn whiteout_m3_M3Light_get_specularMultiplier(
27950 self_: *mut whiteout_M3Light,
27951 ) -> *mut whiteout_M3AnimRefF32;
27952 pub fn whiteout_m3_M3Light_set_specularMultiplier(
27953 self_: *mut whiteout_M3Light,
27954 value: *const whiteout_M3AnimRefF32,
27955 );
27956 pub fn whiteout_m3_M3Light_get_decay(
27957 self_: *mut whiteout_M3Light,
27958 ) -> *mut whiteout_M3AnimRefF32;
27959 pub fn whiteout_m3_M3Light_set_decay(
27960 self_: *mut whiteout_M3Light,
27961 value: *const whiteout_M3AnimRefF32,
27962 );
27963 pub fn whiteout_m3_M3Light_get_attenuationEnd(self_: *mut whiteout_M3Light) -> f32;
27964 pub fn whiteout_m3_M3Light_set_attenuationEnd(self_: *mut whiteout_M3Light, value: f32);
27965 pub fn whiteout_m3_M3Light_get_attenuationStart(
27966 self_: *mut whiteout_M3Light,
27967 ) -> *mut whiteout_M3AnimRefF32;
27968 pub fn whiteout_m3_M3Light_set_attenuationStart(
27969 self_: *mut whiteout_M3Light,
27970 value: *const whiteout_M3AnimRefF32,
27971 );
27972 pub fn whiteout_m3_M3Light_get_hotSpot(
27973 self_: *mut whiteout_M3Light,
27974 ) -> *mut whiteout_M3AnimRefF32;
27975 pub fn whiteout_m3_M3Light_set_hotSpot(
27976 self_: *mut whiteout_M3Light,
27977 value: *const whiteout_M3AnimRefF32,
27978 );
27979 pub fn whiteout_m3_M3Light_get_falloff(
27980 self_: *mut whiteout_M3Light,
27981 ) -> *mut whiteout_M3AnimRefF32;
27982 pub fn whiteout_m3_M3Light_set_falloff(
27983 self_: *mut whiteout_M3Light,
27984 value: *const whiteout_M3AnimRefF32,
27985 );
27986 pub fn whiteout_m3_M3Camera_new() -> *mut whiteout_M3Camera;
27988 pub fn whiteout_m3_M3Camera_delete(self_: *mut whiteout_M3Camera);
27989 pub fn whiteout_m3_M3Camera_get_boneIndex(self_: *mut whiteout_M3Camera) -> u32;
27990 pub fn whiteout_m3_M3Camera_set_boneIndex(self_: *mut whiteout_M3Camera, value: u32);
27991 pub fn whiteout_m3_M3Camera_get_name(self_: *mut whiteout_M3Camera) -> RawCString;
27992 pub fn whiteout_m3_M3Camera_set_name(
27993 self_: *mut whiteout_M3Camera,
27994 value: *const core::ffi::c_char,
27995 );
27996 pub fn whiteout_m3_M3Camera_get_fieldOfView(
27997 self_: *mut whiteout_M3Camera,
27998 ) -> *mut whiteout_M3AnimRefF32;
27999 pub fn whiteout_m3_M3Camera_set_fieldOfView(
28000 self_: *mut whiteout_M3Camera,
28001 value: *const whiteout_M3AnimRefF32,
28002 );
28003 pub fn whiteout_m3_M3Camera_get_useVerticalFOV(self_: *mut whiteout_M3Camera) -> u32;
28004 pub fn whiteout_m3_M3Camera_set_useVerticalFOV(self_: *mut whiteout_M3Camera, value: u32);
28005 pub fn whiteout_m3_M3Camera_get_dofType(self_: *mut whiteout_M3Camera) -> u32;
28006 pub fn whiteout_m3_M3Camera_set_dofType(self_: *mut whiteout_M3Camera, value: u32);
28007 pub fn whiteout_m3_M3Camera_get_farClip(
28008 self_: *mut whiteout_M3Camera,
28009 ) -> *mut whiteout_M3AnimRefF32;
28010 pub fn whiteout_m3_M3Camera_set_farClip(
28011 self_: *mut whiteout_M3Camera,
28012 value: *const whiteout_M3AnimRefF32,
28013 );
28014 pub fn whiteout_m3_M3Camera_get_nearClip(
28015 self_: *mut whiteout_M3Camera,
28016 ) -> *mut whiteout_M3AnimRefF32;
28017 pub fn whiteout_m3_M3Camera_set_nearClip(
28018 self_: *mut whiteout_M3Camera,
28019 value: *const whiteout_M3AnimRefF32,
28020 );
28021 pub fn whiteout_m3_M3Camera_get_shadowClipDistance(
28022 self_: *mut whiteout_M3Camera,
28023 ) -> *mut whiteout_M3AnimRefF32;
28024 pub fn whiteout_m3_M3Camera_set_shadowClipDistance(
28025 self_: *mut whiteout_M3Camera,
28026 value: *const whiteout_M3AnimRefF32,
28027 );
28028 pub fn whiteout_m3_M3Camera_get_focusDistance(
28029 self_: *mut whiteout_M3Camera,
28030 ) -> *mut whiteout_M3AnimRefF32;
28031 pub fn whiteout_m3_M3Camera_set_focusDistance(
28032 self_: *mut whiteout_M3Camera,
28033 value: *const whiteout_M3AnimRefF32,
28034 );
28035 pub fn whiteout_m3_M3Camera_get_farFocusRange(
28036 self_: *mut whiteout_M3Camera,
28037 ) -> *mut whiteout_M3AnimRefF32;
28038 pub fn whiteout_m3_M3Camera_set_farFocusRange(
28039 self_: *mut whiteout_M3Camera,
28040 value: *const whiteout_M3AnimRefF32,
28041 );
28042 pub fn whiteout_m3_M3Camera_get_nearFocusRange(
28043 self_: *mut whiteout_M3Camera,
28044 ) -> *mut whiteout_M3AnimRefF32;
28045 pub fn whiteout_m3_M3Camera_set_nearFocusRange(
28046 self_: *mut whiteout_M3Camera,
28047 value: *const whiteout_M3AnimRefF32,
28048 );
28049 pub fn whiteout_m3_M3Camera_get_nearFalloffStart(
28050 self_: *mut whiteout_M3Camera,
28051 ) -> *mut whiteout_M3AnimRefF32;
28052 pub fn whiteout_m3_M3Camera_set_nearFalloffStart(
28053 self_: *mut whiteout_M3Camera,
28054 value: *const whiteout_M3AnimRefF32,
28055 );
28056 pub fn whiteout_m3_M3Camera_get_nearFalloffEnd(
28057 self_: *mut whiteout_M3Camera,
28058 ) -> *mut whiteout_M3AnimRefF32;
28059 pub fn whiteout_m3_M3Camera_set_nearFalloffEnd(
28060 self_: *mut whiteout_M3Camera,
28061 value: *const whiteout_M3AnimRefF32,
28062 );
28063 pub fn whiteout_m3_M3Camera_get_dofAmount(
28064 self_: *mut whiteout_M3Camera,
28065 ) -> *mut whiteout_M3AnimRefF32;
28066 pub fn whiteout_m3_M3Camera_set_dofAmount(
28067 self_: *mut whiteout_M3Camera,
28068 value: *const whiteout_M3AnimRefF32,
28069 );
28070 pub fn whiteout_m3_M3Camera_get_bokehFStop(
28071 self_: *mut whiteout_M3Camera,
28072 ) -> *mut whiteout_M3AnimRefF32;
28073 pub fn whiteout_m3_M3Camera_set_bokehFStop(
28074 self_: *mut whiteout_M3Camera,
28075 value: *const whiteout_M3AnimRefF32,
28076 );
28077 pub fn whiteout_m3_M3Camera_get_bokehMaxCoCDiameter(
28078 self_: *mut whiteout_M3Camera,
28079 ) -> *mut whiteout_M3AnimRefF32;
28080 pub fn whiteout_m3_M3Camera_set_bokehMaxCoCDiameter(
28081 self_: *mut whiteout_M3Camera,
28082 value: *const whiteout_M3AnimRefF32,
28083 );
28084 pub fn whiteout_m3_M3Model_new() -> *mut whiteout_M3Model;
28086 pub fn whiteout_m3_M3Model_delete(self_: *mut whiteout_M3Model);
28087 pub fn whiteout_m3_M3Model_get_name(self_: *mut whiteout_M3Model) -> RawCString;
28088 pub fn whiteout_m3_M3Model_set_name(
28089 self_: *mut whiteout_M3Model,
28090 value: *const core::ffi::c_char,
28091 );
28092 pub fn whiteout_m3_M3Model_get_flags(self_: *mut whiteout_M3Model) -> i32;
28093 pub fn whiteout_m3_M3Model_set_flags(self_: *mut whiteout_M3Model, value: i32);
28094 pub fn whiteout_m3_M3Model_get_sequences_count(self_: *mut whiteout_M3Model) -> usize;
28095 pub fn whiteout_m3_M3Model_resize_sequences(self_: *mut whiteout_M3Model, count: usize);
28096 pub fn whiteout_m3_M3Model_get_sequences_at(
28097 self_: *mut whiteout_M3Model,
28098 index: usize,
28099 ) -> *mut whiteout_M3Sequence;
28100 pub fn whiteout_m3_M3Model_get_subTrackCollections_count(
28101 self_: *mut whiteout_M3Model,
28102 ) -> usize;
28103 pub fn whiteout_m3_M3Model_resize_subTrackCollections(
28104 self_: *mut whiteout_M3Model,
28105 count: usize,
28106 );
28107 pub fn whiteout_m3_M3Model_get_subTrackCollections_at(
28108 self_: *mut whiteout_M3Model,
28109 index: usize,
28110 ) -> *mut whiteout_M3SubTrackContainer;
28111 pub fn whiteout_m3_M3Model_get_animationGroups_count(self_: *mut whiteout_M3Model)
28112 -> usize;
28113 pub fn whiteout_m3_M3Model_resize_animationGroups(
28114 self_: *mut whiteout_M3Model,
28115 count: usize,
28116 );
28117 pub fn whiteout_m3_M3Model_get_animationGroups_at(
28118 self_: *mut whiteout_M3Model,
28119 index: usize,
28120 ) -> *mut whiteout_M3AnimationGroup;
28121 pub fn whiteout_m3_M3Model_get_boneAnimationSets_count(
28122 self_: *mut whiteout_M3Model,
28123 ) -> usize;
28124 pub fn whiteout_m3_M3Model_resize_boneAnimationSets(
28125 self_: *mut whiteout_M3Model,
28126 count: usize,
28127 );
28128 pub fn whiteout_m3_M3Model_get_boneAnimationSets_at(
28129 self_: *mut whiteout_M3Model,
28130 index: usize,
28131 ) -> *mut whiteout_M3BoneAnimationSet;
28132 pub fn whiteout_m3_M3Model_get_animationSplitCount(self_: *mut whiteout_M3Model) -> u32;
28133 pub fn whiteout_m3_M3Model_set_animationSplitCount(
28134 self_: *mut whiteout_M3Model,
28135 value: u32,
28136 );
28137 pub fn whiteout_m3_M3Model_get_animationStates_count(self_: *mut whiteout_M3Model)
28138 -> usize;
28139 pub fn whiteout_m3_M3Model_resize_animationStates(
28140 self_: *mut whiteout_M3Model,
28141 count: usize,
28142 );
28143 pub fn whiteout_m3_M3Model_get_animationStates_at(
28144 self_: *mut whiteout_M3Model,
28145 index: usize,
28146 ) -> *mut whiteout_M3AnimationState;
28147 pub fn whiteout_m3_M3Model_get_bones_count(self_: *mut whiteout_M3Model) -> usize;
28148 pub fn whiteout_m3_M3Model_resize_bones(self_: *mut whiteout_M3Model, count: usize);
28149 pub fn whiteout_m3_M3Model_get_bones_at(
28150 self_: *mut whiteout_M3Model,
28151 index: usize,
28152 ) -> *mut whiteout_M3Bone;
28153 pub fn whiteout_m3_M3Model_get_skinBoneCount(self_: *mut whiteout_M3Model) -> u32;
28154 pub fn whiteout_m3_M3Model_set_skinBoneCount(self_: *mut whiteout_M3Model, value: u32);
28155 pub fn whiteout_m3_M3Model_get_divisions_count(self_: *mut whiteout_M3Model) -> usize;
28156 pub fn whiteout_m3_M3Model_resize_divisions(self_: *mut whiteout_M3Model, count: usize);
28157 pub fn whiteout_m3_M3Model_get_divisions_at(
28158 self_: *mut whiteout_M3Model,
28159 index: usize,
28160 ) -> *mut whiteout_M3MeshDivision;
28161 pub fn whiteout_m3_M3Model_get_boneLookup_count(self_: *mut whiteout_M3Model) -> usize;
28162 pub fn whiteout_m3_M3Model_resize_boneLookup(self_: *mut whiteout_M3Model, count: usize);
28163 pub fn whiteout_m3_M3Model_get_boneLookup_data(self_: *mut whiteout_M3Model) -> *const u16;
28164 pub fn whiteout_m3_M3Model_assign_boneLookup(
28165 self_: *mut whiteout_M3Model,
28166 data: *const u16,
28167 count: usize,
28168 );
28169 pub fn whiteout_m3_M3Model_get_bounds(
28170 self_: *mut whiteout_M3Model,
28171 ) -> *mut whiteout_M3Extent;
28172 pub fn whiteout_m3_M3Model_set_bounds(
28173 self_: *mut whiteout_M3Model,
28174 value: *const whiteout_M3Extent,
28175 );
28176 pub fn whiteout_m3_M3Model_get_collisionBounds(
28177 self_: *mut whiteout_M3Model,
28178 ) -> *mut whiteout_M3Extent;
28179 pub fn whiteout_m3_M3Model_set_collisionBounds(
28180 self_: *mut whiteout_M3Model,
28181 value: *const whiteout_M3Extent,
28182 );
28183 pub fn whiteout_m3_M3Model_get_collisionFaces_count(self_: *mut whiteout_M3Model) -> usize;
28184 pub fn whiteout_m3_M3Model_resize_collisionFaces(
28185 self_: *mut whiteout_M3Model,
28186 count: usize,
28187 );
28188 pub fn whiteout_m3_M3Model_get_collisionFaces_data(
28189 self_: *mut whiteout_M3Model,
28190 ) -> *const u16;
28191 pub fn whiteout_m3_M3Model_assign_collisionFaces(
28192 self_: *mut whiteout_M3Model,
28193 data: *const u16,
28194 count: usize,
28195 );
28196 pub fn whiteout_m3_M3Model_get_collisionVerts_count(self_: *mut whiteout_M3Model) -> usize;
28197 pub fn whiteout_m3_M3Model_resize_collisionVerts(
28198 self_: *mut whiteout_M3Model,
28199 count: usize,
28200 );
28201 pub fn whiteout_m3_M3Model_get_collisionVerts_data(
28202 self_: *mut whiteout_M3Model,
28203 ) -> *const f32;
28204 pub fn whiteout_m3_M3Model_assign_collisionVerts(
28205 self_: *mut whiteout_M3Model,
28206 data: *const f32,
28207 count: usize,
28208 );
28209 pub fn whiteout_m3_M3Model_get_collisionNormals_count(
28210 self_: *mut whiteout_M3Model,
28211 ) -> usize;
28212 pub fn whiteout_m3_M3Model_resize_collisionNormals(
28213 self_: *mut whiteout_M3Model,
28214 count: usize,
28215 );
28216 pub fn whiteout_m3_M3Model_get_collisionNormals_data(
28217 self_: *mut whiteout_M3Model,
28218 ) -> *const f32;
28219 pub fn whiteout_m3_M3Model_assign_collisionNormals(
28220 self_: *mut whiteout_M3Model,
28221 data: *const f32,
28222 count: usize,
28223 );
28224 pub fn whiteout_m3_M3Model_get_attachmentPoints_count(
28225 self_: *mut whiteout_M3Model,
28226 ) -> usize;
28227 pub fn whiteout_m3_M3Model_resize_attachmentPoints(
28228 self_: *mut whiteout_M3Model,
28229 count: usize,
28230 );
28231 pub fn whiteout_m3_M3Model_get_attachmentPoints_at(
28232 self_: *mut whiteout_M3Model,
28233 index: usize,
28234 ) -> *mut whiteout_M3AttachmentPoint;
28235 pub fn whiteout_m3_M3Model_get_attachmentPointAddons_count(
28236 self_: *mut whiteout_M3Model,
28237 ) -> usize;
28238 pub fn whiteout_m3_M3Model_resize_attachmentPointAddons(
28239 self_: *mut whiteout_M3Model,
28240 count: usize,
28241 );
28242 pub fn whiteout_m3_M3Model_get_attachmentPointAddons_data(
28243 self_: *mut whiteout_M3Model,
28244 ) -> *const u16;
28245 pub fn whiteout_m3_M3Model_assign_attachmentPointAddons(
28246 self_: *mut whiteout_M3Model,
28247 data: *const u16,
28248 count: usize,
28249 );
28250 pub fn whiteout_m3_M3Model_get_lights_count(self_: *mut whiteout_M3Model) -> usize;
28251 pub fn whiteout_m3_M3Model_resize_lights(self_: *mut whiteout_M3Model, count: usize);
28252 pub fn whiteout_m3_M3Model_get_lights_at(
28253 self_: *mut whiteout_M3Model,
28254 index: usize,
28255 ) -> *mut whiteout_M3Light;
28256 pub fn whiteout_m3_M3Model_get_shadowBoxes_count(self_: *mut whiteout_M3Model) -> usize;
28257 pub fn whiteout_m3_M3Model_resize_shadowBoxes(self_: *mut whiteout_M3Model, count: usize);
28258 pub fn whiteout_m3_M3Model_get_shadowBoxes_at(
28259 self_: *mut whiteout_M3Model,
28260 index: usize,
28261 ) -> *mut whiteout_M3ShadowBox;
28262 pub fn whiteout_m3_M3Model_get_cameras_count(self_: *mut whiteout_M3Model) -> usize;
28263 pub fn whiteout_m3_M3Model_resize_cameras(self_: *mut whiteout_M3Model, count: usize);
28264 pub fn whiteout_m3_M3Model_get_cameras_at(
28265 self_: *mut whiteout_M3Model,
28266 index: usize,
28267 ) -> *mut whiteout_M3Camera;
28268 pub fn whiteout_m3_M3Model_get_camerasAddons_count(self_: *mut whiteout_M3Model) -> usize;
28269 pub fn whiteout_m3_M3Model_resize_camerasAddons(self_: *mut whiteout_M3Model, count: usize);
28270 pub fn whiteout_m3_M3Model_get_camerasAddons_data(
28271 self_: *mut whiteout_M3Model,
28272 ) -> *const u16;
28273 pub fn whiteout_m3_M3Model_assign_camerasAddons(
28274 self_: *mut whiteout_M3Model,
28275 data: *const u16,
28276 count: usize,
28277 );
28278 pub fn whiteout_m3_M3Model_get_materialMaps_count(self_: *mut whiteout_M3Model) -> usize;
28279 pub fn whiteout_m3_M3Model_resize_materialMaps(self_: *mut whiteout_M3Model, count: usize);
28280 pub fn whiteout_m3_M3Model_get_materialMaps_at(
28281 self_: *mut whiteout_M3Model,
28282 index: usize,
28283 ) -> *mut whiteout_M3MaterialMap;
28284 pub fn whiteout_m3_M3Model_get_standardMaterials_count(
28285 self_: *mut whiteout_M3Model,
28286 ) -> usize;
28287 pub fn whiteout_m3_M3Model_resize_standardMaterials(
28288 self_: *mut whiteout_M3Model,
28289 count: usize,
28290 );
28291 pub fn whiteout_m3_M3Model_get_standardMaterials_at(
28292 self_: *mut whiteout_M3Model,
28293 index: usize,
28294 ) -> *mut whiteout_M3StandardMaterial;
28295 pub fn whiteout_m3_M3Model_get_displacementMaterials_count(
28296 self_: *mut whiteout_M3Model,
28297 ) -> usize;
28298 pub fn whiteout_m3_M3Model_resize_displacementMaterials(
28299 self_: *mut whiteout_M3Model,
28300 count: usize,
28301 );
28302 pub fn whiteout_m3_M3Model_get_displacementMaterials_at(
28303 self_: *mut whiteout_M3Model,
28304 index: usize,
28305 ) -> *mut whiteout_M3DisplacementMaterial;
28306 pub fn whiteout_m3_M3Model_get_compositeMaterials_count(
28307 self_: *mut whiteout_M3Model,
28308 ) -> usize;
28309 pub fn whiteout_m3_M3Model_resize_compositeMaterials(
28310 self_: *mut whiteout_M3Model,
28311 count: usize,
28312 );
28313 pub fn whiteout_m3_M3Model_get_compositeMaterials_at(
28314 self_: *mut whiteout_M3Model,
28315 index: usize,
28316 ) -> *mut whiteout_M3CompositeMaterial;
28317 pub fn whiteout_m3_M3Model_get_terrainMaterials_count(
28318 self_: *mut whiteout_M3Model,
28319 ) -> usize;
28320 pub fn whiteout_m3_M3Model_resize_terrainMaterials(
28321 self_: *mut whiteout_M3Model,
28322 count: usize,
28323 );
28324 pub fn whiteout_m3_M3Model_get_terrainMaterials_at(
28325 self_: *mut whiteout_M3Model,
28326 index: usize,
28327 ) -> *mut whiteout_M3TerrainMaterial;
28328 pub fn whiteout_m3_M3Model_get_volumeMaterials_count(self_: *mut whiteout_M3Model)
28329 -> usize;
28330 pub fn whiteout_m3_M3Model_resize_volumeMaterials(
28331 self_: *mut whiteout_M3Model,
28332 count: usize,
28333 );
28334 pub fn whiteout_m3_M3Model_get_volumeMaterials_at(
28335 self_: *mut whiteout_M3Model,
28336 index: usize,
28337 ) -> *mut whiteout_M3VolumeMaterial;
28338 pub fn whiteout_m3_M3Model_get_hairMaterials_count(self_: *mut whiteout_M3Model) -> usize;
28339 pub fn whiteout_m3_M3Model_resize_hairMaterials(self_: *mut whiteout_M3Model, count: usize);
28340 pub fn whiteout_m3_M3Model_get_hairMaterials_at(
28341 self_: *mut whiteout_M3Model,
28342 index: usize,
28343 ) -> *mut whiteout_M3HairMaterial;
28344 pub fn whiteout_m3_M3Model_get_creepMaterials_count(self_: *mut whiteout_M3Model) -> usize;
28345 pub fn whiteout_m3_M3Model_resize_creepMaterials(
28346 self_: *mut whiteout_M3Model,
28347 count: usize,
28348 );
28349 pub fn whiteout_m3_M3Model_get_creepMaterials_at(
28350 self_: *mut whiteout_M3Model,
28351 index: usize,
28352 ) -> *mut whiteout_M3CreepMaterial;
28353 pub fn whiteout_m3_M3Model_get_volumeNoiseMaterials_count(
28354 self_: *mut whiteout_M3Model,
28355 ) -> usize;
28356 pub fn whiteout_m3_M3Model_resize_volumeNoiseMaterials(
28357 self_: *mut whiteout_M3Model,
28358 count: usize,
28359 );
28360 pub fn whiteout_m3_M3Model_get_volumeNoiseMaterials_at(
28361 self_: *mut whiteout_M3Model,
28362 index: usize,
28363 ) -> *mut whiteout_M3VolumeNoiseMaterial;
28364 pub fn whiteout_m3_M3Model_get_stbMaterials_count(self_: *mut whiteout_M3Model) -> usize;
28365 pub fn whiteout_m3_M3Model_resize_stbMaterials(self_: *mut whiteout_M3Model, count: usize);
28366 pub fn whiteout_m3_M3Model_get_stbMaterials_at(
28367 self_: *mut whiteout_M3Model,
28368 index: usize,
28369 ) -> *mut whiteout_M3STBMaterial;
28370 pub fn whiteout_m3_M3Model_get_reflectionMaterials_count(
28371 self_: *mut whiteout_M3Model,
28372 ) -> usize;
28373 pub fn whiteout_m3_M3Model_resize_reflectionMaterials(
28374 self_: *mut whiteout_M3Model,
28375 count: usize,
28376 );
28377 pub fn whiteout_m3_M3Model_get_reflectionMaterials_at(
28378 self_: *mut whiteout_M3Model,
28379 index: usize,
28380 ) -> *mut whiteout_M3ReflectionMaterial;
28381 pub fn whiteout_m3_M3Model_get_lensFlareMaterials_count(
28382 self_: *mut whiteout_M3Model,
28383 ) -> usize;
28384 pub fn whiteout_m3_M3Model_resize_lensFlareMaterials(
28385 self_: *mut whiteout_M3Model,
28386 count: usize,
28387 );
28388 pub fn whiteout_m3_M3Model_get_lensFlareMaterials_at(
28389 self_: *mut whiteout_M3Model,
28390 index: usize,
28391 ) -> *mut whiteout_M3LensFlare;
28392 pub fn whiteout_m3_M3Model_get_materialAddData_count(self_: *mut whiteout_M3Model)
28393 -> usize;
28394 pub fn whiteout_m3_M3Model_resize_materialAddData(
28395 self_: *mut whiteout_M3Model,
28396 count: usize,
28397 );
28398 pub fn whiteout_m3_M3Model_get_materialAddData_at(
28399 self_: *mut whiteout_M3Model,
28400 index: usize,
28401 ) -> *mut whiteout_M3MaterialAddData;
28402 pub fn whiteout_m3_M3Model_get_particleEmitters_count(
28403 self_: *mut whiteout_M3Model,
28404 ) -> usize;
28405 pub fn whiteout_m3_M3Model_resize_particleEmitters(
28406 self_: *mut whiteout_M3Model,
28407 count: usize,
28408 );
28409 pub fn whiteout_m3_M3Model_get_particleEmitters_at(
28410 self_: *mut whiteout_M3Model,
28411 index: usize,
28412 ) -> *mut whiteout_M3ParticleEmitter;
28413 pub fn whiteout_m3_M3Model_get_particleEmitterCopies_count(
28414 self_: *mut whiteout_M3Model,
28415 ) -> usize;
28416 pub fn whiteout_m3_M3Model_resize_particleEmitterCopies(
28417 self_: *mut whiteout_M3Model,
28418 count: usize,
28419 );
28420 pub fn whiteout_m3_M3Model_get_particleEmitterCopies_at(
28421 self_: *mut whiteout_M3Model,
28422 index: usize,
28423 ) -> *mut whiteout_M3ParticleEmitterCopy;
28424 pub fn whiteout_m3_M3Model_get_ribbonEmitters_count(self_: *mut whiteout_M3Model) -> usize;
28425 pub fn whiteout_m3_M3Model_resize_ribbonEmitters(
28426 self_: *mut whiteout_M3Model,
28427 count: usize,
28428 );
28429 pub fn whiteout_m3_M3Model_get_ribbonEmitters_at(
28430 self_: *mut whiteout_M3Model,
28431 index: usize,
28432 ) -> *mut whiteout_M3RibbonEmitter;
28433 pub fn whiteout_m3_M3Model_get_projections_count(self_: *mut whiteout_M3Model) -> usize;
28434 pub fn whiteout_m3_M3Model_resize_projections(self_: *mut whiteout_M3Model, count: usize);
28435 pub fn whiteout_m3_M3Model_get_projections_at(
28436 self_: *mut whiteout_M3Model,
28437 index: usize,
28438 ) -> *mut whiteout_M3Projector;
28439 pub fn whiteout_m3_M3Model_get_forces_count(self_: *mut whiteout_M3Model) -> usize;
28440 pub fn whiteout_m3_M3Model_resize_forces(self_: *mut whiteout_M3Model, count: usize);
28441 pub fn whiteout_m3_M3Model_get_forces_at(
28442 self_: *mut whiteout_M3Model,
28443 index: usize,
28444 ) -> *mut whiteout_M3Force;
28445 pub fn whiteout_m3_M3Model_get_warps_count(self_: *mut whiteout_M3Model) -> usize;
28446 pub fn whiteout_m3_M3Model_resize_warps(self_: *mut whiteout_M3Model, count: usize);
28447 pub fn whiteout_m3_M3Model_get_warps_at(
28448 self_: *mut whiteout_M3Model,
28449 index: usize,
28450 ) -> *mut whiteout_M3Warp;
28451 pub fn whiteout_m3_M3Model_get_viewVolumes_count(self_: *mut whiteout_M3Model) -> usize;
28452 pub fn whiteout_m3_M3Model_resize_viewVolumes(self_: *mut whiteout_M3Model, count: usize);
28453 pub fn whiteout_m3_M3Model_get_viewVolumes_at(
28454 self_: *mut whiteout_M3Model,
28455 index: usize,
28456 ) -> *mut whiteout_M3ViewVolume;
28457 pub fn whiteout_m3_M3Model_get_rigidBodies_count(self_: *mut whiteout_M3Model) -> usize;
28458 pub fn whiteout_m3_M3Model_resize_rigidBodies(self_: *mut whiteout_M3Model, count: usize);
28459 pub fn whiteout_m3_M3Model_get_rigidBodies_at(
28460 self_: *mut whiteout_M3Model,
28461 index: usize,
28462 ) -> *mut whiteout_M3RigidBody;
28463 pub fn whiteout_m3_M3Model_get_physicsConstraints_count(
28464 self_: *mut whiteout_M3Model,
28465 ) -> usize;
28466 pub fn whiteout_m3_M3Model_resize_physicsConstraints(
28467 self_: *mut whiteout_M3Model,
28468 count: usize,
28469 );
28470 pub fn whiteout_m3_M3Model_get_physicsConstraints_at(
28471 self_: *mut whiteout_M3Model,
28472 index: usize,
28473 ) -> *mut whiteout_M3PhysicsConstraint;
28474 pub fn whiteout_m3_M3Model_get_physicsJoints_count(self_: *mut whiteout_M3Model) -> usize;
28475 pub fn whiteout_m3_M3Model_resize_physicsJoints(self_: *mut whiteout_M3Model, count: usize);
28476 pub fn whiteout_m3_M3Model_get_physicsJoints_at(
28477 self_: *mut whiteout_M3Model,
28478 index: usize,
28479 ) -> *mut whiteout_M3PhysicsJoint;
28480 pub fn whiteout_m3_M3Model_get_clothPhysics_count(self_: *mut whiteout_M3Model) -> usize;
28481 pub fn whiteout_m3_M3Model_resize_clothPhysics(self_: *mut whiteout_M3Model, count: usize);
28482 pub fn whiteout_m3_M3Model_get_clothPhysics_at(
28483 self_: *mut whiteout_M3Model,
28484 index: usize,
28485 ) -> *mut whiteout_M3ClothPhysics;
28486 pub fn whiteout_m3_M3Model_get_ikTwoJoints_count(self_: *mut whiteout_M3Model) -> usize;
28487 pub fn whiteout_m3_M3Model_resize_ikTwoJoints(self_: *mut whiteout_M3Model, count: usize);
28488 pub fn whiteout_m3_M3Model_get_ikTwoJoints_at(
28489 self_: *mut whiteout_M3Model,
28490 index: usize,
28491 ) -> *mut whiteout_M3IKTwoJoint;
28492 pub fn whiteout_m3_M3Model_get_ikCCD_count(self_: *mut whiteout_M3Model) -> usize;
28493 pub fn whiteout_m3_M3Model_resize_ikCCD(self_: *mut whiteout_M3Model, count: usize);
28494 pub fn whiteout_m3_M3Model_get_ikCCD_at(
28495 self_: *mut whiteout_M3Model,
28496 index: usize,
28497 ) -> *mut whiteout_M3IKCCD;
28498 pub fn whiteout_m3_M3Model_get_ikJoints_count(self_: *mut whiteout_M3Model) -> usize;
28499 pub fn whiteout_m3_M3Model_resize_ikJoints(self_: *mut whiteout_M3Model, count: usize);
28500 pub fn whiteout_m3_M3Model_get_ikJoints_at(
28501 self_: *mut whiteout_M3Model,
28502 index: usize,
28503 ) -> *mut whiteout_M3IKJoint;
28504 pub fn whiteout_m3_M3Model_get_oneBoneSolvers_count(self_: *mut whiteout_M3Model) -> usize;
28505 pub fn whiteout_m3_M3Model_resize_oneBoneSolvers(
28506 self_: *mut whiteout_M3Model,
28507 count: usize,
28508 );
28509 pub fn whiteout_m3_M3Model_get_oneBoneSolvers_at(
28510 self_: *mut whiteout_M3Model,
28511 index: usize,
28512 ) -> *mut whiteout_M3OneBoneSolver;
28513 pub fn whiteout_m3_M3Model_get_turretBehaviors_count(self_: *mut whiteout_M3Model)
28514 -> usize;
28515 pub fn whiteout_m3_M3Model_resize_turretBehaviors(
28516 self_: *mut whiteout_M3Model,
28517 count: usize,
28518 );
28519 pub fn whiteout_m3_M3Model_get_turretBehaviors_at(
28520 self_: *mut whiteout_M3Model,
28521 index: usize,
28522 ) -> *mut whiteout_M3TurretBehavior;
28523 pub fn whiteout_m3_M3Model_get_triggerData_count(self_: *mut whiteout_M3Model) -> usize;
28524 pub fn whiteout_m3_M3Model_resize_triggerData(self_: *mut whiteout_M3Model, count: usize);
28525 pub fn whiteout_m3_M3Model_get_triggerData_at(
28526 self_: *mut whiteout_M3Model,
28527 index: usize,
28528 ) -> *mut whiteout_M3TriggerData;
28529 pub fn whiteout_m3_M3Model_get_initialReference_count(
28530 self_: *mut whiteout_M3Model,
28531 ) -> usize;
28532 pub fn whiteout_m3_M3Model_resize_initialReference(
28533 self_: *mut whiteout_M3Model,
28534 count: usize,
28535 );
28536 pub fn whiteout_m3_M3Model_get_initialReference_at(
28537 self_: *mut whiteout_M3Model,
28538 index: usize,
28539 ) -> *mut whiteout_M3InitialReference;
28540 pub fn whiteout_m3_M3Model_get_tightHitTestObject(
28541 self_: *mut whiteout_M3Model,
28542 ) -> *mut whiteout_M3HitTestShape;
28543 pub fn whiteout_m3_M3Model_set_tightHitTestObject(
28544 self_: *mut whiteout_M3Model,
28545 value: *const whiteout_M3HitTestShape,
28546 );
28547 pub fn whiteout_m3_M3Model_get_fuzzyHitTestObjects_count(
28548 self_: *mut whiteout_M3Model,
28549 ) -> usize;
28550 pub fn whiteout_m3_M3Model_resize_fuzzyHitTestObjects(
28551 self_: *mut whiteout_M3Model,
28552 count: usize,
28553 );
28554 pub fn whiteout_m3_M3Model_get_fuzzyHitTestObjects_at(
28555 self_: *mut whiteout_M3Model,
28556 index: usize,
28557 ) -> *mut whiteout_M3HitTestShape;
28558 pub fn whiteout_m3_M3Model_get_attachmentVolumes_count(
28559 self_: *mut whiteout_M3Model,
28560 ) -> usize;
28561 pub fn whiteout_m3_M3Model_resize_attachmentVolumes(
28562 self_: *mut whiteout_M3Model,
28563 count: usize,
28564 );
28565 pub fn whiteout_m3_M3Model_get_attachmentVolumes_at(
28566 self_: *mut whiteout_M3Model,
28567 index: usize,
28568 ) -> *mut whiteout_M3AttachmentVolume;
28569 pub fn whiteout_m3_M3Model_get_attachmentVolumesAddon0_count(
28570 self_: *mut whiteout_M3Model,
28571 ) -> usize;
28572 pub fn whiteout_m3_M3Model_resize_attachmentVolumesAddon0(
28573 self_: *mut whiteout_M3Model,
28574 count: usize,
28575 );
28576 pub fn whiteout_m3_M3Model_get_attachmentVolumesAddon0_data(
28577 self_: *mut whiteout_M3Model,
28578 ) -> *const u16;
28579 pub fn whiteout_m3_M3Model_assign_attachmentVolumesAddon0(
28580 self_: *mut whiteout_M3Model,
28581 data: *const u16,
28582 count: usize,
28583 );
28584 pub fn whiteout_m3_M3Model_get_attachmentVolumesAddon1_count(
28585 self_: *mut whiteout_M3Model,
28586 ) -> usize;
28587 pub fn whiteout_m3_M3Model_resize_attachmentVolumesAddon1(
28588 self_: *mut whiteout_M3Model,
28589 count: usize,
28590 );
28591 pub fn whiteout_m3_M3Model_get_attachmentVolumesAddon1_data(
28592 self_: *mut whiteout_M3Model,
28593 ) -> *const u16;
28594 pub fn whiteout_m3_M3Model_assign_attachmentVolumesAddon1(
28595 self_: *mut whiteout_M3Model,
28596 data: *const u16,
28597 count: usize,
28598 );
28599 pub fn whiteout_m3_M3Model_get_billboardBehaviors_count(
28600 self_: *mut whiteout_M3Model,
28601 ) -> usize;
28602 pub fn whiteout_m3_M3Model_resize_billboardBehaviors(
28603 self_: *mut whiteout_M3Model,
28604 count: usize,
28605 );
28606 pub fn whiteout_m3_M3Model_get_billboardBehaviors_at(
28607 self_: *mut whiteout_M3Model,
28608 index: usize,
28609 ) -> *mut whiteout_M3BillboardBehavior;
28610 pub fn whiteout_m3_M3Model_get_trailingModels_count(self_: *mut whiteout_M3Model) -> usize;
28611 pub fn whiteout_m3_M3Model_resize_trailingModels(
28612 self_: *mut whiteout_M3Model,
28613 count: usize,
28614 );
28615 pub fn whiteout_m3_M3Model_get_trailingModels_at(
28616 self_: *mut whiteout_M3Model,
28617 index: usize,
28618 ) -> *mut whiteout_M3TrailingModel;
28619 pub fn whiteout_m3_M3Model_get_m3aAnimHash(self_: *mut whiteout_M3Model) -> u32;
28620 pub fn whiteout_m3_M3Model_set_m3aAnimHash(self_: *mut whiteout_M3Model, value: u32);
28621 pub fn whiteout_m3_M3Model_get_m3aAnimHashes_count(self_: *mut whiteout_M3Model) -> usize;
28622 pub fn whiteout_m3_M3Model_resize_m3aAnimHashes(self_: *mut whiteout_M3Model, count: usize);
28623 pub fn whiteout_m3_M3Model_get_m3aAnimHashes_data(
28624 self_: *mut whiteout_M3Model,
28625 ) -> *const u32;
28626 pub fn whiteout_m3_M3Model_assign_m3aAnimHashes(
28627 self_: *mut whiteout_M3Model,
28628 data: *const u32,
28629 count: usize,
28630 );
28631 pub fn whiteout_m3_M3Parser_new() -> *mut whiteout_M3Parser;
28633 pub fn whiteout_m3_M3Parser_delete(self_: *mut whiteout_M3Parser);
28634 pub fn whiteout_m3_M3Parser_parse(
28635 self_: *mut whiteout_M3Parser,
28636 file_path: *const core::ffi::c_char,
28637 ) -> *mut whiteout_M3Model;
28638 pub fn whiteout_m3_M3Parser_parse_buffer(
28639 self_: *mut whiteout_M3Parser,
28640 buffer: *const u8,
28641 buffer_size: usize,
28642 ) -> *mut whiteout_M3Model;
28643 pub fn whiteout_m3_M3Parser_hasIssues(self_: *mut whiteout_M3Parser) -> i32;
28644 pub fn whiteout_m3_M3Parser_getIssues_count(self_: *mut whiteout_M3Parser) -> usize;
28645 pub fn whiteout_m3_M3Parser_getIssues_at(
28646 self_: *mut whiteout_M3Parser,
28647 index: usize,
28648 ) -> RawCString;
28649 pub fn whiteout_m3_M3Writer_new() -> *mut whiteout_M3Writer;
28651 pub fn whiteout_m3_M3Writer_delete(self_: *mut whiteout_M3Writer);
28652 pub fn whiteout_m3_M3Writer_write(
28653 self_: *mut whiteout_M3Writer,
28654 file_path: *const core::ffi::c_char,
28655 model: *mut whiteout_M3Model,
28656 );
28657 pub fn whiteout_m3_M3Writer_write_model(
28658 self_: *mut whiteout_M3Writer,
28659 model: *mut whiteout_M3Model,
28660 ) -> RawBytes;
28661 pub fn whiteout_m3_M3AnimRefF32_new() -> *mut whiteout_M3AnimRefF32;
28663 pub fn whiteout_m3_M3AnimRefF32_delete(self_: *mut whiteout_M3AnimRefF32);
28664 pub fn whiteout_m3_M3AnimRefF32_get_interpType(self_: *mut whiteout_M3AnimRefF32) -> u16;
28665 pub fn whiteout_m3_M3AnimRefF32_set_interpType(
28666 self_: *mut whiteout_M3AnimRefF32,
28667 value: u16,
28668 );
28669 pub fn whiteout_m3_M3AnimRefF32_get_flags(self_: *mut whiteout_M3AnimRefF32) -> u16;
28670 pub fn whiteout_m3_M3AnimRefF32_set_flags(self_: *mut whiteout_M3AnimRefF32, value: u16);
28671 pub fn whiteout_m3_M3AnimRefF32_get_animId(self_: *mut whiteout_M3AnimRefF32) -> u32;
28672 pub fn whiteout_m3_M3AnimRefF32_set_animId(self_: *mut whiteout_M3AnimRefF32, value: u32);
28673 pub fn whiteout_m3_M3AnimRefF32_get_initValue(self_: *mut whiteout_M3AnimRefF32) -> f32;
28674 pub fn whiteout_m3_M3AnimRefF32_set_initValue(
28675 self_: *mut whiteout_M3AnimRefF32,
28676 value: f32,
28677 );
28678 pub fn whiteout_m3_M3AnimRefF32_get_nullValue(self_: *mut whiteout_M3AnimRefF32) -> f32;
28679 pub fn whiteout_m3_M3AnimRefF32_set_nullValue(
28680 self_: *mut whiteout_M3AnimRefF32,
28681 value: f32,
28682 );
28683 pub fn whiteout_m3_M3AnimRefF32_get_unused(self_: *mut whiteout_M3AnimRefF32) -> i32;
28684 pub fn whiteout_m3_M3AnimRefF32_set_unused(self_: *mut whiteout_M3AnimRefF32, value: i32);
28685 pub fn whiteout_m3_M3AnimRefVector3f_new() -> *mut whiteout_M3AnimRefVector3f;
28687 pub fn whiteout_m3_M3AnimRefVector3f_delete(self_: *mut whiteout_M3AnimRefVector3f);
28688 pub fn whiteout_m3_M3AnimRefVector3f_get_interpType(
28689 self_: *mut whiteout_M3AnimRefVector3f,
28690 ) -> u16;
28691 pub fn whiteout_m3_M3AnimRefVector3f_set_interpType(
28692 self_: *mut whiteout_M3AnimRefVector3f,
28693 value: u16,
28694 );
28695 pub fn whiteout_m3_M3AnimRefVector3f_get_flags(
28696 self_: *mut whiteout_M3AnimRefVector3f,
28697 ) -> u16;
28698 pub fn whiteout_m3_M3AnimRefVector3f_set_flags(
28699 self_: *mut whiteout_M3AnimRefVector3f,
28700 value: u16,
28701 );
28702 pub fn whiteout_m3_M3AnimRefVector3f_get_animId(
28703 self_: *mut whiteout_M3AnimRefVector3f,
28704 ) -> u32;
28705 pub fn whiteout_m3_M3AnimRefVector3f_set_animId(
28706 self_: *mut whiteout_M3AnimRefVector3f,
28707 value: u32,
28708 );
28709 pub fn whiteout_m3_M3AnimRefVector3f_get_initValue(
28710 self_: *mut whiteout_M3AnimRefVector3f,
28711 ) -> *mut core::ffi::c_void;
28712 pub fn whiteout_m3_M3AnimRefVector3f_set_initValue(
28713 self_: *mut whiteout_M3AnimRefVector3f,
28714 value: *const core::ffi::c_void,
28715 );
28716 pub fn whiteout_m3_M3AnimRefVector3f_get_nullValue(
28717 self_: *mut whiteout_M3AnimRefVector3f,
28718 ) -> *mut core::ffi::c_void;
28719 pub fn whiteout_m3_M3AnimRefVector3f_set_nullValue(
28720 self_: *mut whiteout_M3AnimRefVector3f,
28721 value: *const core::ffi::c_void,
28722 );
28723 pub fn whiteout_m3_M3AnimRefVector3f_get_unused(
28724 self_: *mut whiteout_M3AnimRefVector3f,
28725 ) -> i32;
28726 pub fn whiteout_m3_M3AnimRefVector3f_set_unused(
28727 self_: *mut whiteout_M3AnimRefVector3f,
28728 value: i32,
28729 );
28730 pub fn whiteout_m3_M3AnimRefM3ColorBGRA_new() -> *mut whiteout_M3AnimRefM3ColorBGRA;
28732 pub fn whiteout_m3_M3AnimRefM3ColorBGRA_delete(self_: *mut whiteout_M3AnimRefM3ColorBGRA);
28733 pub fn whiteout_m3_M3AnimRefM3ColorBGRA_get_interpType(
28734 self_: *mut whiteout_M3AnimRefM3ColorBGRA,
28735 ) -> u16;
28736 pub fn whiteout_m3_M3AnimRefM3ColorBGRA_set_interpType(
28737 self_: *mut whiteout_M3AnimRefM3ColorBGRA,
28738 value: u16,
28739 );
28740 pub fn whiteout_m3_M3AnimRefM3ColorBGRA_get_flags(
28741 self_: *mut whiteout_M3AnimRefM3ColorBGRA,
28742 ) -> u16;
28743 pub fn whiteout_m3_M3AnimRefM3ColorBGRA_set_flags(
28744 self_: *mut whiteout_M3AnimRefM3ColorBGRA,
28745 value: u16,
28746 );
28747 pub fn whiteout_m3_M3AnimRefM3ColorBGRA_get_animId(
28748 self_: *mut whiteout_M3AnimRefM3ColorBGRA,
28749 ) -> u32;
28750 pub fn whiteout_m3_M3AnimRefM3ColorBGRA_set_animId(
28751 self_: *mut whiteout_M3AnimRefM3ColorBGRA,
28752 value: u32,
28753 );
28754 pub fn whiteout_m3_M3AnimRefM3ColorBGRA_get_initValue(
28755 self_: *mut whiteout_M3AnimRefM3ColorBGRA,
28756 ) -> *mut whiteout_M3ColorBGRA;
28757 pub fn whiteout_m3_M3AnimRefM3ColorBGRA_set_initValue(
28758 self_: *mut whiteout_M3AnimRefM3ColorBGRA,
28759 value: *const whiteout_M3ColorBGRA,
28760 );
28761 pub fn whiteout_m3_M3AnimRefM3ColorBGRA_get_nullValue(
28762 self_: *mut whiteout_M3AnimRefM3ColorBGRA,
28763 ) -> *mut whiteout_M3ColorBGRA;
28764 pub fn whiteout_m3_M3AnimRefM3ColorBGRA_set_nullValue(
28765 self_: *mut whiteout_M3AnimRefM3ColorBGRA,
28766 value: *const whiteout_M3ColorBGRA,
28767 );
28768 pub fn whiteout_m3_M3AnimRefM3ColorBGRA_get_unused(
28769 self_: *mut whiteout_M3AnimRefM3ColorBGRA,
28770 ) -> i32;
28771 pub fn whiteout_m3_M3AnimRefM3ColorBGRA_set_unused(
28772 self_: *mut whiteout_M3AnimRefM3ColorBGRA,
28773 value: i32,
28774 );
28775 pub fn whiteout_m3_M3AnimRefU16_new() -> *mut whiteout_M3AnimRefU16;
28777 pub fn whiteout_m3_M3AnimRefU16_delete(self_: *mut whiteout_M3AnimRefU16);
28778 pub fn whiteout_m3_M3AnimRefU16_get_interpType(self_: *mut whiteout_M3AnimRefU16) -> u16;
28779 pub fn whiteout_m3_M3AnimRefU16_set_interpType(
28780 self_: *mut whiteout_M3AnimRefU16,
28781 value: u16,
28782 );
28783 pub fn whiteout_m3_M3AnimRefU16_get_flags(self_: *mut whiteout_M3AnimRefU16) -> u16;
28784 pub fn whiteout_m3_M3AnimRefU16_set_flags(self_: *mut whiteout_M3AnimRefU16, value: u16);
28785 pub fn whiteout_m3_M3AnimRefU16_get_animId(self_: *mut whiteout_M3AnimRefU16) -> u32;
28786 pub fn whiteout_m3_M3AnimRefU16_set_animId(self_: *mut whiteout_M3AnimRefU16, value: u32);
28787 pub fn whiteout_m3_M3AnimRefU16_get_initValue(self_: *mut whiteout_M3AnimRefU16) -> u16;
28788 pub fn whiteout_m3_M3AnimRefU16_set_initValue(
28789 self_: *mut whiteout_M3AnimRefU16,
28790 value: u16,
28791 );
28792 pub fn whiteout_m3_M3AnimRefU16_get_nullValue(self_: *mut whiteout_M3AnimRefU16) -> u16;
28793 pub fn whiteout_m3_M3AnimRefU16_set_nullValue(
28794 self_: *mut whiteout_M3AnimRefU16,
28795 value: u16,
28796 );
28797 pub fn whiteout_m3_M3AnimRefU16_get_unused(self_: *mut whiteout_M3AnimRefU16) -> i32;
28798 pub fn whiteout_m3_M3AnimRefU16_set_unused(self_: *mut whiteout_M3AnimRefU16, value: i32);
28799 pub fn whiteout_m3_M3AnimRefVector2f_new() -> *mut whiteout_M3AnimRefVector2f;
28801 pub fn whiteout_m3_M3AnimRefVector2f_delete(self_: *mut whiteout_M3AnimRefVector2f);
28802 pub fn whiteout_m3_M3AnimRefVector2f_get_interpType(
28803 self_: *mut whiteout_M3AnimRefVector2f,
28804 ) -> u16;
28805 pub fn whiteout_m3_M3AnimRefVector2f_set_interpType(
28806 self_: *mut whiteout_M3AnimRefVector2f,
28807 value: u16,
28808 );
28809 pub fn whiteout_m3_M3AnimRefVector2f_get_flags(
28810 self_: *mut whiteout_M3AnimRefVector2f,
28811 ) -> u16;
28812 pub fn whiteout_m3_M3AnimRefVector2f_set_flags(
28813 self_: *mut whiteout_M3AnimRefVector2f,
28814 value: u16,
28815 );
28816 pub fn whiteout_m3_M3AnimRefVector2f_get_animId(
28817 self_: *mut whiteout_M3AnimRefVector2f,
28818 ) -> u32;
28819 pub fn whiteout_m3_M3AnimRefVector2f_set_animId(
28820 self_: *mut whiteout_M3AnimRefVector2f,
28821 value: u32,
28822 );
28823 pub fn whiteout_m3_M3AnimRefVector2f_get_initValue(
28824 self_: *mut whiteout_M3AnimRefVector2f,
28825 ) -> *mut core::ffi::c_void;
28826 pub fn whiteout_m3_M3AnimRefVector2f_set_initValue(
28827 self_: *mut whiteout_M3AnimRefVector2f,
28828 value: *const core::ffi::c_void,
28829 );
28830 pub fn whiteout_m3_M3AnimRefVector2f_get_nullValue(
28831 self_: *mut whiteout_M3AnimRefVector2f,
28832 ) -> *mut core::ffi::c_void;
28833 pub fn whiteout_m3_M3AnimRefVector2f_set_nullValue(
28834 self_: *mut whiteout_M3AnimRefVector2f,
28835 value: *const core::ffi::c_void,
28836 );
28837 pub fn whiteout_m3_M3AnimRefVector2f_get_unused(
28838 self_: *mut whiteout_M3AnimRefVector2f,
28839 ) -> i32;
28840 pub fn whiteout_m3_M3AnimRefVector2f_set_unused(
28841 self_: *mut whiteout_M3AnimRefVector2f,
28842 value: i32,
28843 );
28844 pub fn whiteout_m3_M3AnimRefU32_new() -> *mut whiteout_M3AnimRefU32;
28846 pub fn whiteout_m3_M3AnimRefU32_delete(self_: *mut whiteout_M3AnimRefU32);
28847 pub fn whiteout_m3_M3AnimRefU32_get_interpType(self_: *mut whiteout_M3AnimRefU32) -> u16;
28848 pub fn whiteout_m3_M3AnimRefU32_set_interpType(
28849 self_: *mut whiteout_M3AnimRefU32,
28850 value: u16,
28851 );
28852 pub fn whiteout_m3_M3AnimRefU32_get_flags(self_: *mut whiteout_M3AnimRefU32) -> u16;
28853 pub fn whiteout_m3_M3AnimRefU32_set_flags(self_: *mut whiteout_M3AnimRefU32, value: u16);
28854 pub fn whiteout_m3_M3AnimRefU32_get_animId(self_: *mut whiteout_M3AnimRefU32) -> u32;
28855 pub fn whiteout_m3_M3AnimRefU32_set_animId(self_: *mut whiteout_M3AnimRefU32, value: u32);
28856 pub fn whiteout_m3_M3AnimRefU32_get_initValue(self_: *mut whiteout_M3AnimRefU32) -> u32;
28857 pub fn whiteout_m3_M3AnimRefU32_set_initValue(
28858 self_: *mut whiteout_M3AnimRefU32,
28859 value: u32,
28860 );
28861 pub fn whiteout_m3_M3AnimRefU32_get_nullValue(self_: *mut whiteout_M3AnimRefU32) -> u32;
28862 pub fn whiteout_m3_M3AnimRefU32_set_nullValue(
28863 self_: *mut whiteout_M3AnimRefU32,
28864 value: u32,
28865 );
28866 pub fn whiteout_m3_M3AnimRefU32_get_unused(self_: *mut whiteout_M3AnimRefU32) -> i32;
28867 pub fn whiteout_m3_M3AnimRefU32_set_unused(self_: *mut whiteout_M3AnimRefU32, value: i32);
28868 pub fn whiteout_m3_M3AnimRefQuaternion_new() -> *mut whiteout_M3AnimRefQuaternion;
28870 pub fn whiteout_m3_M3AnimRefQuaternion_delete(self_: *mut whiteout_M3AnimRefQuaternion);
28871 pub fn whiteout_m3_M3AnimRefQuaternion_get_interpType(
28872 self_: *mut whiteout_M3AnimRefQuaternion,
28873 ) -> u16;
28874 pub fn whiteout_m3_M3AnimRefQuaternion_set_interpType(
28875 self_: *mut whiteout_M3AnimRefQuaternion,
28876 value: u16,
28877 );
28878 pub fn whiteout_m3_M3AnimRefQuaternion_get_flags(
28879 self_: *mut whiteout_M3AnimRefQuaternion,
28880 ) -> u16;
28881 pub fn whiteout_m3_M3AnimRefQuaternion_set_flags(
28882 self_: *mut whiteout_M3AnimRefQuaternion,
28883 value: u16,
28884 );
28885 pub fn whiteout_m3_M3AnimRefQuaternion_get_animId(
28886 self_: *mut whiteout_M3AnimRefQuaternion,
28887 ) -> u32;
28888 pub fn whiteout_m3_M3AnimRefQuaternion_set_animId(
28889 self_: *mut whiteout_M3AnimRefQuaternion,
28890 value: u32,
28891 );
28892 pub fn whiteout_m3_M3AnimRefQuaternion_get_initValue(
28893 self_: *mut whiteout_M3AnimRefQuaternion,
28894 ) -> *mut core::ffi::c_void;
28895 pub fn whiteout_m3_M3AnimRefQuaternion_set_initValue(
28896 self_: *mut whiteout_M3AnimRefQuaternion,
28897 value: *const core::ffi::c_void,
28898 );
28899 pub fn whiteout_m3_M3AnimRefQuaternion_get_nullValue(
28900 self_: *mut whiteout_M3AnimRefQuaternion,
28901 ) -> *mut core::ffi::c_void;
28902 pub fn whiteout_m3_M3AnimRefQuaternion_set_nullValue(
28903 self_: *mut whiteout_M3AnimRefQuaternion,
28904 value: *const core::ffi::c_void,
28905 );
28906 pub fn whiteout_m3_M3AnimRefQuaternion_get_unused(
28907 self_: *mut whiteout_M3AnimRefQuaternion,
28908 ) -> i32;
28909 pub fn whiteout_m3_M3AnimRefQuaternion_set_unused(
28910 self_: *mut whiteout_M3AnimRefQuaternion,
28911 value: i32,
28912 );
28913 pub fn whiteout_m3_M3AnimRefM3Extent_new() -> *mut whiteout_M3AnimRefM3Extent;
28915 pub fn whiteout_m3_M3AnimRefM3Extent_delete(self_: *mut whiteout_M3AnimRefM3Extent);
28916 pub fn whiteout_m3_M3AnimRefM3Extent_get_interpType(
28917 self_: *mut whiteout_M3AnimRefM3Extent,
28918 ) -> u16;
28919 pub fn whiteout_m3_M3AnimRefM3Extent_set_interpType(
28920 self_: *mut whiteout_M3AnimRefM3Extent,
28921 value: u16,
28922 );
28923 pub fn whiteout_m3_M3AnimRefM3Extent_get_flags(
28924 self_: *mut whiteout_M3AnimRefM3Extent,
28925 ) -> u16;
28926 pub fn whiteout_m3_M3AnimRefM3Extent_set_flags(
28927 self_: *mut whiteout_M3AnimRefM3Extent,
28928 value: u16,
28929 );
28930 pub fn whiteout_m3_M3AnimRefM3Extent_get_animId(
28931 self_: *mut whiteout_M3AnimRefM3Extent,
28932 ) -> u32;
28933 pub fn whiteout_m3_M3AnimRefM3Extent_set_animId(
28934 self_: *mut whiteout_M3AnimRefM3Extent,
28935 value: u32,
28936 );
28937 pub fn whiteout_m3_M3AnimRefM3Extent_get_initValue(
28938 self_: *mut whiteout_M3AnimRefM3Extent,
28939 ) -> *mut whiteout_M3Extent;
28940 pub fn whiteout_m3_M3AnimRefM3Extent_set_initValue(
28941 self_: *mut whiteout_M3AnimRefM3Extent,
28942 value: *const whiteout_M3Extent,
28943 );
28944 pub fn whiteout_m3_M3AnimRefM3Extent_get_nullValue(
28945 self_: *mut whiteout_M3AnimRefM3Extent,
28946 ) -> *mut whiteout_M3Extent;
28947 pub fn whiteout_m3_M3AnimRefM3Extent_set_nullValue(
28948 self_: *mut whiteout_M3AnimRefM3Extent,
28949 value: *const whiteout_M3Extent,
28950 );
28951 pub fn whiteout_m3_M3AnimRefM3Extent_get_unused(
28952 self_: *mut whiteout_M3AnimRefM3Extent,
28953 ) -> i32;
28954 pub fn whiteout_m3_M3AnimRefM3Extent_set_unused(
28955 self_: *mut whiteout_M3AnimRefM3Extent,
28956 value: i32,
28957 );
28958 }
28959}