diff --git a/ExodusImport/Source/ExodusImport/Private/ImportedObject.cpp b/ExodusImport/Source/ExodusImport/Private/ImportedObject.cpp index ad30131..63e193a 100644 --- a/ExodusImport/Source/ExodusImport/Private/ImportedObject.cpp +++ b/ExodusImport/Source/ExodusImport/Private/ImportedObject.cpp @@ -24,8 +24,8 @@ void ImportedObject::setCompatibleMobility(ImportedObject parentObject) const{ auto newMobility = EComponentMobility::Movable; UnrealUtilities::processComponentsRecursively(myComponent, nullptr, - [&](USceneComponent *component){ - component->SetMobility(newMobility); + [&](USceneComponent *_component){ + _component->SetMobility(newMobility); }, false ); } diff --git a/ExodusImport/Source/ExodusImport/Private/JsonObjects/DataPlane2D.h b/ExodusImport/Source/ExodusImport/Private/JsonObjects/DataPlane2D.h index fc925a6..8965740 100644 --- a/ExodusImport/Source/ExodusImport/Private/JsonObjects/DataPlane2D.h +++ b/ExodusImport/Source/ExodusImport/Private/JsonObjects/DataPlane2D.h @@ -93,18 +93,18 @@ template class DataPlane2D{ bool loadFromRaw(const FString& filename, int w_, int h_){ resize(w_, h_); - TArray data; - if (!FFileHelper::LoadFileToArray(data, *filename)){ + TArray dataArr; + if (!FFileHelper::LoadFileToArray(dataArr, *filename)){ UE_LOG(JsonLog, Error, TEXT("Could not load file \"%s\""), *filename); return false; } auto byteSize = getByteSize(); - if (byteSize != data.Num()){ + if (byteSize != dataArr.Num()){ UE_LOG(JsonLog, Error, TEXT("Invalid file size of \"%s\": %d received, %d (%d x %d (%d)) expected"), - *filename, data.Num(), byteSize, getWidth(), getHeight(), sizeof(T)); + *filename, dataArr.Num(), byteSize, getWidth(), getHeight(), sizeof(T)); return false; } - const T* srcPtr = (const T*)data.GetData(); + const T* srcPtr = (const T*)dataArr.GetData(); T* dstPtr = getData(); for(auto i = 0; i < getNumElements(); i++){ dstPtr[i] = srcPtr[i]; diff --git a/ExodusImport/Source/ExodusImport/Private/JsonObjects/getters.h b/ExodusImport/Source/ExodusImport/Private/JsonObjects/getters.h index 7645c3e..db94ede 100644 --- a/ExodusImport/Source/ExodusImport/Private/JsonObjects/getters.h +++ b/ExodusImport/Source/ExodusImport/Private/JsonObjects/getters.h @@ -38,7 +38,7 @@ namespace JsonObjects{ template void getJsonObjArray(JsonObjPtr jsonData, TArray& result, const char* name, std::function converter){ getJsonValArray(jsonData, result, name, [&](JsonValPtr val, int idx){ - auto jsonObj = jsonVal->AsObject(); + auto jsonObj = val->AsObject(); if (!jsonObj.IsValid()){ UE_LOG(JsonLog, Warning, TEXT("Could not retrieve array index %d from \"%s\""), idx, name); return T(); diff --git a/ExodusImport/Source/ExodusImport/Private/UnrealUtilities.cpp b/ExodusImport/Source/ExodusImport/Private/UnrealUtilities.cpp index 28f1fe7..3a06a71 100644 --- a/ExodusImport/Source/ExodusImport/Private/UnrealUtilities.cpp +++ b/ExodusImport/Source/ExodusImport/Private/UnrealUtilities.cpp @@ -69,6 +69,64 @@ FString UnrealUtilities::sanitizePackageName(const FString &arg){ return PackageTools::SanitizePackageName(arg); } +template T* UnrealUtilities::createAssetObject(const FString& objectName, const FString* desiredDir, const JsonImporter *importer, + std::function onCreate, EObjectFlags objectFlags){ + return createAssetObject(objectName, desiredDir, importer, onCreate, nullptr, objectFlags); +} + +template T* UnrealUtilities::createAssetObject(const FString& objectName, const FString* desiredDir, const JsonImporter *importer, + std::function onCreate, std::function creatorFunc, EObjectFlags objectFlags, bool checkForExistingObjects ){ + + T* finalResult; + auto sanitizedName = ::sanitizeObjectName(*objectName); + createAssetPackage(objectName, desiredDir, importer, + [&](UPackage* pkg) -> T*{ + T* newObj = nullptr; + if (checkForExistingObjects){ + auto *oldObj = FindObject(pkg, *sanitizedName); + if (oldObj){ + auto uniqueName = MakeUniqueObjectName(pkg, T::StaticClass(), *sanitizedName).ToString(); + UE_LOG(JsonLog, Log, TEXT("Unique name created: %s (old obj: %x). Original name: %s"), *uniqueName, oldObj, *sanitizedName); + sanitizedName = uniqueName; + } + } + if (creatorFunc){ + newObj = creatorFunc(pkg, sanitizedName); + } + else{ + newObj = NewObject(pkg, T::StaticClass(), *sanitizedName, objectFlags); + } + if (onCreate) + onCreate(newObj); + finalResult = newObj; + return newObj; + } + ); + + return finalResult; +} + +template UPackage* UnrealUtilities::createPackage(const FString &basePackageName, const FString &srcPackagePath, const FString &objectNameSuffix, const FString *commonAssetPath, + const FString *defaultPackageRoot, FString *outSanitizedPackageName, FString *outSanitizedObjName, T** outExistingObj){ + + T* existingObj = nullptr; + UPackage* result = createPackage( + basePackageName, srcPackagePath, objectNameSuffix, commonAssetPath, defaultPackageRoot, + outSanitizedPackageName, outSanitizedObjName, + [&](const FString &path) -> UPackage*{ + auto obj = Cast(LoadObject(0, *outExistingObj)); + if (obj){ + existingObj = obj; + return existingObj->GetOutermost(); + } + return nullptr; + } + ); + if (outExistingObj){ + *outExistingObj = existingObj; + } +} + FString UnrealUtilities::buildPackagePath(const FString &desiredName, const FString &desiredDir, const JsonImporter *importer){ return buildPackagePath(desiredName, &desiredDir, importer); } diff --git a/ExodusImport/Source/ExodusImport/Private/UnrealUtilities.h b/ExodusImport/Source/ExodusImport/Private/UnrealUtilities.h index e11bdf6..390ab71 100644 --- a/ExodusImport/Source/ExodusImport/Private/UnrealUtilities.h +++ b/ExodusImport/Source/ExodusImport/Private/UnrealUtilities.h @@ -114,43 +114,10 @@ namespace UnrealUtilities{ UPackage* createAssetPackage(const FString &objectName, const FString* desiredDir, const JsonImporter *importer, std::function assetCreator); - template T* createAssetObject(const FString& objectName, const FString* desiredDir, const JsonImporter *importer, - std::function onCreate, EObjectFlags objectFlags){ - return createAssetObject(objectName, desiredDir, importer, onCreate, nullptr, objectFlags); - } + template T* createAssetObject(const FString& objectName, const FString* desiredDir, const JsonImporter *importer, std::function onCreate, EObjectFlags objectFlags); template T* createAssetObject(const FString& objectName, const FString* desiredDir, const JsonImporter *importer, - std::function onCreate, std::function creatorFunc = nullptr, EObjectFlags objectFlags = RF_NoFlags, - bool checkForExistingObjects = true){ - - T* finalResult; - auto sanitizedName = sanitizeObjectName(*objectName); - createAssetPackage(objectName, desiredDir, importer, - [&](UPackage* pkg) -> T*{ - T* newObj = nullptr; - if (checkForExistingObjects){ - auto *oldObj = FindObject(pkg, *sanitizedName); - if (oldObj){ - auto uniqueName = MakeUniqueObjectName(pkg, T::StaticClass(), *sanitizedName).ToString(); - UE_LOG(JsonLog, Log, TEXT("Unique name created: %s (old obj: %x). Original name: %s"), *uniqueName, oldObj, *sanitizedName); - sanitizedName = uniqueName; - } - } - if (creatorFunc){ - newObj = creatorFunc(pkg, sanitizedName); - } - else{ - newObj = NewObject(pkg, T::StaticClass(), *sanitizedName, objectFlags); - } - if (onCreate) - onCreate(newObj); - finalResult = newObj; - return newObj; - } - ); - - return finalResult; - } + std::function onCreate, std::function creatorFunc = nullptr, EObjectFlags objectFlags = RF_NoFlags, bool checkForExistingObjects = true); template T* createActor(UWorld *world, FTransform transform, bool editorMode, const TCHAR* logName = 0){ T* result = 0; @@ -228,25 +195,7 @@ namespace UnrealUtilities{ const FString *defaultPackageRoot = nullptr, FString *outSanitizedPackageName = nullptr, FString *outSanitizedObjName = nullptr, - T** outExistingObj = nullptr){ - - T* existingObj = nullptr; - UPackage* result = createPackage( - basePackageName, srcPackagePath, objectNameSuffix, commonAssetPath, defaultPackageRoot, - outSanitizedPackageName, outSanitizedobjName, - [&](const FString &path) -> UPackage*{ - auto obj = Cast(LoadObject(0, *objPath)); - if (obj){ - existingObj = obj; - return existingObj->GetOutermost(); - } - return nullptr; - } - ) - if (outExistingObj){ - *outExistingObj = existingObj; - } - } + T** outExistingObj = nullptr); /* Those were introduced due to mesh api changed over ocurse of 4.22...4.24.