Convert wii u and switch texture pattern animations
This commit is contained in:
parent
3312f5ab00
commit
a08d878d45
Binary file not shown.
Binary file not shown.
Binary file not shown.
@ -720,7 +720,7 @@ namespace Bfres.Structs
|
|||||||
}
|
}
|
||||||
else if (ext == ".yaml")
|
else if (ext == ".yaml")
|
||||||
{
|
{
|
||||||
System.IO.File.WriteAllText(FileName, YamlFmaa.ToYaml(FileName, this));
|
System.IO.File.WriteAllText(FileName, YamlFmaa.ToYaml(FileName, MaterialAnim));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
public override void Replace(string FileName)
|
public override void Replace(string FileName)
|
||||||
|
@ -225,9 +225,23 @@ namespace Bfres.Structs
|
|||||||
public override string ExportFilter => FileFilters.GetFilter(typeof(FTXP));
|
public override string ExportFilter => FileFilters.GetFilter(typeof(FTXP));
|
||||||
|
|
||||||
public override void Export(string FileName)
|
public override void Export(string FileName)
|
||||||
|
{
|
||||||
|
string ext = Utils.GetExtension(FileName);
|
||||||
|
if (ext == ".bftxp")
|
||||||
{
|
{
|
||||||
TexPatternAnim.Export(FileName, GetResFile());
|
TexPatternAnim.Export(FileName, GetResFile());
|
||||||
}
|
}
|
||||||
|
else if (ext == ".bfmaa")
|
||||||
|
{
|
||||||
|
var fmaa = BfresPlatformConverter.FTXPConvertWiiUToSwitch(TexPatternAnim);
|
||||||
|
fmaa.Export(FileName, new Syroot.NintenTools.NSW.Bfres.ResFile());
|
||||||
|
}
|
||||||
|
else if (ext == ".yaml")
|
||||||
|
{
|
||||||
|
var yaml = YamlFmaa.ToYaml(FileName, BfresPlatformConverter.FTXPConvertWiiUToSwitch(TexPatternAnim));
|
||||||
|
System.IO.File.WriteAllText(FileName, yaml);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
public override void Replace(string FileName) {
|
public override void Replace(string FileName) {
|
||||||
Replace(FileName, GetResFile());
|
Replace(FileName, GetResFile());
|
||||||
@ -239,10 +253,25 @@ namespace Bfres.Structs
|
|||||||
|
|
||||||
if (ext == ".bftxp")
|
if (ext == ".bftxp")
|
||||||
{
|
{
|
||||||
|
bool IsSwitch = BfresUtilies.IsSubSectionSwitch(FileName);
|
||||||
|
if (IsSwitch)
|
||||||
|
{
|
||||||
|
var fmaa = new Syroot.NintenTools.NSW.Bfres.MaterialAnim();
|
||||||
|
fmaa.Import(FileName);
|
||||||
|
TexPatternAnim = BfresPlatformConverter.FTXPConvertSwitchToWiiU(fmaa);
|
||||||
|
}
|
||||||
|
else
|
||||||
TexPatternAnim.Import(FileName, resFile);
|
TexPatternAnim.Import(FileName, resFile);
|
||||||
|
|
||||||
TexPatternAnim.Name = Text;
|
TexPatternAnim.Name = Text;
|
||||||
LoadAnim(TexPatternAnim);
|
LoadAnim(TexPatternAnim);
|
||||||
}
|
}
|
||||||
|
else if (ext == ".yaml")
|
||||||
|
{
|
||||||
|
var fmaa = new Syroot.NintenTools.NSW.Bfres.MaterialAnim();
|
||||||
|
fmaa = YamlFmaa.FromYaml(FileName);
|
||||||
|
TexPatternAnim = BfresPlatformConverter.FTXPConvertSwitchToWiiU(fmaa);
|
||||||
|
}
|
||||||
else if (ext == ".gif")
|
else if (ext == ".gif")
|
||||||
{
|
{
|
||||||
BFRESGroupNode ftexFolder = PluginRuntime.ftexContainers[0];
|
BFRESGroupNode ftexFolder = PluginRuntime.ftexContainers[0];
|
||||||
|
@ -131,6 +131,51 @@ namespace FirstPlugin
|
|||||||
return matAnim;
|
return matAnim;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static ResU.TexPatternAnim FTXPConvertSwitchToWiiU(ResNX.MaterialAnim materialAnim)
|
||||||
|
{
|
||||||
|
var texPatternAnim = new ResU.TexPatternAnim();
|
||||||
|
|
||||||
|
//Different versions use different lists
|
||||||
|
if (texPatternAnim.TextureRefNames == null)
|
||||||
|
texPatternAnim.TextureRefNames = new List<ResU.TextureRef>();
|
||||||
|
if (texPatternAnim.TextureRefs == null)
|
||||||
|
texPatternAnim.TextureRefs = new ResU.ResDict<ResU.TextureRef>();
|
||||||
|
|
||||||
|
texPatternAnim.Name = materialAnim.Name;
|
||||||
|
texPatternAnim.Path = materialAnim.Path;
|
||||||
|
texPatternAnim.BindIndices = materialAnim.BindIndices;
|
||||||
|
|
||||||
|
//Fill both lists. On save only one will be used depending on version
|
||||||
|
foreach (var texName in materialAnim.TextureNames)
|
||||||
|
{
|
||||||
|
texPatternAnim.TextureRefNames.Add(new ResU.TextureRef() { Name = texName });
|
||||||
|
texPatternAnim.TextureRefs.Add(texName, new ResU.TextureRef() { Name = texName });
|
||||||
|
}
|
||||||
|
|
||||||
|
for (int m = 0; m < materialAnim.MaterialAnimDataList.Count; m++)
|
||||||
|
{
|
||||||
|
ResU.TexPatternMatAnim matAnimData = new ResU.TexPatternMatAnim();
|
||||||
|
matAnimData.Name = materialAnim.MaterialAnimDataList[m].Name;
|
||||||
|
matAnimData.Curves = ConvertAnimCurveSwitchToWiiU(materialAnim.MaterialAnimDataList[m].Curves);
|
||||||
|
|
||||||
|
foreach (var constants in materialAnim.MaterialAnimDataList[m].Constants)
|
||||||
|
{
|
||||||
|
matAnimData.BaseDataList.Add((ushort)(int)constants.Value);
|
||||||
|
}
|
||||||
|
|
||||||
|
foreach (var patternInfoNX in materialAnim.MaterialAnimDataList[m].TexturePatternAnimInfos)
|
||||||
|
{
|
||||||
|
var patternInfoU = new ResU.PatternAnimInfo();
|
||||||
|
patternInfoU.Name = patternInfoNX.Name;
|
||||||
|
patternInfoU.CurveIndex = (sbyte)patternInfoNX.CurveIndex;
|
||||||
|
patternInfoU.SubBindIndex = patternInfoNX.SubBindIndex;
|
||||||
|
matAnimData.PatternAnimInfos.Add(patternInfoU);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return texPatternAnim;
|
||||||
|
}
|
||||||
|
|
||||||
public static ResNX.MaterialAnim FTXPConvertWiiUToSwitch(ResU.TexPatternAnim texPatternAnim)
|
public static ResNX.MaterialAnim FTXPConvertWiiUToSwitch(ResU.TexPatternAnim texPatternAnim)
|
||||||
{
|
{
|
||||||
//Different versions use different lists
|
//Different versions use different lists
|
||||||
|
@ -35,7 +35,7 @@ namespace FirstPlugin
|
|||||||
|
|
||||||
public static string FCLH = GetFilter(".bfcsh");
|
public static string FCLH = GetFilter(".bfcsh");
|
||||||
public static string FSTH = GetFilter(".bfsth");
|
public static string FSTH = GetFilter(".bfsth");
|
||||||
public static string FTXP = GetFilter(".bftxp", ".gif");
|
public static string FTXP = GetFilter(".bftxp", ".yaml", ".gif");
|
||||||
public static string FMTV = GetFilter(".bfmvi");
|
public static string FMTV = GetFilter(".bfmvi");
|
||||||
public static string FBNV = GetFilter(".bfbvi");
|
public static string FBNV = GetFilter(".bfbvi");
|
||||||
public static string FSCN = GetFilter(".bfscn");
|
public static string FSCN = GetFilter(".bfscn");
|
||||||
@ -134,6 +134,7 @@ namespace FirstPlugin
|
|||||||
case ".chr0": filters.Add(ext, "CHR0 Animation"); break;
|
case ".chr0": filters.Add(ext, "CHR0 Animation"); break;
|
||||||
case ".anim": filters.Add(ext, "Maya Animation"); break;
|
case ".anim": filters.Add(ext, "Maya Animation"); break;
|
||||||
case ".yaml": filters.Add(ext, "Yet Another Markup Language"); break;
|
case ".yaml": filters.Add(ext, "Yet Another Markup Language"); break;
|
||||||
|
case ".gif": filters.Add(ext, "Graphics Interchange Format"); break;
|
||||||
default:
|
default:
|
||||||
filters.Add(ext, ""); break;
|
filters.Add(ext, ""); break;
|
||||||
}
|
}
|
||||||
|
@ -308,7 +308,7 @@ namespace FirstPlugin
|
|||||||
return config.FromYaml();
|
return config.FromYaml();
|
||||||
}
|
}
|
||||||
|
|
||||||
public static string ToYaml(string Name, FMAA anim)
|
public static string ToYaml(string Name, MaterialAnim MatAnim)
|
||||||
{
|
{
|
||||||
var serializerSettings = new SerializerSettings()
|
var serializerSettings = new SerializerSettings()
|
||||||
{
|
{
|
||||||
@ -319,7 +319,6 @@ namespace FirstPlugin
|
|||||||
serializerSettings.ComparerForKeySorting = null;
|
serializerSettings.ComparerForKeySorting = null;
|
||||||
serializerSettings.RegisterTagMapping("AnimConfig", typeof(AnimConfig));
|
serializerSettings.RegisterTagMapping("AnimConfig", typeof(AnimConfig));
|
||||||
|
|
||||||
var MatAnim = anim.MaterialAnim;
|
|
||||||
var config = new AnimConfig();
|
var config = new AnimConfig();
|
||||||
config.ToYaml(MatAnim);
|
config.ToYaml(MatAnim);
|
||||||
|
|
||||||
|
Binary file not shown.
Binary file not shown.
Loading…
Reference in New Issue
Block a user