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")
|
||||
{
|
||||
System.IO.File.WriteAllText(FileName, YamlFmaa.ToYaml(FileName, this));
|
||||
System.IO.File.WriteAllText(FileName, YamlFmaa.ToYaml(FileName, MaterialAnim));
|
||||
}
|
||||
}
|
||||
public override void Replace(string FileName)
|
||||
|
@ -225,9 +225,23 @@ namespace Bfres.Structs
|
||||
public override string ExportFilter => FileFilters.GetFilter(typeof(FTXP));
|
||||
|
||||
public override void Export(string FileName)
|
||||
{
|
||||
string ext = Utils.GetExtension(FileName);
|
||||
if (ext == ".bftxp")
|
||||
{
|
||||
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) {
|
||||
Replace(FileName, GetResFile());
|
||||
@ -239,10 +253,25 @@ namespace Bfres.Structs
|
||||
|
||||
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.Name = Text;
|
||||
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")
|
||||
{
|
||||
BFRESGroupNode ftexFolder = PluginRuntime.ftexContainers[0];
|
||||
|
@ -131,6 +131,51 @@ namespace FirstPlugin
|
||||
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)
|
||||
{
|
||||
//Different versions use different lists
|
||||
|
@ -35,7 +35,7 @@ namespace FirstPlugin
|
||||
|
||||
public static string FCLH = GetFilter(".bfcsh");
|
||||
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 FBNV = GetFilter(".bfbvi");
|
||||
public static string FSCN = GetFilter(".bfscn");
|
||||
@ -134,6 +134,7 @@ namespace FirstPlugin
|
||||
case ".chr0": filters.Add(ext, "CHR0 Animation"); break;
|
||||
case ".anim": filters.Add(ext, "Maya Animation"); break;
|
||||
case ".yaml": filters.Add(ext, "Yet Another Markup Language"); break;
|
||||
case ".gif": filters.Add(ext, "Graphics Interchange Format"); break;
|
||||
default:
|
||||
filters.Add(ext, ""); break;
|
||||
}
|
||||
|
@ -308,7 +308,7 @@ namespace FirstPlugin
|
||||
return config.FromYaml();
|
||||
}
|
||||
|
||||
public static string ToYaml(string Name, FMAA anim)
|
||||
public static string ToYaml(string Name, MaterialAnim MatAnim)
|
||||
{
|
||||
var serializerSettings = new SerializerSettings()
|
||||
{
|
||||
@ -319,7 +319,6 @@ namespace FirstPlugin
|
||||
serializerSettings.ComparerForKeySorting = null;
|
||||
serializerSettings.RegisterTagMapping("AnimConfig", typeof(AnimConfig));
|
||||
|
||||
var MatAnim = anim.MaterialAnim;
|
||||
var config = new AnimConfig();
|
||||
config.ToYaml(MatAnim);
|
||||
|
||||
|
Binary file not shown.
Binary file not shown.
Loading…
Reference in New Issue
Block a user