@@ -129,43 +129,20 @@ pub fn generate_world_with_options(
129129 let pb_batch_size: u64 = ( elements_count as u64 / desired_updates) . max ( 1 ) ;
130130 let mut element_counter: u64 = 0 ;
131131
132- // Pre-scan 3DMR-tagged elements first; 3DMR wins over Wikidata on conflict.
133- let three_dmr_prescan = if args. use_3d {
134- Some ( crate :: models_3d:: three_dmr:: prescan (
135- & elements,
136- args. rotation ,
137- ) )
138- } else {
139- None
140- } ;
132+ let models_3d_pipeline = args
133+ . use_3d
134+ . then ( || crate :: models_3d:: Models3dPipeline :: prescan ( & elements, args) ) ;
141135 let empty_suppressed: HashSet < ( & ' static str , u64 ) > = HashSet :: new ( ) ;
142- let three_dmr_suppressed: & HashSet < ( & ' static str , u64 ) > = three_dmr_prescan
143- . as_ref ( )
144- . map ( |p| & p. suppressed_ids )
145- . unwrap_or ( & empty_suppressed) ;
146-
147- // Wikidata pre-scan runs after 3DMR's, skipping any element 3DMR already claimed.
148- let wikidata_prescan = if args. use_3d {
149- Some ( crate :: models_3d:: wikidata:: prescan (
150- & elements,
151- three_dmr_suppressed,
152- args. rotation ,
153- args. scale ,
154- ) )
155- } else {
156- None
157- } ;
158- let wikidata_suppressed: & HashSet < ( & ' static str , u64 ) > = wikidata_prescan
136+ let models_3d_suppressed: & HashSet < ( & ' static str , u64 ) > = models_3d_pipeline
159137 . as_ref ( )
160- . map ( |p| & p . suppressed_ids )
138+ . map ( |p| p . suppressed ( ) )
161139 . unwrap_or ( & empty_suppressed) ;
162140
163141 // Process all elements
164142 for element in elements. into_iter ( ) {
165143 element_counter += 1 ;
166144 let suppression_key = ( element. kind ( ) , element. id ( ) ) ;
167- if three_dmr_suppressed. contains ( & suppression_key)
168- || wikidata_suppressed. contains ( & suppression_key)
145+ if models_3d_suppressed. contains ( & suppression_key)
169146 || outline_suppression. contains ( & suppression_key)
170147 {
171148 continue ;
@@ -439,15 +416,8 @@ pub fn generate_world_with_options(
439416 }
440417
441418 // Run after ground generation so anchor Y reflects the final terrain.
442- if let Some ( prescan) = three_dmr_prescan. as_ref ( ) {
443- if prescan. placement_count ( ) > 0 {
444- crate :: models_3d:: three_dmr:: place_three_dmr_models ( & mut editor, args, prescan) ;
445- }
446- }
447- if let Some ( prescan) = wikidata_prescan. as_ref ( ) {
448- if prescan. placement_count ( ) > 0 {
449- crate :: models_3d:: wikidata:: place_wikidata_models ( & mut editor, args, prescan) ;
450- }
419+ if let Some ( p) = models_3d_pipeline. as_ref ( ) {
420+ p. place ( & mut editor, args) ;
451421 }
452422
453423 // Save world
0 commit comments