diff --git a/Source/HoudiniEngineEditor/Private/HoudiniPublicAPI.cpp b/Source/HoudiniEngineEditor/Private/HoudiniPublicAPI.cpp index a2008e3f93..bd6c599264 100755 --- a/Source/HoudiniEngineEditor/Private/HoudiniPublicAPI.cpp +++ b/Source/HoudiniEngineEditor/Private/HoudiniPublicAPI.cpp @@ -32,6 +32,7 @@ #include "HoudiniPublicAPIAssetWrapper.h" #include "HoudiniPublicAPIInputTypes.h" #include "HoudiniEngineCommands.h" +#include "HoudiniAssetComponent.h" #include "Engine/World.h" @@ -78,6 +79,8 @@ UHoudiniPublicAPI::InstantiateAsset_Implementation( const bool bInEnableAutoBake, const FString& InBakeDirectoryPath, const EHoudiniEngineBakeOption InBakeMethod, + const EHoudiniStaticMeshMethod InStaticMeshMethod, + const FMeshBuildSettings InMeshBuildSettings, const bool bInRemoveOutputAfterBake, const bool bInRecenterBakedActors, const bool bInReplacePreviousBake) @@ -106,6 +109,8 @@ UHoudiniPublicAPI::InstantiateAsset_Implementation( bInEnableAutoBake, InBakeDirectoryPath, InBakeMethod, + InStaticMeshMethod, + InMeshBuildSettings, bInRemoveOutputAfterBake, bInRecenterBakedActors, bInReplacePreviousBake)) @@ -129,6 +134,8 @@ UHoudiniPublicAPI::InstantiateAssetWithExistingWrapper_Implementation( const bool bInEnableAutoBake, const FString& InBakeDirectoryPath, const EHoudiniEngineBakeOption InBakeMethod, + const EHoudiniStaticMeshMethod InStaticMeshMethod, + const FMeshBuildSettings InMeshBuildSettings, const bool bInRemoveOutputAfterBake, const bool bInRecenterBakedActors, const bool bInReplacePreviousBake) @@ -173,6 +180,8 @@ UHoudiniPublicAPI::InstantiateAssetWithExistingWrapper_Implementation( BakeDirectoryPath.Path = InBakeDirectoryPath; InWrapper->SetBakeFolder(BakeDirectoryPath); InWrapper->SetBakeMethod(InBakeMethod); + InWrapper->SetStaticMeshMethod(InStaticMeshMethod); + InWrapper->SetMeshBuildSettings(InMeshBuildSettings); InWrapper->SetRemoveOutputAfterBake(bInRemoveOutputAfterBake); InWrapper->SetRecenterBakedActors(bInRecenterBakedActors); InWrapper->SetReplacePreviousBake(bInReplacePreviousBake); diff --git a/Source/HoudiniEngineEditor/Private/HoudiniPublicAPIAssetWrapper.cpp b/Source/HoudiniEngineEditor/Private/HoudiniPublicAPIAssetWrapper.cpp index b3d3bbfd71..d9bd93b657 100755 --- a/Source/HoudiniEngineEditor/Private/HoudiniPublicAPIAssetWrapper.cpp +++ b/Source/HoudiniEngineEditor/Private/HoudiniPublicAPIAssetWrapper.cpp @@ -338,6 +338,52 @@ UHoudiniPublicAPIAssetWrapper::GetBakeMethod_Implementation(EHoudiniEngineBakeOp return true; } +bool +UHoudiniPublicAPIAssetWrapper::SetStaticMeshMethod_Implementation(const EHoudiniStaticMeshMethod InStaticMeshMethod) +{ + UHoudiniAssetComponent* HAC = nullptr; + if (!GetValidHoudiniAssetComponentWithError(HAC)) + return false; + + HAC->StaticMeshMethod = InStaticMeshMethod; + + return true; +} + +bool UHoudiniPublicAPIAssetWrapper::GetStaticMeshMethod_Implementation(EHoudiniStaticMeshMethod& OutStaticMeshMethod) +{ + UHoudiniAssetComponent* HAC = nullptr; + if (!GetValidHoudiniAssetComponentWithError(HAC)) + return false; + + OutStaticMeshMethod = HAC->StaticMeshMethod; + + return true; +} + +bool +UHoudiniPublicAPIAssetWrapper::SetMeshBuildSettings_Implementation(const FMeshBuildSettings InMeshBuildSettings) +{ + UHoudiniAssetComponent* HAC = nullptr; + if (!GetValidHoudiniAssetComponentWithError(HAC)) + return false; + + HAC->StaticMeshBuildSettings = InMeshBuildSettings; + + return true; +} + +bool UHoudiniPublicAPIAssetWrapper::GetMeshBuildSettings_Implementation(FMeshBuildSettings& OutMeshBuildSettings) +{ + UHoudiniAssetComponent* HAC = nullptr; + if (!GetValidHoudiniAssetComponentWithError(HAC)) + return false; + + OutMeshBuildSettings = HAC->StaticMeshBuildSettings; + + return true; +} + bool UHoudiniPublicAPIAssetWrapper::SetRemoveOutputAfterBake_Implementation(const bool bInRemoveOutputAfterBake) { diff --git a/Source/HoudiniEngineEditor/Private/HoudiniPublicAPIProcessHDANode.cpp b/Source/HoudiniEngineEditor/Private/HoudiniPublicAPIProcessHDANode.cpp index b07d363fe3..6f0c88e287 100755 --- a/Source/HoudiniEngineEditor/Private/HoudiniPublicAPIProcessHDANode.cpp +++ b/Source/HoudiniEngineEditor/Private/HoudiniPublicAPIProcessHDANode.cpp @@ -73,6 +73,8 @@ UHoudiniPublicAPIProcessHDANode::ProcessHDA( const bool bInEnableAutoBake, const FString& InBakeDirectoryPath, const EHoudiniEngineBakeOption InBakeMethod, + const EHoudiniStaticMeshMethod InStaticMeshMethod, + const FMeshBuildSettings InMeshBuildSettings, const bool bInRemoveOutputAfterBake, const bool bInRecenterBakedActors, const bool bInReplacePreviousBake, @@ -91,6 +93,8 @@ UHoudiniPublicAPIProcessHDANode::ProcessHDA( Node->bEnableAutoBake = bInEnableAutoBake; Node->BakeDirectoryPath = InBakeDirectoryPath; Node->BakeMethod = InBakeMethod; + Node->StaticMeshMethod = InStaticMeshMethod; + Node->StaticMeshBuildSettings = InMeshBuildSettings; Node->bRemoveOutputAfterBake = bInRemoveOutputAfterBake; Node->bRecenterBakedActors = bInRecenterBakedActors; Node->bReplacePreviousBake = bInReplacePreviousBake; @@ -134,6 +138,8 @@ UHoudiniPublicAPIProcessHDANode::Activate() bEnableAutoBake, BakeDirectoryPath, BakeMethod, + StaticMeshMethod, + StaticMeshBuildSettings, bRemoveOutputAfterBake, bRecenterBakedActors, bReplacePreviousBake)) diff --git a/Source/HoudiniEngineEditor/Public/HoudiniPublicAPI.h b/Source/HoudiniEngineEditor/Public/HoudiniPublicAPI.h index 3c4aa60ce9..903b01b73e 100755 --- a/Source/HoudiniEngineEditor/Public/HoudiniPublicAPI.h +++ b/Source/HoudiniEngineEditor/Public/HoudiniPublicAPI.h @@ -27,6 +27,7 @@ #pragma once #include "CoreMinimal.h" +#include "HoudiniAssetComponent.h" #include "UObject/NoExportTypes.h" #include "Templates/SubclassOf.h" @@ -134,6 +135,8 @@ class HOUDINIENGINEEDITOR_API UHoudiniPublicAPI : public UHoudiniPublicAPIObject const bool bInEnableAutoBake=false, const FString& InBakeDirectoryPath="", const EHoudiniEngineBakeOption InBakeMethod=EHoudiniEngineBakeOption::ToActor, + const EHoudiniStaticMeshMethod InStaticMeshMethod=EHoudiniStaticMeshMethod::RawMesh, + const FMeshBuildSettings InMeshBuildSettings = FMeshBuildSettings(), const bool bInRemoveOutputAfterBake=false, const bool bInRecenterBakedActors=false, const bool bInReplacePreviousBake=false); @@ -170,6 +173,8 @@ class HOUDINIENGINEEDITOR_API UHoudiniPublicAPI : public UHoudiniPublicAPIObject const bool bInEnableAutoBake=false, const FString& InBakeDirectoryPath="", const EHoudiniEngineBakeOption InBakeMethod=EHoudiniEngineBakeOption::ToActor, + const EHoudiniStaticMeshMethod InStaticMeshMethod = EHoudiniStaticMeshMethod::RawMesh, + const FMeshBuildSettings InMeshBuildSettings = FMeshBuildSettings(), const bool bInRemoveOutputAfterBake=false, const bool bInRecenterBakedActors=false, const bool bInReplacePreviousBake=false); diff --git a/Source/HoudiniEngineEditor/Public/HoudiniPublicAPIAssetWrapper.h b/Source/HoudiniEngineEditor/Public/HoudiniPublicAPIAssetWrapper.h index 23d71e30d6..91c22393eb 100755 --- a/Source/HoudiniEngineEditor/Public/HoudiniPublicAPIAssetWrapper.h +++ b/Source/HoudiniEngineEditor/Public/HoudiniPublicAPIAssetWrapper.h @@ -458,6 +458,18 @@ class HOUDINIENGINEEDITOR_API UHoudiniPublicAPIAssetWrapper : public UHoudiniPub UFUNCTION(BlueprintNativeEvent, BlueprintCallable, Category="Houdini|Public API") bool GetBakeMethod(EHoudiniEngineBakeOption& OutBakeMethod); + UFUNCTION(BlueprintNativeEvent, BlueprintCallable, Category="Houdini|Public API") + bool SetStaticMeshMethod(const EHoudiniStaticMeshMethod InStaticMeshMethod); + + UFUNCTION(BlueprintNativeEvent, BlueprintCallable, Category="Houdini|Public API") + bool GetStaticMeshMethod(EHoudiniStaticMeshMethod& OutStaticMeshMethod); + + UFUNCTION(BlueprintNativeEvent, BlueprintCallable, Category="Houdini|Public API") + bool SetMeshBuildSettings(const FMeshBuildSettings InMeshBuildSettings); + + UFUNCTION(BlueprintNativeEvent, BlueprintCallable, Category="Houdini|Public API") + bool GetMeshBuildSettings(FMeshBuildSettings& OutMeshBuildSettings); + /** * Set the bRemoveOutputAfterBake property, that controls if temporary outputs are removed after a successful bake. * @param bInRemoveOutputAfterBake If true, then after a successful bake, the HACs outputs will be cleared and diff --git a/Source/HoudiniEngineEditor/Public/HoudiniPublicAPIProcessHDANode.h b/Source/HoudiniEngineEditor/Public/HoudiniPublicAPIProcessHDANode.h index efa847e26c..cd73b3014e 100755 --- a/Source/HoudiniEngineEditor/Public/HoudiniPublicAPIProcessHDANode.h +++ b/Source/HoudiniEngineEditor/Public/HoudiniPublicAPIProcessHDANode.h @@ -32,6 +32,8 @@ #include "HoudiniPublicAPIAssetWrapper.h" +#include "HoudiniAssetComponent.h" + #include "HoudiniPublicAPIProcessHDANode.generated.h" @@ -103,6 +105,8 @@ class HOUDINIENGINEEDITOR_API UHoudiniPublicAPIProcessHDANode : public UBlueprin const bool bInEnableAutoBake=false, const FString& InBakeDirectoryPath="", const EHoudiniEngineBakeOption InBakeMethod=EHoudiniEngineBakeOption::ToActor, + const EHoudiniStaticMeshMethod InStaticMeshMethod=EHoudiniStaticMeshMethod::RawMesh, + const FMeshBuildSettings InMeshBuildSettings=FMeshBuildSettings(), const bool bInRemoveOutputAfterBake=false, const bool bInRecenterBakedActors=false, const bool bInReplacePreviousBake=false, @@ -223,6 +227,14 @@ class HOUDINIENGINEEDITOR_API UHoudiniPublicAPIProcessHDANode : public UBlueprin UPROPERTY() EHoudiniEngineBakeOption BakeMethod; + /** The static mesh generation method. */ + UPROPERTY() + EHoudiniStaticMeshMethod StaticMeshMethod; + + /** Build Settings to be used when generating the Static Meshes for this Houdini Asset */ + UPROPERTY() + FMeshBuildSettings StaticMeshBuildSettings; + /** Remove temporary HDA output after a bake. */ UPROPERTY() bool bRemoveOutputAfterBake;