Esempio n. 1
0
    void Start()
    {
        if (widgetForBlinkConfirmation != null)
        {
            _initBlinkColor = widgetForBlinkConfirmation.color;
        }


        _cycler = cyclerPanel.gameObject.GetComponent(typeof(IPCycler)) as IPCycler;

        _dragContents      = pickerColliderObject.GetComponent(typeof(IPDragScrollView)) as IPDragScrollView;
        _pickerInteraction = pickerColliderObject.GetComponent(typeof(IPUserInteraction)) as IPUserInteraction;

        _pickerCollider = pickerColliderObject.GetComponent(typeof(BoxCollider)) as BoxCollider;
        _thisCollider   = gameObject.GetComponent(typeof(BoxCollider)) as BoxCollider;

        _clipRangeTween = cyclerPanel.gameObject.GetComponent(typeof(TweenPanelClipRange)) as TweenPanelClipRange;
        _softnessTween  = cyclerPanel.gameObject.GetComponent(typeof(TweenPanelClipSoftness)) as TweenPanelClipSoftness;

        _scaleTween = pickerBackground.gameObject.GetComponent(typeof(TweenHeight)) as TweenHeight;

        cyclerPanel.baseClipRegion = _clipRangeTween.from;
        cyclerPanel.clipSoftness   = _softnessTween.from;
        pickerBackground.height    = ( int )_scaleTween.from;

        _dragContents.enabled   = false;
        _pickerCollider.enabled = false;
    }
    //Called by editor script (IPCyclerInspector) via sendmessage to rebuild widgets when nb of transforms in picker changes
    protected void RebuildWidgets()
    {
        if (cycler == null)
        {
            cycler = GetComponentInChildren(typeof(IPCycler)) as IPCycler;
        }

        MakeWidgetComponents();
        ResetWidgets();
    }
    void Awake()
    {
        _cycler = gameObject.GetComponent(typeof(IPCycler)) as IPCycler;

        if (_cycler == null)
        {
            Debug.LogError("CyclerClamper must be placed on the same GameObject as IPCycler.");
            Destroy(this);
            return;
        }
    }
    void OnEnable()
    {
        _cycler = new SerializedObject(target);
        _cycler.Update();
        IPCycler cycler = ( IPCycler )target;

        _nbOfTransforms         = cycler.NbOfTransforms;
        _spacing                = _cycler.FindProperty("spacing");
        _direction              = _cycler.FindProperty("direction");
        _recenterSpeedThreshold = _cycler.FindProperty("recenterSpeedThreshold");
        _recenterSpringStrength = _cycler.FindProperty("recenterSpringStrength");
        _restrictDragToPicker   = _cycler.FindProperty("restrictDragToPicker");
    }
    void Start()
    {
        if (observedPicker == null)
        {
            observedPicker = gameObject.GetComponent(typeof(IPPickerBase)) as IPPickerBase;
        }

        if (observedPicker == null)
        {
            Debug.LogError("Needs an IPPicker!");
            return;
        }

        _cycler = observedPicker.cycler;
        if (_cycler == null)
        {
            Debug.LogError("No Cycler!");
        }

        SetDelegates();

        if (notifyOnSelectionChange && onSelectionChangeNotification.notifyInStart)
        {
            Notify(onSelectionChangeNotification);
        }

        if (notifyOnSelectionStarted && onStartedNotification.notifyInStart)
        {
            Notify(onStartedNotification);
        }

        if (notifyOnCenterOnChildStarted && onCenterOnChildNotification.notifyInStart)
        {
            Notify(onCenterOnChildNotification);
        }

        if (notifyOnPickerStopped && onStoppedNotification.notifyInStart)
        {
            Notify(onStoppedNotification);
        }

        if (notifyOnDragExit && onExitNotification.notifyInStart)
        {
            Notify(onExitNotification);
        }
    }
    protected virtual void Init()
    {
        if (cycler == null)
        {
            cycler = GetComponentInChildren(typeof(IPCycler)) as IPCycler;
        }

        if (WidgetsNeedRebuild())
        {
            MakeWidgetComponents();
        }

        UpdateVirtualElementsCount();

        if (_nbOfVirtualElements == 0)
        {
            EnableWidgets(false);
            return;
        }

        _selectedIndex = GetInitIndex();
        UpdateCurrentValue();
        ResetWidgetsContent();
    }
    public override void OnInspectorGUI()
    {
        _cycler.Update();

        EditorGUILayout.BeginHorizontal();

        GUILayout.Label("Number of transforms to cycle : ");
        GUILayout.Label(_nbOfTransforms.ToString());

        if (GUILayout.Button(_lessTransformsButton, EditorStyles.miniButtonLeft, _buttonWidth))
        {
            if (_nbOfTransforms > 4)
            {
                IPCycler cycler = ( IPCycler )target;
                _nbOfTransforms -= 2;
                if (_nbOfTransforms % 2 == 0)
                {
                    _nbOfTransforms++;
                }

                cycler.RebuildTransforms(_nbOfTransforms);
                cycler.SendMessageUpwards("RebuildWidgets", SendMessageOptions.DontRequireReceiver);
            }
        }

        if (GUILayout.Button(_moreTransformsButton, EditorStyles.miniButtonRight, _buttonWidth))
        {
            IPCycler cycler  = ( IPCycler )target;
            int      nbToAdd = _nbOfTransforms % 2 == 0 ? 3 : 2;
            _nbOfTransforms += nbToAdd;
            cycler.RebuildTransforms(_nbOfTransforms);
            cycler.SendMessageUpwards("RebuildWidgets", SendMessageOptions.DontRequireReceiver);
        }

        EditorGUILayout.EndHorizontal();

        EditorGUILayout.PropertyField(_spacing);
        EditorGUILayout.PropertyField(_direction);

        EditorGUILayout.BeginHorizontal();
        EditorGUILayout.LabelField("Recenter Speed Threshold", GUILayout.Width(150f));
        _recenterSpeedThreshold.floatValue = EditorGUILayout.FloatField(_recenterSpeedThreshold.floatValue);
        EditorGUILayout.EndHorizontal();

        EditorGUILayout.BeginHorizontal();
        EditorGUILayout.LabelField("Recenter Spring Strength", GUILayout.Width(150f));
        _recenterSpringStrength.floatValue = EditorGUILayout.FloatField(_recenterSpringStrength.floatValue);
        EditorGUILayout.EndHorizontal();

        EditorGUILayout.BeginHorizontal();
        EditorGUILayout.LabelField("Restrict Drag To Picker", GUILayout.Width(150f));
        _restrictDragToPicker.boolValue = EditorGUILayout.Toggle(_restrictDragToPicker.boolValue);
        EditorGUILayout.EndHorizontal();

        if (GUILayout.Button(_resetButton, EditorStyles.toolbarButton, _resetButtonWidth))
        {
            IPCycler cycler = ( IPCycler )target;
            cycler.EditorInit();
            cycler.SendMessageUpwards("RebuildWidgets", SendMessageOptions.DontRequireReceiver);
        }

        if (_cycler.ApplyModifiedProperties())
        {
            (( IPCycler )target).UpdateTrueSpacing();
        }
    }