Пример #1
0
        /*--------------------------------------------------------------------------------------------*/
        private GameObject BuildRowItem(Transform pRowTx, HoverkeyBuilderKeyInfo pKeyInfo)
        {
            var itemGo = new GameObject(pKeyInfo.DefaultKey + "");

            itemGo.transform.SetParent(pRowTx, false);

            HoverItemBuilder build = itemGo.AddComponent <HoverItemBuilder>();

            build.ItemType             = pKeyInfo.ItemType;
            build.ButtonRendererPrefab = ButtonRendererPrefab;
            build.SliderRendererPrefab = SliderRendererPrefab;
            build.OnEditorTriggerButtonSelected();
            DestroyImmediate(build, false);

            ////

            HoverItemData data = itemGo.GetComponent <HoverItemData>();

            data.Id    = pKeyInfo.ID;
            data.Label = pKeyInfo.DefaultLabel;

            itemGo.AddComponent <HoverShapeRect>();

            HoverkeyItemLabels labels = itemGo.AddComponent <HoverkeyItemLabels>();

            labels.ActionType    = pKeyInfo.ActionType;
            labels.DefaultKey    = pKeyInfo.DefaultKey;
            labels.DefaultLabel  = pKeyInfo.DefaultLabel;
            labels.HasShiftLabel = pKeyInfo.HasShiftLabel;
            labels.ShiftLabel    = pKeyInfo.ShiftLabel;

            if (pKeyInfo.RelativeSizeX != 1)
            {
                HoverLayoutRectRelativeSizer sizer =
                    itemGo.AddComponent <HoverLayoutRectRelativeSizer>();
                sizer.RelativeSizeX = pKeyInfo.RelativeSizeX;
            }

            HoverCanvas can = itemGo.GetComponentInChildren <HoverCanvas>();

            can.Alignment = HoverCanvas.CanvasAlignmentType.Center;
            can.PaddingX  = 0.001f;

            ////

            HoverkeyInterface     inter        = gameObject.GetComponent <HoverkeyInterface>();
            HoverItemDataSelector selData      = (data as HoverItemDataSelector);
            HoverItemDataSticky   stickyData   = (data as HoverItemDataSticky);
            HoverItemDataCheckbox checkboxData = (data as HoverItemDataCheckbox);

            if (selData != null)
            {
#if UNITY_EDITOR
                UnityEditor.Events.UnityEventTools.AddPersistentListener(
                    selData.OnSelectedEvent, inter.HandleItemSelected);
#else
                selData.OnSelectedEvent.AddListener(inter.HandleItemSelected);
#endif
            }
            else if (stickyData != null)
            {
#if UNITY_EDITOR
                UnityEditor.Events.UnityEventTools.AddPersistentListener(
                    stickyData.OnSelectedEvent, inter.HandleItemSelected);
                UnityEditor.Events.UnityEventTools.AddPersistentListener(
                    stickyData.OnDeselectedEvent, inter.HandleItemDeselected);
#else
                stickyData.OnSelectedEvent.AddListener(inter.HandleItemSelected);
                stickyData.OnDeselectedEvent.AddListener(inter.HandleItemDeselected);
#endif
            }
            else if (checkboxData != null)
            {
#if UNITY_EDITOR
                UnityEditor.Events.UnityEventTools.AddPersistentListener(
                    checkboxData.OnSelectedEvent, inter.HandleItemSelected);
                UnityEditor.Events.UnityEventTools.AddPersistentListener(
                    checkboxData.OnValueChangedEvent, inter.HandleItemValueChanged);
#else
                checkboxData.OnSelectedEvent.AddListener(inter.HandleItemSelected);
                checkboxData.OnValueChangedEvent.AddListener(inter.HandleItemValueChanged);
#endif
            }

            return(itemGo);
        }
        /*--------------------------------------------------------------------------------------------*/
        private void DrawMainItems()
        {
            EditorGUILayout.PropertyField(serializedObject.FindProperty("_Id"), new GUIContent("ID"));
            EditorGUILayout.PropertyField(serializedObject.FindProperty("_Label"));
            EditorGUILayout.PropertyField(serializedObject.FindProperty("_IsEnabled"));

            ////

            HoverItemDataSelector selectorData = (vData as HoverItemDataSelector);
            HoverItemDataCheckbox checkboxData = (vData as HoverItemDataCheckbox);
            HoverItemDataRadio    radioData    = (vData as HoverItemDataRadio);
            HoverItemDataSlider   sliderData   = (vData as HoverItemDataSlider);
            HoverItemDataSticky   stickyData   = (vData as HoverItemDataSticky);

            if (selectorData != null)
            {
                EditorGUILayout.PropertyField(serializedObject.FindProperty("_Action"));
            }
            else if (checkboxData != null)
            {
                EditorGUILayout.PropertyField(serializedObject.FindProperty("_Value"),
                                              new GUIContent("Checkbox Value"));
            }
            else if (radioData != null)
            {
                EditorGUILayout.PropertyField(serializedObject.FindProperty("_GroupId"),
                                              new GUIContent("Radio Group ID"));
                EditorGUILayout.PropertyField(serializedObject.FindProperty("_Value"),
                                              new GUIContent("Radio Value"));
            }
            else if (sliderData != null)
            {
                EditorGUILayout.PropertyField(serializedObject.FindProperty("_LabelFormat"),
                                              new GUIContent("Slider Label Format"));
                EditorGUILayout.PropertyField(serializedObject.FindProperty("_RangeMin"),
                                              new GUIContent("Slider Range Min"));
                EditorGUILayout.PropertyField(serializedObject.FindProperty("_RangeMax"),
                                              new GUIContent("Slider Range Max"));

                float rangeValue = Mathf.Lerp(
                    sliderData.RangeMin, sliderData.RangeMax, sliderData.Value);
                rangeValue = EditorGUILayout.Slider(
                    "Slider Range Value", rangeValue, sliderData.RangeMin, sliderData.RangeMax);
                serializedObject.FindProperty("_Value").floatValue =
                    Mathf.InverseLerp(sliderData.RangeMin, sliderData.RangeMax, rangeValue);

                EditorGUILayout.PropertyField(serializedObject.FindProperty("_Ticks"),
                                              new GUIContent("Slider Ticks"));
                EditorGUILayout.PropertyField(serializedObject.FindProperty("_Snaps"),
                                              new GUIContent("Slider Snaps"));
                EditorGUILayout.PropertyField(serializedObject.FindProperty("_AllowJump"),
                                              new GUIContent("Slider Allow Jump"));
                EditorGUILayout.PropertyField(serializedObject.FindProperty("_FillStartingPoint"),
                                              new GUIContent("Slider Fill Starting-Point"));
                EditorGUILayout.PropertyField(serializedObject.FindProperty("_AllowIdleDeselection"),
                                              new GUIContent("Allow Idle Deselection"));
            }
            else if (stickyData != null)
            {
                EditorGUILayout.PropertyField(serializedObject.FindProperty("_AllowIdleDeselection"),
                                              new GUIContent("Allow Idle Deselection"));
            }
        }