I want to add a custom attribute when using landscape as input.
This is what I have tried
bool FHoudiniLandscapeUtils::AddLandscapeStringAttribuete(const HAPI_NodeId& NodeId, const FString& AttributeName, const FString& AttributeValue) { HAPI_AttributeInfo AttributeInfo; FMemory::Memzero< HAPI_AttributeInfo >(AttributeInfo); AttributeInfo.count = 1; AttributeInfo.tupleSize = 1; AttributeInfo.exists = true; AttributeInfo.owner = HAPI_ATTROWNER_DETAIL; AttributeInfo.storage = HAPI_STORAGETYPE_STRING; AttributeInfo.originalOwner = HAPI_ATTROWNER_INVALID; HOUDINI_CHECK_ERROR_RETURN(FHoudiniApi::AddAttribute( FHoudiniEngine::Get().GetSession(), NodeId, 0, TCHAR_TO_ANSI(*AttributeName), &AttributeInfo), false); TArray< const char * > ValueArray; ValueArray.Add(TCHAR_TO_ANSI(*AttributeValue)); HOUDINI_CHECK_ERROR_RETURN(FHoudiniApi::SetAttributeStringData( FHoudiniEngine::Get().GetSession(), NodeId, 0, TCHAR_TO_ANSI(*AttributeName), &AttributeInfo, (const char **)&ValueArray[0], 0, AttributeInfo.count), false); return true; }
The place I call it
FString AttrbuteName("TargetLevelName"); FString TargetLevelName("TestValue"); if (!FHoudiniLandscapeUtils::AddLandscapeStringAttribuete(MergeId, AttrbuteName, TargetLevelName)) { check(0); }
All the function returned true. But when I open the debug scene the attribute not added successfully.
Do I miss something?