Exemple #1
0
        protected override void OnRenderItemText(ToolStripItemTextRenderEventArgs e)
        {
            ToolStrip     toolStrip = e.ToolStrip;
            ToolStripItem item      = e.Item;

            if (toolStrip is ToolStripDropDown)
            {
                e.TextColor = item.Selected ? this.ColorTable.HoverFore : this.ColorTable.Fore;
            }
            else
            {
                e.TextColor = item.Selected ? this.ColorTable.BaseHoverFore : this.ColorTable.BaseFore;
            }
            if ((toolStrip is ToolStripDropDown) && (e.Item is ToolStripMenuItem))
            {
                Rectangle textRectangle = e.TextRectangle;
                e.TextRectangle = textRectangle;
            }
            if ((!(toolStrip is ToolStripDropDown) && this.ColorTable.BaseForeAnamorphosis) && !string.IsNullOrEmpty(e.Item.Text))
            {
                Graphics graphics = e.Graphics;
                Image    image    = SkinTools.ImageLightEffect(e.Item.Text, e.Item.Font, e.TextColor, this.ColorTable.BaseForeAnamorphosisColor, this.ColorTable.BaseForeAnamorphosisBorder);
                graphics.DrawImage(image, (int)(e.TextRectangle.Left - (this.ColorTable.BaseForeAnamorphosisBorder / 2)), (int)(e.TextRectangle.Top - (this.ColorTable.BaseForeAnamorphosisBorder / 2)));
            }
            else
            {
                base.OnRenderItemText(e);
            }
        }
        void BlurPass()
        {
            SkinTools     t    = target as SkinTools;
            SkinToolsData data = t.Data;

            data.UpdateResultInfo();

            for (int v = 0; v < data.SourceGeometry.posVertsList.Count; v++)
            {
                data.SourceGeometry.posVertsList[v].BonesWeights = new float[data.ResultBones.Length];
            }

            for (int i = 0; i < data.SourceGeometry.unityVertices.Count; i++)
            {
                int parent = data.SourceGeometry.unityVertices[i].PVertIdx;

                for (int b = 0; b < data.ResultBones.Length; b++)
                {
                    data.SourceGeometry.posVertsList[parent].BonesWeights[b] = data.ResultBones[b].Weights[i];
                }
            }

            for (int b = 0; b < data.ResultBones.Length; b++)
            {
                for (int i = 0; i < data.BlurIterations; i++)
                {
                    for (int v = 0; v < data.SourceGeometry.posVertsList.Count; v++)
                    {
                        float lerpVal = (1f / data.SourceGeometry.posVertsList[v].AdjacentPV.Count) * data.BlurMultiplier;
                        for (int a = 0; a < data.SourceGeometry.posVertsList[v].AdjacentPV.Count; a++)
                        {
                            int apv = data.SourceGeometry.posVertsList[v].AdjacentPV[a];
                            data.SourceGeometry.posVertsList[v].BonesWeights[b] = Mathf.Lerp(data.SourceGeometry.posVertsList[v].BonesWeights[b], data.SourceGeometry.posVertsList[apv].BonesWeights[b], lerpVal);
                        }
                    }
                }
            }

            Transform[] bones = data.resultSMR.bones;
            for (int v = 0; v < data.SourceGeometry.posVertsList.Count; v++)
            {
                data.SourceGeometry.posVertsList[v].ebw = new ExtBoneWeight();
                for (int b = 0; b < data.ResultBones.Length; b++)
                {
                    data.SourceGeometry.posVertsList[v].ebw.Add(bones[b], data.SourceGeometry.posVertsList[v].BonesWeights[b], 0);
                }
            }

            BoneWeight[] weights = data.ResultMesh.boneWeights;
            for (int i = 0; i < data.SourceGeometry.unityVertices.Count; i++)
            {
                int parent = data.SourceGeometry.unityVertices[i].PVertIdx;
                data.SourceGeometry.posVertsList[parent].ebw.FillIndeces(bones);
                weights[i] = data.SourceGeometry.posVertsList[parent].ebw.GetClampedBW();
            }
            data.ResultMesh.boneWeights = weights;
            data.resultSMR.sharedMesh   = data.ResultMesh;
            data.UpdateResultInfo();
            data.ApplyResultVisual();
        }
Exemple #3
0
 private void btnCancel_Click(object sender, EventArgs e)
 {
     if (txtSkins.Text != SystemConfig.CurrentConfig.SkinName)
     {
         SkinTools.SetSkin(SystemConfig.CurrentConfig.SkinName);
     }
 }
 //画标题
 private void DrawCaptionText(
     Graphics g, Rectangle textRect, string text, Font font, TitleType Effect, Color EffetBack, int EffectWidth, Color FrmColor, Point TitleOffset)
 {
     if (Effect == TitleType.EffectTitle)
     {
         Size  txtsize = TextRenderer.MeasureText(text, font);
         Image imgtext = SkinTools.ImageLightEffect(text, font, FrmColor, EffetBack, EffectWidth, new Rectangle(0, 0, textRect.Width, txtsize.Height), true);
         g.DrawImage(imgtext, textRect.X - EffectWidth / 2 + TitleOffset.X, textRect.Y - EffectWidth / 2 + TitleOffset.Y
                     );
     }
     else if (Effect == TitleType.Title)
     {
         textRect.X += TitleOffset.X;
         textRect.Y += TitleOffset.Y;
         TextRenderer.DrawText(
             g,
             text,
             font,
             textRect,
             FrmColor,
             TextFormatFlags.VerticalCenter |
             TextFormatFlags.Left |
             TextFormatFlags.SingleLine |
             TextFormatFlags.WordEllipsis);
     }
 }
Exemple #5
0
        public frmMain()
        {
            InitializeComponent();
            ribbonControl1.ShowPageHeadersMode = ShowPageHeadersMode.Hide;
            UpdateMainUI();
            string title = INISystemConfig.GetTitle();

            if (!String.IsNullOrEmpty(title))
            {
                this.Text = title;
            }
            PageHeadColor = new XtraTabbedMdiManagerPageColor();

            bll = new bllModules();


            MDIPageOption();
            if (INISystemConfig.GetWindowState() == "Y")
            {
                this.WindowState = FormWindowState.Maximized;
            }

            new GZFramework.UI.Dev.RibbonButton.RibbonLoad(rpage_Option, rpg_Function, rpg_DataNav);

            //设置皮肤
            SkinTools.InitSkinAStyleGallery(ribbonGalleryBarItem1, ribbonControl1, barItem_RbStyle);

            this.FormClosing += frmMain_FormClosing;
        }
Exemple #6
0
 private void btnApplySkin_Click(object sender, EventArgs e)
 {
     if (txtSkins.SelectedItem != null)
     {
         SkinTools.SetSkin(txtSkins.SelectedItem.ToString());
     }
 }
 internal void ApplyChangesToScene(SkinTools b)
 {
     if (!Application.isPlaying)
     {
         EditorUtility.SetDirty(b);
         EditorSceneManager.MarkAllScenesDirty();
     }
 }
Exemple #8
0
 //大小改变时
 protected override void OnSizeChanged(EventArgs e)
 {
     if (SkinBack != null && show)
     {
         SkinTools.CreateControlRegion(this, TrankBack(), 255);
         skin.Size = this.Size;
     }
     base.OnSizeChanged(e);
 }
Exemple #9
0
 private void RenderAnamorphosisText(Graphics g, PointF point, Color fc, Color bc)
 {
     using (Brush brush = new SolidBrush(base.ForeColor))
     {
         Rectangle rc  = new Rectangle(new Point(Convert.ToInt32(point.X), Convert.ToInt32(point.Y)), ClientRectangle.Size);
         Image     img = SkinTools.ImageLightEffect(Text, base.Font, fc, bc, BorderSize, rc, !AutoSize);
         g.DrawImage(img, point.X - (BorderSize / 2), point.Y - (BorderSize / 2));
     }
 }
        void DrawReferenceSkinProperties(SkinTools t, SkinToolsData data)
        {
            GUILayout.BeginHorizontal();
            GUILayout.Label("select:", GUILayout.Width(100));
            SkinnedMeshRenderer nSourceSkin = (SkinnedMeshRenderer)EditorGUILayout.ObjectField(data.ReferenceSMR, typeof(SkinnedMeshRenderer), true);

            if (nSourceSkin != data.ReferenceSMR)
            {
                data.ReferenceSMR = nSourceSkin;
                data.OnChangeReferenceSMR(nSourceSkin);
                ApplyChangesToScene(t);
            }
            GUILayout.EndHorizontal();

            if (data.ReferenceMeshIsValid)
            {
                EditorGUI.indentLevel += 1;
                GUILayout.Label("Excluded triangles");

                GUILayout.BeginHorizontal();
                bool npaintExcludedTriangles = GUILayout.Toggle(paintExcludedTriangles, "Paint", "Button", GUILayout.Width(80));
                if (npaintExcludedTriangles != paintExcludedTriangles)
                {
                    paintExcludedTriangles = npaintExcludedTriangles;
                    SceneView.RepaintAll();
                }
                GUILayout.Label("Brush radius:", GUILayout.Width(100));
                brushRadius = GUILayout.HorizontalSlider(brushRadius, 0.002f, 1f);

                GUILayout.EndHorizontal();

                _sourceSkinBonesFoldout          = EditorGUILayout.Foldout(_sourceSkinBonesFoldout, "Reference bones");
                _sourceSkinBonesFoldoutAB.target = _sourceSkinBonesFoldout;

                if (EditorGUILayout.BeginFadeGroup(_sourceSkinBonesFoldoutAB.faded))
                {
                    for (int i = 0; i < data.ReferenceSMRBones.Count; i++)
                    {
                        GUILayout.BeginHorizontal();
                        GUILayout.Space(24);
                        GUILayout.Label(data.ReferenceSMRBones[i].Tr.name, GUILayout.Width(160));
                        bool nVal = GUILayout.Toggle(data.ReferenceSMRBones[i].Excluded, ResourceHolder.ExcludeIkon, ResourceHolder.IkonStyle);
                        if (nVal != data.ReferenceSMRBones[i].Excluded)
                        {
                            data.ReferenceSMRBones[i].Excluded = nVal;
                            ApplyChangesToScene(t);
                        }
                        GUILayout.EndHorizontal();
                    }
                }
                EditorGUILayout.EndFadeGroup();
                EditorGUI.indentLevel -= 1;
            }
        }
Exemple #11
0
 //控件圆角
 private void SetReion()
 {
     if (base.Region != null)
     {
         base.Region.Dispose();
     }
     if (RoundStyle != SkinClass.RoundStyle.None)
     {
         SkinTools.CreateRegion(this, this.ClientRectangle, Radius, RoundStyle);
     }
 }
Exemple #12
0
        //获取图片主色调,设置前景色
        public static void SetForeColor(DSkinForm form, Image image)
        {
            Color cl = SkinTools.GetImageAverageColor(image);

            if ((cl.B + cl.G + cl.R) / 2 > 200)
            {
                form.ForeColor = Color.Black;
            }
            else
            {
                form.ForeColor = Color.WhiteSmoke;
            }
        }
Exemple #13
0
 /// <summary>
 /// 绘制水印
 /// </summary>
 private void WmPaintWater(Graphics g)
 {
     if (this.Text.Length == 0 &&
         !string.IsNullOrEmpty(this._waterText) &&
         !this.Focused)
     {
         g.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.HighQuality;
         if (WaterText.Length != 0)
         {
             Image img  = SkinTools.ImageLightEffect(WaterText, WaterFont, WaterColor, BackColor, 0, ClientRectangle, !AutoSize);
             int   left = this.RightToLeft == RightToLeft.Yes ? Width - img.Width : 0;
             g.DrawImage(img, left, (Height - img.Height) / 2);
         }
     }
 }
        void OnSceneGUI()
        {
            SkinTools     t    = target as SkinTools;
            SkinToolsData data = t.Data;

            if (_resultFoldout)
            {
                DrawResultBonesOnSceneGUI(data);
            }


            if (paintExcludedTriangles && data.ReferenceSMRGeometry != null && data.ReferenceSMRGeometry.IsValid)
            {
                PaintSourceSMRExcludedTriangles(data);
            }
        }
Exemple #15
0
        private void frmSystemOptions_Load(object sender, EventArgs e)
        {
            SkinTools.LoadSkin(txtSkins); //加载皮肤列表

            txtSkins.Text       = SystemConfig.CurrentConfig.SkinName;
            chkLocalLog.Checked = SystemConfig.CurrentConfig.WriteLocalLog;
            chkAllowRunMultiInstance.Checked   = SystemConfig.CurrentConfig.AllowRunMultiInstance;
            chkDoubleClickIntoEditMode.Checked = SystemConfig.CurrentConfig.DoubleClickIntoEditMode;

            rgAuthType.SelectedIndex     = SystemConfig.CurrentConfig.LoginAuthType - 1;
            rgUpgraderType.SelectedIndex = SystemConfig.CurrentConfig.UpgradeType - 1;
            txtUpgraderIP.Text           = SystemConfig.CurrentConfig.UpgraderServerIP;
            txtUpgraderPort.Text         = SystemConfig.CurrentConfig.UpgraderServerPort;
            chkCheckVer.Checked          = SystemConfig.CurrentConfig.AutoCheckVersion;
            chkExitAppIfOldVer.Checked   = SystemConfig.CurrentConfig.ExitAppIfOldVersion;

            this.xtraTabControl1.SelectedTabPageIndex = 0;
        }
        void DrawSourceGeometryProperties(SkinTools t, SkinToolsData data)
        {
            GUILayout.BeginHorizontal();
            GUILayout.Label("select:", GUILayout.Width(100));
            MeshFilter nSourceMeshMF = (MeshFilter)EditorGUILayout.ObjectField(data.SourceGeometryMF, (typeof(MeshFilter)), true);

            if (nSourceMeshMF != data.SourceGeometryMF)
            {
                data.SourceGeometryMF = nSourceMeshMF;
                ApplyChangesToScene(t);
                data.OnChangeSourceGeometry(nSourceMeshMF);
            }
            GUILayout.EndHorizontal();
            if (data.SourceGeometry != null)
            {
                GUILayout.Label(string.Format("{0} verts, {1} tris", data.SourceGeometry.VertsCount, data.SourceGeometry.TrisCount) + (data.SourceGeometry.HasUV0? ", uv ":" ") + (data.SourceGeometry.HasUV1? " UV1 ":" "));
            }
        }
Exemple #17
0
 protected override void OnVisibleChanged(EventArgs e)
 {
     if (!DesignMode)
     {
         if (skin != null)
         {
             skin.Visible = this.Visible;
         }
         else
         {
             SkinTools.CreateControlRegion(this, TrankBack(), 255);
             show = true;
             skin = new SkinForm(this);
             skin.Show();
         }
     }
     base.OnVisibleChanged(e);
 }
Exemple #18
0
        private void RenderText(Graphics g)
        {
            using (TextRenderingHintGraphics textRenderGraphics
                       = new TextRenderingHintGraphics(g))
            {
                PointF point = CalculateRenderTextStartPoint(g);
                Color  fc    = ForeColor;
                Color  bc    = BorderColor;
                if (ForeColorSuit)
                {
                    bool Base = SkinTools.ColorSlantsDarkOrBright(this.Parent.BackColor);
                    if (Base)
                    {
                        fc = Color.White;
                        bc = Color.Black;
                    }
                    else
                    {
                        fc = Color.Black;
                        bc = Color.White;
                    }
                }
                switch (_artTextStyle)
                {
                case ArtTextStyle.Border:
                    RenderBordText(g, point, fc, bc);
                    break;

                case ArtTextStyle.Relievo:
                    RenderRelievoText(g, point, fc, bc);
                    break;

                case ArtTextStyle.Forme:
                    RenderFormeText(g, point, fc, bc);
                    break;

                case ArtTextStyle.Anamorphosis:
                    RenderAnamorphosisText(g, point, fc, bc);
                    break;
                }
            }
        }
Exemple #19
0
        private void dSkinButton_BackGround_Click(object sender, EventArgs e)
        {
            bool           bbb            = dSkinCheckBox_ImageFuzzy.Checked;
            OpenFileDialog openFileDialog = new OpenFileDialog();

            openFileDialog.Filter      = "Image Files(*.All Types)|*.jpg;*.jpeg;*.png;*.bmp;*.gif";
            openFileDialog.FilterIndex = 1;
            if (openFileDialog.ShowDialog() == DialogResult.OK)
            {
                System.IO.FileInfo fl = new System.IO.FileInfo(openFileDialog.FileName);
                if (fl.Length > 1024 * 1024)
                {
                    //System.Windows.Forms.MessageBox.Show("请选择1M以内的横向图片");
                    AuroraMessageBox msg = null;
                    msg               = new AuroraMessageBox();
                    msg.strCaption    = "Aurora智能提示";
                    msg.strMessage    = "请选择1M以内的横向图片";
                    msg.strButtonText = "确定";
                    msg.StartPosition = FormStartPosition.Manual;
                    msg.Location      = new Point(this.Location.X + this.Width / 2 - msg.Width / 2, this.Location.Y + this.Height / 2 - msg.Height / 2);
                    msg.ShowDialog();
                    return;
                }
                mainFrm.str_BackGroundImage = dSkinTextBox_BackGround.Text = openFileDialog.FileName;
                mainFrm.SetPlayerBackground();
                mainFrm.ItemHoverColor = SkinTools.GetImageAverageColor(Image.FromFile(openFileDialog.FileName));
                HSL hsl = ColorConverterEx.ColorToHSL(mainFrm.ItemHoverColor);
                //hsl.Luminance += 0.2;
                //if (hsl.Luminance >= 1)
                //    hsl.Luminance = 0.99;
                hsl.Saturation += 0.2;
                if (hsl.Saturation >= 1)
                {
                    hsl.Saturation = 0.99;
                }
                mainFrm.ItemHoverColor           = ColorConverterEx.HSLToColor(hsl);
                dSkinCheckBox_ImageFuzzy.Checked = !bbb;
                dSkinCheckBox_ImageFuzzy.Checked = bbb;
                this.Invalidate();
            }
        }
Exemple #20
0
        /// <summary>
        ///     通过正确的字符串构造一个TimePoint对象
        /// </summary>
        /// <param name="line">指定的字符串</param>
        public TimingPoint(string line)
        {
            var data = line.Split(',');

            Offset     = double.Parse(data[0]);
            BeatLength = double.Parse(data[1]);
            Meter      = double.Parse(data[2]);
            var b = int.TryParse(data[3], out var sample);

            SampleSet   = b ? (SampleSets)sample : SkinTools.StringToEnum <SampleSets>(data[3]);
            SampleIndex = int.Parse(data[4]);
            Volume      = double.Parse(data[5]);
            Uninherited = int.Parse(data[6]).ToBool();
            if (!Uninherited)
            {
                var speed = 100 / (BeatLength / 100);
                SliderVelocity *= speed * -1 > 0 ? Math.Abs(speed) : 0;
            }

            _effect = int.Parse(data[7]);
            Bpm     = Math.Round((1 / BeatLength * 1000 * 60), 2);
            BitProcesser(_effect);
        }
Exemple #21
0
        //重绘
        protected override void OnPaint(PaintEventArgs e)
        {
            Graphics g = e.Graphics;
            //取得当前需要绘画的图像
            Bitmap btm = null;

            switch (_controlState)
            {
            case ControlState.Pressed:
                btm = (Bitmap)DownBack;
                break;

            case ControlState.Hover:
                btm = (Bitmap)MouseBack;
                break;

            default:
                btm = (Bitmap)NormlBack;
                break;
            }
            if (btm != null)
            {
                //是否启用九宫绘图
                if (Palace)
                {
                    ImageDrawRect.DrawRect(g, btm, new Rectangle(ClientRectangle.X, ClientRectangle.Y, ClientRectangle.Width, ClientRectangle.Height), Rectangle.FromLTRB(BackRectangle.X, BackRectangle.Y, BackRectangle.Width, BackRectangle.Height), 1, 1);
                }
                else
                {
                    g.DrawImage(btm, this.ClientRectangle);
                }
            }
            //绘制圆角
            SkinTools.CreateRegion(this, this.ClientRectangle, radius, RoundStyle);
            base.OnPaint(e);
        }
        private void getAddtionalInfo(string[] dataPares)
        {
            foreach (var d in dataPares)
            {
                try
                {
                    var data = d.Split(':');
                    if (data[0].Contains("AudioLeadIn:"))
                    {
                        double.TryParse(data[1].Trim(), out var val);
                        AudioLeadIn = val;
                        continue;
                    }

                    if (data[0].Contains("PreviewTime:"))
                    {
                        double.TryParse(data[1].Trim(), out var val);
                        PreviewTime = val;
                        continue;
                    }

                    if (data[0].Contains("Countdown:"))
                    {
                        int.TryParse(data[1].Trim(), out var val);
                        HasCountdown = val.ToBool();
                        continue;
                    }

                    if (data[0].Contains("SampleSet:"))
                    {
                        if (int.TryParse(data[1].Trim(), out var val))
                        {
                            SampleSet = (SampleSets)val;
                        }
                        else
                        {
                            SampleSet = SkinTools.StringToEnum <SampleSets>(data[1].Trim());
                        }
                        continue;
                    }

                    if (data[0].Contains("StackLeniency:"))
                    {
                        double.TryParse(data[1].Trim(), out var val);
                        StackLeniency = val;
                        continue;
                    }

                    if (data[0].Contains("LetterboxInBreaks:"))
                    {
                        int.TryParse(data[1].Trim(), out var val);
                        LetterboxInBreaks = val.ToBool();
                        continue;
                    }

                    if (data[0].Contains("WidescreenStoryboard"))
                    {
                        int.TryParse(data[1].Trim(), out var val);
                        WidescreenStoryboard = val.ToBool();
                        continue;
                    }

                    if (data[0].Contains("Bookmarks"))
                    {
                        var bookmarks = data[1].Trim();
                        if (bookmarks == "0")
                        {
                            return;
                        }
                        var offsets = bookmarks.Split(',');
                        foreach (var offset in offsets)
                        {
                            try
                            {
                                var innerOffset = int.Parse(offset);
                                Bookmarks.Add(innerOffset);
                            }
                            catch (Exception ex)
                            {
                                throw new FailToParseException("无法通过Bookmarks标签获取书签。", ex);
                            }
                        }

                        continue;
                    }

                    if (data[0].Contains("DistanceSpacing"))
                    {
                        double.TryParse(data[1].Trim(), out var val);
                        DistanceSpacing = val;
                        continue;
                    }

                    if (data[0].Contains("BeatDivisor"))
                    {
                        double.TryParse(data[1].Trim(), out var val);
                        BeatDivisor = val;
                        continue;
                    }

                    if (data[0].Contains("GridSize"))
                    {
                        double.TryParse(data[1].Trim(), out var val);
                        GridSize = val;
                        continue;
                    }

                    if (data[0].Contains("TimelineZoom"))
                    {
                        double.TryParse(data[1].Trim(), out var val);
                        TimelineZoom = val;
                        continue;
                    }

                    if (data[0].Contains("SliderMultiplier"))
                    {
                        double.TryParse(data[1].Trim(), out var val);
                        SliderMultiplier = val;
                        continue;
                    }

                    if (data[0].Contains("SliderTickRate"))
                    {
                        double.TryParse(data[1].Trim(), out var val);
                        SliderTickRate = val;
                    }
                }
                catch (Exception ex)
                {
                    throw new FailToParseException("从谱面文件获取信息失败。", ex);
                }
            }
        }
Exemple #23
0
 protected override void OnPaint(PaintEventArgs e)
 {
     //设置圆角矩形窗体
     SkinTools.CreateRegion(this, 4);
     base.OnPaint(e);
 }
Exemple #24
0
        private void DrawProgressBar(IntPtr hWnd)
        {
            bool     flag;
            Graphics graphics = this._bufferedGraphics.Graphics;

            graphics.Clear(Color.Transparent);
            Rectangle             rect         = new Rectangle(System.Drawing.Point.Empty, base.Size);
            float                 basePosition = (flag = (this.Style != ProgressBarStyle.Marquee) || base.DesignMode) ? 0.3f : 0.45f;
            SmoothingModeGraphics graphics2    = new SmoothingModeGraphics(graphics);

            if (this.Back != null)
            {
                Bitmap bitmap = new Bitmap(this.Back, base.Size);
                SkinTools.CreateControlRegion(this, bitmap, 200);
                graphics.DrawImage(this.Back, rect);
            }
            else
            {
                RenderHelper.RenderBackgroundInternal(graphics, rect, this.TrackBack, this.Border, this.InnerBorder, this.RadiusStyle, this.Radius, basePosition, true, this.Glass, LinearGradientMode.Vertical);
            }
            Rectangle rectangle2 = rect;

            rectangle2.Inflate(-this.BarMinusSize.Width, -this.BarMinusSize.Height);
            if (!flag)
            {
                GraphicsState gstate = graphics.Save();
                graphics.SetClip(rectangle2);
                rectangle2.X     = this._trackX;
                rectangle2.Width = 100;
                using (GraphicsPath path = new GraphicsPath())
                {
                    path.AddEllipse(rectangle2);
                    graphics.SetClip(path, CombineMode.Intersect);
                }
                RenderHelper.RenderBackgroundInternal(graphics, rectangle2, this.TrackFore, this.Border, this.InnerBorder, RoundStyle.None, 8, basePosition, false, this.BarGlass, LinearGradientMode.Vertical);
                using (LinearGradientBrush brush2 = new LinearGradientBrush(rectangle2, this.InnerBorder, Color.Transparent, 0f))
                {
                    Blend   blend    = new Blend();
                    float[] numArray = new float[3];
                    numArray[1]   = 1f;
                    blend.Factors = numArray;
                    float[] numArray2 = new float[3];
                    numArray2[1]    = 0.5f;
                    numArray2[2]    = 1f;
                    blend.Positions = numArray2;
                    brush2.Blend    = blend;
                    graphics.FillRectangle(brush2, rectangle2);
                }
                graphics.Restore(gstate);
                goto Label_02F1;
            }
            rectangle2.Width = (int)((((double)base.Value) / ((double)(base.Maximum - base.Minimum))) * rectangle2.Width);
            if (this.BarBack != null)
            {
                if (this.BarBackStyle == BackStyle.Tile)
                {
                    using (TextureBrush brush = new TextureBrush(this.BarBack))
                    {
                        brush.WrapMode = WrapMode.Tile;
                        graphics.FillRectangle(brush, rectangle2);
                        goto Label_019B;
                    }
                }
                Bitmap image = new Bitmap(this.BarBack, base.Size);
                graphics.DrawImageUnscaledAndClipped(image, rectangle2);
            }
            else
            {
                RenderHelper.RenderBackgroundInternal(graphics, rectangle2, this.TrackFore, this.Border, this.InnerBorder, this.BarRadiusStyle, this.BarRadius, basePosition, false, this.BarGlass, LinearGradientMode.Vertical);
            }
Label_019B:
            if (!string.IsNullOrEmpty(this._formatString) && this.TxtShow)
            {
                TextRenderer.DrawText(graphics, string.Format(this._formatString, ((double)base.Value) / ((double)(base.Maximum - base.Minimum))), base.Font, rect, base.ForeColor, TextFormatFlags.WordEllipsis | TextFormatFlags.SingleLine | TextFormatFlags.VerticalCenter | TextFormatFlags.HorizontalCenter);
            }
Label_02F1:
            graphics2.Dispose();
            IntPtr dC = NativeMethods.GetDC(hWnd);

            this._bufferedGraphics.Render(dC);
            NativeMethods.ReleaseDC(hWnd, dC);
        }
        //画标题和ICO
        protected override void OnRenderSkinFormCaption(
            SkinFormCaptionRenderEventArgs e)
        {
            Graphics   g        = e.Graphics;
            Rectangle  rect     = e.ClipRectangle;
            CCSkinMain form     = e.SkinForm;
            Rectangle  iconRect = form.IconRect;
            Rectangle  textRect = Rectangle.Empty;

            bool closeBox    = form.ControlBox;
            bool minimizeBox = form.ControlBox && form.MinimizeBox;
            bool maximizeBox = form.ControlBox && form.MaximizeBox;

            int textWidthDec = 0;

            if (closeBox)
            {
                textWidthDec += form.CloseBoxSize.Width + form.ControlBoxOffset.X;
            }

            if (maximizeBox)
            {
                textWidthDec += form.MaxSize.Width + form.ControlBoxSpace;
            }

            if (minimizeBox)
            {
                textWidthDec += form.MiniSize.Width + form.ControlBoxSpace;
            }

            foreach (CmSysButton item in form.ControlBoxManager.SysButtonItems)
            {
                if (form.ControlBox && item.Visibale)
                {
                    textWidthDec += item.Size.Width + form.ControlBoxSpace;
                }
            }

            textRect = new Rectangle(
                iconRect.Right + 3,
                form.BorderPadding.Left,
                rect.Width - iconRect.Right - textWidthDec - 6,
                rect.Height - form.BorderPadding.Left);

            using (AntiAliasGraphics antiGraphics = new AntiAliasGraphics(g))
            {
                DrawCaptionBackground(
                    g,
                    rect,
                    e.Active);

                if (form.ShowDrawIcon && form.Icon != null)
                {
                    DrawIcon(g, iconRect, form.Icon);
                }

                if (!string.IsNullOrEmpty(form.Text))
                {
                    Color EfColor    = form.EffectBack;
                    Color TitleColor = form.TitleColor;
                    //判断是否根据背景色适应颜色
                    if (form.TitleSuitColor)
                    {
                        //如果背景色为暗色
                        if (SkinTools.ColorSlantsDarkOrBright(form.BackColor))
                        {
                            TitleColor = Color.White;
                            EfColor    = Color.Black;
                        }
                        else//如果背景色为亮色
                        {
                            TitleColor = Color.Black;
                            EfColor    = Color.White;
                        }
                    }
                    DrawCaptionText(
                        g,
                        textRect,
                        form.Text,
                        form.CaptionFont,
                        form.EffectCaption,
                        EfColor,
                        form.EffectWidth,
                        TitleColor,
                        form.TitleOffset);
                }
            }
        }
        public override void OnInspectorGUI()
        {
            SkinTools     t    = target as SkinTools;
            SkinToolsData data = t.Data;

            _mapBonesFoldout          = EditorGUILayout.Foldout(_mapBonesFoldout, "Map Bones");
            _mapBonesFoldoutAB.target = _mapBonesFoldout;
            if (EditorGUILayout.BeginFadeGroup(_mapBonesFoldoutAB.faded))
            {
                DrawMapBonesProperties(t, data);
            }
            EditorGUILayout.EndFadeGroup();

            _sourceSkinFoldoutAB.target = EditorGUILayout.Foldout(_sourceSkinFoldoutAB.target, ("Reference skin: " + (data.ReferenceSMR == null? "none":data.ReferenceSMR.name)), true);
            if (EditorGUILayout.BeginFadeGroup(_sourceSkinFoldoutAB.faded))
            {
                DrawReferenceSkinProperties(t, data);
            }
            EditorGUILayout.EndFadeGroup();



            _sourceGeometryFoldout          = EditorGUILayout.Foldout(_sourceGeometryFoldout, ("Source geometry: " + (data.SourceGeometryMF == null? "none":data.SourceGeometryMF.name)));
            _sourceGeometryFoldoutAB.target = _sourceGeometryFoldout;
            if (EditorGUILayout.BeginFadeGroup(_sourceGeometryFoldoutAB.faded))
            {
                DrawSourceGeometryProperties(t, data);
            }
            EditorGUILayout.EndFadeGroup();

            _resultFoldout          = EditorGUILayout.Foldout(_resultFoldout, ("Result mesh: " + (data.ResultMesh == null? "none":data.ResultMesh.name)));
            _resultFoldoutAB.target = _resultFoldout;
            if (EditorGUILayout.BeginFadeGroup(_resultFoldoutAB.faded))
            {
                DrawResultProperties(t, data);
            }
            EditorGUILayout.EndFadeGroup();


            GUILayout.Space(6);

            if (EditorGUILayout.BeginFadeGroup(_paramFoldoutAB.faded))
            {
                GUILayout.BeginHorizontal();
                GUILayout.Label("Projection quality:");
                int nQuality = EditorGUILayout.Popup(data.BakingQuality, data.BakingQualityNames);
                if (nQuality != data.BakingQuality)
                {
                    data.BakingQuality = nQuality;
                    ApplyChangesToScene(t);
                }
                GUILayout.EndHorizontal();

                GUILayout.BeginHorizontal();
                GUILayout.Label("Blur multiplier: " + data.BlurMultiplier.ToString("F2"), GUILayout.Width(120));
                float nBlurMult = GUILayout.HorizontalSlider(data.BlurMultiplier, 0, 1f);
                if (data.BlurMultiplier != nBlurMult)
                {
                    data.BlurMultiplier = nBlurMult;
                    ApplyChangesToScene(t);
                }
                GUILayout.EndHorizontal();

                GUILayout.BeginHorizontal();
                GUILayout.Label("Blur iterations:" + data.BlurIterations.ToString(), GUILayout.Width(120));
                int nIterations = (int)GUILayout.HorizontalSlider(data.BlurIterations, 0, 10);
                if (data.BlurIterations != nIterations)
                {
                    data.BlurIterations = nIterations;
                    ApplyChangesToScene(t);
                }
                GUILayout.EndHorizontal();

                GUILayout.BeginHorizontal();
                GUILayout.Label("Bone gizmo width:", GUILayout.Width(120));
                float nBoneGizmoSize = GUILayout.HorizontalSlider(boneGizmoSize, 0.002f, 0.1f);
                if (nBoneGizmoSize != boneGizmoSize)
                {
                    boneGizmoSize = nBoneGizmoSize;
                    SceneView.RepaintAll();
                }
                GUILayout.EndHorizontal();
            }
            EditorGUILayout.EndFadeGroup();

            GUILayout.BeginHorizontal();
            _paramFoldout          = GUILayout.Toggle(_paramFoldout, _paramFoldout?   ResourceHolder.ParamIkonOn : ResourceHolder.ParamIkonOff, ResourceHolder.IkonStyle);
            _paramFoldoutAB.target = _paramFoldout;
            if (GUILayout.Button("Generate Skinning"))
            {
                GenerateFilter();
            }
            GUILayout.EndHorizontal();
        }
        void DrawMapBonesProperties(SkinTools t, SkinToolsData data)
        {
            if (GUILayout.Button(ResourceHolder.AddIkon, ResourceHolder.IkonStyle))
            {
                data.MapBones.Insert(0, new SkinToolsData.MapBone());
            }

            for (int b = 0; b < data.MapBones.Count; b++)
            {
                GUILayout.BeginHorizontal();
                Transform nTr = (Transform)EditorGUILayout.ObjectField(data.MapBones[b].Tr, typeof(Transform), true);
                if (data.MapBones[b].Tr != nTr)
                {
                    data.MapBones[b].Tr = nTr;
                    ApplyChangesToScene(t);
                }

                Texture2D nTex = (Texture2D)EditorGUILayout.ObjectField(data.MapBones[b].Map, typeof(Texture2D), true);
                if (data.MapBones[b].Map != nTex)
                {
                    data.MapBones[b].Map = nTex;
                    ApplyChangesToScene(t);
                }


                if (GUILayout.Button(ResourceHolder.UpIkon, ResourceHolder.IkonStyle))
                {
                    int prevIdx = b - 1;
                    if (prevIdx < 0)
                    {
                        prevIdx = data.MapBones.Count - 1;
                    }
                    SkinToolsData.MapBone _prev = data.MapBones[prevIdx];
                    SkinToolsData.MapBone _this = data.MapBones[b];
                    data.MapBones[b]       = _prev;
                    data.MapBones[prevIdx] = _this;
                    ApplyChangesToScene(t);
                }



                if (GUILayout.Button(ResourceHolder.DownIkon, ResourceHolder.IkonStyle))
                {
                    int nextIdx = b + 1;
                    if (nextIdx >= data.MapBones.Count)
                    {
                        nextIdx = 0;
                    }
                    SkinToolsData.MapBone _next = data.MapBones[nextIdx];
                    SkinToolsData.MapBone _this = data.MapBones[b];
                    data.MapBones[b]       = _next;
                    data.MapBones[nextIdx] = _this;
                    ApplyChangesToScene(t);
                }


                if (GUILayout.Button(ResourceHolder.DelIkon, ResourceHolder.IkonStyle))
                {
                    t.Data.MapBones.RemoveAt(b);
                    ApplyChangesToScene(t);
                }

                GUILayout.EndHorizontal();
            }
        }
        void GenerateSkinning()
        {
            SkinTools     t              = target as SkinTools;
            SkinToolsData data           = t.Data;
            bool          referenceExist = data.ReferenceSMR != null;

            Vector3[] rVertices      = data.SourceGeometryMF.sharedMesh.vertices;
            Vector3[] rNormals       = data.SourceGeometryMF.sharedMesh.normals;
            Vector3[] rWorldVertices = new Vector3[rVertices.Length];
            Vector2[] rMapVertices   = data.SourceGeometryMF.sharedMesh.uv;
            Matrix4x4 smLTW          = data.SourceGeometryMF.transform.localToWorldMatrix;
            Matrix4x4 tWTL           = t.transform.worldToLocalMatrix;

            for (int v = 0; v < rVertices.Length; v++)
            {
                rWorldVertices[v] = smLTW.MultiplyPoint3x4(rVertices[v]);
                rVertices[v]      = tWTL.MultiplyPoint3x4(rWorldVertices[v]);
                rNormals[v]       = smLTW.MultiplyVector(rNormals[v]);
                rNormals[v]       = tWTL.MultiplyVector(rNormals[v]);
            }


            data.ResultMesh = Instantiate(data.SourceGeometryMF.sharedMesh) as Mesh;
            string[] splittedPath = data.OutputMeshPath.Split("/.".ToCharArray());
            string   meshName     = splittedPath[splittedPath.Length - 2];

            data.ResultMesh.name = meshName;

            data.ResultMesh.vertices = rVertices;
            data.ResultMesh.normals  = rNormals;
            data.ResultMesh.RecalculateBounds();

            data.resultSMR.localBounds = new Bounds(data.ResultMesh.bounds.center, data.ResultMesh.bounds.size * 2);

            SourceSMRCollider _collider  = null;
            SourceSMRCollider _icollider = null;

            BoneWeight[] existingWeights   = null;
            Transform[]  sourceBones       = null;
            int[]        sourceSMRTris     = null;
            Ray[]        frays             = null;
            bool[]       excludedTriangles = null;

            if (referenceExist)
            {
                _collider         = new SourceSMRCollider(data.ReferenceSMR, false);
                _icollider        = new SourceSMRCollider(data.ReferenceSMR, true);
                existingWeights   = data.ReferenceSMR.sharedMesh.boneWeights;
                sourceBones       = data.ReferenceSMR.bones;
                sourceSMRTris     = data.ReferenceSMR.sharedMesh.triangles;
                excludedTriangles = new bool[data.ReferenceSMR.sharedMesh.triangles.Length / 3];
                if (data.ReferenceSMRGeometry != null && data.ReferenceSMRGeometry.IsValid)
                {
                    excludedTriangles = data.ReferenceSMRGeometry.ExcludedTris;
                }

                if (data.BakingQuality == 0)
                {
                    frays = new Ray[ResourceHolder.Rays362.Length];
                    for (int i = 0; i < frays.Length; i++)
                    {
                        frays[i] = new Ray(Vector3.zero, ResourceHolder.Rays362[i]);
                    }
                }
                else if (data.BakingQuality == 1)
                {
                    frays = new Ray[ResourceHolder.Rays642.Length];
                    for (int i = 0; i < frays.Length; i++)
                    {
                        frays[i] = new Ray(Vector3.zero, ResourceHolder.Rays642[i]);
                    }
                }
                else if (data.BakingQuality == 2)
                {
                    frays = new Ray[ResourceHolder.Rays1002.Length];
                    for (int i = 0; i < frays.Length; i++)
                    {
                        frays[i] = new Ray(Vector3.zero, ResourceHolder.Rays1002[i]);
                    }
                }
            }

            ExtBoneWeight[]  ebws         = new ExtBoneWeight[rWorldVertices.Length];
            List <Transform> newBonesList = new List <Transform>();

            for (int b = 0; b < data.MapBones.Count; b++)
            {
                newBonesList.Add(data.MapBones[b].Tr);
            }

            EditorUtility.DisplayProgressBar("Bake", "Baking vertices", 0);
            int progressPercent = 0;

            for (int v = 0; v < rWorldVertices.Length; v++)
            {
                ebws[v] = new ExtBoneWeight(  );

                if (data.SourceGeometry.HasUV0)
                {
                    Vector2 uv = rMapVertices[v];
                    for (int b = 0; b < data.MapBones.Count; b++)
                    {
                        float val = data.MapBones[b].Map.GetPixelBilinear(uv.x, uv.y).grayscale;
                        ebws[v].AddMask(data.MapBones[b].Tr, val);
                    }
                }

                if (referenceExist)
                {
                    RaycastHit hit = GetNearestHit(frays, _collider._Collider, _icollider._Collider, rWorldVertices[v], excludedTriangles);
                    BoneWeight bwA = existingWeights [sourceSMRTris[hit.triangleIndex * 3]];
                    BoneWeight bwB = existingWeights [sourceSMRTris[hit.triangleIndex * 3 + 1]];
                    BoneWeight bwC = existingWeights [sourceSMRTris[hit.triangleIndex * 3 + 2]];
                    for (int i = 0; i < 4; i++)
                    {
                        Transform nbA = sourceBones[bwA.GetBoneIdx(i)];
                        Transform nbB = sourceBones[bwB.GetBoneIdx(i)];
                        Transform nbC = sourceBones[bwC.GetBoneIdx(i)];

                        if (!data.ReferenceSMRBones[nbA].Excluded)
                        {
                            if (!newBonesList.Contains(nbA))
                            {
                                newBonesList.Add(nbA);
                            }
                            ebws[v].Add(nbA, bwA.GetWeight(i) * hit.barycentricCoordinate.x, 0);
                        }

                        if (!data.ReferenceSMRBones[nbB].Excluded)
                        {
                            if (!newBonesList.Contains(nbB))
                            {
                                newBonesList.Add(nbB);
                            }
                            ebws[v].Add(nbB, bwB.GetWeight(i) * hit.barycentricCoordinate.y, 0);
                        }

                        if (!data.ReferenceSMRBones[nbC].Excluded)
                        {
                            if (!newBonesList.Contains(nbC))
                            {
                                newBonesList.Add(nbC);
                            }
                            ebws[v].Add(nbC, bwC.GetWeight(i) * hit.barycentricCoordinate.z, 0);
                        }
                    }
                }
                float progress = v / (float)rWorldVertices.Length;
                int   percent  = Mathf.FloorToInt(progress * 100);
                if (progressPercent != percent)
                {
                    progressPercent = percent;
                    string progressBarName = string.Format("Bake {0}", data.ResultMesh.name);
                    string progressInfo    = string.Format("baking vertices {0} of {1} with {2} quality ", v, rWorldVertices.Length, data.BakingQualityNames[data.BakingQuality]);
                    EditorUtility.DisplayProgressBar(progressBarName, progressInfo, progress);
                }
            }

            EditorUtility.ClearProgressBar();

            BoneWeight[] newweights = new BoneWeight[rWorldVertices.Length];

            Transform[] newBonesArray = newBonesList.ToArray();
            for (int w = 0; w < ebws.Length; w++)
            {
                ebws[w].FillIndeces(newBonesArray);
                newweights[w] = ebws[w].GetClampedBW();
            }

            data.resultSMR.bones = newBonesArray;
            Matrix4x4[] bindBones = new Matrix4x4[newBonesArray.Length];

            for (int b = 0; b < newBonesArray.Length; b++)
            {
                bindBones[b] = newBonesArray[b].worldToLocalMatrix * t.transform.localToWorldMatrix;
            }

            data.ResultMesh.bindposes   = bindBones;
            data.ResultMesh.boneWeights = newweights;

            if (referenceExist)
            {
                _collider.Destroy();
                _icollider.Destroy();
            }

            AssetDatabase.DeleteAsset(data.OutputMeshPath);
            AssetDatabase.CreateAsset(data.ResultMesh, data.OutputMeshPath);
            AssetDatabase.SaveAssets();
            data.ResultMesh           = AssetDatabase.LoadAssetAtPath(data.OutputMeshPath, typeof(Mesh)) as Mesh;
            data.resultSMR.sharedMesh = data.ResultMesh;
            data.UpdateResultInfo();
            data.ApplyResultVisual();
        }
        void GenerateFilter()
        {
            SkinTools     t    = target as SkinTools;
            SkinToolsData data = t.Data;

            if (ResourceHolder == null)
            {
                EditorUtility.DisplayDialog("SkinTools", "Requared prefab SkinBakerResourcesHolder_SBRTSGJHKNBHD not found. \nPlease restore it or reimport SkinTools package. \n Operation canceled", "Ok");
                return;
            }

            for (int b = 0; b < data.MapBones.Count; b++)
            {
                if (data.MapBones[b].Map == null)
                {
                    EditorUtility.DisplayDialog("SkinTools", string.Format("Empty texture field at #{0} map bone. \nPlease assign texture or delete bone. \nOperation canceled.", b), "Ok");
                    return;
                }

                if (data.MapBones[b].Tr == null)
                {
                    EditorUtility.DisplayDialog("Skin baker", string.Format("Empty transform field at #{0} map bone. Please assign bone transform or delete bone. Operation canceled.", b), "Ok");
                    return;
                }
                string          p            = AssetDatabase.GetAssetPath(data.MapBones[b].Map);
                TextureImporter ti           = (TextureImporter)TextureImporter.GetAtPath(p);
                bool            needReimport = false;

                if (ti.isReadable == false)
                {
                    ti.isReadable = true;
                    needReimport  = true;
                }

                if (ti.alphaSource != TextureImporterAlphaSource.None)
                {
                    ti.alphaSource = TextureImporterAlphaSource.None;
                    needReimport   = true;
                }

                if (needReimport)
                {
                    Debug.LogFormat("{0} reimported", p);
                    ti.SaveAndReimport();
                }
            }

            if (data.SourceGeometryMF == null || data.SourceGeometryMF.sharedMesh == null)
            {
                EditorUtility.DisplayDialog("Skin Tools", "Source Geometry not found. Please assign Source Geometry field.  Operation canseled", "Ok");
                return;
            }

            GenerateSkinning();
            if (data.BlurIterations > 0)
            {
                BlurPass();
            }

            ApplyChangesToScene(t);
        }
        void DrawResultProperties(SkinTools t, SkinToolsData data)
        {
            GUILayout.Label("path:" + data.OutputMeshPath);
            GUILayout.BeginHorizontal();
            GUILayout.Label("select:", GUILayout.Width(45));
            Mesh nOutputMesh = (Mesh)EditorGUILayout.ObjectField(data.ResultMesh, (typeof(Mesh)), false);


            if (nOutputMesh != data.ResultMesh)
            {
                string      nPath = AssetDatabase.GetAssetPath(nOutputMesh);
                System.Type x     = AssetDatabase.GetMainAssetTypeAtPath(nPath);

                if (x != typeof(UnityEngine.Mesh))
                {
                    EditorUtility.DisplayDialog("SkinTools", "Output mesh can not be part of prefab. Select other mesh or create new", "Ok");
                    return;
                }
                else
                {
                    data.ResultMesh     = nOutputMesh;
                    data.OutputMeshPath = nPath;
                }
                ApplyChangesToScene(t);
            }

            if (GUILayout.Button("new", GUILayout.Width(40)))
            {
                string selectedFilePath = EditorUtility.SaveFilePanelInProject("Save mesh", "", "asset", "Please select a file to save mesh to");
                if (!string.IsNullOrEmpty(selectedFilePath))
                {
                    Mesh nMesh = new Mesh();
                    nMesh.vertices = new Vector3[4];
                    AssetDatabase.CreateAsset(nMesh, selectedFilePath);
                    data.OutputMeshPath = selectedFilePath;
                    data.ResultMesh     = AssetDatabase.LoadAssetAtPath(data.OutputMeshPath, typeof(Mesh)) as Mesh;
                    ApplyChangesToScene(t);
                }
            }
            GUILayout.EndHorizontal();


            GUILayout.BeginHorizontal();
            GUILayout.Label("Affected bones:");
            GUILayout.EndHorizontal();

            for (int i = 0; i < data.ResultBones.Length; i++)
            {
                GUILayout.BeginHorizontal();
                bool isSel = data.SelectedResultBone == i;
                GUILayout.Space(20);
                GUILayout.Label("#" + i.ToString(), GUILayout.Width(26));
                bool nIsSel = GUILayout.Toggle(isSel, data.ResultBones[i].Tr.name, "Button", GUILayout.Width(160));
                if (nIsSel != isSel)
                {
                    if (nIsSel)
                    {
                        data.SelectedResultBone = i;
                    }
                    else
                    {
                        data.SelectedResultBone = -1;
                    }
                    data.ApplyResultVisual();
                    ApplyChangesToScene(t);
                }
                if (data.SelectedResultBone == i)
                {
                    if (GUILayout.Button(ResourceHolder.MoveToExcludeIkon, ResourceHolder.IkonStyle))
                    {
                        SkinToolsData.ReferenceSMRBonesClass rsmb = data.ReferenceSMRBones;
                        if (rsmb != null)
                        {
                            SkinToolsData.ReferenceBone rb = data.ReferenceSMRBones[data.ResultBones[i].Tr];
                            if (rb != null)
                            {
                                rb.Excluded = true;
                            }
                        }
                        GenerateFilter();
                    }

                    if (GUILayout.Button(ResourceHolder.SelectBoneIkon, ResourceHolder.IkonStyle))
                    {
                        Selection.activeGameObject = data.ResultBones[i].Tr.gameObject;
                    }
                }

                GUILayout.EndHorizontal();
            }
        }