示例#1
0
        private bool IsKeyed(MaterialAnimation.ParamKeyGroup paramKeyGroup, int Frame)
        {
            foreach (var track in paramKeyGroup.Values)
            {
                if (track.GetKeyFrame(Frame, false) != null && track.GetKeyFrame(Frame).IsKeyed == true)
                {
                    return(true);
                }
            }

            return(false);
        }
示例#2
0
        private void LoadParam(MaterialAnimation anim, MaterialAnimation.ParamKeyGroup paramAnim)
        {
            listViewCustom1.Columns.Clear();
            listViewCustom1.Items.Clear();

            ColumnHeader frameColumn = new ColumnHeader()
            {
                Text = $"Frame"
            };

            listViewCustom1.Columns.Add(frameColumn);

            if (paramAnim.Type == MaterialAnimation.AnimationType.Color)
            {
                ReadColorAnim(anim, paramAnim);
            }
            else if (anim.AnimType == MaterialAnimation.AnimationType.TextureSrt)
            {
                foreach (var track in paramAnim.Values)
                {
                    ColumnHeader valueColumn = new ColumnHeader()
                    {
                        Text = $"{(TexSRT)track.AnimDataOffset}"
                    };
                    listViewCustom1.Columns.Add(valueColumn);
                }
                for (int Frame = 0; Frame <= anim.FrameCount; Frame++)
                {
                    var item1 = new ListViewItem($"{Frame}");
                    item1.UseItemStyleForSubItems = false;
                    listViewCustom1.Items.Add(item1);

                    foreach (var track in paramAnim.Values)
                    {
                        if (track.AnimDataOffset == (uint)TexSRT.Mode)
                        {
                            var keyFrame = track.GetKeyFrame(Frame, false);
                            if (keyFrame != null)
                            {
                                item1.SubItems.Add(((uint)keyFrame.Value).ToString());
                            }
                            else
                            {
                                item1.SubItems.Add("");
                            }
                        }
                        else
                        {
                            item1.SubItems.Add(track.GetValue(Frame).ToString());
                        }
                        if (track.GetKeyFrame(Frame, false) != track.GetKeyFrame(Frame + 1, false))
                        {
                            item1.SubItems[item1.SubItems.Count - 1].Font = new Font(item1.SubItems[item1.SubItems.Count - 1].Font, FontStyle.Bold);
                        }
                    }
                }
            }
            else
            {
                int columnCount = paramAnim.Values.Count;
                for (int col = 0; col < columnCount; col++)
                {
                    ColumnHeader valueColumn = new ColumnHeader()
                    {
                        Text = $"Value {col}"
                    };
                    listViewCustom1.Columns.Add(valueColumn);
                }
                for (int Frame = 0; Frame <= anim.FrameCount; Frame++)
                {
                    var item1 = new ListViewItem($"{Frame}");
                    item1.UseItemStyleForSubItems = false;
                    listViewCustom1.Items.Add(item1);

                    foreach (var track in paramAnim.Values)
                    {
                        item1.SubItems.Add(track.GetValue(Frame).ToString());
                        if (track.GetKeyFrame(Frame, false) != track.GetKeyFrame(Frame + 1, false))
                        {
                            item1.SubItems[item1.SubItems.Count - 1].Font = new Font(item1.SubItems[item1.SubItems.Count - 1].Font, FontStyle.Bold);
                        }
                    }
                }
            }
        }
示例#3
0
        private void ReadColorAnim(MaterialAnimation anim, MaterialAnimation.ParamKeyGroup paramAnim)
        {
            ColumnHeader colorHeader = new ColumnHeader()
            {
                Text = "Color"
            };
            ColumnHeader alphaHeader = new ColumnHeader()
            {
                Text = "Alpha"
            };
            ColumnHeader RHeader = new ColumnHeader()
            {
                Text = "R"
            };
            ColumnHeader GHeader = new ColumnHeader()
            {
                Text = "G"
            };
            ColumnHeader BHeader = new ColumnHeader()
            {
                Text = "B"
            };
            ColumnHeader AHeader = new ColumnHeader()
            {
                Text = "A"
            };

            listViewCustom1.Columns.Add(colorHeader);
            listViewCustom1.Columns.Add(alphaHeader);
            listViewCustom1.Columns.Add(RHeader);
            listViewCustom1.Columns.Add(GHeader);
            listViewCustom1.Columns.Add(BHeader);
            listViewCustom1.Columns.Add(AHeader);

            for (int Frame = 0; Frame <= anim.FrameCount; Frame++)
            {
                var item1 = new ListViewItem($"{Frame}");
                item1.SubItems.Add("Color");
                item1.SubItems.Add("Alpha");
                item1.UseItemStyleForSubItems = false;

                int Red = 0, Green = 0, Blue = 0, Alpha = 255;
                foreach (var track in paramAnim.Values)
                {
                    Console.WriteLine((ColorOffsets)track.AnimDataOffset + " " + track.GetValue(Frame) + " " + paramAnim.UniformName);
                    if ((ColorOffsets)track.AnimDataOffset == ColorOffsets.Red)
                    {
                        Red = Utils.FloatToIntClamp(track.GetValue(Frame));
                        item1.SubItems.Add($"R {track.GetValue(Frame)}");
                    }
                    if ((ColorOffsets)track.AnimDataOffset == ColorOffsets.Green)
                    {
                        Green = Utils.FloatToIntClamp(track.GetValue(Frame));
                        item1.SubItems.Add($"G {track.GetValue(Frame)}");
                    }
                    if ((ColorOffsets)track.AnimDataOffset == ColorOffsets.Blue)
                    {
                        Blue = Utils.FloatToIntClamp(track.GetValue(Frame));
                        item1.SubItems.Add($"B {track.GetValue(Frame)}");
                    }
                    if ((ColorOffsets)track.AnimDataOffset == ColorOffsets.Alpha)
                    {
                        Alpha = Utils.FloatToIntClamp(track.GetValue(Frame));
                        item1.SubItems.Add($"A {track.GetValue(Frame)}");
                    }
                    if (track.GetKeyFrame(Frame, false) != track.GetKeyFrame(Frame + 1, false))
                    {
                        item1.SubItems[item1.SubItems.Count - 1].Font = new Font(item1.SubItems[item1.SubItems.Count - 1].Font, FontStyle.Bold);
                    }
                }
                item1.SubItems[1].BackColor = Color.FromArgb(Red, Green, Blue);
                item1.SubItems[2].BackColor = Color.FromArgb(Alpha, Alpha, Alpha);

                listViewCustom1.Items.Add(item1);
            }
        }
示例#4
0
        private void LoadParam(MaterialAnimation anim, MaterialAnimation.ParamKeyGroup paramAnim)
        {
            listViewCustom1.Columns.Clear();
            listViewCustom1.Items.Clear();

            ColumnHeader frameColumn = new ColumnHeader()
            {
                Text = $"Frame"
            };

            listViewCustom1.Columns.Add(frameColumn);

            if (paramAnim.Type == MaterialAnimation.AnimationType.Color)
            {
                ReadColorAnim(anim, paramAnim);
            }
            else if (anim.AnimType == MaterialAnimation.AnimationType.TextureSrt)
            {
                foreach (var track in paramAnim.Values)
                {
                    ColumnHeader valueColumn = new ColumnHeader()
                    {
                        Text = $"{(TexSRT)track.AnimDataOffset}"
                    };
                    listViewCustom1.Columns.Add(valueColumn);
                }
                for (int Frame = 0; Frame < anim.FrameCount; Frame++)
                {
                    if (IsKeyed(paramAnim, Frame))
                    {
                        var item1 = new ListViewItem($"{Frame}");
                        listViewCustom1.Items.Add(item1);

                        foreach (var track in paramAnim.Values)
                        {
                            if (track.AnimDataOffset == (uint)TexSRT.Mode)
                            {
                                item1.SubItems.Add(((uint)track.GetValue(Frame)).ToString());
                            }
                            else
                            {
                                item1.SubItems.Add(track.GetValue(Frame).ToString());
                            }
                        }
                    }
                }
            }
            else
            {
                int columnCount = paramAnim.Values.Count;
                for (int col = 0; col < columnCount; col++)
                {
                    ColumnHeader valueColumn = new ColumnHeader()
                    {
                        Text = $"Value {col}"
                    };
                    listViewCustom1.Columns.Add(valueColumn);
                }
                for (int Frame = 0; Frame < anim.FrameCount; Frame++)
                {
                    if (IsKeyed(paramAnim, Frame))
                    {
                        var item1 = new ListViewItem($"{Frame}");
                        listViewCustom1.Items.Add(item1);

                        foreach (var track in paramAnim.Values)
                        {
                            var keyFrame = track.GetKeyFrame(Frame);

                            float value = track.GetValue(Frame);
                            item1.SubItems.Add(value.ToString());
                        }
                    }
                }
            }
        }