Ejemplo n.º 1
0
        private void TryLoadPartInfo()
        {
            var actor = new RedStarLibrary.ActorBase();

            actor.LoadActor($"{RedStarLibrary.GlobalSettings.GamePath}\\ObjectData\\Mario.szs");
            LoadActorFile(actor);
            LoadAnimations(actor);
        }
Ejemplo n.º 2
0
        private void RunOdysseyActor(IArchiveFile format)
        {
            var actorData = new RedStarLibrary.ActorBase();

            actorData.LoadActor((IArchiveFile)format);
            actorData.InitModelFile();
            if (actorData.TextureArchive != null)
            {
                actorData.TextureArchive.Renderer.ID = DataCache.ModelCache.Values.Count.ToString();
                DataCache.ModelCache.Add(actorData.TextureArchive.Renderer.ID.ToString(), actorData.TextureArchive.Renderer);
            }
        }
Ejemplo n.º 3
0
        private void LoadActorFile(RedStarLibrary.ActorBase actor)
        {
            AddDrawable(actor.ModelFile as IFileFormat);

            Outliner.ActiveFileFormat = actor.ModelFile as IFileFormat;

            actor.InitModelFile();
            actor.InitActorPartList();

            if (actor.TextureArchive != null)
            {
                AddDrawable(actor.TextureArchive as IFileFormat);
            }

            foreach (var part in actor.PartActors.Values)
            {
                LoadActorFile(part);
            }
        }
Ejemplo n.º 4
0
        private void LoadAnimationFile(RedStarLibrary.ActorBase actor, string fileName, Dictionary <string, RedStarLibrary.AnimationSet> animationSets)
        {
            var animArchive = (IArchiveFile)STFileLoader.OpenFileFormat(fileName);

            foreach (var file in animArchive.Files)
            {
                if (file.FileName.EndsWith(".bfres"))
                {
                    var bfres = file.OpenFile() as BFRES;
                    foreach (var anim in bfres.SkeletalAnimations)
                    {
                        if (!animationSets.ContainsKey(anim.Name))
                        {
                            animationSets.Add(anim.Name, new RedStarLibrary.AnimationSet());
                        }

                        var model = actor.ModelFile.Renderer.Models[0] as BfresModelAsset;
                        anim.SkeletonOverride = model.ModelData.Skeleton;

                        animationSets[anim.Name].Animations.Add(anim);
                    }
                    foreach (var anim in bfres.VisibilityAnimations)
                    {
                        if (!animationSets.ContainsKey(anim.Name))
                        {
                            animationSets.Add(anim.Name, new RedStarLibrary.AnimationSet());
                        }

                        animationSets[anim.Name].Animations.Add(anim);
                    }
                    foreach (var anim in bfres.MaterialAnimations)
                    {
                        if (!animationSets.ContainsKey(anim.Name))
                        {
                            animationSets.Add(anim.Name, new RedStarLibrary.AnimationSet());
                        }

                        animationSets[anim.Name].Animations.Add(anim);
                    }
                }
            }
        }
Ejemplo n.º 5
0
        private void LoadAnimations(RedStarLibrary.ActorBase actor)
        {
            Dictionary <string, RedStarLibrary.AnimationSet> animationSets = new Dictionary <string, RedStarLibrary.AnimationSet>();

            LoadAnimationFile(actor, $"{RedStarLibrary.GlobalSettings.GamePath}\\ObjectData\\PlayerAnimation.szs", animationSets);
            foreach (var file in actor.PartActors.Values)
            {
                if (file.InitModel != null && file.InitModel.ExternalAnimationFile != null)
                {
                    LoadAnimationFile(file, $"{RedStarLibrary.GlobalSettings.GamePath}\\ObjectData\\{file.InitModel.ExternalAnimationFile}.szs", animationSets);
                }
            }

            BfresNodeBase node = new BfresNodeBase("AnimationList");

            foreach (var file in animationSets)
            {
                BfresNodeBase n = new BfresNodeBase(file.Key);
                n.Tag = file.Value;
                node.AddChild(n);
            }
            Outliner.Nodes.Add(node);
        }