|
@@ -184,6 +184,7 @@ bool Engine::Initialize(const VariantMap& parameters)
|
|
|
|
|
|
|
|
Vector<String> resourcePaths = GetParameter(parameters, "ResourcePaths", "CoreData;Data").GetString().Split(';');
|
|
Vector<String> resourcePaths = GetParameter(parameters, "ResourcePaths", "CoreData;Data").GetString().Split(';');
|
|
|
Vector<String> resourcePackages = GetParameter(parameters, "ResourcePackages").GetString().Split(';');
|
|
Vector<String> resourcePackages = GetParameter(parameters, "ResourcePackages").GetString().Split(';');
|
|
|
|
|
+ Vector<String> autoloadFolders = GetParameter(parameters, "AutoloadPaths", "Extra").GetString().Split(';');
|
|
|
|
|
|
|
|
for (unsigned i = 0; i < resourcePaths.Size(); ++i)
|
|
for (unsigned i = 0; i < resourcePaths.Size(); ++i)
|
|
|
{
|
|
{
|
|
@@ -246,6 +247,62 @@ bool Engine::Initialize(const VariantMap& parameters)
|
|
|
return false;
|
|
return false;
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
|
|
+
|
|
|
|
|
+ // Add auto load folders
|
|
|
|
|
+ for (unsigned i = 0; i < autoloadFolders.Size(); ++i)
|
|
|
|
|
+ {
|
|
|
|
|
+ bool success = true;
|
|
|
|
|
+ String autoloadFolder = autoloadFolders[i];
|
|
|
|
|
+ String badResource;
|
|
|
|
|
+ if(fileSystem->DirExists(autoloadFolder))
|
|
|
|
|
+ {
|
|
|
|
|
+ Vector<String> folders;
|
|
|
|
|
+ fileSystem->ScanDir(folders, autoloadFolder, "*", SCAN_DIRS, false);
|
|
|
|
|
+ for(unsigned y = 0; y < folders.Size(); ++y)
|
|
|
|
|
+ {
|
|
|
|
|
+ String folder = folders[y];
|
|
|
|
|
+ if (folder.StartsWith("."))
|
|
|
|
|
+ continue;
|
|
|
|
|
+
|
|
|
|
|
+ String autoResourceDir = exePath + autoloadFolder + "/" + folder;
|
|
|
|
|
+ success = cache->AddResourceDir(autoResourceDir);
|
|
|
|
|
+ if (!success)
|
|
|
|
|
+ {
|
|
|
|
|
+ badResource = folder;
|
|
|
|
|
+ break;
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ if (success)
|
|
|
|
|
+ {
|
|
|
|
|
+ Vector<String> paks;
|
|
|
|
|
+ fileSystem->ScanDir(paks, autoloadFolder, "*.pak", SCAN_FILES, false);
|
|
|
|
|
+ for(unsigned y = 0; y < paks.Size(); ++y)
|
|
|
|
|
+ {
|
|
|
|
|
+ String pak = paks[y];
|
|
|
|
|
+ if (pak.StartsWith("."))
|
|
|
|
|
+ continue;
|
|
|
|
|
+
|
|
|
|
|
+ String autoResourcePak = exePath + autoloadFolder + "/" + pak;
|
|
|
|
|
+ SharedPtr<PackageFile> package(new PackageFile(context_));
|
|
|
|
|
+ if (package->Open(autoResourcePak))
|
|
|
|
|
+ cache->AddPackageFile(package);
|
|
|
|
|
+ else
|
|
|
|
|
+ {
|
|
|
|
|
+ badResource = autoResourcePak;
|
|
|
|
|
+ success = false;
|
|
|
|
|
+ break;
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ if(!success)
|
|
|
|
|
+ {
|
|
|
|
|
+ LOGERROR("Failed to add resource " + badResource + " in autoload folder " + autoloadFolders[i]);
|
|
|
|
|
+ return false;
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
|
|
|
// Initialize graphics & audio output
|
|
// Initialize graphics & audio output
|
|
|
if (!headless_)
|
|
if (!headless_)
|
|
@@ -705,6 +762,11 @@ VariantMap Engine::ParseParameters(const Vector<String>& arguments)
|
|
|
ret["ResourcePaths"] = value;
|
|
ret["ResourcePaths"] = value;
|
|
|
++i;
|
|
++i;
|
|
|
}
|
|
}
|
|
|
|
|
+ else if (argument == "ap" && !value.Empty())
|
|
|
|
|
+ {
|
|
|
|
|
+ ret["AutoloadPaths"] = value;
|
|
|
|
|
+ ++i;
|
|
|
|
|
+ }
|
|
|
else if (argument == "ds" && !value.Empty())
|
|
else if (argument == "ds" && !value.Empty())
|
|
|
{
|
|
{
|
|
|
ret["DumpShaders"] = value;
|
|
ret["DumpShaders"] = value;
|