1- //! The map editor proper, with a GUI and everything.
2- #![ cfg_attr( not( debug_assertions) , windows_subsystem = "windows" ) ]
3- #![ allow( dead_code) ] // TODO: remove when this is not a huge WIP
4- #![ allow( unused_variables) ]
5-
6- mod config;
7- mod dmi;
8- mod edit_prefab;
9- mod history;
10- mod map_renderer;
11- mod map_repr;
12- mod support;
13- mod tasks;
14- mod tools;
15-
16- use dmi:: IconCache ;
1+ use crate :: dmi:: IconCache ;
2+ use crate :: edit_prefab:: EditPrefab ;
3+ use crate :: { config, dmi, history, map_renderer, map_repr, tasks, tools} ;
174use dmm_tools:: dmm:: Map ;
185use dreammaker:: objtree:: { ObjectTree , TypeRef } ;
19- use edit_prefab:: EditPrefab ;
206use imgui:: * ;
217use sdl3:: dialog:: { DialogError , DialogFileFilter } ;
228use sdl3:: gpu:: { ColorTargetInfo , CommandBuffer , Device } ;
@@ -26,27 +12,23 @@ use std::borrow::Cow;
2612use std:: path:: { Path , PathBuf } ;
2713use std:: sync:: { mpsc, Arc } ;
2814
29- type History = history:: History < map_repr:: AtomMap , Environment > ;
30- type ImRenderer = imgui_sdl3:: renderer:: Renderer ;
15+ pub type History = history:: History < map_repr:: AtomMap , Environment > ;
16+ pub type ImRenderer = imgui_sdl3:: renderer:: Renderer ;
3117
32- const RED : [ f32 ; 4 ] = [ 1.0 , 0.25 , 0.25 , 1.0 ] ;
33- const GREEN : [ f32 ; 4 ] = [ 0.25 , 1.0 , 0.25 , 1.0 ] ;
18+ pub const RED : [ f32 ; 4 ] = [ 1.0 , 0.25 , 0.25 , 1.0 ] ;
19+ pub const GREEN : [ f32 ; 4 ] = [ 0.25 , 1.0 , 0.25 , 1.0 ] ;
3420const THUMBNAIL_SIZE : u16 = 186 ;
3521const MAX_ZOOM : f32 = 16. ;
3622const MIN_ZOOM : f32 = 1. / 16. ;
3723
3824const CLEAR_COLOR : Color = Color :: RGB ( 64 , 64 , 128 ) ;
3925
40- fn main ( ) {
41- support:: run ( "SpacemanDMM" ) ;
42- }
43-
4426// ---------------------------------------------------------------------------
4527// Data structures
4628
4729pub struct EditorScene {
4830 device : sdl3:: gpu:: Device ,
49- logical_size : ( u32 , u32 ) ,
31+ pub logical_size : ( u32 , u32 ) ,
5032
5133 config : config:: Config ,
5234 map_renderer : map_renderer:: MapRenderer ,
@@ -100,8 +82,8 @@ enum Command {
10082pub struct Environment {
10183 path : PathBuf ,
10284 errors : Vec < String > ,
103- objtree : Arc < ObjectTree > ,
104- icons : Arc < IconCache > ,
85+ pub objtree : Arc < ObjectTree > ,
86+ pub icons : Arc < IconCache > ,
10587 turf : String ,
10688 area : String ,
10789}
@@ -153,7 +135,7 @@ struct EditInstance {
153135// Editor scene, including rendering and UI
154136
155137impl EditorScene {
156- fn new ( device : & Device , logical_size : ( u32 , u32 ) ) -> Self {
138+ pub fn new ( device : & Device , logical_size : ( u32 , u32 ) ) -> Self {
157139 let ( command_tx, command_rx) = mpsc:: channel ( ) ;
158140 let mut ed = EditorScene {
159141 device : device. clone ( ) ,
@@ -281,7 +263,7 @@ impl EditorScene {
281263 self . environment = Some ( environment) ;
282264 }
283265
284- fn run ( & mut self ) {
266+ pub fn run ( & mut self ) {
285267 while let Ok ( command) = self . command_rx . try_recv ( ) {
286268 match command {
287269 Command :: DialogError ( e) => self . handle_dialog_error ( e) ,
@@ -390,7 +372,7 @@ impl EditorScene {
390372 }
391373 }
392374
393- fn render ( & mut self , command_buffer : & mut CommandBuffer , target : ColorTargetInfo ) {
375+ pub fn render ( & mut self , command_buffer : & mut CommandBuffer , target : ColorTargetInfo ) {
394376 let target = target
395377 . with_clear_color ( CLEAR_COLOR )
396378 . with_load_op ( sdl3:: gpu:: LoadOp :: CLEAR ) ;
@@ -437,7 +419,7 @@ impl EditorScene {
437419 self . device . end_render_pass ( render_pass) ;
438420 }
439421
440- fn run_ui ( & mut self , ui : & Ui , renderer : & mut ImRenderer ) -> bool {
422+ pub fn run_ui ( & mut self , ui : & Ui , renderer : & mut ImRenderer ) -> bool {
441423 ui. dockspace_over_main_viewport ( ) ;
442424
443425 for tool in self . tools . iter_mut ( ) {
@@ -1225,7 +1207,7 @@ impl EditorScene {
12251207 continue_running
12261208 }
12271209
1228- fn mouse_moved ( & mut self , ( x, y) : ( i32 , i32 ) ) {
1210+ pub fn mouse_moved ( & mut self , ( x, y) : ( i32 , i32 ) ) {
12291211 self . last_mouse_pos = ( x, y) ;
12301212 self . target_tile = self . tile_under ( ( x, y) ) ;
12311213 }
@@ -1262,7 +1244,7 @@ impl EditorScene {
12621244 }
12631245 }
12641246
1265- fn mouse_wheel ( & mut self , ctrl : bool , shift : bool , alt : bool , x : f32 , y : f32 ) {
1247+ pub fn mouse_wheel ( & mut self , ctrl : bool , shift : bool , alt : bool , x : f32 , y : f32 ) {
12661248 if alt {
12671249 if y > 0.0 {
12681250 self . zoom_in ( ) ;
@@ -1294,7 +1276,7 @@ impl EditorScene {
12941276
12951277 // Commented out due to https://github.com/rust-lang/rust/issues/82012
12961278 //#[deny(unreachable_patterns)]
1297- fn chord ( & mut self , ctrl : bool , shift : bool , alt : bool , key : Scancode ) {
1279+ pub fn chord ( & mut self , ctrl : bool , shift : bool , alt : bool , key : Scancode ) {
12981280 macro_rules! k {
12991281 ( @[ $ctrl: pat, $shift: pat, $alt: pat] $k: ident) => {
13001282 ( $ctrl, $shift, $alt, Scancode :: $k)
@@ -1608,7 +1590,7 @@ const FILTERS_DMM: &[DialogFileFilter] = &[DialogFileFilter {
16081590// Helpers
16091591
16101592impl Environment {
1611- fn find_closest_type ( & self , mut path : & str ) -> ( bool , Option < TypeRef < ' _ > > ) {
1593+ pub fn find_closest_type ( & self , mut path : & str ) -> ( bool , Option < TypeRef < ' _ > > ) {
16121594 // find the "best" type by chopping the path if needed
16131595 let mut ty = self . objtree . find ( path) ;
16141596 let red_paths = ty. is_none ( ) ;
@@ -1704,7 +1686,7 @@ fn detect_environment(path: &Path) -> Option<PathBuf> {
17041686 None
17051687}
17061688
1707- fn prepare_tool_icon (
1689+ pub fn prepare_tool_icon (
17081690 renderer : & mut ImRenderer ,
17091691 environment : Option < & Environment > ,
17101692 map_renderer : & mut map_renderer:: MapRenderer ,
@@ -1768,7 +1750,7 @@ fn prepare_tool_icon(
17681750// ---------------------------------------------------------------------------
17691751// Extension traits
17701752
1771- trait UiExt {
1753+ pub trait UiExt {
17721754 fn fits_width ( & self , width : f32 ) -> usize ;
17731755 fn objtree_menu < ' e > ( & self , env : & ' e Environment , selection : & mut Option < TypeRef < ' e > > ) ;
17741756 fn tool_icon (
0 commit comments