fix a couple of bugs with importing without material instances
This commit is contained in:
@@ -437,6 +437,12 @@ namespace FlaxEditor.Content.Import
|
|||||||
|
|
||||||
internal void ToInternal(out InternalOptions options)
|
internal void ToInternal(out InternalOptions options)
|
||||||
{
|
{
|
||||||
|
Guid instanceToImportAsGuid = Guid.Empty;
|
||||||
|
if (InstanceToImportAs != null)
|
||||||
|
{
|
||||||
|
instanceToImportAsGuid = InstanceToImportAs.ID;
|
||||||
|
}
|
||||||
|
|
||||||
options = new InternalOptions
|
options = new InternalOptions
|
||||||
{
|
{
|
||||||
Type = Type,
|
Type = Type,
|
||||||
@@ -472,7 +478,7 @@ namespace FlaxEditor.Content.Import
|
|||||||
TriangleReduction = TriangleReduction,
|
TriangleReduction = TriangleReduction,
|
||||||
ImportMaterials = (byte)(ImportMaterials ? 1 : 0),
|
ImportMaterials = (byte)(ImportMaterials ? 1 : 0),
|
||||||
ImportMaterialsAsInstances = (byte)(ImportMaterialsAsInstances ? 1 : 0),
|
ImportMaterialsAsInstances = (byte)(ImportMaterialsAsInstances ? 1 : 0),
|
||||||
InstanceToImportAs = InstanceToImportAs.ID,
|
InstanceToImportAs = instanceToImportAsGuid,
|
||||||
ImportTextures = (byte)(ImportTextures ? 1 : 0),
|
ImportTextures = (byte)(ImportTextures ? 1 : 0),
|
||||||
RestoreMaterialsOnReimport = (byte)(RestoreMaterialsOnReimport ? 1 : 0),
|
RestoreMaterialsOnReimport = (byte)(RestoreMaterialsOnReimport ? 1 : 0),
|
||||||
GenerateSDF = (byte)(GenerateSDF ? 1 : 0),
|
GenerateSDF = (byte)(GenerateSDF ? 1 : 0),
|
||||||
@@ -484,6 +490,16 @@ namespace FlaxEditor.Content.Import
|
|||||||
|
|
||||||
internal void FromInternal(ref InternalOptions options)
|
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<Material>(options.InstanceToImportAs);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
Type = options.Type;
|
Type = options.Type;
|
||||||
CalculateNormals = options.CalculateNormals != 0;
|
CalculateNormals = options.CalculateNormals != 0;
|
||||||
SmoothingNormalsAngle = options.SmoothingNormalsAngle;
|
SmoothingNormalsAngle = options.SmoothingNormalsAngle;
|
||||||
@@ -516,7 +532,7 @@ namespace FlaxEditor.Content.Import
|
|||||||
TriangleReduction = options.TriangleReduction;
|
TriangleReduction = options.TriangleReduction;
|
||||||
ImportMaterials = options.ImportMaterials != 0;
|
ImportMaterials = options.ImportMaterials != 0;
|
||||||
ImportMaterialsAsInstances = options.ImportMaterialsAsInstances != 0;
|
ImportMaterialsAsInstances = options.ImportMaterialsAsInstances != 0;
|
||||||
InstanceToImportAs = FlaxEngine.Content.Load<Material>(options.InstanceToImportAs);
|
InstanceToImportAs = instanceToImportAsMat;
|
||||||
ImportTextures = options.ImportTextures != 0;
|
ImportTextures = options.ImportTextures != 0;
|
||||||
RestoreMaterialsOnReimport = options.RestoreMaterialsOnReimport != 0;
|
RestoreMaterialsOnReimport = options.RestoreMaterialsOnReimport != 0;
|
||||||
GenerateSDF = options.GenerateSDF != 0;
|
GenerateSDF = options.GenerateSDF != 0;
|
||||||
|
|||||||
@@ -30,6 +30,7 @@
|
|||||||
#if ENABLE_ASSETS_DISCOVERY
|
#if ENABLE_ASSETS_DISCOVERY
|
||||||
#include "Engine/Core/Collections/HashSet.h"
|
#include "Engine/Core/Collections/HashSet.h"
|
||||||
#endif
|
#endif
|
||||||
|
#include <Engine/Debug/DebugLog.h>
|
||||||
|
|
||||||
TimeSpan Content::AssetsUpdateInterval = TimeSpan::FromMilliseconds(500);
|
TimeSpan Content::AssetsUpdateInterval = TimeSpan::FromMilliseconds(500);
|
||||||
TimeSpan Content::AssetsUnloadInterval = TimeSpan::FromSeconds(10);
|
TimeSpan Content::AssetsUnloadInterval = TimeSpan::FromSeconds(10);
|
||||||
@@ -1003,6 +1004,7 @@ Asset* Content::load(const Guid& id, const ScriptingTypeHandle& type, AssetInfo&
|
|||||||
if (!GetAssetInfo(id, assetInfo))
|
if (!GetAssetInfo(id, assetInfo))
|
||||||
{
|
{
|
||||||
LOG(Warning, "Invalid or missing asset ({0}, {1}).", id.ToString(Guid::FormatType::N), type.ToString());
|
LOG(Warning, "Invalid or missing asset ({0}, {1}).", id.ToString(Guid::FormatType::N), type.ToString());
|
||||||
|
LOG(Warning, "{0}", DebugLog::GetStackTrace());
|
||||||
return nullptr;
|
return nullptr;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -863,18 +863,19 @@ bool ModelTool::ImportModel(const String& path, ModelData& meshData, Options& op
|
|||||||
importedFileNames.Add(filename);
|
importedFileNames.Add(filename);
|
||||||
#if COMPILE_WITH_ASSETS_IMPORTER
|
#if COMPILE_WITH_ASSETS_IMPORTER
|
||||||
auto assetPath = autoImportOutput / filename + ASSET_FILES_EXTENSION_WITH_DOT;
|
auto assetPath = autoImportOutput / filename + ASSET_FILES_EXTENSION_WITH_DOT;
|
||||||
if (options.ImportMaterialsAsInstances) {
|
if (options.ImportMaterialsAsInstances)
|
||||||
LOG(Warning, "Adding material instance for {0}", assetPath);
|
{
|
||||||
|
|
||||||
AssetsImportingManager::Create(AssetsImportingManager::CreateMaterialInstanceTag, assetPath, material.AssetID);
|
AssetsImportingManager::Create(AssetsImportingManager::CreateMaterialInstanceTag, assetPath, material.AssetID);
|
||||||
MaterialInstance* materialInstance = (MaterialInstance*) LoadAsset(assetPath, MaterialInstance::TypeInitializer);
|
MaterialInstance* materialInstance = (MaterialInstance*) LoadAsset(assetPath, MaterialInstance::TypeInitializer);
|
||||||
if (materialInstance->WaitForLoaded()) {
|
if (materialInstance->WaitForLoaded())
|
||||||
|
{
|
||||||
LOG(Error, "Failed to load material instance after creation. ({0})", assetPath);
|
LOG(Error, "Failed to load material instance after creation. ({0})", assetPath);
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
MaterialBase* materialInstanceOf = (MaterialBase*) LoadAsset(options.InstanceToImportAs, MaterialBase::TypeInitializer);
|
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);
|
LOG(Error, "Failed to load material to create an instance of. ({0})", options.InstanceToImportAs);
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
@@ -882,7 +883,8 @@ bool ModelTool::ImportModel(const String& path, ModelData& meshData, Options& op
|
|||||||
materialInstance->SetBaseMaterial(materialInstanceOf);
|
materialInstance->SetBaseMaterial(materialInstanceOf);
|
||||||
materialInstance->Save();
|
materialInstance->Save();
|
||||||
}
|
}
|
||||||
else {
|
else
|
||||||
|
{
|
||||||
CreateMaterial::Options materialOptions;
|
CreateMaterial::Options materialOptions;
|
||||||
materialOptions.Diffuse.Color = material.Diffuse.Color;
|
materialOptions.Diffuse.Color = material.Diffuse.Color;
|
||||||
if (material.Diffuse.TextureIndex != -1)
|
if (material.Diffuse.TextureIndex != -1)
|
||||||
|
|||||||
Reference in New Issue
Block a user