|
@@ -28,6 +28,7 @@ namespace ToolCore
|
|
|
|
|
|
|
|
AssetDatabase::AssetDatabase(Context* context) : Object(context)
|
|
AssetDatabase::AssetDatabase(Context* context) : Object(context)
|
|
|
{
|
|
{
|
|
|
|
|
+ SubscribeToEvent(E_LOADFAILED, HANDLER(AssetDatabase, HandleResourceLoadFailed));
|
|
|
SubscribeToEvent(E_PROJECTLOADED, HANDLER(AssetDatabase, HandleProjectLoaded));
|
|
SubscribeToEvent(E_PROJECTLOADED, HANDLER(AssetDatabase, HandleProjectLoaded));
|
|
|
SubscribeToEvent(E_PROJECTUNLOADED, HANDLER(AssetDatabase, HandleProjectUnloaded));
|
|
SubscribeToEvent(E_PROJECTUNLOADED, HANDLER(AssetDatabase, HandleProjectUnloaded));
|
|
|
}
|
|
}
|
|
@@ -436,11 +437,48 @@ void AssetDatabase::HandleProjectUnloaded(StringHash eventType, VariantMap& even
|
|
|
cache->RemoveResourceDir(GetCachePath());
|
|
cache->RemoveResourceDir(GetCachePath());
|
|
|
assets_.Clear();
|
|
assets_.Clear();
|
|
|
usedGUID_.Clear();
|
|
usedGUID_.Clear();
|
|
|
|
|
+ assetImportErrorTimes_.Clear();
|
|
|
project_ = 0;
|
|
project_ = 0;
|
|
|
|
|
|
|
|
UnsubscribeFromEvent(E_FILECHANGED);
|
|
UnsubscribeFromEvent(E_FILECHANGED);
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
+void AssetDatabase::HandleResourceLoadFailed(StringHash eventType, VariantMap& eventData)
|
|
|
|
|
+{
|
|
|
|
|
+
|
|
|
|
|
+ if (project_.Null())
|
|
|
|
|
+ return;
|
|
|
|
|
+
|
|
|
|
|
+ String path = eventData[LoadFailed::P_RESOURCENAME].GetString();
|
|
|
|
|
+
|
|
|
|
|
+ Asset* asset = GetAssetByPath(path);
|
|
|
|
|
+
|
|
|
|
|
+ if (!asset)
|
|
|
|
|
+ asset = GetAssetByPath(project_->GetResourcePath() + path);
|
|
|
|
|
+
|
|
|
|
|
+ if (!asset)
|
|
|
|
|
+ return;
|
|
|
|
|
+
|
|
|
|
|
+ Time* time = GetSubsystem<Time>();
|
|
|
|
|
+
|
|
|
|
|
+ unsigned ctime = time->GetSystemTime();
|
|
|
|
|
+
|
|
|
|
|
+ // if less than 5 seconds since last report, stifle report
|
|
|
|
|
+ if (assetImportErrorTimes_.Contains(asset->guid_))
|
|
|
|
|
+ if (ctime - assetImportErrorTimes_[asset->guid_] < 5000)
|
|
|
|
|
+ return;
|
|
|
|
|
+
|
|
|
|
|
+ assetImportErrorTimes_[asset->guid_] = ctime;
|
|
|
|
|
+
|
|
|
|
|
+ VariantMap evData;
|
|
|
|
|
+ evData[AssetImportError::P_PATH] = asset->path_;
|
|
|
|
|
+ evData[AssetImportError::P_GUID] = asset->guid_;
|
|
|
|
|
+ evData[AssetImportError::P_ERROR] = ToString("Asset %s Failed to Load", asset->path_.CString());
|
|
|
|
|
+ SendEvent(E_ASSETIMPORTERROR, evData);
|
|
|
|
|
+
|
|
|
|
|
+
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
void AssetDatabase::HandleFileChanged(StringHash eventType, VariantMap& eventData)
|
|
void AssetDatabase::HandleFileChanged(StringHash eventType, VariantMap& eventData)
|
|
|
{
|
|
{
|
|
|
using namespace FileChanged;
|
|
using namespace FileChanged;
|
|
@@ -496,8 +534,10 @@ String AssetDatabase::GetResourceImporterName(const String& resourceTypeName)
|
|
|
resourceTypeToImporterType_["Sprite2D"] = "TextureImporter";
|
|
resourceTypeToImporterType_["Sprite2D"] = "TextureImporter";
|
|
|
resourceTypeToImporterType_["AnimatedSprite2D"] = "SpriterImporter";
|
|
resourceTypeToImporterType_["AnimatedSprite2D"] = "SpriterImporter";
|
|
|
resourceTypeToImporterType_["JSComponentFile"] = "JavascriptImporter";
|
|
resourceTypeToImporterType_["JSComponentFile"] = "JavascriptImporter";
|
|
|
|
|
+ resourceTypeToImporterType_["JSONFile"] = "JSONImporter";
|
|
|
resourceTypeToImporterType_["ParticleEffect2D"] = "PEXImporter";
|
|
resourceTypeToImporterType_["ParticleEffect2D"] = "PEXImporter";
|
|
|
|
|
|
|
|
|
|
+
|
|
|
#ifdef ATOMIC_DOTNET
|
|
#ifdef ATOMIC_DOTNET
|
|
|
resourceTypeToImporterType_["CSComponentAssembly"] = "NETAssemblyImporter";
|
|
resourceTypeToImporterType_["CSComponentAssembly"] = "NETAssemblyImporter";
|
|
|
#endif
|
|
#endif
|