Files
Andron666 9c38e93fa4 part7
2022-12-05 20:31:35 +05:00

278 lines
11 KiB
C

/*
* Copyright (c) <2021> Side Effects Software Inc.
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
*
* 1. Redistributions of source code must retain the above copyright notice,
* this list of conditions and the following disclaimer.
*
* 2. The name of Side Effects Software may not be used to endorse or
* promote products derived from this software without specific prior
* written permission.
*
* THIS SOFTWARE IS PROVIDED BY SIDE EFFECTS SOFTWARE "AS IS" AND ANY EXPRESS
* OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
* OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN
* NO EVENT SHALL SIDE EFFECTS SOFTWARE BE LIABLE FOR ANY DIRECT, INDIRECT,
* INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA,
* OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
* LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
* EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
#pragma once
#include "CoreMinimal.h"
#include "Logging/LogMacros.h"
// Define module names.
#define HOUDINI_MODULE "HoudiniEngine"
#define HOUDINI_MODULE_EDITOR "HoudiniEngineEditor"
#define HOUDINI_MODULE_RUNTIME "HoudiniEngineRuntime"
// Declare the log category depending on the module we're in
#ifdef HOUDINI_ENGINE_EDITOR
#define HOUDINI_LOCTEXT_NAMESPACE HOUDINI_MODULE_EDITOR
HOUDINIENGINEEDITOR_API DECLARE_LOG_CATEGORY_EXTERN(LogHoudiniEngineEditor, Log, All);
#else
#ifdef HOUDINI_ENGINE
#define HOUDINI_LOCTEXT_NAMESPACE HOUDINI_MODULE
HOUDINIENGINE_API DECLARE_LOG_CATEGORY_EXTERN(LogHoudiniEngine, Log, All);
#else
#define HOUDINI_LOCTEXT_NAMESPACE HOUDINI_MODULE_RUNTIME
HOUDINIENGINERUNTIME_API DECLARE_LOG_CATEGORY_EXTERN(LogHoudiniEngineRuntime, Log, All);
#endif
#endif
//---------------------------------------------------------------------------------------------------------------------
// Default session settings
//---------------------------------------------------------------------------------------------------------------------
#define HAPI_UNREAL_SESSION_SERVER_AUTOSTART true
#define HAPI_UNREAL_SESSION_SERVER_TIMEOUT 3000.0f
#define HAPI_UNREAL_SESSION_SERVER_HOST TEXT( "localhost" )
#define HAPI_UNREAL_SESSION_SERVER_PORT 9090
#if PLATFORM_MAC
#define HAPI_UNREAL_SESSION_SERVER_PIPENAME TEXT( "/tmp/hapi" )
#else
#define HAPI_UNREAL_SESSION_SERVER_PIPENAME TEXT( "hapi" )
#endif
// Names of HAPI libraries on different platforms.
#define HAPI_LIB_OBJECT_WINDOWS TEXT( "libHAPIL.dll" )
#define HAPI_LIB_OBJECT_MAC TEXT( "libHAPIL.dylib" )
#define HAPI_LIB_OBJECT_LINUX TEXT( "libHAPIL.so" )
//---------------------------------------------------------------------------------------------------------------------
// LOG MACROS
//---------------------------------------------------------------------------------------------------------------------
// Whether to enable logging.
#define HOUDINI_ENGINE_LOGGING 1
#ifdef HOUDINI_ENGINE_LOGGING
#ifdef HOUDINI_ENGINE
#define HOUDINI_LOG_HELPER(VERBOSITY, HOUDINI_LOG_TEXT, ...) \
do \
{ \
UE_LOG( LogHoudiniEngine, VERBOSITY, HOUDINI_LOG_TEXT, ##__VA_ARGS__ ); \
} \
while ( 0 )
#else
#ifdef HOUDINI_ENGINE_EDITOR
#define HOUDINI_LOG_HELPER(VERBOSITY, HOUDINI_LOG_TEXT, ...) \
do \
{ \
UE_LOG( LogHoudiniEngineEditor, VERBOSITY, HOUDINI_LOG_TEXT, ##__VA_ARGS__ ); \
} \
while ( 0 )
#else
#define HOUDINI_LOG_HELPER( VERBOSITY, HOUDINI_LOG_TEXT, ... ) \
do \
{ \
UE_LOG( LogHoudiniEngineRuntime, VERBOSITY, HOUDINI_LOG_TEXT, ##__VA_ARGS__ ); \
} \
while ( 0 )
#endif
#endif
#define HOUDINI_LOG_MESSAGE( HOUDINI_LOG_TEXT, ... ) \
HOUDINI_LOG_HELPER( Log, HOUDINI_LOG_TEXT, ##__VA_ARGS__ )
#define HOUDINI_LOG_FATAL( HOUDINI_LOG_TEXT, ... ) \
HOUDINI_LOG_HELPER( Fatal, HOUDINI_LOG_TEXT, ##__VA_ARGS__ )
#define HOUDINI_LOG_ERROR( HOUDINI_LOG_TEXT, ... ) \
HOUDINI_LOG_HELPER( Error, HOUDINI_LOG_TEXT, ##__VA_ARGS__ )
#define HOUDINI_LOG_WARNING( HOUDINI_LOG_TEXT, ... ) \
HOUDINI_LOG_HELPER( Warning, HOUDINI_LOG_TEXT, ##__VA_ARGS__ )
#define HOUDINI_LOG_DISPLAY( HOUDINI_LOG_TEXT, ... ) \
HOUDINI_LOG_HELPER( Display, HOUDINI_LOG_TEXT, ##__VA_ARGS__ )
#else
#define HOUDINI_LOG_MESSAGE( HOUDINI_LOG_TEXT, ... )
#define HOUDINI_LOG_FATAL( HOUDINI_LOG_TEXT, ... )
#define HOUDINI_LOG_ERROR( HOUDINI_LOG_TEXT, ... )
#define HOUDINI_LOG_WARNING( HOUDINI_LOG_TEXT, ... )
#define HOUDINI_LOG_DISPLAY( HOUDINI_LOG_TEXT, ... )
#endif
#define HOUDINI_DEBUG_EXPAND_UE_LOG(LONG_NAME, VERBOSITY, HOUDINI_LOG_TEXT, ...) \
do \
{ \
UE_LOG( LogHoudiniEngine##LONG_NAME, VERBOSITY, HOUDINI_LOG_TEXT, ##__VA_ARGS__ ); \
} \
while ( 0 )
// ---------------------------------------------------------
// Blueprint Debug Logging
// ---------------------------------------------------------
// Set HOUDINI_ENGINE_DEBUG_BP=1 to enable Blueprint logging
#if defined(HOUDINI_ENGINE_LOGGING) && defined(HOUDINI_ENGINE_DEBUG_BP)
DECLARE_LOG_CATEGORY_EXTERN(LogHoudiniEngineBlueprint, Log, All);
#define HOUDINI_BP_DEFINE_LOG_CATEGORY() \
DEFINE_LOG_CATEGORY(LogHoudiniEngineBlueprint);
#define HOUDINI_BP_MESSAGE( HOUDINI_LOG_TEXT, ... ) \
HOUDINI_DEBUG_EXPAND_UE_LOG( Blueprint, Log, HOUDINI_LOG_TEXT, ##__VA_ARGS__ )
#define HOUDINI_BP_FATAL( HOUDINI_LOG_TEXT, ... ) \
HOUDINI_DEBUG_EXPAND_UE_LOG( Blueprint, Fatal, HOUDINI_LOG_TEXT, ##__VA_ARGS__ )
#define HOUDINI_BP_ERROR( HOUDINI_LOG_TEXT, ... ) \
HOUDINI_DEBUG_EXPAND_UE_LOG( Blueprint, Error, HOUDINI_LOG_TEXT, ##__VA_ARGS__ )
#define HOUDINI_BP_WARNING( HOUDINI_LOG_TEXT, ... ) \
HOUDINI_DEBUG_EXPAND_UE_LOG( Blueprint, Warning, HOUDINI_LOG_TEXT, ##__VA_ARGS__ )
#else
#define HOUDINI_BP_DEFINE_LOG_CATEGORY()
#define HOUDINI_BP_MESSAGE( HOUDINI_LOG_TEXT, ... )
#define HOUDINI_BP_FATAL( HOUDINI_LOG_TEXT, ... )
#define HOUDINI_BP_ERROR( HOUDINI_LOG_TEXT, ... )
#define HOUDINI_BP_WARNING( HOUDINI_LOG_TEXT, ... )
#endif
// ---------------------------------------------------------
// PDG Debug Logging
// ---------------------------------------------------------
// Set HOUDINI_ENGINE_DEBUG_PDG=1 to enable PDG logging
#if defined(HOUDINI_ENGINE_LOGGING) && defined(HOUDINI_ENGINE_DEBUG_PDG)
DECLARE_LOG_CATEGORY_EXTERN(LogHoudiniEnginePDG, Log, All);
#define HOUDINI_PDG_DEFINE_LOG_CATEGORY() \
DEFINE_LOG_CATEGORY(LogHoudiniEnginePDG);
#define HOUDINI_PDG_MESSAGE( HOUDINI_LOG_TEXT, ... ) \
HOUDINI_DEBUG_EXPAND_UE_LOG( PDG, Log, HOUDINI_LOG_TEXT, ##__VA_ARGS__ )
#define HOUDINI_PDG_FATAL( HOUDINI_LOG_TEXT, ... ) \
HOUDINI_DEBUG_EXPAND_UE_LOG( PDG, Fatal, HOUDINI_LOG_TEXT, ##__VA_ARGS__ )
#define HOUDINI_PDG_ERROR( HOUDINI_LOG_TEXT, ... ) \
HOUDINI_DEBUG_EXPAND_UE_LOG( PDG, Error, HOUDINI_LOG_TEXT, ##__VA_ARGS__ )
#define HOUDINI_PDG_WARNING( HOUDINI_LOG_TEXT, ... ) \
HOUDINI_DEBUG_EXPAND_UE_LOG( PDG, Warning, HOUDINI_LOG_TEXT, ##__VA_ARGS__ )
#else
#define HOUDINI_PDG_DEFINE_LOG_CATEGORY()
#define HOUDINI_PDG_MESSAGE( HOUDINI_LOG_TEXT, ... )
#define HOUDINI_PDG_FATAL( HOUDINI_LOG_TEXT, ... )
#define HOUDINI_PDG_ERROR( HOUDINI_LOG_TEXT, ... )
#define HOUDINI_PDG_WARNING( HOUDINI_LOG_TEXT, ... )
#endif
// ---------------------------------------------------------
// Landscape Debug Logging
// ---------------------------------------------------------
// Set HOUDINI_ENGINE_DEBUG_LANDSCAPE=1 to enable PDG logging
#if defined(HOUDINI_ENGINE_LOGGING) && defined(HOUDINI_ENGINE_DEBUG_LANDSCAPE)
DECLARE_LOG_CATEGORY_EXTERN(LogHoudiniEngineLandscape, Log, All);
#define HOUDINI_LANDSCAPE_DEFINE_LOG_CATEGORY() \
DEFINE_LOG_CATEGORY(LogHoudiniEngineLandscape);
#define HOUDINI_LANDSCAPE_MESSAGE( HOUDINI_LOG_TEXT, ... ) \
HOUDINI_DEBUG_EXPAND_UE_LOG( Landscape, Log, HOUDINI_LOG_TEXT, ##__VA_ARGS__ )
#define HOUDINI_LANDSCAPE_FATAL( HOUDINI_LOG_TEXT, ... ) \
HOUDINI_DEBUG_EXPAND_UE_LOG( Landscape, Fatal, HOUDINI_LOG_TEXT, ##__VA_ARGS__ )
#define HOUDINI_LANDSCAPE_ERROR( HOUDINI_LOG_TEXT, ... ) \
HOUDINI_DEBUG_EXPAND_UE_LOG( Landscape, Error, HOUDINI_LOG_TEXT, ##__VA_ARGS__ )
#define HOUDINI_LANDSCAPE_WARNING( HOUDINI_LOG_TEXT, ... ) \
HOUDINI_DEBUG_EXPAND_UE_LOG( Landscape, Warning, HOUDINI_LOG_TEXT, ##__VA_ARGS__ )
#else
#define HOUDINI_LANDSCAPE_DEFINE_LOG_CATEGORY()
#define HOUDINI_LANDSCAPE_MESSAGE( HOUDINI_LOG_TEXT, ... )
#define HOUDINI_LANDSCAPE_FATAL( HOUDINI_LOG_TEXT, ... )
#define HOUDINI_LANDSCAPE_ERROR( HOUDINI_LOG_TEXT, ... )
#define HOUDINI_LANDSCAPE_WARNING( HOUDINI_LOG_TEXT, ... )
#endif
// ---------------------------------------------------------
// Baking Debug Logging
// ---------------------------------------------------------
// Set HOUDINI_ENGINE_DEBUG_BAKING=1 to enable PDG logging
#if defined(HOUDINI_ENGINE_LOGGING) && defined(HOUDINI_ENGINE_DEBUG_BAKING)
DECLARE_LOG_CATEGORY_EXTERN(LogHoudiniEngineBaking, Log, All);
#define HOUDINI_BAKING_DEFINE_LOG_CATEGORY() \
DEFINE_LOG_CATEGORY(LogHoudiniEngineBaking);
#define HOUDINI_BAKING_MESSAGE( HOUDINI_LOG_TEXT, ... ) \
HOUDINI_DEBUG_EXPAND_UE_LOG( Landscape, Log, HOUDINI_LOG_TEXT, ##__VA_ARGS__ )
#define HOUDINI_BAKING_FATAL( HOUDINI_LOG_TEXT, ... ) \
HOUDINI_DEBUG_EXPAND_UE_LOG( Landscape, Fatal, HOUDINI_LOG_TEXT, ##__VA_ARGS__ )
#define HOUDINI_BAKING_ERROR( HOUDINI_LOG_TEXT, ... ) \
HOUDINI_DEBUG_EXPAND_UE_LOG( Landscape, Error, HOUDINI_LOG_TEXT, ##__VA_ARGS__ )
#define HOUDINI_BAKING_WARNING( HOUDINI_LOG_TEXT, ... ) \
HOUDINI_DEBUG_EXPAND_UE_LOG( Landscape, Warning, HOUDINI_LOG_TEXT, ##__VA_ARGS__ )
#else
#define HOUDINI_BAKING_DEFINE_LOG_CATEGORY()
#define HOUDINI_BAKING_MESSAGE( HOUDINI_LOG_TEXT, ... )
#define HOUDINI_BAKING_FATAL( HOUDINI_LOG_TEXT, ... )
#define HOUDINI_BAKING_ERROR( HOUDINI_LOG_TEXT, ... )
#define HOUDINI_BAKING_WARNING( HOUDINI_LOG_TEXT, ... )
#endif
// HAPI_Common
enum HAPI_UNREAL_NodeType
{
HAPI_UNREAL_NODETYPE_ANY = -1,
HAPU_UNREAL_NODETYPE_NONE = 0
};
enum HAPI_UNREAL_NodeFlags
{
HAPI_UNREAL_NODEFLAGS_ANY = -1,
HAPI_UNREAL_NODEFLAGS_NONE = 0
};
// Default cook/bake folder
#define HAPI_UNREAL_DEFAULT_BAKE_FOLDER TEXT("/Game/HoudiniEngine/Bake");
#define HAPI_UNREAL_DEFAULT_TEMP_COOK_FOLDER TEXT("/Game/HoudiniEngine/Temp");
// Various variable names used to store meta information in generated packages.
// More in HoudiniEnginePrivatePCH.h
#define HAPI_UNREAL_PACKAGE_META_TEMP_GUID TEXT( "HoudiniPackageTempGUID" )
// Default PDG Filters
#define HAPI_UNREAL_PDG_DEFAULT_TOP_FILTER "HE_";
#define HAPI_UNREAL_PDG_DEFAULT_TOP_OUTPUT_FILTER "HE_OUT_";
// Struct to enable global silent flag - this will force dialogs to not show up.
struct FHoudiniScopedGlobalSilence
{
FHoudiniScopedGlobalSilence()
{
bGlobalSilent = GIsSilent;
GIsSilent = true;
}
~FHoudiniScopedGlobalSilence()
{
GIsSilent = bGlobalSilent;
}
bool bGlobalSilent;
};