// Copyright 2020 Phyronnaz #pragma once #include "CoreMinimal.h" namespace FVoxelUtilities { template const TCHAR* GetGeneratorOutputTypeName(); template<> inline const TCHAR* GetGeneratorOutputTypeName() { return TEXT("float"); } template<> inline const TCHAR* GetGeneratorOutputTypeName() { return TEXT("int"); } template<> inline const TCHAR* GetGeneratorOutputTypeName() { return TEXT("color"); } template inline FString GetMissingGeneratorOutputErrorString(FName Name, const TGenerator& Generator) { ensure(!Generator.template GetOutputsPtrMap().Contains(Name)); FString Types; for (auto& It : Generator.template GetOutputsPtrMap()) { if (!Types.IsEmpty()) Types += ", "; Types += It.Key.ToString(); } return FString::Printf( TEXT("No voxel generator/voxel graph output named %s and with type %s found! Valid names: %s"), *Name.ToString(), GetGeneratorOutputTypeName(), *Types); } }