private void TryLoadPartInfo() { var actor = new RedStarLibrary.ActorBase(); actor.LoadActor($"{RedStarLibrary.GlobalSettings.GamePath}\\ObjectData\\Mario.szs"); LoadActorFile(actor); LoadAnimations(actor); }
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); } }
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); } }
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); } } } }
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); }