Export bfres files as model containers on batch exporting.
This commit is contained in:
parent
2e71d8056c
commit
3d32e44e73
@ -20,7 +20,7 @@ using OpenTK;
|
|||||||
|
|
||||||
namespace FirstPlugin
|
namespace FirstPlugin
|
||||||
{
|
{
|
||||||
public class BFRES : BFRESWrapper, IFileFormat, ITextureContainer, IExportableModel
|
public class BFRES : BFRESWrapper, IFileFormat, ITextureContainer, IExportableModelContainer
|
||||||
{
|
{
|
||||||
public FileType FileType { get; set; } = FileType.Resource;
|
public FileType FileType { get; set; } = FileType.Resource;
|
||||||
|
|
||||||
@ -58,25 +58,13 @@ namespace FirstPlugin
|
|||||||
set { }
|
set { }
|
||||||
}
|
}
|
||||||
|
|
||||||
public IEnumerable<STGenericObject> ExportableMeshes => BFRESRender.Meshes;
|
public IEnumerable<STGenericModel> ExportableModels
|
||||||
|
{
|
||||||
|
get { return BFRESRender.models; }
|
||||||
|
}
|
||||||
|
|
||||||
public IEnumerable<STGenericMaterial> ExportableMaterials
|
|
||||||
{
|
|
||||||
get
|
|
||||||
{
|
|
||||||
List<FMAT> materials = new List<FMAT>();
|
|
||||||
foreach (var model in BFRESRender.models)
|
|
||||||
materials.AddRange(model.materials.Values);
|
|
||||||
return materials;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
public IEnumerable<STGenericTexture> ExportableTextures => TextureList;
|
public IEnumerable<STGenericTexture> ExportableTextures => TextureList;
|
||||||
|
|
||||||
public STSkeleton ExportableSkeleton
|
|
||||||
{
|
|
||||||
get { return BFRESRender.models[0].Skeleton; }
|
|
||||||
}
|
|
||||||
|
|
||||||
public override string ExportFilter => Utils.GetAllFilters(new BFRES());
|
public override string ExportFilter => Utils.GetAllFilters(new BFRES());
|
||||||
|
|
||||||
//Stores the skeleton and models in this
|
//Stores the skeleton and models in this
|
||||||
|
@ -1356,6 +1356,8 @@ namespace Bfres.Structs
|
|||||||
bn.UserDataDict = new ResDict();
|
bn.UserDataDict = new ResDict();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public override STSkeleton GenericSkeleton => Skeleton;
|
||||||
|
|
||||||
public FSKL Skeleton
|
public FSKL Skeleton
|
||||||
{
|
{
|
||||||
get
|
get
|
||||||
|
@ -20,6 +20,8 @@ namespace Toolbox.Library
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public virtual STSkeleton GenericSkeleton { get; set; }
|
||||||
|
|
||||||
private IEnumerable<STGenericMaterial> _materials;
|
private IEnumerable<STGenericMaterial> _materials;
|
||||||
private IEnumerable<STGenericObject> _objects;
|
private IEnumerable<STGenericObject> _objects;
|
||||||
|
|
||||||
|
@ -0,0 +1,14 @@
|
|||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Text;
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
|
||||||
|
namespace Toolbox.Library
|
||||||
|
{
|
||||||
|
public interface IExportableModelContainer
|
||||||
|
{
|
||||||
|
IEnumerable<STGenericModel> ExportableModels { get; }
|
||||||
|
IEnumerable<STGenericTexture> ExportableTextures { get; }
|
||||||
|
}
|
||||||
|
}
|
@ -412,6 +412,7 @@
|
|||||||
<Compile Include="Interfaces\IArchiveQuickAccess.cs" />
|
<Compile Include="Interfaces\IArchiveQuickAccess.cs" />
|
||||||
<Compile Include="Interfaces\IMainForm.cs" />
|
<Compile Include="Interfaces\IMainForm.cs" />
|
||||||
<Compile Include="Interfaces\IMdiContainer.cs" />
|
<Compile Include="Interfaces\IMdiContainer.cs" />
|
||||||
|
<Compile Include="Interfaces\ModelData\IExportableModelContainer.cs" />
|
||||||
<Compile Include="Interfaces\ModelData\IExportableModel.cs" />
|
<Compile Include="Interfaces\ModelData\IExportableModel.cs" />
|
||||||
<Compile Include="Interfaces\Textures\ITextureIconLoader.cs" />
|
<Compile Include="Interfaces\Textures\ITextureIconLoader.cs" />
|
||||||
<Compile Include="Interfaces\Utility\ICloneableNode.cs" />
|
<Compile Include="Interfaces\Utility\ICloneableNode.cs" />
|
||||||
|
@ -1495,6 +1495,28 @@ namespace Toolbox
|
|||||||
ExportTexture(tex, settings, $"{outputFolder}/{tex.Text}", extension);
|
ExportTexture(tex, settings, $"{outputFolder}/{tex.Text}", extension);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
else if (fileFormat is IExportableModelContainer && exportMode == ExportMode.Models)
|
||||||
|
{
|
||||||
|
string name = fileFormat.FileName.Split('.').FirstOrDefault();
|
||||||
|
if (settings.SeperateTextureContainers)
|
||||||
|
outputFolder = Path.Combine(outputFolder, name);
|
||||||
|
|
||||||
|
if (!Directory.Exists(outputFolder))
|
||||||
|
Directory.CreateDirectory(outputFolder);
|
||||||
|
|
||||||
|
DAE.ExportSettings daesettings = new DAE.ExportSettings();
|
||||||
|
daesettings.SuppressConfirmDialog = true;
|
||||||
|
|
||||||
|
var textures = ((IExportableModelContainer)fileFormat).ExportableTextures.ToList();
|
||||||
|
foreach (var model in ((IExportableModelContainer)fileFormat).ExportableModels)
|
||||||
|
{
|
||||||
|
string path = $"{outputFolder}/{model.Text}";
|
||||||
|
path = Utils.RenameDuplicateString(batchExportFileList, path, 0, 3);
|
||||||
|
|
||||||
|
DAE.Export($"{path}.{extension}", daesettings, model, textures, model.GenericSkeleton);
|
||||||
|
batchExportFileList.Add(path);
|
||||||
|
}
|
||||||
|
}
|
||||||
else if (fileFormat is IExportableModel && exportMode == ExportMode.Models)
|
else if (fileFormat is IExportableModel && exportMode == ExportMode.Models)
|
||||||
{
|
{
|
||||||
string name = fileFormat.FileName.Split('.').FirstOrDefault();
|
string name = fileFormat.FileName.Split('.').FirstOrDefault();
|
||||||
|
Loading…
Reference in New Issue
Block a user