Files
UnrealEngineUWP/Engine/Source/Programs/Enterprise/Datasmith/DatasmithMaxExporter/DatasmithMax2017.Target.cs

97 lines
3.4 KiB
C#
Raw Normal View History

// Copyright Epic Games, Inc. All Rights Reserved.
using UnrealBuildTool;
[SupportedPlatforms("Win64")]
public abstract class DatasmithMaxBaseTarget : TargetRules
{
public DatasmithMaxBaseTarget(TargetInfo Target)
: base(Target)
{
Type = TargetType.Program;
IncludeOrderVersion = EngineIncludeOrderVersion.Latest;
SolutionDirectory = "Programs/Datasmith";
bBuildInSolutionByDefault = false;
bLegalToDistributeBinary = true;
bShouldCompileAsDLL = true;
LinkType = TargetLinkType.Monolithic;
WindowsPlatform.ModuleDefinitionFile = "Programs/Enterprise/Datasmith/DatasmithMaxExporter/DatasmithMaxExporterWithDirectLink.def";
3DS MAX DirectLink plugin - very WIP --- Ho to use. Build with environment variable set: DATASMITH_3DSMAX_PLUGIN_WITH_DIRECTLINK=1 Note - it should build DatasmithMax2022.gup in Engine\Binaries\Win64\3DSMax\2022 Add that ..Engine\Binaries\Win64\3DSMax\2022 folder to Max pluging paths. Max menu - Customize/Configure User and System Paths/3rd Party Plugins Execute Engine\Source\Programs\Enterprise\Datasmith\DatasmithMaxExporter\Extras\3dsMaxScripts\UI\DatasmithDialog.ms This will activate the plugin and create UI Sync/Connections/Export buttons should work --- Review disclaimer: - This is very preliminary review! - All in one file for now - Some code duplicated from baseline - like exporting hierarchy. Syncing is quite different from straight export! - Some baseline plugin code changed to be able to reuse - one which seemed to need little interference, less chance to break. - Export - most hierarchy export, with transforms, refscene; geometry - basic GeomObj only, materials - already using full existing plugin's export code - Missing export(to be on par with existing) - a lot! Other object types, collision, pivots, instances, forest.. - Change tracking - geometry/transforms/material assignment/material changes basically working. But lot to add/fix(e.g. hacky material re-export) - Slate UI working - Key functions exported to MaxScript - Built/tested only in 2022 #rb JeanLuc.Corenthin #jira UETOOL-3895 #ROBOMERGE-AUTHOR: kerim.borchaev #ROBOMERGE-SOURCE: CL 17595504 in //UE5/Main/... #ROBOMERGE-BOT: STARSHIP (Main -> Release-Engine-Test) (v871-17566257) [CL 17595522 by kerim borchaev in ue5-release-engine-test branch]
2021-09-22 10:22:19 -04:00
WindowsPlatform.bStrictConformanceMode = false;
bBuildDeveloperTools = false;
bBuildWithEditorOnlyData = true;
bCompileAgainstEngine = false;
bCompileAgainstCoreUObject = true;
bCompileICU = false;
bUsesSlate = false;
bHasExports = true;
bForceEnableExceptions = true;
3DS MAX DirectLink plugin - very WIP --- Ho to use. Build with environment variable set: DATASMITH_3DSMAX_PLUGIN_WITH_DIRECTLINK=1 Note - it should build DatasmithMax2022.gup in Engine\Binaries\Win64\3DSMax\2022 Add that ..Engine\Binaries\Win64\3DSMax\2022 folder to Max pluging paths. Max menu - Customize/Configure User and System Paths/3rd Party Plugins Execute Engine\Source\Programs\Enterprise\Datasmith\DatasmithMaxExporter\Extras\3dsMaxScripts\UI\DatasmithDialog.ms This will activate the plugin and create UI Sync/Connections/Export buttons should work --- Review disclaimer: - This is very preliminary review! - All in one file for now - Some code duplicated from baseline - like exporting hierarchy. Syncing is quite different from straight export! - Some baseline plugin code changed to be able to reuse - one which seemed to need little interference, less chance to break. - Export - most hierarchy export, with transforms, refscene; geometry - basic GeomObj only, materials - already using full existing plugin's export code - Missing export(to be on par with existing) - a lot! Other object types, collision, pivots, instances, forest.. - Change tracking - geometry/transforms/material assignment/material changes basically working. But lot to add/fix(e.g. hacky material re-export) - Slate UI working - Key functions exported to MaxScript - Built/tested only in 2022 #rb JeanLuc.Corenthin #jira UETOOL-3895 #ROBOMERGE-AUTHOR: kerim.borchaev #ROBOMERGE-SOURCE: CL 17595504 in //UE5/Main/... #ROBOMERGE-BOT: STARSHIP (Main -> Release-Engine-Test) (v871-17566257) [CL 17595522 by kerim borchaev in ue5-release-engine-test branch]
2021-09-22 10:22:19 -04:00
GlobalDefinitions.Add("UE_EXTERNAL_PROFILING_ENABLED=0"); // For DirectLinkUI (see FDatasmithExporterManager::FInitOptions)
3DS MAX DirectLink plugin - very WIP --- Ho to use. Build with environment variable set: DATASMITH_3DSMAX_PLUGIN_WITH_DIRECTLINK=1 Note - it should build DatasmithMax2022.gup in Engine\Binaries\Win64\3DSMax\2022 Add that ..Engine\Binaries\Win64\3DSMax\2022 folder to Max pluging paths. Max menu - Customize/Configure User and System Paths/3rd Party Plugins Execute Engine\Source\Programs\Enterprise\Datasmith\DatasmithMaxExporter\Extras\3dsMaxScripts\UI\DatasmithDialog.ms This will activate the plugin and create UI Sync/Connections/Export buttons should work --- Review disclaimer: - This is very preliminary review! - All in one file for now - Some code duplicated from baseline - like exporting hierarchy. Syncing is quite different from straight export! - Some baseline plugin code changed to be able to reuse - one which seemed to need little interference, less chance to break. - Export - most hierarchy export, with transforms, refscene; geometry - basic GeomObj only, materials - already using full existing plugin's export code - Missing export(to be on par with existing) - a lot! Other object types, collision, pivots, instances, forest.. - Change tracking - geometry/transforms/material assignment/material changes basically working. But lot to add/fix(e.g. hacky material re-export) - Slate UI working - Key functions exported to MaxScript - Built/tested only in 2022 #rb JeanLuc.Corenthin #jira UETOOL-3895 #ROBOMERGE-AUTHOR: kerim.borchaev #ROBOMERGE-SOURCE: CL 17595504 in //UE5/Main/... #ROBOMERGE-BOT: STARSHIP (Main -> Release-Engine-Test) (v871-17566257) [CL 17595522 by kerim borchaev in ue5-release-engine-test branch]
2021-09-22 10:22:19 -04:00
// Setting CppStandard to Cpp17 as new CppStandardVersion.Default is Cpp20 and this implies "/permissive-" for MSVC which
// doesn't work well with 3ds Max includes(lots of non-conformance like const to non-const string conversion, temp to &, etc)
//
// For some reason, adding following doesn't help 100%. Even though docs says that should override "/permissive-"'s settings like C2102:
// AdditionalCompilerArguments = " /Zc:referenceBinding- /Zc:strictStrings- /Zc:rvalueCast- ";
//
// 3dsMax uses MSVC extension which allows taking address of a class rvalue returned from a function:
// class V
// {
// int dummy;
// };
//
// class C {
// public:
// V get() const { return V(); }
// };
// void f(V* ){}
// int main() {
// C c;
// f(&(c.get()));// In conformance mode C2102 '&' requires l-value, but MSVC allows this by default
// }
// This behavior is disabled when c++20 enabled and is not repaired with any /Zc option. Seems like it only works with "/permissive" enabled. But...
// Reverting permissive breaks Engine compilation because of operator resolution ambiguity(which doesn't happen with stricter checks) and other issues:
// AdditionalCompilerArguments = " /permissive ";
CppStandard = CppStandardVersion.Cpp17;
3DS MAX DirectLink plugin - very WIP --- Ho to use. Build with environment variable set: DATASMITH_3DSMAX_PLUGIN_WITH_DIRECTLINK=1 Note - it should build DatasmithMax2022.gup in Engine\Binaries\Win64\3DSMax\2022 Add that ..Engine\Binaries\Win64\3DSMax\2022 folder to Max pluging paths. Max menu - Customize/Configure User and System Paths/3rd Party Plugins Execute Engine\Source\Programs\Enterprise\Datasmith\DatasmithMaxExporter\Extras\3dsMaxScripts\UI\DatasmithDialog.ms This will activate the plugin and create UI Sync/Connections/Export buttons should work --- Review disclaimer: - This is very preliminary review! - All in one file for now - Some code duplicated from baseline - like exporting hierarchy. Syncing is quite different from straight export! - Some baseline plugin code changed to be able to reuse - one which seemed to need little interference, less chance to break. - Export - most hierarchy export, with transforms, refscene; geometry - basic GeomObj only, materials - already using full existing plugin's export code - Missing export(to be on par with existing) - a lot! Other object types, collision, pivots, instances, forest.. - Change tracking - geometry/transforms/material assignment/material changes basically working. But lot to add/fix(e.g. hacky material re-export) - Slate UI working - Key functions exported to MaxScript - Built/tested only in 2022 #rb JeanLuc.Corenthin #jira UETOOL-3895 #ROBOMERGE-AUTHOR: kerim.borchaev #ROBOMERGE-SOURCE: CL 17595504 in //UE5/Main/... #ROBOMERGE-BOT: STARSHIP (Main -> Release-Engine-Test) (v871-17566257) [CL 17595522 by kerim borchaev in ue5-release-engine-test branch]
2021-09-22 10:22:19 -04:00
// todo: remove?
// bSupportEditAndContinue = true;
}
protected void AddCopyPostBuildStep(TargetInfo Target)
{
// Add a post-build step that copies the output to a file with the .dle extension
string OutputName = "$(TargetName)";
if (Target.Configuration != UnrealTargetConfiguration.Development)
{
OutputName = string.Format("{0}-{1}-{2}", OutputName, Target.Platform, Target.Configuration);
}
string SrcOutputFileName = string.Format(@"$(EngineDir)\Binaries\Win64\{0}\{1}.dll", ExeBinariesSubFolder, OutputName);
3DS MAX DirectLink plugin - very WIP --- Ho to use. Build with environment variable set: DATASMITH_3DSMAX_PLUGIN_WITH_DIRECTLINK=1 Note - it should build DatasmithMax2022.gup in Engine\Binaries\Win64\3DSMax\2022 Add that ..Engine\Binaries\Win64\3DSMax\2022 folder to Max pluging paths. Max menu - Customize/Configure User and System Paths/3rd Party Plugins Execute Engine\Source\Programs\Enterprise\Datasmith\DatasmithMaxExporter\Extras\3dsMaxScripts\UI\DatasmithDialog.ms This will activate the plugin and create UI Sync/Connections/Export buttons should work --- Review disclaimer: - This is very preliminary review! - All in one file for now - Some code duplicated from baseline - like exporting hierarchy. Syncing is quite different from straight export! - Some baseline plugin code changed to be able to reuse - one which seemed to need little interference, less chance to break. - Export - most hierarchy export, with transforms, refscene; geometry - basic GeomObj only, materials - already using full existing plugin's export code - Missing export(to be on par with existing) - a lot! Other object types, collision, pivots, instances, forest.. - Change tracking - geometry/transforms/material assignment/material changes basically working. But lot to add/fix(e.g. hacky material re-export) - Slate UI working - Key functions exported to MaxScript - Built/tested only in 2022 #rb JeanLuc.Corenthin #jira UETOOL-3895 #ROBOMERGE-AUTHOR: kerim.borchaev #ROBOMERGE-SOURCE: CL 17595504 in //UE5/Main/... #ROBOMERGE-BOT: STARSHIP (Main -> Release-Engine-Test) (v871-17566257) [CL 17595522 by kerim borchaev in ue5-release-engine-test branch]
2021-09-22 10:22:19 -04:00
string DstOutputFileName;
DstOutputFileName = string.Format(@"$(EngineDir)\Binaries\Win64\{0}\{1}.gup", ExeBinariesSubFolder, OutputName);
PostBuildSteps.Add(string.Format("echo Copying {0} to {1}...", SrcOutputFileName, DstOutputFileName));
PostBuildSteps.Add(string.Format("copy /Y \"{0}\" \"{1}\" 1>nul", SrcOutputFileName, DstOutputFileName));
}
}
public class DatasmithMax2017Target : DatasmithMaxBaseTarget
{
public DatasmithMax2017Target(TargetInfo Target)
: base(Target)
{
LaunchModuleName = "DatasmithMax2017";
ExeBinariesSubFolder = @"3DSMax\2017";
AddCopyPostBuildStep(Target);
}
}