示例#1
0
        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);
    }
示例#3
0
            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);
            }