@@ -116,7 +116,7 @@ pub struct AssetProcessorData {
116116 processors : RwLock < HashMap < & ' static str , Arc < dyn ErasedProcessor > > > ,
117117 /// Default processors for file extensions
118118 default_processors : RwLock < HashMap < Box < str > , & ' static str > > ,
119- sources : AssetSources ,
119+ sources : Arc < AssetSources > ,
120120}
121121
122122/// The current state of processing, including the overall state and the state of all assets.
@@ -135,19 +135,25 @@ pub(crate) struct ProcessingState {
135135
136136impl AssetProcessor {
137137 /// Creates a new [`AssetProcessor`] instance.
138- pub fn new ( source : & mut AssetSourceBuilders ) -> Self {
139- let data = Arc :: new ( AssetProcessorData :: new ( source. build_sources ( true , false ) ) ) ;
138+ pub fn new (
139+ sources : & mut AssetSourceBuilders ,
140+ watch_processed : bool ,
141+ ) -> ( Self , Arc < AssetSources > ) {
142+ let state = Arc :: new ( ProcessingState :: new ( ) ) ;
143+ let mut sources = sources. build_sources ( true , watch_processed) ;
144+ sources. gate_on_processor ( state. clone ( ) ) ;
145+ let sources = Arc :: new ( sources) ;
146+
147+ let data = Arc :: new ( AssetProcessorData :: new ( sources. clone ( ) , state) ) ;
140148 // The asset processor uses its own asset server with its own id space
141- let mut sources = source. build_sources ( false , false ) ;
142- sources. gate_on_processor ( data. processing_state . clone ( ) ) ;
143149 let server = AssetServer :: new_with_meta_check (
144- sources,
150+ sources. clone ( ) ,
145151 AssetServerMode :: Processed ,
146152 AssetMetaCheck :: Always ,
147153 false ,
148154 UnapprovedPathMode :: default ( ) ,
149155 ) ;
150- Self { server, data }
156+ ( Self { server, data } , sources )
151157 }
152158
153159 /// Gets a reference to the [`Arc`] containing the [`AssetProcessorData`].
@@ -513,7 +519,7 @@ impl AssetProcessor {
513519 }
514520 }
515521 AssetSourceEvent :: RemovedUnknown { path, is_meta } => {
516- let processed_reader = source. processed_reader ( ) . unwrap ( ) ;
522+ let processed_reader = source. ungated_processed_reader ( ) . unwrap ( ) ;
517523 match processed_reader. is_directory ( & path) . await {
518524 Ok ( is_directory) => {
519525 if is_directory {
@@ -590,7 +596,7 @@ impl AssetProcessor {
590596 "Removing folder {} because source was removed" ,
591597 path. display( )
592598 ) ;
593- let processed_reader = source. processed_reader ( ) . unwrap ( ) ;
599+ let processed_reader = source. ungated_processed_reader ( ) . unwrap ( ) ;
594600 match processed_reader. read_directory ( path) . await {
595601 Ok ( mut path_stream) => {
596602 while let Some ( child_path) = path_stream. next ( ) . await {
@@ -787,7 +793,7 @@ impl AssetProcessor {
787793 }
788794
789795 for source in self . sources ( ) . iter_processed ( ) {
790- let Ok ( processed_reader) = source. processed_reader ( ) else {
796+ let Some ( processed_reader) = source. ungated_processed_reader ( ) else {
791797 continue ;
792798 } ;
793799 let Ok ( processed_writer) = source. processed_writer ( ) else {
@@ -1210,10 +1216,10 @@ impl AssetProcessor {
12101216
12111217impl AssetProcessorData {
12121218 /// Initializes a new [`AssetProcessorData`] using the given [`AssetSources`].
1213- pub fn new ( source : AssetSources ) -> Self {
1219+ pub ( crate ) fn new ( sources : Arc < AssetSources > , processing_state : Arc < ProcessingState > ) -> Self {
12141220 AssetProcessorData {
1215- processing_state : Arc :: new ( ProcessingState :: new ( ) ) ,
1216- sources : source ,
1221+ processing_state,
1222+ sources,
12171223 log_factory : Mutex :: new ( Some ( Box :: new ( FileTransactionLogFactory :: default ( ) ) ) ) ,
12181224 log : Default :: default ( ) ,
12191225 processors : Default :: default ( ) ,
0 commit comments