private bool LoadAnimation() { string path = FileSystem.Normalize(Path.Combine(label.install_path, "anim")); if (!System.IO.Directory.Exists(path)) { return(false); } int num = 0; DirectoryInfo directoryInfo = new DirectoryInfo(path); DirectoryInfo[] directories = directoryInfo.GetDirectories(); foreach (DirectoryInfo directoryInfo2 in directories) { DirectoryInfo[] directories2 = directoryInfo2.GetDirectories(); foreach (DirectoryInfo directoryInfo3 in directories2) { KAnimFile.Mod mod = new KAnimFile.Mod(); FileInfo[] files = directoryInfo3.GetFiles(); foreach (FileInfo fileInfo in files) { if (fileInfo.Extension == ".png") { byte[] data = File.ReadAllBytes(fileInfo.FullName); Texture2D texture2D = new Texture2D(2, 2); texture2D.LoadImage(data); mod.textures.Add(texture2D); } else if (fileInfo.Extension == ".bytes") { string fileNameWithoutExtension = Path.GetFileNameWithoutExtension(fileInfo.Name); byte[] array = File.ReadAllBytes(fileInfo.FullName); if (fileNameWithoutExtension.EndsWith("_anim")) { mod.anim = array; } else if (fileNameWithoutExtension.EndsWith("_build")) { mod.build = array; } else { DebugUtil.LogWarningArgs($"Unhandled TextAsset ({fileInfo.FullName})...ignoring"); } } else { DebugUtil.LogWarningArgs($"Unhandled asset ({fileInfo.FullName})...ignoring"); } } string name = directoryInfo3.Name + "_kanim"; if (mod.IsValid() && (bool)ModUtil.AddKAnimMod(name, mod)) { num++; } } } return(true); }
public static KAnimFile AddKAnimMod(string name, KAnimFile.Mod anim_mod) { KAnimFile kAnimFile = ScriptableObject.CreateInstance <KAnimFile>(); kAnimFile.mod = anim_mod; kAnimFile.name = name; AnimCommandFile animCommandFile = new AnimCommandFile(); KAnimGroupFile.GroupFile groupFile = new KAnimGroupFile.GroupFile(); groupFile.groupID = animCommandFile.GetGroupName(kAnimFile); groupFile.commandDirectory = "assets/" + name; animCommandFile.AddGroupFile(groupFile); KAnimGroupFile groupFile2 = KAnimGroupFile.GetGroupFile(); if (groupFile2.AddAnimMod(groupFile, animCommandFile, kAnimFile) == KAnimGroupFile.AddModResult.Added) { Assets.ModLoadedKAnims.Add(kAnimFile); } return(kAnimFile); }
public static bool Prefix(string name, KAnimFile.Mod anim_mod) { if (!name.StartsWith(INTERACTION_ANIM_PREFIX)) { return(true); } KAnimFile instance = ScriptableObject.CreateInstance <KAnimFile>(); instance.mod = anim_mod; instance.name = name; KAnimGroupFile groupFile = KAnimGroupFile.GetGroupFile(); HashedString groupId = INTERACTION_ANIM_GROUP; List <KAnimGroupFile.Group> groups = Traverse.Create(groupFile).Field("groups").GetValue <List <KAnimGroupFile.Group> >(); var group = groups.Find(t => t.id == groupId); if (group == null) { Debug.LogError($"Could not find animation group {INTERACTION_ANIM_GROUP.HashValue} when adding animation {name}. Loading animation as normal and not as interaction. Perhaps Klei changed the name of the interaction group?"); return(true); } group.files.Add(instance); Assets.ModLoadedKAnims.Add(instance); return(false); }