You've already forked UnrealEngineUWP
mirror of
https://github.com/izzy2lost/UnrealEngineUWP.git
synced 2026-03-26 18:15:20 -07:00
This represents UE4/Main @18073326, Release-5.0 @18081140 and Dev-PerfTest @18045971 [CL 18081471 by aurel cordonnier in ue5-release-engine-test branch]
236 lines
5.4 KiB
C++
236 lines
5.4 KiB
C++
// Copyright Epic Games, Inc. All Rights Reserved.
|
|
|
|
#ifdef NEW_DIRECTLINK_PLUGIN
|
|
|
|
#include "DatasmithMaxDirectLink.h"
|
|
|
|
#include "DatasmithExporterManager.h"
|
|
|
|
|
|
#include "Logging/LogMacros.h"
|
|
|
|
#include "Windows/AllowWindowsPlatformTypes.h"
|
|
MAX_INCLUDES_START
|
|
#include "impexp.h"
|
|
#include "max.h"
|
|
|
|
#include "maxscript/maxwrapper/mxsobjects.h"
|
|
|
|
#include "maxscript/maxscript.h"
|
|
#include "maxscript/foundation/numbers.h"
|
|
#include "maxscript/foundation/arrays.h"
|
|
#include "maxscript\macros\define_instantiation_functions.h"
|
|
|
|
MAX_INCLUDES_END
|
|
|
|
namespace DatasmithMaxDirectLink
|
|
{
|
|
|
|
/************************************* MaxScript exports *********************************/
|
|
|
|
Value* OnLoad_cf(Value**, int);
|
|
Primitive OnLoad_pf(_M("Datasmith_OnLoad"), OnLoad_cf);
|
|
|
|
Value* OnLoad_cf(Value **arg_list, int count)
|
|
{
|
|
check_arg_count(OnLoad, 2, count);
|
|
Value* pEnableUI= arg_list[0];
|
|
Value* pEnginePath = arg_list[1];
|
|
|
|
bool bEnableUI = pEnableUI->to_bool();
|
|
|
|
const TCHAR* EnginePathUnreal = (const TCHAR*)pEnginePath->to_string();
|
|
|
|
if (CreateExporter(bEnableUI, EnginePathUnreal))
|
|
{
|
|
return &false_value;
|
|
}
|
|
GetExporter()->ParseScene();
|
|
|
|
return bool_result(true);
|
|
}
|
|
|
|
Value* OnUnload_cf(Value**, int);
|
|
Primitive OnUnload_pf(_M("Datasmith_OnUnload"), OnUnload_cf);
|
|
|
|
Value* OnUnload_cf(Value **arg_list, int count)
|
|
{
|
|
check_arg_count(OnUnload, 0, count);
|
|
|
|
ShutdownExporter();
|
|
|
|
return bool_result(true);
|
|
}
|
|
|
|
Value* SetOutputPath_cf(Value**, int);
|
|
Primitive SetOutputPath_pf(_M("Datasmith_SetOutputPath"), SetOutputPath_cf);
|
|
|
|
Value* SetOutputPath_cf(Value** arg_list, int count)
|
|
{
|
|
check_arg_count(CreateScene, 1, count);
|
|
Value* pOutputPath = arg_list[0];
|
|
|
|
GetExporter()->SetOutputPath(pOutputPath->to_string());
|
|
|
|
return bool_result(true);
|
|
}
|
|
|
|
Value* CreateScene_cf(Value**, int);
|
|
Primitive CreateScene_pf(_M("Datasmith_CreateScene"), CreateScene_cf);
|
|
|
|
Value* CreateScene_cf(Value** arg_list, int count)
|
|
{
|
|
check_arg_count(CreateScene, 1, count);
|
|
Value* pName = arg_list[0];
|
|
|
|
GetExporter()->SetName(pName->to_string());
|
|
|
|
return bool_result(true);
|
|
}
|
|
|
|
Value* UpdateScene_cf(Value**, int);
|
|
Primitive UpdateScene_pf(_M("Datasmith_UpdateScene"), UpdateScene_cf);
|
|
|
|
Value* UpdateScene_cf(Value** arg_list, int count)
|
|
{
|
|
check_arg_count_with_keys(UpdateScene, 0, count);
|
|
|
|
bool bQuiet = key_arg_or_default(quiet, &false_value)->to_bool();
|
|
|
|
if(!GetExporter())
|
|
{
|
|
return bool_result(false);
|
|
}
|
|
|
|
bool bResult = GetExporter()->UpdateScene(bQuiet);
|
|
return bool_result(bResult);
|
|
}
|
|
|
|
|
|
Value* Export_cf(Value**, int);
|
|
Primitive Export_pf(_M("Datasmith_Export"), Export_cf);
|
|
|
|
Value* Export_cf(Value** arg_list, int count)
|
|
{
|
|
check_arg_count_with_keys(Export, 2, count);
|
|
Value* pName = arg_list[0];
|
|
Value* pOutputPath = arg_list[1];
|
|
|
|
bool bQuiet = key_arg_or_default(quiet, &false_value)->to_bool();
|
|
|
|
bool bResult = Export(pName->to_string(), pOutputPath->to_string(), bQuiet);;
|
|
return bool_result(bResult);
|
|
}
|
|
|
|
|
|
Value* Reset_cf(Value**, int);
|
|
Primitive Reset_pf(_M("Datasmith_Reset"), Reset_cf);
|
|
|
|
Value* Reset_cf(Value** arg_list, int count)
|
|
{
|
|
check_arg_count(Reset, 0, count);
|
|
|
|
if (!GetExporter())
|
|
{
|
|
return bool_result(false);
|
|
}
|
|
|
|
GetExporter()->Reset();
|
|
return bool_result(true);
|
|
}
|
|
|
|
Value* StartSceneChangeTracking_cf(Value**, int);
|
|
Primitive StartSceneChangeTracking_pf(_M("Datasmith_StartSceneChangeTracking"), StartSceneChangeTracking_cf);
|
|
|
|
Value* StartSceneChangeTracking_cf(Value** arg_list, int count)
|
|
{
|
|
check_arg_count(StartSceneChangeTracking, 0, count);
|
|
|
|
GetExporter()->StartSceneChangeTracking();
|
|
|
|
return bool_result(true);
|
|
}
|
|
|
|
Value* DirectLinkInitializeForScene_cf(Value** arg_list, int count)
|
|
{
|
|
check_arg_count(DirectLinkInitializeForScene, 0, count);
|
|
|
|
GetExporter()->InitializeDirectLinkForScene();
|
|
|
|
return bool_result(true);
|
|
}
|
|
Primitive DirectLinkInitializeForScene_pf(_M("Datasmith_DirectLinkInitializeForScene"), DirectLinkInitializeForScene_cf);
|
|
|
|
|
|
Value* DirectLinkUpdateScene_cf(Value** arg_list, int count)
|
|
{
|
|
check_arg_count(DirectLinkUpdateScene, 0, count);
|
|
LogDebug(TEXT("DirectLink::UpdateScene: start"));
|
|
GetExporter()->UpdateDirectLinkScene();
|
|
LogDebug(TEXT("DirectLink::UpdateScene: done"));
|
|
|
|
return bool_result(true);
|
|
}
|
|
Primitive DirectLinkUpdateScene_pf(_M("Datasmith_DirectLinkUpdateScene"), DirectLinkUpdateScene_cf);
|
|
|
|
Value* OpenDirectlinkUi_cf(Value** arg_list, int count)
|
|
{
|
|
check_arg_count(OpenDirectlinkUi, 0, count);
|
|
|
|
return bool_result(OpenDirectLinkUI());
|
|
}
|
|
Primitive OpenDirectlinkUi_pf(_M("Datasmith_OpenDirectlinkUi"), OpenDirectlinkUi_cf);
|
|
|
|
|
|
Value* GetDirectlinkCacheDirectory_cf(Value** arg_list, int count)
|
|
{
|
|
check_arg_count(GetDirectlinkCacheDirectory, 0, count);
|
|
const TCHAR* Path = GetDirectlinkCacheDirectory();
|
|
if (Path)
|
|
{
|
|
return new String(Path);
|
|
}
|
|
|
|
return &undefined;
|
|
}
|
|
|
|
Primitive GetDirectlinkCacheDirectory_pf(_M("Datasmith_GetDirectlinkCacheDirectory"), GetDirectlinkCacheDirectory_cf);
|
|
|
|
|
|
Value* LogFlush_cf(Value** arg_list, int count)
|
|
{
|
|
LogFlush();
|
|
return &undefined;
|
|
}
|
|
|
|
Primitive LogFlush_pf(_M("Datasmith_LogFlush"), LogFlush_cf);
|
|
|
|
|
|
Value* Crash_cf(Value** arg_list, int count)
|
|
{
|
|
volatile int* P;
|
|
P = nullptr;
|
|
|
|
*P = 666;
|
|
return &undefined;
|
|
}
|
|
|
|
Primitive Crash_pf(_M("Datasmith_Crash"), Crash_cf);
|
|
|
|
Value* LogInfo_cf(Value** arg_list, int count)
|
|
{
|
|
check_arg_count(CreateScene, 1, count);
|
|
Value* Message = arg_list[0];
|
|
|
|
LogInfo(Message->to_string());
|
|
|
|
return bool_result(true);
|
|
}
|
|
Primitive LogInfo_pf(_M("Datasmith_LogInfo"), LogInfo_cf);
|
|
|
|
}
|
|
|
|
#include "Windows/HideWindowsPlatformTypes.h"
|
|
|
|
#endif // NEW_DIRECTLINK_PLUGIN
|