diff options
Diffstat (limited to 'tools/editor/editor_file_system.cpp')
-rw-r--r-- | tools/editor/editor_file_system.cpp | 69 |
1 files changed, 69 insertions, 0 deletions
diff --git a/tools/editor/editor_file_system.cpp b/tools/editor/editor_file_system.cpp index 1062417fec..3fd5f7e444 100644 --- a/tools/editor/editor_file_system.cpp +++ b/tools/editor/editor_file_system.cpp @@ -149,6 +149,41 @@ bool EditorFileSystemDirectory::is_missing_sources(int p_idx) const { return false; } +bool EditorFileSystemDirectory::have_sources_changed(int p_idx) const { + + ERR_FAIL_INDEX_V(p_idx,files.size(),false); + return files[p_idx]->meta.sources_changed; + +} + +int EditorFileSystemDirectory::get_source_count(int p_idx) const { + + ERR_FAIL_INDEX_V(p_idx,files.size(),0); + if (!files[p_idx]->meta.enabled) + return 0; + +} +String EditorFileSystemDirectory::get_source_file(int p_idx,int p_source) const { + + ERR_FAIL_INDEX_V(p_idx,files.size(),String()); + ERR_FAIL_INDEX_V(p_source,files[p_idx]->meta.sources.size(),String()); + if (!files[p_idx]->meta.enabled) + return String(); + + return files[p_idx]->meta.sources[p_source].path; + +} +bool EditorFileSystemDirectory::is_source_file_missing(int p_idx,int p_source) const { + + ERR_FAIL_INDEX_V(p_idx,files.size(),false); + ERR_FAIL_INDEX_V(p_source,files[p_idx]->meta.sources.size(),false); + if (!files[p_idx]->meta.enabled) + return false; + + return files[p_idx]->meta.sources[p_source].missing; +} + + StringName EditorFileSystemDirectory::get_file_type(int p_idx) const { ERR_FAIL_INDEX_V(p_idx,files.size(),""); @@ -210,8 +245,11 @@ EditorFileSystemDirectory::ImportMeta EditorFileSystem::_get_meta(const String& EditorFileSystemDirectory::ImportMeta m; if (imd.is_null()) { m.enabled=false; + m.sources_changed=false; } else { m.enabled=true; + m.sources_changed=false; + for(int i=0;i<imd->get_source_count();i++) { EditorFileSystemDirectory::ImportMeta::Source s; s.path=imd->get_source_path(i); @@ -649,7 +687,13 @@ void EditorFileSystem::_scan_new_dir(EditorFileSystemDirectory *p_dir,DirAccess ia.dir=p_dir; ia.file=E->get(); scan_actions.push_back(ia); + fi->meta.sources_changed=true; + } else { + fi->meta.sources_changed=false; } + + } else { + fi->meta.sources_changed=true; } p_dir->files.push_back(fi); @@ -764,6 +808,9 @@ void EditorFileSystem::_scan_fs_changes(EditorFileSystemDirectory *p_dir,const S ia.dir=p_dir; ia.file=f; scan_actions.push_back(ia); + fi->meta.sources_changed=true; + } else { + fi->meta.sources_changed=false; } } else { @@ -800,6 +847,9 @@ void EditorFileSystem::_scan_fs_changes(EditorFileSystemDirectory *p_dir,const S ia.dir=p_dir; ia.file=p_dir->files[i]->file; scan_actions.push_back(ia); + p_dir->files[i]->meta.sources_changed=true; + } else { + p_dir->files[i]->meta.sources_changed=false; } } @@ -1113,6 +1163,25 @@ String EditorFileSystem::get_file_type(const String& p_file) const { } +EditorFileSystemDirectory* EditorFileSystem::find_file(const String& p_file,int* r_index) const { + + if (!filesystem || scanning) + return NULL; + + EditorFileSystemDirectory *fs=NULL; + int cpos=-1; + if (!_find_file(p_file,&fs,cpos)) { + + return NULL; + } + + + if (r_index) + *r_index=cpos; + + return fs; +} + EditorFileSystemDirectory *EditorFileSystem::get_path(const String& p_path) { |