pub struct Model { /* private fields */ }Expand description
Complete MDX model file structure
This structure represents an entire MDX model, including all geometry, materials, animations, and metadata. It can represent models from Warcraft III Classic (version 800) through Reforged (version 1200).
The structure is organized into chunks, each containing a specific type of data. Not all chunks are required - optional chunks can have empty vectors.
Implementations§
Source§impl Model
impl Model
pub fn set_version(&mut self, value: u32)
Sourcepub fn model_name(&self) -> String
pub fn model_name(&self) -> String
Name of the model
pub fn set_model_name(&mut self, value: &str)
Sourcepub fn animation_file_name(&self) -> String
pub fn animation_file_name(&self) -> String
Path to external animation file (rarely used)
pub fn set_animation_file_name(&mut self, value: &str)
Sourcepub fn model_extent(&self) -> Ref<'_, Extent>
pub fn model_extent(&self) -> Ref<'_, Extent>
Bounding volume for the entire model Borrows the field in place — no copy, no allocation.
pub fn model_extent_mut(&mut self) -> RefMut<'_, Extent>
Sourcepub fn blend_time(&self) -> u32
pub fn blend_time(&self) -> u32
Time in milliseconds to blend between animations
pub fn set_blend_time(&mut self, value: u32)
Sourcepub fn global_sequences(&self) -> &[u32]
pub fn global_sequences(&self) -> &[u32]
Global looping animation durations
Zero-copy view of the underlying std::vector.
Sourcepub fn global_sequences_mut(&mut self) -> &mut [u32]
pub fn global_sequences_mut(&mut self) -> &mut [u32]
Zero-copy mutable view. Resize first — the borrow forbids it after.
pub fn set_global_sequences(&mut self, values: &[u32])
pub fn resize_global_sequences(&mut self, count: usize)
Sourcepub fn sequences_len(&self) -> usize
pub fn sequences_len(&self) -> usize
Named animation sequences
Sourcepub fn sequences(&self, index: usize) -> Option<Ref<'_, Sequence>>
pub fn sequences(&self, index: usize) -> Option<Ref<'_, Sequence>>
Borrows element index in place. None when out of range.
pub fn sequences_mut(&mut self, index: usize) -> Option<RefMut<'_, Sequence>>
Sourcepub fn sequences_iter(&self) -> impl ExactSizeIterator<Item = Ref<'_, Sequence>>
pub fn sequences_iter(&self) -> impl ExactSizeIterator<Item = Ref<'_, Sequence>>
Iterate the elements, borrowing each in turn.
pub fn resize_sequences(&mut self, count: usize)
Sourcepub fn textures_len(&self) -> usize
pub fn textures_len(&self) -> usize
Texture paths and settings
Sourcepub fn textures(&self, index: usize) -> Option<Ref<'_, Texture>>
pub fn textures(&self, index: usize) -> Option<Ref<'_, Texture>>
Borrows element index in place. None when out of range.
pub fn textures_mut(&mut self, index: usize) -> Option<RefMut<'_, Texture>>
Sourcepub fn textures_iter(&self) -> impl ExactSizeIterator<Item = Ref<'_, Texture>>
pub fn textures_iter(&self) -> impl ExactSizeIterator<Item = Ref<'_, Texture>>
Iterate the elements, borrowing each in turn.
pub fn resize_textures(&mut self, count: usize)
Sourcepub fn sounds_len(&self) -> usize
pub fn sounds_len(&self) -> usize
Sounds (deprecated)
Sourcepub fn sounds(&self, index: usize) -> Option<Ref<'_, Sound>>
pub fn sounds(&self, index: usize) -> Option<Ref<'_, Sound>>
Borrows element index in place. None when out of range.
pub fn sounds_mut(&mut self, index: usize) -> Option<RefMut<'_, Sound>>
Sourcepub fn sounds_iter(&self) -> impl ExactSizeIterator<Item = Ref<'_, Sound>>
pub fn sounds_iter(&self) -> impl ExactSizeIterator<Item = Ref<'_, Sound>>
Iterate the elements, borrowing each in turn.
pub fn resize_sounds(&mut self, count: usize)
Sourcepub fn sound_emitters_len(&self) -> usize
pub fn sound_emitters_len(&self) -> usize
Sound emitters (deprecated)
Sourcepub fn sound_emitters(&self, index: usize) -> Option<Ref<'_, SoundEmitter>>
pub fn sound_emitters(&self, index: usize) -> Option<Ref<'_, SoundEmitter>>
Borrows element index in place. None when out of range.
pub fn sound_emitters_mut( &mut self, index: usize, ) -> Option<RefMut<'_, SoundEmitter>>
Sourcepub fn sound_emitters_iter(
&self,
) -> impl ExactSizeIterator<Item = Ref<'_, SoundEmitter>>
pub fn sound_emitters_iter( &self, ) -> impl ExactSizeIterator<Item = Ref<'_, SoundEmitter>>
Iterate the elements, borrowing each in turn.
pub fn resize_sound_emitters(&mut self, count: usize)
Sourcepub fn materials_len(&self) -> usize
pub fn materials_len(&self) -> usize
Material definitions
Sourcepub fn materials(&self, index: usize) -> Option<Ref<'_, Material>>
pub fn materials(&self, index: usize) -> Option<Ref<'_, Material>>
Borrows element index in place. None when out of range.
pub fn materials_mut(&mut self, index: usize) -> Option<RefMut<'_, Material>>
Sourcepub fn materials_iter(&self) -> impl ExactSizeIterator<Item = Ref<'_, Material>>
pub fn materials_iter(&self) -> impl ExactSizeIterator<Item = Ref<'_, Material>>
Iterate the elements, borrowing each in turn.
pub fn resize_materials(&mut self, count: usize)
Sourcepub fn texture_animations_len(&self) -> usize
pub fn texture_animations_len(&self) -> usize
UV animation data
Sourcepub fn texture_animations(
&self,
index: usize,
) -> Option<Ref<'_, TextureAnimation>>
pub fn texture_animations( &self, index: usize, ) -> Option<Ref<'_, TextureAnimation>>
Borrows element index in place. None when out of range.
pub fn texture_animations_mut( &mut self, index: usize, ) -> Option<RefMut<'_, TextureAnimation>>
Sourcepub fn texture_animations_iter(
&self,
) -> impl ExactSizeIterator<Item = Ref<'_, TextureAnimation>>
pub fn texture_animations_iter( &self, ) -> impl ExactSizeIterator<Item = Ref<'_, TextureAnimation>>
Iterate the elements, borrowing each in turn.
pub fn resize_texture_animations(&mut self, count: usize)
Sourcepub fn geosets_len(&self) -> usize
pub fn geosets_len(&self) -> usize
Mesh geometry
Sourcepub fn geosets(&self, index: usize) -> Option<Ref<'_, Geoset>>
pub fn geosets(&self, index: usize) -> Option<Ref<'_, Geoset>>
Borrows element index in place. None when out of range.
pub fn geosets_mut(&mut self, index: usize) -> Option<RefMut<'_, Geoset>>
Sourcepub fn geosets_iter(&self) -> impl ExactSizeIterator<Item = Ref<'_, Geoset>>
pub fn geosets_iter(&self) -> impl ExactSizeIterator<Item = Ref<'_, Geoset>>
Iterate the elements, borrowing each in turn.
pub fn resize_geosets(&mut self, count: usize)
Sourcepub fn geoset_animations_len(&self) -> usize
pub fn geoset_animations_len(&self) -> usize
Mesh visibility/color animation
Sourcepub fn geoset_animations(
&self,
index: usize,
) -> Option<Ref<'_, GeosetAnimation>>
pub fn geoset_animations( &self, index: usize, ) -> Option<Ref<'_, GeosetAnimation>>
Borrows element index in place. None when out of range.
pub fn geoset_animations_mut( &mut self, index: usize, ) -> Option<RefMut<'_, GeosetAnimation>>
Sourcepub fn geoset_animations_iter(
&self,
) -> impl ExactSizeIterator<Item = Ref<'_, GeosetAnimation>>
pub fn geoset_animations_iter( &self, ) -> impl ExactSizeIterator<Item = Ref<'_, GeosetAnimation>>
Iterate the elements, borrowing each in turn.
pub fn resize_geoset_animations(&mut self, count: usize)
Sourcepub fn bones(&self, index: usize) -> Option<Ref<'_, Bone>>
pub fn bones(&self, index: usize) -> Option<Ref<'_, Bone>>
Borrows element index in place. None when out of range.
pub fn bones_mut(&mut self, index: usize) -> Option<RefMut<'_, Bone>>
Sourcepub fn bones_iter(&self) -> impl ExactSizeIterator<Item = Ref<'_, Bone>>
pub fn bones_iter(&self) -> impl ExactSizeIterator<Item = Ref<'_, Bone>>
Iterate the elements, borrowing each in turn.
pub fn resize_bones(&mut self, count: usize)
Sourcepub fn helpers_len(&self) -> usize
pub fn helpers_len(&self) -> usize
Helper/attachment nodes
Sourcepub fn helpers(&self, index: usize) -> Option<Ref<'_, Helper>>
pub fn helpers(&self, index: usize) -> Option<Ref<'_, Helper>>
Borrows element index in place. None when out of range.
pub fn helpers_mut(&mut self, index: usize) -> Option<RefMut<'_, Helper>>
Sourcepub fn helpers_iter(&self) -> impl ExactSizeIterator<Item = Ref<'_, Helper>>
pub fn helpers_iter(&self) -> impl ExactSizeIterator<Item = Ref<'_, Helper>>
Iterate the elements, borrowing each in turn.
pub fn resize_helpers(&mut self, count: usize)
Sourcepub fn attachments_len(&self) -> usize
pub fn attachments_len(&self) -> usize
Equipment attachment points
Sourcepub fn attachments(&self, index: usize) -> Option<Ref<'_, Attachment>>
pub fn attachments(&self, index: usize) -> Option<Ref<'_, Attachment>>
Borrows element index in place. None when out of range.
pub fn attachments_mut( &mut self, index: usize, ) -> Option<RefMut<'_, Attachment>>
Sourcepub fn attachments_iter(
&self,
) -> impl ExactSizeIterator<Item = Ref<'_, Attachment>>
pub fn attachments_iter( &self, ) -> impl ExactSizeIterator<Item = Ref<'_, Attachment>>
Iterate the elements, borrowing each in turn.
pub fn resize_attachments(&mut self, count: usize)
Sourcepub fn pivot_points(&self) -> &[Vector3f]
pub fn pivot_points(&self) -> &[Vector3f]
Pivot points for nodes
Zero-copy view of the underlying std::vector.
Sourcepub fn pivot_points_mut(&mut self) -> &mut [Vector3f]
pub fn pivot_points_mut(&mut self) -> &mut [Vector3f]
Zero-copy mutable view. Resize first — the borrow forbids it after.
pub fn set_pivot_points(&mut self, values: &[Vector3f])
pub fn resize_pivot_points(&mut self, count: usize)
Sourcepub fn lights_len(&self) -> usize
pub fn lights_len(&self) -> usize
Light sources
Sourcepub fn lights(&self, index: usize) -> Option<Ref<'_, Light>>
pub fn lights(&self, index: usize) -> Option<Ref<'_, Light>>
Borrows element index in place. None when out of range.
pub fn lights_mut(&mut self, index: usize) -> Option<RefMut<'_, Light>>
Sourcepub fn lights_iter(&self) -> impl ExactSizeIterator<Item = Ref<'_, Light>>
pub fn lights_iter(&self) -> impl ExactSizeIterator<Item = Ref<'_, Light>>
Iterate the elements, borrowing each in turn.
pub fn resize_lights(&mut self, count: usize)
Sourcepub fn particle_emitters_len(&self) -> usize
pub fn particle_emitters_len(&self) -> usize
Particle emitters v1
Sourcepub fn particle_emitters(
&self,
index: usize,
) -> Option<Ref<'_, ParticleEmitter>>
pub fn particle_emitters( &self, index: usize, ) -> Option<Ref<'_, ParticleEmitter>>
Borrows element index in place. None when out of range.
pub fn particle_emitters_mut( &mut self, index: usize, ) -> Option<RefMut<'_, ParticleEmitter>>
Sourcepub fn particle_emitters_iter(
&self,
) -> impl ExactSizeIterator<Item = Ref<'_, ParticleEmitter>>
pub fn particle_emitters_iter( &self, ) -> impl ExactSizeIterator<Item = Ref<'_, ParticleEmitter>>
Iterate the elements, borrowing each in turn.
pub fn resize_particle_emitters(&mut self, count: usize)
Sourcepub fn particle_emitters_2_len(&self) -> usize
pub fn particle_emitters_2_len(&self) -> usize
Particle emitters v2
Sourcepub fn particle_emitters_2(
&self,
index: usize,
) -> Option<Ref<'_, ParticleEmitter2>>
pub fn particle_emitters_2( &self, index: usize, ) -> Option<Ref<'_, ParticleEmitter2>>
Borrows element index in place. None when out of range.
pub fn particle_emitters_2_mut( &mut self, index: usize, ) -> Option<RefMut<'_, ParticleEmitter2>>
Sourcepub fn particle_emitters_2_iter(
&self,
) -> impl ExactSizeIterator<Item = Ref<'_, ParticleEmitter2>>
pub fn particle_emitters_2_iter( &self, ) -> impl ExactSizeIterator<Item = Ref<'_, ParticleEmitter2>>
Iterate the elements, borrowing each in turn.
pub fn resize_particle_emitters_2(&mut self, count: usize)
Sourcepub fn ribbon_emitters_len(&self) -> usize
pub fn ribbon_emitters_len(&self) -> usize
Ribbon trail effects
Sourcepub fn ribbon_emitters(&self, index: usize) -> Option<Ref<'_, RibbonEmitter>>
pub fn ribbon_emitters(&self, index: usize) -> Option<Ref<'_, RibbonEmitter>>
Borrows element index in place. None when out of range.
pub fn ribbon_emitters_mut( &mut self, index: usize, ) -> Option<RefMut<'_, RibbonEmitter>>
Sourcepub fn ribbon_emitters_iter(
&self,
) -> impl ExactSizeIterator<Item = Ref<'_, RibbonEmitter>>
pub fn ribbon_emitters_iter( &self, ) -> impl ExactSizeIterator<Item = Ref<'_, RibbonEmitter>>
Iterate the elements, borrowing each in turn.
pub fn resize_ribbon_emitters(&mut self, count: usize)
Sourcepub fn corn_emitters_len(&self) -> usize
pub fn corn_emitters_len(&self) -> usize
PopcornFX emitters (Reforged)
Sourcepub fn corn_emitters(&self, index: usize) -> Option<Ref<'_, CornEmitter>>
pub fn corn_emitters(&self, index: usize) -> Option<Ref<'_, CornEmitter>>
Borrows element index in place. None when out of range.
pub fn corn_emitters_mut( &mut self, index: usize, ) -> Option<RefMut<'_, CornEmitter>>
Sourcepub fn corn_emitters_iter(
&self,
) -> impl ExactSizeIterator<Item = Ref<'_, CornEmitter>>
pub fn corn_emitters_iter( &self, ) -> impl ExactSizeIterator<Item = Ref<'_, CornEmitter>>
Iterate the elements, borrowing each in turn.
pub fn resize_corn_emitters(&mut self, count: usize)
Sourcepub fn event_objects_len(&self) -> usize
pub fn event_objects_len(&self) -> usize
Animation event triggers
Sourcepub fn event_objects(&self, index: usize) -> Option<Ref<'_, EventObject>>
pub fn event_objects(&self, index: usize) -> Option<Ref<'_, EventObject>>
Borrows element index in place. None when out of range.
pub fn event_objects_mut( &mut self, index: usize, ) -> Option<RefMut<'_, EventObject>>
Sourcepub fn event_objects_iter(
&self,
) -> impl ExactSizeIterator<Item = Ref<'_, EventObject>>
pub fn event_objects_iter( &self, ) -> impl ExactSizeIterator<Item = Ref<'_, EventObject>>
Iterate the elements, borrowing each in turn.
pub fn resize_event_objects(&mut self, count: usize)
Sourcepub fn cameras_len(&self) -> usize
pub fn cameras_len(&self) -> usize
Camera definitions
Sourcepub fn cameras(&self, index: usize) -> Option<Ref<'_, Camera>>
pub fn cameras(&self, index: usize) -> Option<Ref<'_, Camera>>
Borrows element index in place. None when out of range.
pub fn cameras_mut(&mut self, index: usize) -> Option<RefMut<'_, Camera>>
Sourcepub fn cameras_iter(&self) -> impl ExactSizeIterator<Item = Ref<'_, Camera>>
pub fn cameras_iter(&self) -> impl ExactSizeIterator<Item = Ref<'_, Camera>>
Iterate the elements, borrowing each in turn.
pub fn resize_cameras(&mut self, count: usize)
Sourcepub fn collision_shapes_len(&self) -> usize
pub fn collision_shapes_len(&self) -> usize
Collision geometry
Sourcepub fn collision_shapes(&self, index: usize) -> Option<Ref<'_, CollisionShape>>
pub fn collision_shapes(&self, index: usize) -> Option<Ref<'_, CollisionShape>>
Borrows element index in place. None when out of range.
pub fn collision_shapes_mut( &mut self, index: usize, ) -> Option<RefMut<'_, CollisionShape>>
Sourcepub fn collision_shapes_iter(
&self,
) -> impl ExactSizeIterator<Item = Ref<'_, CollisionShape>>
pub fn collision_shapes_iter( &self, ) -> impl ExactSizeIterator<Item = Ref<'_, CollisionShape>>
Iterate the elements, borrowing each in turn.
pub fn resize_collision_shapes(&mut self, count: usize)
Sourcepub fn face_effects_len(&self) -> usize
pub fn face_effects_len(&self) -> usize
Facial effects (Reforged)
Sourcepub fn face_effects(&self, index: usize) -> Option<Ref<'_, FaceEffect>>
pub fn face_effects(&self, index: usize) -> Option<Ref<'_, FaceEffect>>
Borrows element index in place. None when out of range.
pub fn face_effects_mut( &mut self, index: usize, ) -> Option<RefMut<'_, FaceEffect>>
Sourcepub fn face_effects_iter(
&self,
) -> impl ExactSizeIterator<Item = Ref<'_, FaceEffect>>
pub fn face_effects_iter( &self, ) -> impl ExactSizeIterator<Item = Ref<'_, FaceEffect>>
Iterate the elements, borrowing each in turn.