2 using System.Collections.Generic;
 
    3 using System.Collections.ObjectModel;
 
    7 using System.Threading.Tasks;
 
    9 using SiliconStudio.Paradox;
 
   10 using SiliconStudio.Paradox.Games.Collections;
 
   11 using SiliconStudio.Paradox.Graphics;
 
   12 using SiliconStudio.Paradox.Games.ViewModel;
 
   13 using SiliconStudio.Paradox.Graphics.Data;
 
   14 using SiliconStudio.Paradox.Games.Serialization.Packages;
 
   15 using SiliconStudio.Paradox.Games.IO;
 
   29         public SortedSet<string> 
Files = 
new SortedSet<string>();
 
   31         public void Setup(
string baseUrl)
 
   33             VirtualFileSystem.ListFiles(baseUrl, 
"*.*", VirtualSearchOption.AllDirectories)
 
   36                     foreach (var url 
in task.Result)
 
   47                     var watcher = VirtualFileSystem.CreateWatcher(baseUrl, 
"*.*");
 
   48                     watcher.Changed += watcher_Changed;
 
   49                     watcher.Enable = 
true;
 
   70             var urlAsLowerCase = url.ToLowerInvariant();
 
   71             return (urlAsLowerCase.EndsWith(
".png")
 
   72                 || urlAsLowerCase.EndsWith(
".jpg")
 
   74                 || urlAsLowerCase.EndsWith(
".pdxsl"));
 
   80         private EngineContext engineContext;
 
   82         private string searchFilter = string.Empty;
 
   83         private string searchRoot = string.Empty;
 
   88             this.engineContext = engineContext;
 
   91         public void GenerateChildren(ViewModelContext context, IViewModelNode viewModelNode, ref 
bool handled)
 
   93             if ((viewModelNode.NodeValue as 
string) == 
"Root")
 
   95                 viewModelNode.Children.Add(
new ViewModelNode(
"SearchResults", 
new EnumerableViewModelContent<ViewModelReference>(() =>
 
   96                     searchResults != null && searchResults.IsCompleted ? searchResults.Result.Select(searchResult => 
new ViewModelReference(KeyValuePair.Create(UrlType.SearchResult, searchResult), 
true))
 
   97                                                                        : 
new ViewModelReference[] { })));
 
   98                 viewModelNode.Children.Add(
new ViewModelNode(
"SearchFilter",
 
   99                     new LambdaViewModelContent<string>(
 
  103                             searchFilter = newFilter;
 
  106                 viewModelNode.Children.Add(
new ViewModelNode(
"Packages",
 
  107                     new EnumerableViewModelContent<ViewModelReference>(() => engineContext.PackageManager.Packages.Select(package => 
new ViewModelReference(package, 
true)))));
 
  110                 fileTracker.Setup(
"/global_data");
 
  111                 fileTracker.Setup(
"/global_data2");
 
  112                 viewModelNode.Children.Add(
new ViewModelNode(
"FileTracker", 
new RootViewModelContent(fileTracker)).GenerateChildren(context));
 
  116                 viewModelNode.Content.SerializeFlags = ViewModelContentSerializeFlags.None;
 
  117                 viewModelNode.Children.Add(
new ViewModelNode(
"RootFolder", KeyValuePair.Create(UrlType.FileTracker, 
"/")).
GenerateChildren(context));
 
  120             if (viewModelNode.NodeValue is Package)
 
  122                 viewModelNode.Children.Add(
new ViewModelNode(
"Name", 
new PropertyInfoViewModelContent(
new ParentNodeValueViewModelContent(), typeof(Package).GetProperty(
"Name"))));
 
  126             if (viewModelNode.NodeValue is Tuple<UrlType, string>)
 
  128                 var nodeValue = (Tuple<UrlType, string>)viewModelNode.NodeValue;
 
  129                 var url = nodeValue.Item2;
 
  131                 if (nodeValue.Item1 == UrlType.SearchResult)
 
  134                     if (url.EndsWith(
".png") || url.EndsWith(
".jpg"))
 
  137                         var thumbnail = 
new ViewModelNode(
"Thumbnail",
 
  138                             new AsyncViewModelContent<Image>(
new NullViewModelContent(), operand => engineContext.AssetManager.Load<
Image>(url)));
 
  139                         viewModelNode.Children.Add(thumbnail);
 
  151                     viewModelNode.Content = 
new RootViewModelContent(url);
 
  152                     viewModelNode.Content.SerializeFlags = ViewModelContentSerializeFlags.Serialize;
 
  154                 else if (nodeValue.Item1 == UrlType.FileTracker)
 
  156                     viewModelNode.Content = 
new RootViewModelContent(url);
 
  157                     viewModelNode.Content.SerializeFlags = ViewModelContentSerializeFlags.Serialize;
 
  159                     viewModelNode.Children.Add(
new ViewModelNode(
"SetAsSearchFilter", 
new RootViewModelContent((ExecuteCommand)((viewModel2, parameter) =>
 
  165                     if (url.EndsWith(
"/"))
 
  167                         viewModelNode.Children.Add(
new ViewModelNode(
"Folders", 
new EnumerableViewModelContent<ViewModelReference>(() =>
 
  169                                     .Where(file => file.StartsWith(url))
 
  172                                             var separatorIndex = file.IndexOf(
'/', url.Length + 1);
 
  173                                             return file.Substring(url.Length, separatorIndex != -1 ? separatorIndex - url.Length + 1 : file.Length - url.Length);
 
  175                                     .Where(x => x.Key.EndsWith(
"/") || x.Key.EndsWith(
".dat") || x.Key.EndsWith(
".pdxsl"))
 
  176                                     .Select(x => 
new ViewModelReference(KeyValuePair.Create(UrlType.FileTracker, url + x.Key), 
this))
 
  187             var packageUrl = package.Source.Url;
 
  188             return package.ObjectHeaders
 
  189                 .Select(packageObject => packageUrl + 
"/" + packageObject.Name);
 
  194             if (searchRoot.EndsWith(
"/"))
 
  196                 searchResults = VirtualFileSystem
 
  197                     .ListFiles(searchRoot, searchFilter + 
"*.*", VirtualSearchOption.AllDirectories)
 
  198                     .ContinueWith(task =>
 
  201                                 .Concat(engineContext.PackageManager.Packages
 
  202                                     .Where(x => x.Source.Url.StartsWith(searchRoot))
 
  210                 var 
package = engineContext.PackageManager.Packages.FirstOrDefault(x => x.Source.Url == searchRoot);
 
IEnumerable< string > EnumeratePackageObjects(Package package, string filter)
Provides method to instantiate an image 1D/2D/3D supporting TextureArray and mipmaps on the CPU or to...
SortedSet< string > Files
void GenerateChildren(ViewModelContext context, IViewModelNode viewModelNode, ref bool handled)
AssetBrowser(EngineContext engineContext)
VirtualWatcherChangeTypes
static bool IsExtensionSupported(string url)
void Setup(string baseUrl)
AssetBrowserEnumerator(EngineContext engineContext)