/** * Reimports specified texture from its source material, if the meta-data exists */ EReimportResult::Type UReimportScriptFactory::Reimport(UObject* Obj) { UScriptBlueprint* ScriptClass = Cast<UScriptBlueprint>(Obj); if (!ScriptClass) { return EReimportResult::Failed; } TGuardValue<UScriptBlueprint*> OriginalScriptGuardValue(OriginalScript, ScriptClass); const FString ResolvedSourceFilePath = FReimportManager::ResolveImportFilename(ScriptClass->SourceFilePath, ScriptClass); if (!ResolvedSourceFilePath.Len()) { return EReimportResult::Failed; } UE_LOG(LogScriptEditorPlugin, Log, TEXT("Performing atomic reimport of [%s]"), *ResolvedSourceFilePath); // Ensure that the file provided by the path exists if (IFileManager::Get().FileSize(*ResolvedSourceFilePath) == INDEX_NONE) { UE_LOG(LogScriptEditorPlugin, Warning, TEXT("Cannot reimport: source file cannot be found.")); return EReimportResult::Failed; } if (UFactory::StaticImportObject(ScriptClass->GetClass(), ScriptClass->GetOuter(), *ScriptClass->GetName(), RF_Public | RF_Standalone, *ResolvedSourceFilePath, NULL, this)) { UE_LOG(LogScriptEditorPlugin, Log, TEXT("Imported successfully")); // Try to find the outer package so we can dirty it up if (ScriptClass->GetOuter()) { ScriptClass->GetOuter()->MarkPackageDirty(); } else { ScriptClass->MarkPackageDirty(); } } else { UE_LOG(LogScriptEditorPlugin, Warning, TEXT("-- import failed")); } return EReimportResult::Succeeded; }