Figured out where I actually need to add code, and added code there.
This commit is contained in:
@@ -207,7 +207,7 @@ struct OpenFbxImporterData
|
|||||||
return false;
|
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);
|
int32 index = Materials.Find(mat);
|
||||||
if (index == -1)
|
if (index == -1)
|
||||||
@@ -542,6 +542,7 @@ bool ProcessMesh(ImportedModelData& result, OpenFbxImporterData& data, const ofb
|
|||||||
else
|
else
|
||||||
aMaterial = aMesh->getMaterial(0);
|
aMaterial = aMesh->getMaterial(0);
|
||||||
}
|
}
|
||||||
|
|
||||||
mesh.MaterialSlotIndex = data.AddMaterial(result, aMaterial);
|
mesh.MaterialSlotIndex = data.AddMaterial(result, aMaterial);
|
||||||
|
|
||||||
// Vertex positions
|
// Vertex positions
|
||||||
|
|||||||
@@ -30,6 +30,7 @@
|
|||||||
#include "Engine/Tools/TextureTool/TextureTool.h"
|
#include "Engine/Tools/TextureTool/TextureTool.h"
|
||||||
#include "Engine/ContentImporters/AssetsImportingManager.h"
|
#include "Engine/ContentImporters/AssetsImportingManager.h"
|
||||||
#include "Engine/ContentImporters/CreateMaterial.h"
|
#include "Engine/ContentImporters/CreateMaterial.h"
|
||||||
|
#include "Engine/ContentImporters/CreateMaterialInstance.h"
|
||||||
#include "Engine/ContentImporters/CreateCollisionData.h"
|
#include "Engine/ContentImporters/CreateCollisionData.h"
|
||||||
#include "Editor/Utilities/EditorUtilities.h"
|
#include "Editor/Utilities/EditorUtilities.h"
|
||||||
#include <ThirdParty/meshoptimizer/meshoptimizer.h>
|
#include <ThirdParty/meshoptimizer/meshoptimizer.h>
|
||||||
@@ -862,6 +863,38 @@ 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) {
|
||||||
|
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;
|
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)
|
||||||
@@ -880,6 +913,7 @@ bool ModelTool::ImportModel(const String& path, ModelData& meshData, Options& op
|
|||||||
if (!Math::IsOne(material.Opacity.Value) || material.Opacity.TextureIndex != -1)
|
if (!Math::IsOne(material.Opacity.Value) || material.Opacity.TextureIndex != -1)
|
||||||
materialOptions.Info.BlendMode = MaterialBlendMode::Transparent;
|
materialOptions.Info.BlendMode = MaterialBlendMode::Transparent;
|
||||||
AssetsImportingManager::Create(AssetsImportingManager::CreateMaterialTag, assetPath, material.AssetID, &materialOptions);
|
AssetsImportingManager::Create(AssetsImportingManager::CreateMaterialTag, assetPath, material.AssetID, &materialOptions);
|
||||||
|
}
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
1
Source/ThirdParty/OpenFBX/ofbx.h
vendored
1
Source/ThirdParty/OpenFBX/ofbx.h
vendored
@@ -1,4 +1,5 @@
|
|||||||
#pragma once
|
#pragma once
|
||||||
|
#include <Engine/Core/Types/Guid.h>
|
||||||
|
|
||||||
|
|
||||||
namespace ofbx
|
namespace ofbx
|
||||||
|
|||||||
Reference in New Issue
Block a user