private void OnBoneValueChanged(PartController part)
        {
            if (MirrorEdit && part != null)
            {
                string name         = part.Name;
                string mirroredName = null;

                if (name.Contains(" L "))
                {
                    mirroredName = name.Replace(" L ", " R ");
                }
                else if (name.Contains(" R "))
                {
                    mirroredName = name.Replace(" R ", " L ");
                }

                if (mirroredName != null)
                {
                    if (_parts.TryGetValue(mirroredName, out var controller))
                    {
                        controller.Value = part.Value;
                    }
                }
            }

            var path = GetCurrentlyEditedBoneModFilePath();

            WriteBones(path);
        }
        private PartController CreatePartGUI(GameObject source, Config.SliderConfigInfo settings, Bone bone)
        {
            var part = UnityEngine.Object.Instantiate(source);

            part.name = bone.Values.Name;
            part.transform.SetParent(source.transform.parent);
            part.transform.position      = source.transform.position;
            part.transform.localPosition = source.transform.localPosition;
            part.transform.localScale    = source.transform.localScale;

            part.transform.position -= new Vector3(0, menuOffsetY + partHeight * _parts.Count, 0);

            var displayName = GetDisplayName(bone.Values.Name, settings.EditedValue);

            var text = part.GetChildComponent <Text>("SubItem");

            text.text  = displayName;
            text.color = GetDisplayColor(bone);

            var inputField = part.GetChildComponent <InputField>("InputField");

            var slider = part.GetChildComponent <Slider>("Slider");

            slider.value        = 1f;
            slider.wholeNumbers = false;
            slider.minValue     = 0;
            slider.maxValue     = 100f;

            var button = part.GetChildComponent <Button>("btn_def");

            var partController = new PartController(displayName, part, inputField, slider, button, bone, settings.EditedValue, settings.MinValue, settings.MaxValue);

            return(partController);
        }