using System; using System.Collections.Generic; using System.ComponentModel; using System.Drawing; using System.Data; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; using Bfres.Structs; using Switch_Toolbox.Library.Forms; using BrightIdeasSoftware; namespace FirstPlugin.Forms { public partial class BoneAnimEditor2 : UserControl { public BoneAnimEditor2() { InitializeComponent(); objectListView1.BackColor = FormThemes.BaseTheme.FormBackColor; objectListView1.ForeColor = FormThemes.BaseTheme.FormForeColor; } public void LoadBoneAnim(FSKA.BoneAnimNode boneAnim) { objectListView1.BeginUpdate(); objectListView1.ClearObjects(); objectListView1.ShowGroups = false; FSKA fska = (FSKA)boneAnim.Parent; if (boneAnim.BoneAnimU != null) stPropertyGrid1.LoadProperty(boneAnim.BoneAnimU, onPropertyChanged); else stPropertyGrid1.LoadProperty(boneAnim.BoneAnim, onPropertyChanged); frameCountLbl.Text = $" / {fska.FrameCount}"; currentFrameUD.Maximum = fska.FrameCount; return; for (int frame = 0; frame < fska.FrameCount; frame++) { bool IsKeyed = (boneAnim.XPOS.HasAnimation() && boneAnim.XPOS.GetKeyFrame(frame).IsKeyed || boneAnim.YPOS.HasAnimation() && boneAnim.YPOS.GetKeyFrame(frame).IsKeyed || boneAnim.ZPOS.HasAnimation() && boneAnim.ZPOS.GetKeyFrame(frame).IsKeyed || boneAnim.XROT.HasAnimation() && boneAnim.XROT.GetKeyFrame(frame).IsKeyed || boneAnim.YROT.HasAnimation() && boneAnim.YROT.GetKeyFrame(frame).IsKeyed || boneAnim.ZROT.HasAnimation() && boneAnim.ZROT.GetKeyFrame(frame).IsKeyed || boneAnim.WROT.HasAnimation() && boneAnim.WROT.GetKeyFrame(frame).IsKeyed || boneAnim.XSCA.HasAnimation() && boneAnim.XSCA.GetKeyFrame(frame).IsKeyed || boneAnim.YSCA.HasAnimation() && boneAnim.YSCA.GetKeyFrame(frame).IsKeyed || boneAnim.ZSCA.HasAnimation() && boneAnim.ZSCA.GetKeyFrame(frame).IsKeyed); if (IsKeyed) { KeyFrame key = new KeyFrame(); key.Frame = frame; //Load position if (boneAnim.XPOS.HasAnimation()) key.PosX = boneAnim.XPOS.GetValue(frame); if (boneAnim.YPOS.HasAnimation()) key.PosY = boneAnim.YPOS.GetValue(frame); if (boneAnim.ZPOS.HasAnimation()) key.PosZ = boneAnim.ZPOS.GetValue(frame); //Load Rotation if (boneAnim.XROT.HasAnimation()) key.RotX = boneAnim.XROT.GetValue(frame); if (boneAnim.YROT.HasAnimation()) key.RotY = boneAnim.YROT.GetValue(frame); if (boneAnim.ZROT.HasAnimation()) key.RotZ = boneAnim.ZROT.GetValue(frame); if (boneAnim.WROT.HasAnimation()) key.RotW = boneAnim.WROT.GetValue(frame); //Load Scale if (boneAnim.XSCA.HasAnimation()) key.ScaX = boneAnim.XSCA.GetValue(frame); if (boneAnim.YSCA.HasAnimation()) key.ScaY = boneAnim.YSCA.GetValue(frame); if (boneAnim.ZSCA.HasAnimation()) key.ScaZ = boneAnim.ZSCA.GetValue(frame); objectListView1.AddObject(key); } } objectListView1.EndUpdate(); } public class KeyFrame { public int Frame { get; set; } public float PosX { get; set; } public float PosY { get; set; } public float PosZ { get; set; } public float RotX { get; set; } public float RotY { get; set; } public float RotZ { get; set; } public float RotW { get; set; } = 1; public float ScaX { get; set; } = 1; public float ScaY { get; set; } = 1; public float ScaZ { get; set; } = 1; const int size = 4; const int padding = 8; /* public override string ToString() { return String.Format("[{0}][{1}],[{2}],[{3}],[{4}],[{5}],[{6}],[{7}],[{8}],[{9}]", (Frame + 1).ToString().PadLeft(5), PosX.ToString().ToFixedString(size, ' ').PadRight(padding), PosY.ToString().ToFixedString(size, ' ').PadRight(padding), PosZ.ToString().ToFixedString(size, ' ').PadRight(padding), RotX.ToString().ToFixedString(size, ' ').PadRight(padding), RotY.ToString().ToFixedString(size, ' ').PadRight(padding), RotZ.ToString().ToFixedString(size, ' ').PadRight(padding), RotW.ToString().ToFixedString(size, ' ').PadRight(padding), ScaX.ToString().ToFixedString(size, ' ').PadRight(padding), ScaY.ToString().ToFixedString(size, ' ').PadRight(padding), ScaZ.ToString().ToFixedString(size, ' ').PadRight(padding)); }*/ } public void onPropertyChanged() { } private void stPanel2_Paint(object sender, PaintEventArgs e) { } } }