Example #1
0
        private void RunAutoplay()
        {
            if (CurrentWaypoint.NextWaypoint == null)
            {
                return;
            }

            _actor.colorDetails.addColor = CurrentWaypoint.IsConnectedWithNext;

            var nextWaypointPos = CurrentWaypoint.NextWaypoint.transform.localPosition;
            var endPoint        = new Vector3(nextWaypointPos.x, nextWaypointPos.y, Head.transform.localPosition.z);

            var param = new TweenParms();

            param.Prop("localPosition", endPoint);
            param.Ease(EaseType.Linear);
            param.OnComplete(() => { CurrentWaypoint = CurrentWaypoint.NextWaypoint; RunAutoplay(); });
            param.OnUpdate(() => _transform.localPosition = Head.transform.localPosition);

            var distance = Vector3.Distance(Head.transform.localPosition, endPoint);

            HOTween.To(Head.transform, distance / _wayTrailSpeed, param);
        }
        //creates a new HOTween tween with give arguments that moves along the path
        private void CreateTween()
        {
            //prepare HOTween's parameters, you can look them up here
            //http://www.holoville.com/hotween/documentation.html

            //create new plugin for curved paths
            //pass in array of Vector3 waypoint positions, relative = true
            plugPath = null;
            plugPath = new PlugVector3Path(wpPos, true, pathType);

            //orients the tween target along the path
            if (orientToPath)
            {
                plugPath.OrientToPath(lookAhead, lockAxis);
            }

            //lock position axis, if set
            if (lockPosition != Holoville.HOTween.Axis.None)
            {
                plugPath.LockPosition(lockPosition);
            }

            //create TweenParms for storing HOTween's parameters
            tParms = new TweenParms();
            //sets the path plugin as tween position property
            tParms.Prop("position", plugPath);

            //additional tween parameters for partial tweens
            tParms.AutoKill(false);
            tParms.Loops(1);

            //differ between TimeValue, use speed with linear easing
            //or time based tweening with an animation easetype
            if (timeValue == TimeValue.speed)
            {
                tParms.SpeedBased();
                tParms.Ease(EaseType.Linear);
            }
            else
            {
                //use time in seconds and the chosen easetype
                if (easeType == Holoville.HOTween.EaseType.AnimationCurve)
                {
                    tParms.Ease(animEaseType);
                }
                else
                {
                    tParms.Ease(easeType);
                }
            }

            //if we're on the original tween,
            //attach methods to the tween
            if (!moveToPath)
            {
                tParms.OnUpdate(CheckPoint);
                tParms.OnComplete(ReachedEnd);
            }

            //finally create the tween
            tween = HOTween.To(transform, originSpeed, tParms);

            //continue new tween with adjusted speed if it was changed before
            if (originSpeed != speed)
            {
                ChangeSpeed(speed);
            }
        }
Example #3
0
        void Start()
        {
            _initialized = true;

            _isRadioButton = _toggleGroupid != "";

            List <IHOtk2dBase> childrenSprites = null;
            bool hasChildrenToTween            = false;
            bool hasTextMeshesToTween          = false;

            if (_tweenChildren && _tweenColorOn != ButtonActionType.None)
            {
                Component[] children = gameObject.GetComponentsInChildren(typeof(IHOtk2dBase));
                childrenSprites = new List <IHOtk2dBase>();
                foreach (Component child in children)
                {
                    if (child == sprite)
                    {
                        continue;
                    }
                    childrenSprites.Add(child as IHOtk2dBase);
                    IHOtk2dTextMesh txtMesh = child as IHOtk2dTextMesh;
                    if (txtMesh != null)
                    {
                        _txtMeshesToUpdate.Add(txtMesh);
                    }
                }
                hasChildrenToTween   = childrenSprites.Count > 0;
                hasTextMeshesToTween = _txtMeshesToUpdate.Count > 0;
            }

            // Hide eventual tooltip
            if (_tooltip != null)
            {
                _tooltip.SetActive(false);
                _showTooltip = true;
            }

            // Create tweens
            TweenParms seqParms = new TweenParms();

            if (hasRollover)
            {
                seqParms.Clear()
                .SetUpdate(true)
                .SetAutoKill(false);
                if (hasTextMeshesToTween)
                {
                    seqParms.OnUpdate(UpdateTextMeshes);
                }
                _rolloutTween = DOTween.Sequence().SetAs(seqParms)
                                .OnKill(() => _rolloutTween = null)
                                .Pause();
                if (_tweenScaleOn == ButtonActionType.OnRollover)
                {
                    _rolloutTween.Insert(0, trans.DOScaleFrom(trans.localScale * _tweenScaleMultiplier, _TweenDuration));
                }
                if (_tweenColorOn == ButtonActionType.OnRollover)
                {
                    _rolloutTween.Insert(0, DOTween.From(() => sprite.color, x => sprite.color = x, _tweenColor, _TweenDuration));
                    if (hasChildrenToTween)
                    {
                        foreach (IHOtk2dBase childSprite in childrenSprites)
                        {
                            IHOtk2dBase s = childSprite;
                            _rolloutTween.Insert(0, DOTween.From(() => s.color, x => s.color = x, _tweenColor, _TweenDuration));
                        }
                    }
                }
                _rolloutTween.Complete();
            }
            if (_tweenColorOn == ButtonActionType.OnPress || _tweenScaleOn == ButtonActionType.OnPress)
            {
                seqParms = seqParms.Clear()
                           .SetUpdate(true)
                           .SetAutoKill(false);
                if (hasTextMeshesToTween)
                {
                    seqParms.OnUpdate(UpdateTextMeshes);
                }
                _unpressTween = DOTween.Sequence().SetAs(seqParms)
                                .OnKill(() => _unpressTween = null)
                                .Pause();
                if (_tweenScaleOn == ButtonActionType.OnPress)
                {
                    _unpressTween.Insert(0, trans.DOScaleFrom(trans.localScale * _tweenScaleMultiplier, _TweenDuration));
                }
                if (_tweenColorOn == ButtonActionType.OnPress)
                {
                    _unpressTween.Insert(0, DOTween.From(() => sprite.color, x => sprite.color = x, _tweenColor, _TweenDuration));
                    if (hasChildrenToTween)
                    {
                        foreach (IHOtk2dBase childSprite in childrenSprites)
                        {
                            IHOtk2dBase s = childSprite;
                            _rolloutTween.Insert(0, DOTween.From(() => s.color, x => s.color = x, _tweenColor, _TweenDuration));
                        }
                    }
                }
                _unpressTween.Complete();
            }
            if (_tweenColorOn == ButtonActionType.OnClick || _tweenScaleOn == ButtonActionType.OnClick)
            {
                seqParms = seqParms.Clear()
                           .SetUpdate(true)
                           .SetAutoKill(false);
                if (hasTextMeshesToTween)
                {
                    seqParms.OnUpdate(UpdateTextMeshes);
                }
                _unclickTween = DOTween.Sequence().SetAs(seqParms)
                                .OnKill(() => _unclickTween = null)
                                .Pause();
                if (_tweenScaleOn == ButtonActionType.OnClick)
                {
                    _unclickTween.Insert(0.15f, trans.DOScaleFrom(trans.localScale * _tweenScaleMultiplier, _TweenDuration));
                }
                if (_tweenColorOn == ButtonActionType.OnClick)
                {
                    _unclickTween.Insert(0.15f, DOTween.From(() => sprite.color, x => sprite.color = x, _tweenColor, _TweenDuration));
                    if (hasChildrenToTween)
                    {
                        foreach (IHOtk2dBase childSprite in childrenSprites)
                        {
                            IHOtk2dBase s = childSprite;
                            _rolloutTween.Insert(0, DOTween.From(() => s.color, x => s.color = x, _tweenColor, _TweenDuration));
                        }
                    }
                }
                _unclickTween.Complete();
            }

            // Execute eventual cued actions
            if (_preinitActionsQueue != null)
            {
                foreach (PreinitActionType visualActionType in _preinitActionsQueue)
                {
                    switch (visualActionType)
                    {
                    case PreinitActionType.ToggleOn:
                        ToggleOn();
                        break;

                    case PreinitActionType.ToggleOnWithoutEventDispatching:
                        ToggleOn(false);
                        break;

                    case PreinitActionType.ToggleOff:
                        ToggleOff();
                        break;

                    case PreinitActionType.ToggleOffWithoutEventDispatching:
                        ToggleOff(false);
                        break;
                    }
                }
            }
        }