From 9a71e0274f5fef4e9282dea1a4e14f6db9372b6e Mon Sep 17 00:00:00 2001
From: Menotdan <32620310+Menotdan@users.noreply.github.com>
Date: Sat, 20 May 2023 00:03:40 -0400
Subject: [PATCH 1/7] Add required options for material instance importing.
---
.../Editor/Content/Import/ModelImportEntry.cs | 21 +++++++++++++++++++
.../Editor/Managed/ManagedEditor.Internal.cpp | 6 ++++++
.../Tools/ModelTool/ModelTool.Options.cpp | 4 ++++
Source/Engine/Tools/ModelTool/ModelTool.h | 3 +++
4 files changed, 34 insertions(+)
diff --git a/Source/Editor/Content/Import/ModelImportEntry.cs b/Source/Editor/Content/Import/ModelImportEntry.cs
index b17c8314d..8bdd7264a 100644
--- a/Source/Editor/Content/Import/ModelImportEntry.cs
+++ b/Source/Editor/Content/Import/ModelImportEntry.cs
@@ -1,5 +1,6 @@
// Copyright (c) 2012-2023 Wojciech Figat. All rights reserved.
+using System;
using System.ComponentModel;
using System.Runtime.CompilerServices;
using System.Runtime.InteropServices;
@@ -316,6 +317,20 @@ namespace FlaxEditor.Content.Import
[EditorOrder(400), DefaultValue(true)]
public bool ImportMaterials { get; set; } = true;
+ ///
+ /// If checked, materials will be imported as instances of a base material.
+ ///
+ [EditorDisplay("Materials"), VisibleIf(nameof(ImportMaterials))]
+ [EditorOrder(405), DefaultValue(false)]
+ public bool ImportMaterialsAsInstances = false;
+
+ ///
+ /// The material to import the model's materials as an instance of.
+ ///
+ [EditorDisplay("Materials"), VisibleIf(nameof(ImportMaterialsAsInstances))]
+ [EditorOrder(406)]
+ public Material InstanceToImportAs = null; // TODO: only show if BOTH ImportMaterials and ImportMaterialsAsInstances are true.
+
///
/// If checked, the importer will import texture files used by the model and any embedded texture resources.
///
@@ -406,6 +421,8 @@ namespace FlaxEditor.Content.Import
// Misc
public byte ImportMaterials;
+ public byte ImportMaterialsAsInstances;
+ public Guid InstanceToImportAs;
public byte ImportTextures;
public byte RestoreMaterialsOnReimport;
@@ -454,6 +471,8 @@ namespace FlaxEditor.Content.Import
LODCount = LODCount,
TriangleReduction = TriangleReduction,
ImportMaterials = (byte)(ImportMaterials ? 1 : 0),
+ ImportMaterialsAsInstances = (byte)(ImportMaterialsAsInstances ? 1 : 0),
+ InstanceToImportAs = InstanceToImportAs.ID,
ImportTextures = (byte)(ImportTextures ? 1 : 0),
RestoreMaterialsOnReimport = (byte)(RestoreMaterialsOnReimport ? 1 : 0),
GenerateSDF = (byte)(GenerateSDF ? 1 : 0),
@@ -496,6 +515,8 @@ namespace FlaxEditor.Content.Import
LODCount = options.LODCount;
TriangleReduction = options.TriangleReduction;
ImportMaterials = options.ImportMaterials != 0;
+ ImportMaterialsAsInstances = options.ImportMaterialsAsInstances != 0;
+ InstanceToImportAs = FlaxEngine.Content.Load(options.InstanceToImportAs);
ImportTextures = options.ImportTextures != 0;
RestoreMaterialsOnReimport = options.RestoreMaterialsOnReimport != 0;
GenerateSDF = options.GenerateSDF != 0;
diff --git a/Source/Editor/Managed/ManagedEditor.Internal.cpp b/Source/Editor/Managed/ManagedEditor.Internal.cpp
index dcaa25e6c..17708dab5 100644
--- a/Source/Editor/Managed/ManagedEditor.Internal.cpp
+++ b/Source/Editor/Managed/ManagedEditor.Internal.cpp
@@ -195,6 +195,8 @@ struct InternalModelOptions
// Misc
byte ImportMaterials;
+ byte ImportMaterialsAsInstances;
+ Guid InstanceToImportAs;
byte ImportTextures;
byte RestoreMaterialsOnReimport;
@@ -240,6 +242,8 @@ struct InternalModelOptions
to->LODCount = from->LODCount;
to->TriangleReduction = from->TriangleReduction;
to->ImportMaterials = from->ImportMaterials;
+ to->ImportMaterialsAsInstances = from->ImportMaterialsAsInstances;
+ to->InstanceToImportAs = from->InstanceToImportAs;
to->ImportTextures = from->ImportTextures;
to->RestoreMaterialsOnReimport = from->RestoreMaterialsOnReimport;
to->GenerateSDF = from->GenerateSDF;
@@ -282,6 +286,8 @@ struct InternalModelOptions
to->LODCount = from->LODCount;
to->TriangleReduction = from->TriangleReduction;
to->ImportMaterials = from->ImportMaterials;
+ to->ImportMaterialsAsInstances = from->ImportMaterialsAsInstances;
+ to->InstanceToImportAs = from->InstanceToImportAs;
to->ImportTextures = from->ImportTextures;
to->RestoreMaterialsOnReimport = from->RestoreMaterialsOnReimport;
to->GenerateSDF = from->GenerateSDF;
diff --git a/Source/Engine/Tools/ModelTool/ModelTool.Options.cpp b/Source/Engine/Tools/ModelTool/ModelTool.Options.cpp
index b7fb04855..7d1315a1f 100644
--- a/Source/Engine/Tools/ModelTool/ModelTool.Options.cpp
+++ b/Source/Engine/Tools/ModelTool/ModelTool.Options.cpp
@@ -61,6 +61,8 @@ void ModelTool::Options::Serialize(SerializeStream& stream, const void* otherObj
SERIALIZE(LODCount);
SERIALIZE(TriangleReduction);
SERIALIZE(ImportMaterials);
+ SERIALIZE(ImportMaterialsAsInstances);
+ SERIALIZE(InstanceToImportAs);
SERIALIZE(ImportTextures);
SERIALIZE(RestoreMaterialsOnReimport);
SERIALIZE(GenerateSDF);
@@ -102,6 +104,8 @@ void ModelTool::Options::Deserialize(DeserializeStream& stream, ISerializeModifi
DESERIALIZE(LODCount);
DESERIALIZE(TriangleReduction);
DESERIALIZE(ImportMaterials);
+ DESERIALIZE(ImportMaterialsAsInstances);
+ DESERIALIZE(InstanceToImportAs);
DESERIALIZE(ImportTextures);
DESERIALIZE(RestoreMaterialsOnReimport);
DESERIALIZE(GenerateSDF);
diff --git a/Source/Engine/Tools/ModelTool/ModelTool.h b/Source/Engine/Tools/ModelTool/ModelTool.h
index b29bed71f..cf6b15c3f 100644
--- a/Source/Engine/Tools/ModelTool/ModelTool.h
+++ b/Source/Engine/Tools/ModelTool/ModelTool.h
@@ -11,6 +11,7 @@
#include "Engine/Graphics/Models/ModelData.h"
#include "Engine/Graphics/Models/SkeletonData.h"
#include "Engine/Animations/AnimationData.h"
+#include
class JsonWriter;
@@ -247,6 +248,8 @@ public:
// Materials
bool ImportMaterials = true;
+ bool ImportMaterialsAsInstances = false;
+ Guid InstanceToImportAs;
bool ImportTextures = true;
bool RestoreMaterialsOnReimport = true;
From 89ce2b087ec1b00852f56665a1720b45fa7fd0b6 Mon Sep 17 00:00:00 2001
From: Menotdan <32620310+Menotdan@users.noreply.github.com>
Date: Sat, 20 May 2023 00:13:45 -0400
Subject: [PATCH 2/7] Add parameter for AddMaterial() as an experiment, messing
around with ideas.
---
Source/Engine/Tools/ModelTool/ModelTool.OpenFBX.cpp | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/Source/Engine/Tools/ModelTool/ModelTool.OpenFBX.cpp b/Source/Engine/Tools/ModelTool/ModelTool.OpenFBX.cpp
index 1eb9e1f27..a4eebe830 100644
--- a/Source/Engine/Tools/ModelTool/ModelTool.OpenFBX.cpp
+++ b/Source/Engine/Tools/ModelTool/ModelTool.OpenFBX.cpp
@@ -207,7 +207,7 @@ struct OpenFbxImporterData
return false;
}
- int32 AddMaterial(ImportedModelData& result, const ofbx::Material* mat)
+ int32 AddMaterial(ImportedModelData& result, const ofbx::Material* mat, const Material* instanceOf)
{
int32 index = Materials.Find(mat);
if (index == -1)
From f03bb60d5bad400e0e67836d8d3e273c12d8de7f Mon Sep 17 00:00:00 2001
From: Menotdan <32620310+Menotdan@users.noreply.github.com>
Date: Sun, 21 May 2023 00:20:54 -0400
Subject: [PATCH 3/7] Figured out where I actually need to add code, and added
code there.
---
.../Tools/ModelTool/ModelTool.OpenFBX.cpp | 3 +-
Source/Engine/Tools/ModelTool/ModelTool.cpp | 70 ++++++++++++++-----
Source/ThirdParty/OpenFBX/ofbx.h | 1 +
3 files changed, 55 insertions(+), 19 deletions(-)
diff --git a/Source/Engine/Tools/ModelTool/ModelTool.OpenFBX.cpp b/Source/Engine/Tools/ModelTool/ModelTool.OpenFBX.cpp
index a4eebe830..37b3f45a8 100644
--- a/Source/Engine/Tools/ModelTool/ModelTool.OpenFBX.cpp
+++ b/Source/Engine/Tools/ModelTool/ModelTool.OpenFBX.cpp
@@ -207,7 +207,7 @@ struct OpenFbxImporterData
return false;
}
- int32 AddMaterial(ImportedModelData& result, const ofbx::Material* mat, const Material* instanceOf)
+ int32 AddMaterial(ImportedModelData& result, const ofbx::Material* mat)
{
int32 index = Materials.Find(mat);
if (index == -1)
@@ -542,6 +542,7 @@ bool ProcessMesh(ImportedModelData& result, OpenFbxImporterData& data, const ofb
else
aMaterial = aMesh->getMaterial(0);
}
+
mesh.MaterialSlotIndex = data.AddMaterial(result, aMaterial);
// Vertex positions
diff --git a/Source/Engine/Tools/ModelTool/ModelTool.cpp b/Source/Engine/Tools/ModelTool/ModelTool.cpp
index 103d2187a..e15891a62 100644
--- a/Source/Engine/Tools/ModelTool/ModelTool.cpp
+++ b/Source/Engine/Tools/ModelTool/ModelTool.cpp
@@ -30,6 +30,7 @@
#include "Engine/Tools/TextureTool/TextureTool.h"
#include "Engine/ContentImporters/AssetsImportingManager.h"
#include "Engine/ContentImporters/CreateMaterial.h"
+#include "Engine/ContentImporters/CreateMaterialInstance.h"
#include "Engine/ContentImporters/CreateCollisionData.h"
#include "Editor/Utilities/EditorUtilities.h"
#include
@@ -862,24 +863,57 @@ bool ModelTool::ImportModel(const String& path, ModelData& meshData, Options& op
importedFileNames.Add(filename);
#if COMPILE_WITH_ASSETS_IMPORTER
auto assetPath = autoImportOutput / filename + ASSET_FILES_EXTENSION_WITH_DOT;
- CreateMaterial::Options materialOptions;
- materialOptions.Diffuse.Color = material.Diffuse.Color;
- if (material.Diffuse.TextureIndex != -1)
- materialOptions.Diffuse.Texture = data.Textures[material.Diffuse.TextureIndex].AssetID;
- materialOptions.Diffuse.HasAlphaMask = material.Diffuse.HasAlphaMask;
- materialOptions.Emissive.Color = material.Emissive.Color;
- if (material.Emissive.TextureIndex != -1)
- materialOptions.Emissive.Texture = data.Textures[material.Emissive.TextureIndex].AssetID;
- materialOptions.Opacity.Value = material.Opacity.Value;
- if (material.Opacity.TextureIndex != -1)
- materialOptions.Opacity.Texture = data.Textures[material.Opacity.TextureIndex].AssetID;
- if (material.Normals.TextureIndex != -1)
- materialOptions.Normals.Texture = data.Textures[material.Normals.TextureIndex].AssetID;
- if (material.TwoSided || material.Diffuse.HasAlphaMask)
- materialOptions.Info.CullMode = CullMode::TwoSided;
- if (!Math::IsOne(material.Opacity.Value) || material.Opacity.TextureIndex != -1)
- materialOptions.Info.BlendMode = MaterialBlendMode::Transparent;
- AssetsImportingManager::Create(AssetsImportingManager::CreateMaterialTag, assetPath, material.AssetID, &materialOptions);
+ if (options.ImportMaterialsAsInstances) {
+ LOG(Warning, "Did work poggers");
+ if (AssetsImportingManager::Create(AssetsImportingManager::CreateMaterialInstanceTag, assetPath, material.AssetID))
+ {
+ LOG(Error, "Failed to create material instance.");
+ return true;
+ }
+ else
+ {
+ MaterialInstance* materialInstance = (MaterialInstance*) LoadAsset(material.AssetID, ScriptingTypeHandle());
+ if (materialInstance == nullptr)
+ {
+ LOG(Error, "Failed to find created material instance.");
+ return true;
+ }
+
+ MaterialBase *materialInstanceOf = (MaterialBase*) LoadAsset(options.InstanceToImportAs, ScriptingTypeHandle());
+ if (materialInstanceOf == nullptr)
+ {
+ LOG(Error, "Failed to find the material to create an instance of.");
+ return true;
+ }
+
+ materialInstance->SetBaseMaterial(materialInstanceOf);
+ if (materialInstance->Save())
+ {
+ LOG(Error, "Failed to save the material instance.");
+ return true;
+ }
+ }
+ }
+ else {
+ CreateMaterial::Options materialOptions;
+ materialOptions.Diffuse.Color = material.Diffuse.Color;
+ if (material.Diffuse.TextureIndex != -1)
+ materialOptions.Diffuse.Texture = data.Textures[material.Diffuse.TextureIndex].AssetID;
+ materialOptions.Diffuse.HasAlphaMask = material.Diffuse.HasAlphaMask;
+ materialOptions.Emissive.Color = material.Emissive.Color;
+ if (material.Emissive.TextureIndex != -1)
+ materialOptions.Emissive.Texture = data.Textures[material.Emissive.TextureIndex].AssetID;
+ materialOptions.Opacity.Value = material.Opacity.Value;
+ if (material.Opacity.TextureIndex != -1)
+ materialOptions.Opacity.Texture = data.Textures[material.Opacity.TextureIndex].AssetID;
+ if (material.Normals.TextureIndex != -1)
+ materialOptions.Normals.Texture = data.Textures[material.Normals.TextureIndex].AssetID;
+ if (material.TwoSided || material.Diffuse.HasAlphaMask)
+ materialOptions.Info.CullMode = CullMode::TwoSided;
+ if (!Math::IsOne(material.Opacity.Value) || material.Opacity.TextureIndex != -1)
+ materialOptions.Info.BlendMode = MaterialBlendMode::Transparent;
+ AssetsImportingManager::Create(AssetsImportingManager::CreateMaterialTag, assetPath, material.AssetID, &materialOptions);
+ }
#endif
}
diff --git a/Source/ThirdParty/OpenFBX/ofbx.h b/Source/ThirdParty/OpenFBX/ofbx.h
index 7066659e3..87dd5999f 100644
--- a/Source/ThirdParty/OpenFBX/ofbx.h
+++ b/Source/ThirdParty/OpenFBX/ofbx.h
@@ -1,4 +1,5 @@
#pragma once
+#include
namespace ofbx
From 37fe1154a3a00e6259b14303b415a534e79e662c Mon Sep 17 00:00:00 2001
From: Menotdan <32620310+Menotdan@users.noreply.github.com>
Date: Mon, 22 May 2023 10:12:00 -0400
Subject: [PATCH 4/7] Importing as instances works now
---
Source/Engine/Content/Asset.h | 1 +
Source/Engine/Content/Content.cpp | 5 +++
Source/Engine/Tools/ModelTool/ModelTool.cpp | 40 ++++++++-------------
3 files changed, 20 insertions(+), 26 deletions(-)
diff --git a/Source/Engine/Content/Asset.h b/Source/Engine/Content/Asset.h
index 2d2ba4b3f..0ecc6db3f 100644
--- a/Source/Engine/Content/Asset.h
+++ b/Source/Engine/Content/Asset.h
@@ -246,3 +246,4 @@ public:
// Don't include Content.h but just Load method
extern FLAXENGINE_API Asset* LoadAsset(const Guid& id, const ScriptingTypeHandle& type);
+extern FLAXENGINE_API Asset* LoadAsset(const StringView& path, const ScriptingTypeHandle& type);
diff --git a/Source/Engine/Content/Content.cpp b/Source/Engine/Content/Content.cpp
index e58aa458d..f12619c52 100644
--- a/Source/Engine/Content/Content.cpp
+++ b/Source/Engine/Content/Content.cpp
@@ -449,6 +449,11 @@ FLAXENGINE_API Asset* LoadAsset(const Guid& id, const ScriptingTypeHandle& type)
return Content::LoadAsync(id, type);
}
+FLAXENGINE_API Asset* LoadAsset(const StringView& path, const ScriptingTypeHandle& type)
+{
+ return Content::LoadAsync(path, type);
+}
+
Asset* Content::LoadAsync(const StringView& path, MClass* type)
{
CHECK_RETURN(type, nullptr);
diff --git a/Source/Engine/Tools/ModelTool/ModelTool.cpp b/Source/Engine/Tools/ModelTool/ModelTool.cpp
index e15891a62..c3015ea30 100644
--- a/Source/Engine/Tools/ModelTool/ModelTool.cpp
+++ b/Source/Engine/Tools/ModelTool/ModelTool.cpp
@@ -864,40 +864,28 @@ bool ModelTool::ImportModel(const String& path, ModelData& meshData, Options& op
#if COMPILE_WITH_ASSETS_IMPORTER
auto assetPath = autoImportOutput / filename + ASSET_FILES_EXTENSION_WITH_DOT;
if (options.ImportMaterialsAsInstances) {
- LOG(Warning, "Did work poggers");
- if (AssetsImportingManager::Create(AssetsImportingManager::CreateMaterialInstanceTag, assetPath, material.AssetID))
- {
- LOG(Error, "Failed to create material instance.");
+ LOG(Warning, "Adding material instance for {0}", assetPath);
+
+ AssetsImportingManager::Create(AssetsImportingManager::CreateMaterialInstanceTag, assetPath);
+ MaterialInstance* materialInstance = (MaterialInstance*) LoadAsset(assetPath, MaterialInstance::TypeInitializer);
+ if (materialInstance->WaitForLoaded()) {
+ LOG(Error, "Failed to load material instance after creation. ({0})", assetPath);
return true;
}
- else
- {
- MaterialInstance* materialInstance = (MaterialInstance*) LoadAsset(material.AssetID, ScriptingTypeHandle());
- if (materialInstance == nullptr)
- {
- LOG(Error, "Failed to find created material instance.");
- return true;
- }
- MaterialBase *materialInstanceOf = (MaterialBase*) LoadAsset(options.InstanceToImportAs, ScriptingTypeHandle());
- if (materialInstanceOf == nullptr)
- {
- LOG(Error, "Failed to find the material to create an instance of.");
- return true;
- }
-
- materialInstance->SetBaseMaterial(materialInstanceOf);
- if (materialInstance->Save())
- {
- LOG(Error, "Failed to save the material instance.");
- return true;
- }
+ MaterialBase* materialInstanceOf = (MaterialBase*) LoadAsset(options.InstanceToImportAs, MaterialBase::TypeInitializer);
+ if (materialInstanceOf->WaitForLoaded()) {
+ LOG(Error, "Failed to load material to create an instance of. ({0})", options.InstanceToImportAs);
+ return true;
}
+
+ materialInstance->SetBaseMaterial(materialInstanceOf);
+ materialInstance->Save();
}
else {
CreateMaterial::Options materialOptions;
materialOptions.Diffuse.Color = material.Diffuse.Color;
- if (material.Diffuse.TextureIndex != -1)
+ if (material.Diffuse.TextureIndex != -1)
materialOptions.Diffuse.Texture = data.Textures[material.Diffuse.TextureIndex].AssetID;
materialOptions.Diffuse.HasAlphaMask = material.Diffuse.HasAlphaMask;
materialOptions.Emissive.Color = material.Emissive.Color;
From 4acfffeaf48dcf41e0bef7cf1ab8df4b59b72a61 Mon Sep 17 00:00:00 2001
From: Menotdan <32620310+Menotdan@users.noreply.github.com>
Date: Mon, 22 May 2023 13:51:13 -0400
Subject: [PATCH 5/7] Make it so the material instances get linked to the
material slots.
---
Source/Engine/Tools/ModelTool/ModelTool.cpp | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/Source/Engine/Tools/ModelTool/ModelTool.cpp b/Source/Engine/Tools/ModelTool/ModelTool.cpp
index c3015ea30..d1736e246 100644
--- a/Source/Engine/Tools/ModelTool/ModelTool.cpp
+++ b/Source/Engine/Tools/ModelTool/ModelTool.cpp
@@ -866,7 +866,7 @@ bool ModelTool::ImportModel(const String& path, ModelData& meshData, Options& op
if (options.ImportMaterialsAsInstances) {
LOG(Warning, "Adding material instance for {0}", assetPath);
- AssetsImportingManager::Create(AssetsImportingManager::CreateMaterialInstanceTag, assetPath);
+ AssetsImportingManager::Create(AssetsImportingManager::CreateMaterialInstanceTag, assetPath, material.AssetID);
MaterialInstance* materialInstance = (MaterialInstance*) LoadAsset(assetPath, MaterialInstance::TypeInitializer);
if (materialInstance->WaitForLoaded()) {
LOG(Error, "Failed to load material instance after creation. ({0})", assetPath);
From 284c3d832a9212953777d80ff3c268fcaea43401 Mon Sep 17 00:00:00 2001
From: Menotdan <32620310+Menotdan@users.noreply.github.com>
Date: Mon, 22 May 2023 14:26:20 -0400
Subject: [PATCH 6/7] fix a couple of bugs with importing without material
instances
---
.../Editor/Content/Import/ModelImportEntry.cs | 20 +++++++++++++++++--
Source/Engine/Content/Content.cpp | 2 ++
Source/Engine/Tools/ModelTool/ModelTool.cpp | 14 +++++++------
3 files changed, 28 insertions(+), 8 deletions(-)
diff --git a/Source/Editor/Content/Import/ModelImportEntry.cs b/Source/Editor/Content/Import/ModelImportEntry.cs
index 8bdd7264a..88ace184a 100644
--- a/Source/Editor/Content/Import/ModelImportEntry.cs
+++ b/Source/Editor/Content/Import/ModelImportEntry.cs
@@ -437,6 +437,12 @@ namespace FlaxEditor.Content.Import
internal void ToInternal(out InternalOptions options)
{
+ Guid instanceToImportAsGuid = Guid.Empty;
+ if (InstanceToImportAs != null)
+ {
+ instanceToImportAsGuid = InstanceToImportAs.ID;
+ }
+
options = new InternalOptions
{
Type = Type,
@@ -472,7 +478,7 @@ namespace FlaxEditor.Content.Import
TriangleReduction = TriangleReduction,
ImportMaterials = (byte)(ImportMaterials ? 1 : 0),
ImportMaterialsAsInstances = (byte)(ImportMaterialsAsInstances ? 1 : 0),
- InstanceToImportAs = InstanceToImportAs.ID,
+ InstanceToImportAs = instanceToImportAsGuid,
ImportTextures = (byte)(ImportTextures ? 1 : 0),
RestoreMaterialsOnReimport = (byte)(RestoreMaterialsOnReimport ? 1 : 0),
GenerateSDF = (byte)(GenerateSDF ? 1 : 0),
@@ -484,6 +490,16 @@ namespace FlaxEditor.Content.Import
internal void FromInternal(ref InternalOptions options)
{
+ Material instanceToImportAsMat = null;
+ if (options.InstanceToImportAs != Guid.Empty)
+ {
+ AssetInfo assetInfo;
+ if (FlaxEngine.Content.GetAssetInfo(options.InstanceToImportAs, out assetInfo))
+ {
+ instanceToImportAsMat = FlaxEngine.Content.Load(options.InstanceToImportAs);
+ }
+ }
+
Type = options.Type;
CalculateNormals = options.CalculateNormals != 0;
SmoothingNormalsAngle = options.SmoothingNormalsAngle;
@@ -516,7 +532,7 @@ namespace FlaxEditor.Content.Import
TriangleReduction = options.TriangleReduction;
ImportMaterials = options.ImportMaterials != 0;
ImportMaterialsAsInstances = options.ImportMaterialsAsInstances != 0;
- InstanceToImportAs = FlaxEngine.Content.Load(options.InstanceToImportAs);
+ InstanceToImportAs = instanceToImportAsMat;
ImportTextures = options.ImportTextures != 0;
RestoreMaterialsOnReimport = options.RestoreMaterialsOnReimport != 0;
GenerateSDF = options.GenerateSDF != 0;
diff --git a/Source/Engine/Content/Content.cpp b/Source/Engine/Content/Content.cpp
index f12619c52..d4015da7b 100644
--- a/Source/Engine/Content/Content.cpp
+++ b/Source/Engine/Content/Content.cpp
@@ -30,6 +30,7 @@
#if ENABLE_ASSETS_DISCOVERY
#include "Engine/Core/Collections/HashSet.h"
#endif
+#include
TimeSpan Content::AssetsUpdateInterval = TimeSpan::FromMilliseconds(500);
TimeSpan Content::AssetsUnloadInterval = TimeSpan::FromSeconds(10);
@@ -1003,6 +1004,7 @@ Asset* Content::load(const Guid& id, const ScriptingTypeHandle& type, AssetInfo&
if (!GetAssetInfo(id, assetInfo))
{
LOG(Warning, "Invalid or missing asset ({0}, {1}).", id.ToString(Guid::FormatType::N), type.ToString());
+ LOG(Warning, "{0}", DebugLog::GetStackTrace());
return nullptr;
}
diff --git a/Source/Engine/Tools/ModelTool/ModelTool.cpp b/Source/Engine/Tools/ModelTool/ModelTool.cpp
index d1736e246..d5e5ebb10 100644
--- a/Source/Engine/Tools/ModelTool/ModelTool.cpp
+++ b/Source/Engine/Tools/ModelTool/ModelTool.cpp
@@ -863,18 +863,19 @@ bool ModelTool::ImportModel(const String& path, ModelData& meshData, Options& op
importedFileNames.Add(filename);
#if COMPILE_WITH_ASSETS_IMPORTER
auto assetPath = autoImportOutput / filename + ASSET_FILES_EXTENSION_WITH_DOT;
- if (options.ImportMaterialsAsInstances) {
- LOG(Warning, "Adding material instance for {0}", assetPath);
-
+ if (options.ImportMaterialsAsInstances)
+ {
AssetsImportingManager::Create(AssetsImportingManager::CreateMaterialInstanceTag, assetPath, material.AssetID);
MaterialInstance* materialInstance = (MaterialInstance*) LoadAsset(assetPath, MaterialInstance::TypeInitializer);
- if (materialInstance->WaitForLoaded()) {
+ if (materialInstance->WaitForLoaded())
+ {
LOG(Error, "Failed to load material instance after creation. ({0})", assetPath);
return true;
}
MaterialBase* materialInstanceOf = (MaterialBase*) LoadAsset(options.InstanceToImportAs, MaterialBase::TypeInitializer);
- if (materialInstanceOf->WaitForLoaded()) {
+ if (materialInstanceOf->WaitForLoaded())
+ {
LOG(Error, "Failed to load material to create an instance of. ({0})", options.InstanceToImportAs);
return true;
}
@@ -882,7 +883,8 @@ bool ModelTool::ImportModel(const String& path, ModelData& meshData, Options& op
materialInstance->SetBaseMaterial(materialInstanceOf);
materialInstance->Save();
}
- else {
+ else
+ {
CreateMaterial::Options materialOptions;
materialOptions.Diffuse.Color = material.Diffuse.Color;
if (material.Diffuse.TextureIndex != -1)
From e3f004b831f5906b4867bd7dfea8a12b9e5c890c Mon Sep 17 00:00:00 2001
From: Menotdan <32620310+Menotdan@users.noreply.github.com>
Date: Mon, 22 May 2023 14:26:55 -0400
Subject: [PATCH 7/7] remove extraneous stack trace print that i used for
debugging
---
Source/Engine/Content/Content.cpp | 1 -
1 file changed, 1 deletion(-)
diff --git a/Source/Engine/Content/Content.cpp b/Source/Engine/Content/Content.cpp
index d4015da7b..026ae821c 100644
--- a/Source/Engine/Content/Content.cpp
+++ b/Source/Engine/Content/Content.cpp
@@ -1004,7 +1004,6 @@ Asset* Content::load(const Guid& id, const ScriptingTypeHandle& type, AssetInfo&
if (!GetAssetInfo(id, assetInfo))
{
LOG(Warning, "Invalid or missing asset ({0}, {1}).", id.ToString(Guid::FormatType::N), type.ToString());
- LOG(Warning, "{0}", DebugLog::GetStackTrace());
return nullptr;
}