/* IScanner */ static inline int ParseData(struct IParse *parse, char *string, unsigned int length) { int index = 0; memset(string, 0, length); while (IsDataValid(ParsePeek(parse, 0))) { if (index >= length) { string[length-1] = '\0'; break; } string[index] = (char)ParseRead(parse); index++; } return 1; }
bool FFeaturePackContentSource::InstallToProject(FString InstallPath) { bool bResult = false; if( IsDataValid() == false ) { UE_LOG(LogFeaturePack, Warning, TEXT("Trying to install invalid pack %s"), *InstallPath); } else { FAssetToolsModule& AssetToolsModule = FModuleManager::Get().LoadModuleChecked<FAssetToolsModule>("AssetTools"); TArray<FString> AssetPaths; AssetPaths.Add(FeaturePackPath); TArray<UObject*> ImportedObjects = AssetToolsModule.Get().ImportAssets(AssetPaths, InstallPath ); if( ImportedObjects.Num() == 0 ) { UE_LOG(LogFeaturePack, Warning, TEXT("No objects imported installing pack %s"), *InstallPath); } else { // Save any imported assets. TArray<UPackage*> ToSave; for (auto ImportedObject : ImportedObjects) { ToSave.AddUnique(ImportedObject->GetOutermost()); } FEditorFileUtils::PromptForCheckoutAndSave( ToSave, /*bCheckDirty=*/ false, /*bPromptToSave=*/ false ); bResult = true; // Focus on a specific asset if we want to. if( GetFocusAssetName().IsEmpty() == false ) { UObject* FocusAsset = LoadObject<UObject>(nullptr, *GetFocusAssetName()); if (FocusAsset) { FContentBrowserModule& ContentBrowserModule = FModuleManager::Get().LoadModuleChecked<FContentBrowserModule>("ContentBrowser"); TArray<UObject*> SyncObjects; SyncObjects.Add(FocusAsset); ContentBrowserModule.Get().SyncBrowserToAssets(SyncObjects); } } } } return bResult; }