Add Split Objects object to split imported meshes/animations into separate assets

This commit is contained in:
Wojciech Figat
2021-11-24 17:40:56 +01:00
parent 4322563eed
commit 05d0e1bdcc
9 changed files with 536 additions and 390 deletions

View File

@@ -193,7 +193,6 @@ public:
bool OptimizeKeyframes = true;
bool EnableRootMotion = false;
String RootNodeName;
int32 AnimationIndex = -1;
// Level Of Detail
bool GenerateLODs = false;
@@ -206,6 +205,14 @@ public:
bool ImportTextures = true;
bool RestoreMaterialsOnReimport = true;
// Splitting
bool SplitObjects = false;
int32 ObjectIndex = -1;
// Runtime data for objects splitting during import (used internally)
void* SplitContext = nullptr;
Function<bool(Options& splitOptions, const String& objectName)> OnSplitImport;
public:
// [ISerializable]
@@ -223,7 +230,7 @@ public:
/// <param name="options">The import options.</param>
/// <param name="errorMsg">The error message container.</param>
/// <returns>True if fails, otherwise false.</returns>
static bool ImportData(const String& path, ImportedModelData& data, Options options, String& errorMsg);
static bool ImportData(const String& path, ImportedModelData& data, Options& options, String& errorMsg);
/// <summary>
/// Imports the model.
@@ -234,7 +241,7 @@ public:
/// <param name="errorMsg">The error message container.</param>
/// <param name="autoImportOutput">The output folder for the additional imported data - optional. Used to auto-import textures and material assets.</param>
/// <returns>True if fails, otherwise false.</returns>
static bool ImportModel(const String& path, ModelData& meshData, Options options, String& errorMsg, const String& autoImportOutput = String::Empty);
static bool ImportModel(const String& path, ModelData& meshData, Options& options, String& errorMsg, const String& autoImportOutput = String::Empty);
public:
@@ -267,13 +274,13 @@ public:
private:
#if USE_ASSIMP
static bool ImportDataAssimp(const char* path, ImportedModelData& data, const Options& options, String& errorMsg);
static bool ImportDataAssimp(const char* path, ImportedModelData& data, Options& options, String& errorMsg);
#endif
#if USE_AUTODESK_FBX_SDK
static bool ImportDataAutodeskFbxSdk(const char* path, ImportedModelData& data, const Options& options, String& errorMsg);
static bool ImportDataAutodeskFbxSdk(const char* path, ImportedModelData& data, Options& options, String& errorMsg);
#endif
#if USE_OPEN_FBX
static bool ImportDataOpenFBX(const char* path, ImportedModelData& data, const Options& options, String& errorMsg);
static bool ImportDataOpenFBX(const char* path, ImportedModelData& data, Options& options, String& errorMsg);
#endif
};