495 lines
21 KiB
C++
495 lines
21 KiB
C++
/*
|
|
* Copyright (c) <2017> Side Effects Software Inc.
|
|
*
|
|
* Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
* of this software and associated documentation files (the "Software"), to deal
|
|
* in the Software without restriction, including without limitation the rights
|
|
* to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
* copies of the Software, and to permit persons to whom the Software is
|
|
* furnished to do so, subject to the following conditions:
|
|
*
|
|
* The above copyright notice and this permission notice shall be included in all
|
|
* copies or substantial portions of the Software.
|
|
*
|
|
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
* FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
* AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
* LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
* OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
* SOFTWARE.
|
|
*
|
|
*/
|
|
|
|
#pragma once
|
|
|
|
/** Unreal Editor headers. **/
|
|
#if WITH_EDITOR
|
|
#include "CoreMinimal.h"
|
|
#include "ObjectTools.h"
|
|
#include "AssetTypeActions_Base.h"
|
|
#include "ComponentAssetBroker.h"
|
|
#include "PackageTools.h"
|
|
#include "ThumbnailHelpers.h"
|
|
#include "LevelEditor.h"
|
|
#include "Interfaces/IMainFrameModule.h"
|
|
#include "ClassIconFinder.h"
|
|
#include "ScopedTransaction.h"
|
|
#include "RawMesh.h"
|
|
#include "Kismet2/KismetEditorUtilities.h"
|
|
#include "Interfaces/IPluginManager.h"
|
|
#include "ISettingsModule.h"
|
|
#include "DesktopPlatformModule.h"
|
|
#include "Editor.h"
|
|
#endif
|
|
|
|
/** Other Unreal headers. **/
|
|
//#include "CoreUObject.h"
|
|
#include "Modules/ModuleManager.h"
|
|
#include "EngineModule.h"
|
|
#include "Engine/TextureDefines.h"
|
|
#include "Engine/EngineTypes.h"
|
|
#include "MaterialShared.h"
|
|
#include "CollisionQueryParams.h"
|
|
#include "Engine/CollisionProfile.h"
|
|
#include "PhysicsEngine/BodyInstance.h"
|
|
#include "PhysicsEngine/BodySetup.h"
|
|
#include "AssetData.h"
|
|
#include "AssetRegistryModule.h"
|
|
#include "HitProxies.h"
|
|
#include "Components.h"
|
|
#include "ComponentReregisterContext.h"
|
|
#include "Engine/StaticMesh.h"
|
|
#include "LandscapeProxy.h"
|
|
#include "LandscapeDataAccess.h"
|
|
#include "Engine/Level.h"
|
|
#include "Curves/CurveBase.h"
|
|
#include "Curves/CurveFloat.h"
|
|
#include "Curves/CurveLinearColor.h"
|
|
#include "ImageUtils.h"
|
|
#include "Internationalization/Internationalization.h"
|
|
|
|
/** Houdini Engine Runtime Module Localization. **/
|
|
#include "HoudiniEngineRuntimeLocalization.h"
|
|
|
|
/** Plugin version enum and CustomVersionRegistration */
|
|
#include "HoudiniPluginSerializationVersion.h"
|
|
|
|
/** Houdini Engine headers. **/
|
|
#include <vector>
|
|
#include <string>
|
|
#include <stdint.h>
|
|
|
|
#include "HAPI.h"
|
|
#include "HAPI_Version.h"
|
|
|
|
/** Whether to enable logging. **/
|
|
#define HOUDINI_ENGINE_LOGGING 1
|
|
|
|
/** Define module names. **/
|
|
#define HOUDINI_MODULE_EDITOR "HoudiniEngineEditor"
|
|
#define HOUDINI_MODULE_RUNTIME "HoudiniEngine"
|
|
|
|
/** See whether we are in Editor or Engine module. **/
|
|
#ifdef HOUDINI_ENGINE_EDITOR
|
|
#define HOUDINI_LOCTEXT_NAMESPACE HOUDINI_MODULE_EDITOR
|
|
DECLARE_LOG_CATEGORY_EXTERN( LogHoudiniEngineEditor, Log, All );
|
|
#else
|
|
#define HOUDINI_LOCTEXT_NAMESPACE HOUDINI_MODULE_RUNTIME
|
|
DECLARE_LOG_CATEGORY_EXTERN( LogHoudiniEngine, Log, All );
|
|
#endif
|
|
|
|
/** Definitions coming from UBT. **/
|
|
#ifndef HOUDINI_ENGINE_HFS_PATH_DEFINE
|
|
#define HOUDINI_ENGINE_HFS_PATH ""
|
|
#else
|
|
#define HOUDINI_ENGINE_STRINGIFY_HELPER(X) #X
|
|
#define HOUDINI_ENGINE_STRINGIFY(X) HOUDINI_ENGINE_STRINGIFY_HELPER(X)
|
|
#define HOUDINI_ENGINE_HFS_PATH HOUDINI_ENGINE_STRINGIFY(HOUDINI_ENGINE_HFS_PATH_DEFINE)
|
|
#endif
|
|
|
|
/** Some additional logging macros. **/
|
|
#ifdef HOUDINI_ENGINE_LOGGING
|
|
|
|
#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( LogHoudiniEngine, VERBOSITY, HOUDINI_LOG_TEXT, ##__VA_ARGS__ ); \
|
|
} \
|
|
while ( 0 )
|
|
#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 // HOUDINI_ENGINE_LOGGING
|
|
|
|
|
|
/** Error checking - this macro will check the status and return specified parameter. **/
|
|
#define HOUDINI_CHECK_ERROR_RETURN_HELPER( HAPI_PARAM_CALL, HAPI_PARAM_RETURN, HAPI_LOG_ROUTINE ) \
|
|
do \
|
|
{ \
|
|
HAPI_Result ResultVariable = HAPI_PARAM_CALL; \
|
|
if ( ResultVariable != HAPI_RESULT_SUCCESS ) \
|
|
{ \
|
|
HAPI_LOG_ROUTINE( TEXT( "Hapi failed: %s" ), *FHoudiniEngineUtils::GetErrorDescription() ); \
|
|
return HAPI_PARAM_RETURN; \
|
|
} \
|
|
} \
|
|
while ( 0 )
|
|
|
|
#define HOUDINI_CHECK_ERROR_RETURN( HAPI_PARAM_CALL, HAPI_PARAM_RETURN ) \
|
|
HOUDINI_CHECK_ERROR_RETURN_HELPER( HAPI_PARAM_CALL, HAPI_PARAM_RETURN, HOUDINI_LOG_ERROR )
|
|
|
|
/* Error checking - this macro will check the status. **/
|
|
#define HOUDINI_CHECK_ERROR_HELPER( HAPI_PARAM_RESULT, HAPI_PARAM_CALL, HAPI_LOG_ROUTINE ) \
|
|
do \
|
|
{ \
|
|
*HAPI_PARAM_RESULT = HAPI_PARAM_CALL; \
|
|
if ( *HAPI_PARAM_RESULT != HAPI_RESULT_SUCCESS ) \
|
|
{ \
|
|
HAPI_LOG_ROUTINE( TEXT( "Hapi failed: %s" ), *FHoudiniEngineUtils::GetErrorDescription() ); \
|
|
} \
|
|
} \
|
|
while ( 0 )
|
|
|
|
#define HOUDINI_CHECK_ERROR( HAPI_PARAM_RESULT, HAPI_PARAM_CALL ) \
|
|
HOUDINI_CHECK_ERROR_HELPER( HAPI_PARAM_RESULT, HAPI_PARAM_CALL, HOUDINI_LOG_ERROR )
|
|
|
|
/** HAPI related attribute definitions. **/
|
|
|
|
#define HAPI_UNREAL_CLIENT_NAME "unreal"
|
|
|
|
/** Names of attributes used for data exchange between Unreal and Houdini Engine. **/
|
|
#define HAPI_UNREAL_ATTRIB_INSTANCE_OVERRIDE "unreal_instance"
|
|
#define HAPI_UNREAL_ATTRIB_SPLIT_INSTANCES "unreal_split_instances"
|
|
#define HAPI_UNREAL_ATTRIB_MATERIAL "unreal_material"
|
|
#define HAPI_UNREAL_ATTRIB_MATERIAL_HOLE "unreal_material_hole"
|
|
#define HAPI_UNREAL_ATTRIB_MATERIAL_FALLBACK "unreal_face_material"
|
|
#define HAPI_UNREAL_ATTRIB_MATERIAL_INSTANCE "unreal_material_instance"
|
|
#define HAPI_UNREAL_ATTRIB_MATERIAL_HOLE_INSTANCE "unreal_material_hole_instance"
|
|
#define HAPI_UNREAL_ATTRIB_FACE_SMOOTHING_MASK "unreal_face_smoothing_mask"
|
|
#define HAPI_UNREAL_ATTRIB_LIGHTMAP_RESOLUTION "unreal_lightmap_resolution"
|
|
#define HAPI_UNREAL_ATTRIB_GENERATED_MESH_NAME "unreal_generated_mesh_name"
|
|
#define HAPI_UNREAL_ATTRIB_LANDSCAPE_TILE_NAME HAPI_ATTRIB_NAME
|
|
#define HAPI_UNREAL_ATTRIB_LANDSCAPE_VERTEX_INDEX "unreal_vertex_index"
|
|
//#define HAPI_UNREAL_ATTRIB_LANDSCAPE_NAME "unreal_landscape"
|
|
#define HAPI_UNREAL_ATTRIB_INPUT_MESH_NAME "unreal_input_mesh_name"
|
|
#define HAPI_UNREAL_ATTRIB_INPUT_SOURCE_FILE "unreal_input_source_file"
|
|
#define HAPI_UNREAL_ATTRIB_MESH_SOCKET_PREFIX "mesh_socket"
|
|
#define HAPI_UNREAL_ATTRIB_MESH_SOCKET_NAME "mesh_socket_name"
|
|
#define HAPI_UNREAL_ATTRIB_MESH_SOCKET_NAME_OLD "unreal_mesh_socket_name"
|
|
#define HAPI_UNREAL_ATTRIB_MESH_SOCKET_ACTOR "mesh_socket_actor"
|
|
#define HAPI_UNREAL_ATTRIB_MESH_SOCKET_ACTOR_OLD "unreal_mesh_socket_actor"
|
|
#define HAPI_UNREAL_ATTRIB_MESH_SOCKET_TAG "mesh_socket_tag"
|
|
#define HAPI_UNREAL_ATTRIB_MESH_SOCKET_TAG_OLD "unreal_mesh_socket_tag"
|
|
|
|
#define HAPI_UNREAL_ATTRIB_GENERIC_UPROP_PREFIX "unreal_uproperty_"
|
|
#define HAPI_UNREAL_ATTRIB_GENERIC_MAT_PARAM_PREFIX "unreal_material_parameter_"
|
|
#define HAPI_UNREAL_ATTRIB_INSTANCE_COLOR "unreal_instance_color"
|
|
|
|
#define HAPI_UNREAL_ATTRIB_BAKE_FOLDER "unreal_bake_folder"
|
|
#define HAPI_UNREAL_ATTRIB_BAKE_NAME "unreal_bake_name"
|
|
|
|
/** Names of other Houdini Engine attributes and parameters. **/
|
|
#define HAPI_UNREAL_ATTRIB_INSTANCE "instance"
|
|
#define HAPI_UNREAL_ATTRIB_INSTANCE_ROTATION "rot"
|
|
#define HAPI_UNREAL_ATTRIB_INSTANCE_SCALE "scale"
|
|
#define HAPI_UNREAL_ATTRIB_INSTANCE_POSITION HAPI_ATTRIB_POSITION
|
|
#define HAPI_UNREAL_ATTRIB_POSITION HAPI_ATTRIB_POSITION
|
|
#define HAPI_UNREAL_ATTRIB_ROTATION "rot"
|
|
#define HAPI_UNREAL_ATTRIB_SCALE "scale"
|
|
#define HAPI_UNREAL_ATTRIB_UNIFORM_SCALE "pscale"
|
|
#define HAPI_UNREAL_ATTRIB_COLOR HAPI_ATTRIB_COLOR
|
|
#define HAPI_UNREAL_ATTRIB_ALPHA "Alpha"
|
|
#define HAPI_UNREAL_ATTRIB_LIGHTMAP_COLOR "unreal_lightmap_color"
|
|
#define HAPI_UNREAL_ATTRIB_NORMAL HAPI_ATTRIB_NORMAL
|
|
#define HAPI_UNREAL_ATTRIB_TANGENTU HAPI_ATTRIB_TANGENT
|
|
#define HAPI_UNREAL_ATTRIB_TANGENTV HAPI_ATTRIB_TANGENT2
|
|
|
|
#define HAPI_UNREAL_ATTRIB_UV HAPI_ATTRIB_UV
|
|
#define HAPI_UNREAL_ATTRIB_UV2 HAPI_ATTRIB_UV2
|
|
//#define HAPI_UNREAL_ATTRIB_UV_WEIGHTMAP "unreal_weightmap_uv"
|
|
|
|
#define HAPI_UNREAL_PARAM_CURVE_TYPE "type"
|
|
#define HAPI_UNREAL_PARAM_CURVE_METHOD "method"
|
|
#define HAPI_UNREAL_PARAM_CURVE_COORDS "coords"
|
|
#define HAPI_UNREAL_PARAM_CURVE_CLOSED "close"
|
|
|
|
#define HAPI_UNREAL_PARAM_TRANSLATE "t"
|
|
#define HAPI_UNREAL_PARAM_ROTATE "r"
|
|
#define HAPI_UNREAL_PARAM_SCALE "s"
|
|
#define HAPI_UNREAL_PARAM_PIVOT "p"
|
|
#define HAPI_UNREAL_PARAM_UNIFORMSCALE "scale"
|
|
|
|
#define HAPI_UNREAL_PARAM_FILE "file"
|
|
|
|
/** Handle types. **/
|
|
#define HAPI_UNREAL_HANDLE_TRANSFORM "xform"
|
|
#define HAPI_UNREAL_HANDLE_BOUNDER "bound"
|
|
|
|
/** Ramp related defines. **/
|
|
#define HAPI_UNREAL_RAMP_FLOAT_AXIS_X "position"
|
|
#define HAPI_UNREAL_RAMP_FLOAT_AXIS_Y "value"
|
|
#define HAPI_UNREAL_RAMP_COLOR_AXIS_X "position"
|
|
#define HAPI_UNREAL_RAMP_COLOR_AXIS_Y "color"
|
|
|
|
/** Ramp Key interpolation values. **/
|
|
#define HAPI_UNREAL_RAMP_KEY_INTERPOLATION_CONSTANT "Constant"
|
|
#define HAPI_UNREAL_RAMP_KEY_INTERPOLATION_LINEAR "Linear"
|
|
#define HAPI_UNREAL_RAMP_KEY_INTERPOLATION_CATMULL_ROM "Catmull-Rom"
|
|
#define HAPI_UNREAL_RAMP_KEY_INTERPOLATION_MONOTONE_CUBIC "Monotone Cubic"
|
|
#define HAPI_UNREAL_RAMP_KEY_INTERPOLATION_BEZIER "Bezier"
|
|
#define HAPI_UNREAL_RAMP_KEY_INTERPOLATION_B_SPLINE "B-Spline"
|
|
#define HAPI_UNREAL_RAMP_KEY_INTERPOLATION_HERMITE "Hermite"
|
|
|
|
/** Texture planes. **/
|
|
#define HAPI_UNREAL_MATERIAL_TEXTURE_COLOR_ALPHA "C A"
|
|
#define HAPI_UNREAL_MATERIAL_TEXTURE_COLOR "C"
|
|
#define HAPI_UNREAL_MATERIAL_TEXTURE_ALPHA "A"
|
|
#define HAPI_UNREAL_MATERIAL_TEXTURE_NORMAL "N"
|
|
|
|
/** Materials Diffuse. **/
|
|
#define HAPI_UNREAL_PARAM_TEXTURE_LAYERS_NUM "ogl_numtex"
|
|
|
|
#define HAPI_UNREAL_PARAM_MAP_DIFFUSE_0 "ogl_tex1"
|
|
#define HAPI_UNREAL_PARAM_MAP_DIFFUSE_1 "basecolor_texture"
|
|
|
|
#define HAPI_UNREAL_PARAM_COLOR_DIFFUSE_0 "ogl_diff"
|
|
#define HAPI_UNREAL_PARAM_COLOR_DIFFUSE_1 "basecolor"
|
|
|
|
#define HAPI_UNREAL_PARAM_MAP_DIFFUSE_COLOR_SPACE "basecolor_textureColorSpace"
|
|
|
|
/** Materials Normal. **/
|
|
#define HAPI_UNREAL_PARAM_MAP_NORMAL_0 "ogl_normalmap"
|
|
#define HAPI_UNREAL_PARAM_MAP_NORMAL_1 "normalTexture"
|
|
|
|
#define HAPI_UNREAL_PARAM_MAP_NORMAL_TYPE "ogl_normalmap_type"
|
|
#define HAPI_UNREAL_PARAM_MAP_NORMAL_TYPE_TANGENT "Tangent Space"
|
|
#define HAPI_UNREAL_PARAM_MAP_NORMAL_TYPE_WORLD "World Space"
|
|
|
|
#define HAPI_UNREAL_PARAM_MAP_NORMAL_COLOR_SPACE "normalTexColorSpace"
|
|
|
|
/** Materials Specular. **/
|
|
#define HAPI_UNREAL_PARAM_MAP_SPECULAR_0 "ogl_specmap"
|
|
#define HAPI_UNREAL_PARAM_MAP_SPECULAR_1 "reflect_texture"
|
|
|
|
#define HAPI_UNREAL_PARAM_COLOR_SPECULAR_0 "ogl_spec"
|
|
#define HAPI_UNREAL_PARAM_COLOR_SPECULAR_1 "reflect"
|
|
|
|
#define HAPI_UNREAL_PARAM_MAP_SPECULAR_COLOR_SPACE "reflect_textureColorSpace"
|
|
|
|
/** Materials Roughness. **/
|
|
#define HAPI_UNREAL_PARAM_MAP_ROUGHNESS_0 "ogl_roughmap"
|
|
#define HAPI_UNREAL_PARAM_MAP_ROUGHNESS_1 "rough_texture"
|
|
|
|
#define HAPI_UNREAL_PARAM_VALUE_ROUGHNESS_0 "ogl_rough"
|
|
#define HAPI_UNREAL_PARAM_VALUE_ROUGHNESS_1 "rough"
|
|
|
|
#define HAPI_UNREAL_PARAM_MAP_ROUGHNESS_COLOR_SPACE "rough_textureColorSpace"
|
|
|
|
/** Materials Metallic. **/
|
|
#define HAPI_UNREAL_PARAM_MAP_METALLIC "metallic_texture"
|
|
#define HAPI_UNREAL_PARAM_VALUE_METALLIC "metallic"
|
|
#define HAPI_UNREAL_PARAM_MAP_METALLIC_COLOR_SPACE "metallic_textureColorSpace"
|
|
|
|
/** Materials Emissive. **/
|
|
#define HAPI_UNREAL_PARAM_MAP_EMISSIVE "emitcolor_texture"
|
|
#define HAPI_UNREAL_PARAM_MAP_EMISSIVE_COLOR_SPACE "emitcolor_textureColorSpace"
|
|
|
|
#define HAPI_UNREAL_PARAM_VALUE_EMISSIVE_0 "ogl_emit"
|
|
#define HAPI_UNREAL_PARAM_VALUE_EMISSIVE_1 "emitcolor"
|
|
|
|
/** Materials Opacity. **/
|
|
#define HAPI_UNREAL_PARAM_ALPHA_0 "ogl_alpha"
|
|
#define HAPI_UNREAL_PARAM_ALPHA_1 "opac"
|
|
|
|
#define HAPI_UNREAL_PARAM_MAP_OPACITY_0 "ogl_opacitymap"
|
|
#define HAPI_UNREAL_PARAM_MAP_OPACITY_1 "opaccolor_texture"
|
|
|
|
/** Default values for new curves. **/
|
|
#define HAPI_UNREAL_PARAM_INPUT_CURVE_COORDS_DEFAULT "0.0, 0.0, 3.0 3.0, 0.0, 3.0"
|
|
#define HAPI_UNREAL_PARAM_SPLINE_RESOLUTION_DEFAULT 50.0f
|
|
|
|
/** Default values for certain UI min and max parameter values **/
|
|
#define HAPI_UNREAL_PARAM_INT_UI_MIN 0
|
|
#define HAPI_UNREAL_PARAM_INT_UI_MAX 10
|
|
#define HAPI_UNREAL_PARAM_FLOAT_UI_MIN 0.0f
|
|
#define HAPI_UNREAL_PARAM_FLOAT_UI_MAX 10.0f
|
|
|
|
/** Suffix for all Unreal materials which are generated from Houdini. **/
|
|
#define HAPI_UNREAL_GENERATED_MATERIAL_SUFFIX TEXT("_houdini_material")
|
|
|
|
/** Group name prefix used for collision geometry generation. **/
|
|
#define HAPI_UNREAL_GROUP_GEOMETRY_COLLISION "collision_geo"
|
|
|
|
/** Group name prefix used for rendered collision geometry generation. **/
|
|
#define HAPI_UNREAL_GROUP_GEOMETRY_RENDERED_COLLISION "rendered_collision_geo"
|
|
|
|
/** Group name prefix used for UCX collision geometry generation **/
|
|
#define HAPI_UNREAL_GROUP_GEOMETRY_COLLISION_UCX "collision_geo_ucx"
|
|
#define HAPI_UNREAL_GROUP_GEOMETRY_RENDERED_COLLISION_UCX "rendered_collision_geo_ucx"
|
|
|
|
#define HAPI_UNREAL_GROUP_GEOMETRY_SIMPLE_COLLISION "collision_geo_simple"
|
|
#define HAPI_UNREAL_GROUP_GEOMETRY_SIMPLE_RENDERED_COLLISION "rendered_collision_geo_simple"
|
|
|
|
/** Group name used to mark everything that is not a member of collision or rendered collision group. **/
|
|
#define HAPI_UNREAL_GROUP_GEOMETRY_NOT_COLLISION "main_geo"
|
|
|
|
/** Group name prefix used to mark mesh sockets **/
|
|
#define HAPI_UNREAL_GROUP_MESH_SOCKETS "mesh_socket"
|
|
#define HAPI_UNREAL_GROUP_MESH_SOCKETS_OLD "socket"
|
|
|
|
/** Details panel desired sizes. **/
|
|
#define HAPI_UNREAL_DESIRED_ROW_VALUE_WIDGET_WIDTH 270
|
|
#define HAPI_UNREAL_DESIRED_ROW_FULL_WIDGET_WIDTH 310
|
|
#define HAPI_UNREAL_DESIRED_SETTINGS_ROW_VALUE_WIDGET_WIDTH 350
|
|
#define HAPI_UNREAL_DESIRED_SETTINGS_ROW_FULL_WIDGET_WIDTH 400
|
|
|
|
/** Various variable names used to store meta information in generated packages. **/
|
|
#define HAPI_UNREAL_PACKAGE_META_GENERATED_OBJECT TEXT( "HoudiniGeneratedObject" )
|
|
#define HAPI_UNREAL_PACKAGE_META_GENERATED_NAME TEXT( "HoudiniGeneratedName" )
|
|
#define HAPI_UNREAL_PACKAGE_META_GENERATED_TEXTURE_TYPE TEXT( "HoudiniGeneratedTextureType" )
|
|
#define HAPI_UNREAL_PACKAGE_META_NODE_PATH TEXT( "HoudiniNodePath" )
|
|
|
|
#define HAPI_UNREAL_PACKAGE_META_GENERATED_TEXTURE_NORMAL TEXT( "N" )
|
|
#define HAPI_UNREAL_PACKAGE_META_GENERATED_TEXTURE_DIFFUSE TEXT( "C_A" )
|
|
#define HAPI_UNREAL_PACKAGE_META_GENERATED_TEXTURE_SPECULAR TEXT( "S" )
|
|
#define HAPI_UNREAL_PACKAGE_META_GENERATED_TEXTURE_ROUGHNESS TEXT( "R" )
|
|
#define HAPI_UNREAL_PACKAGE_META_GENERATED_TEXTURE_METALLIC TEXT( "M" )
|
|
#define HAPI_UNREAL_PACKAGE_META_GENERATED_TEXTURE_EMISSIVE TEXT( "E" )
|
|
#define HAPI_UNREAL_PACKAGE_META_GENERATED_TEXTURE_OPACITY_MASK TEXT( "O" )
|
|
|
|
/** Various session related settings. **/
|
|
#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
|
|
|
|
#define HAPI_UNREAL_SESSION_SERVER_AUTOSTART true
|
|
#define HAPI_UNREAL_SESSION_SERVER_TIMEOUT 3000.0f
|
|
|
|
/** Default position and transformation scaling options. **/
|
|
#define HAPI_UNREAL_SCALE_FACTOR_POSITION 100.0f
|
|
#define HAPI_UNREAL_SCALE_FACTOR_TRANSLATION 100.0f
|
|
|
|
/** Small value used for comparisons. **/
|
|
#define HAPI_UNREAL_SCALE_SMALL_VALUE KINDA_SMALL_NUMBER * 2.0f
|
|
|
|
/** Default material name. **/
|
|
#define HAPI_UNREAL_DEFAULT_MATERIAL_NAME TEXT( "default_material" )
|
|
|
|
/** Threshold alpha. **/
|
|
#define HAPI_UNREAL_ALPHA_THRESHOLD 0.95f
|
|
|
|
/** Defines used for Substance processing. **/
|
|
#define HAPI_UNREAL_PARAM_SUBSTANCE_PREFIX TEXT( "_substanceInput" )
|
|
#define HAPI_UNREAL_PARAM_SUBSTANCE_LABEL TEXT( "Substance" )
|
|
#define HAPI_UNREAL_PARAM_SUBSTANCE_FILENAME TEXT( "filename" )
|
|
|
|
/** Names for Substance classes which we are retrieving through RTTI. **/
|
|
#define HAPI_UNREAL_SUBSTANCE_CLASS_INSTANCE_FACTORY TEXT( "SubstanceInstanceFactory" )
|
|
#define HAPI_UNREAL_SUBSTANCE_CLASS_GRAPH_INSTANCE TEXT( "SubstanceGraphInstance" )
|
|
#define HAPI_UNREAL_SUBSTANCE_CLASS_UTILITY TEXT( "SubstanceUtility" )
|
|
|
|
/** Names of Substance class properties we are using. **/
|
|
#define HAPI_UNREAL_SUBSTANCE_PROPERTY_FACTORY_PARENT TEXT( "Parent" )
|
|
|
|
/** 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" )
|
|
|
|
/** HFS subfolder containing HAPI lib. **/
|
|
#define HAPI_HFS_SUBFOLDER_WINDOWS TEXT( "bin" )
|
|
#define HAPI_HFS_SUBFOLDER_MAC TEXT( "dsolib" )
|
|
#define HAPI_HFS_SUBFOLDER_LINUX TEXT( "dsolib" )
|
|
|
|
/** Unreal HAPI Resources. **/
|
|
#define HAPI_UNREAL_RESOURCE_HOUDINI_LOGO TEXT( "/HoudiniEngine/houdini_logo.houdini_logo" )
|
|
#define HAPI_UNREAL_RESOURCE_HOUDINI_MATERIAL TEXT( "/HoudiniEngine/houdini_default_material.houdini_default_material" )
|
|
#define HAPI_UNREAL_RESOURCE_BGEO_IMPORT TEXT( "/HoudiniEngine/houdini_bgeo_import.houdini_bgeo_import" )
|
|
|
|
/** Helper function to serialize enumerations. **/
|
|
template < typename TEnum >
|
|
FORCEINLINE FArchive &
|
|
SerializeEnumeration( FArchive & Ar, TEnum & E )
|
|
{
|
|
uint8 B = (uint8) E;
|
|
Ar << B;
|
|
|
|
if ( Ar.IsLoading() )
|
|
E = (TEnum) B;
|
|
|
|
return Ar;
|
|
}
|
|
|
|
/** 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;
|
|
};
|
|
|
|
/** Struct to disable transactional buffer serialization. This is used to avoid including undo reference count. **/
|
|
struct FHoudiniScopedGlobalTransactionDisable
|
|
{
|
|
FHoudiniScopedGlobalTransactionDisable()
|
|
{
|
|
#if WITH_EDITOR
|
|
if ( GEditor && GEditor->Trans )
|
|
GEditor->Trans->DisableObjectSerialization();
|
|
#endif
|
|
}
|
|
|
|
~FHoudiniScopedGlobalTransactionDisable()
|
|
{
|
|
#if WITH_EDITOR
|
|
if (GEditor && GEditor->Trans)
|
|
GEditor->Trans->EnableObjectSerialization();
|
|
#endif
|
|
}
|
|
};
|