pub struct ModelEditor {Show 27 fields
pub models: HashMap<u64, ParticleModel>,
pub active_model_id: Option<u64>,
pub active_layer: usize,
pub active_brush: BrushKind,
pub brush_radius: f32,
pub brush_strength: f32,
pub brush_density: f32,
pub active_char: char,
pub active_color: Vec4,
pub selection: HashSet<usize>,
pub pivot: Vec3,
pub undo_stack: VecDeque<ModelSnapshot>,
pub redo_stack: VecDeque<ModelSnapshot>,
pub grid_snap: bool,
pub grid_size: f32,
pub symmetry: SymmetryMode,
pub next_model_id: u64,
pub brush_params: BrushParams,
pub selection_sys: SelectionSystem,
pub undo_sys: UndoStack,
pub proportional_edit: bool,
pub proportional_radius: f32,
pub proportional_falloff: FalloffCurve,
pub wireframe_mode: bool,
pub normal_vis: bool,
pub show_bounds: bool,
pub lattice: Option<LatticeDeformer>,
}Fields§
§models: HashMap<u64, ParticleModel>§active_model_id: Option<u64>§active_layer: usize§active_brush: BrushKind§brush_radius: f32§brush_strength: f32§brush_density: f32§active_char: char§active_color: Vec4§selection: HashSet<usize>§pivot: Vec3§undo_stack: VecDeque<ModelSnapshot>§redo_stack: VecDeque<ModelSnapshot>§grid_snap: bool§grid_size: f32§symmetry: SymmetryMode§next_model_id: u64§brush_params: BrushParams§selection_sys: SelectionSystem§undo_sys: UndoStack§proportional_edit: bool§proportional_radius: f32§proportional_falloff: FalloffCurve§wireframe_mode: bool§normal_vis: bool§show_bounds: bool§lattice: Option<LatticeDeformer>Implementations§
Source§impl ModelEditor
impl ModelEditor
pub fn new() -> Self
pub fn create_model(&mut self, name: impl Into<String>) -> u64
pub fn active_model(&self) -> Option<&ParticleModel>
pub fn active_model_mut(&mut self) -> Option<&mut ParticleModel>
pub fn make_brush_params(&self) -> BrushParams
Sourcepub fn apply_brush(&mut self, _ray: Ray3, hit_pos: Vec3)
pub fn apply_brush(&mut self, _ray: Ray3, hit_pos: Vec3)
Apply brush at ray intersection point.
pub fn cmd_translate(&mut self, delta: Vec3)
pub fn cmd_rotate(&mut self, axis: Vec3, angle_radians: f32)
pub fn cmd_scale_uniform(&mut self, factor: f32)
pub fn cmd_scale_nonuniform(&mut self, factors: Vec3)
pub fn cmd_mirror(&mut self, axis: Vec3)
pub fn cmd_bend(&mut self, axis: Vec3, angle_per_unit: f32)
pub fn cmd_taper(&mut self, axis: Vec3, taper_factor: f32)
pub fn cmd_twist(&mut self, axis: Vec3, twist_rate: f32)
pub fn cmd_lattice_deform(&mut self)
pub fn undo(&mut self)
pub fn redo(&mut self)
pub fn select_all(&mut self)
pub fn deselect_all(&mut self)
pub fn invert_selection(&mut self)
pub fn box_select(&mut self, aabb: Aabb3, add: bool)
pub fn sphere_select(&mut self, center: Vec3, radius: f32, add: bool)
pub fn select_by_char(&mut self, ch: char, add: bool)
pub fn select_by_group(&mut self, group_id: u32, add: bool)
pub fn select_by_color(&mut self, target: Vec4, tolerance: f32, add: bool)
pub fn grow_selection(&mut self, radius: f32)
pub fn shrink_selection(&mut self, radius: f32)
pub fn insert_sphere(&mut self, center: Vec3, radius: f32, n: usize)
pub fn insert_cube( &mut self, center: Vec3, half_size: Vec3, ppf: usize, fill: bool, )
pub fn insert_cylinder( &mut self, center: Vec3, radius: f32, height: f32, segs: usize, bands: usize, )
pub fn insert_torus( &mut self, center: Vec3, major: f32, minor: f32, us: usize, vs: usize, )
pub fn insert_plane( &mut self, center: Vec3, w: f32, d: f32, cols: usize, rows: usize, )
pub fn insert_text3d(&mut self, text: &str, origin: Vec3)
pub fn insert_marching_cubes( &mut self, field: &dyn Fn(Vec3) -> f32, bounds: Aabb3, resolution: usize, )
pub fn insert_metaballs( &mut self, balls: &[(Vec3, f32)], bounds: Aabb3, resolution: usize, )
pub fn generate_lods(&mut self)
pub fn recompute_normals(&mut self, k: usize)
pub fn export_active_model(&self) -> Option<String>
pub fn import_model(&mut self, text: &str) -> Option<u64>
pub fn pick(&self, ray: &Ray3, tolerance: f32) -> Option<(usize, f32)>
pub fn add_layer(&mut self, name: impl Into<String>)
pub fn set_active_layer(&mut self, layer_id: usize)
pub fn toggle_layer_visibility(&mut self, layer_id: u8)
pub fn merge_layers(&mut self, src: u8, dst: u8)
pub fn set_pivot_to_selection_center(&mut self)
pub fn set_pivot_to_model_center(&mut self)
pub fn init_lattice(&mut self, res_x: usize, res_y: usize, res_z: usize)
pub fn set_lattice_control_point( &mut self, xi: usize, yi: usize, zi: usize, pos: Vec3, )
pub fn reset_lattice(&mut self)
pub fn add_bone( &mut self, name: impl Into<String>, head: Vec3, tail: Vec3, ) -> Option<u32>
pub fn bind_skeleton(&mut self)
pub fn apply_skeleton_pose(&mut self)
pub fn get_wireframe_edges(&self) -> Vec<(usize, usize)>
pub fn get_normal_vis_particles(&self) -> Vec<ModelParticle>
pub fn delete_selected(&mut self)
pub fn duplicate_selected(&mut self)
pub fn set_selected_group(&mut self, group_id: u32)
pub fn set_selected_char(&mut self, ch: char)
pub fn set_selected_color(&mut self, color: Vec4)
pub fn lock_selected(&mut self)
pub fn unlock_selected(&mut self)
pub fn center_model_at_origin(&mut self)
pub fn flip_normals(&mut self)
pub fn particle_count(&self) -> usize
pub fn selected_count(&self) -> usize
pub fn set_brush_radius(&mut self, r: f32)
pub fn set_brush_strength(&mut self, s: f32)
pub fn set_brush_density(&mut self, d: f32)
pub fn set_symmetry(&mut self, mode: SymmetryMode)
pub fn toggle_grid_snap(&mut self)
Trait Implementations§
Source§impl Clone for ModelEditor
impl Clone for ModelEditor
Source§impl Debug for ModelEditor
impl Debug for ModelEditor
Auto Trait Implementations§
impl Freeze for ModelEditor
impl RefUnwindSafe for ModelEditor
impl Send for ModelEditor
impl Sync for ModelEditor
impl Unpin for ModelEditor
impl UnsafeUnpin for ModelEditor
impl UnwindSafe for ModelEditor
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
impl<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<T> Downcast for Twhere
T: Any,
impl<T> Downcast for Twhere
T: Any,
Source§fn into_any(self: Box<T>) -> Box<dyn Any>
fn into_any(self: Box<T>) -> Box<dyn Any>
Convert
Box<dyn Trait> (where Trait: Downcast) to Box<dyn Any>. Box<dyn Any> can
then be further downcast into Box<ConcreteType> where ConcreteType implements Trait.Source§fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
Convert
Rc<Trait> (where Trait: Downcast) to Rc<Any>. Rc<Any> can then be
further downcast into Rc<ConcreteType> where ConcreteType implements Trait.Source§fn as_any(&self) -> &(dyn Any + 'static)
fn as_any(&self) -> &(dyn Any + 'static)
Convert
&Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot
generate &Any’s vtable from &Trait’s.Source§fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
Convert
&mut Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot
generate &mut Any’s vtable from &mut Trait’s.