void AddNeighbour(Point from, Point target, Vector3 targetDir, bool direct)
        {
            var neighbour = new Neighbour();

            neighbour.direction = targetDir;
            neighbour.target    = target;
            neighbour.cType     = direct ? ConnectionType.direct : ConnectionType.inBetween;
            from.neighbours.Add(neighbour);
            UnityEditor.EditorUtility.SetDirty(from);
        }
Пример #2
0
        public Neighbour ReturnNeighbour(Point target)
        {
            Neighbour retVal = null;

            for (int i = 0; i < neighbours.Count; i++)
            {
                if (neighbours[i].target == target)
                {
                    retVal = neighbours[i];
                }
            }

            return(retVal);
        }
Пример #3
0
        void OnPoint(Vector3 direction)
        {
            neighbour = _curPoint.GetNeighbour(direction);

            if (neighbour == null)
            {
                return;
            }

            _targetPoint = neighbour.target;
            _prevPoint   = _curPoint;
            _climbState  = ClimbState.inTransit;

            UpdateconnectionTransitByType(neighbour, direction);

            _lockInput = true;
        }
Пример #4
0
        void UpdateconnectionTransitByType(Neighbour n, Vector3 inputDirection)
        {
            var desiredPosition = Vector3.zero;

            curConnection = n.cType;

            Vector3 direction = _targetPoint.transform.position - _curPoint.transform.position;

            direction.Normalize();

            switch (n.cType)
            {
            case ConnectionType.inBetween:

                var dist = Vector3.Distance(_curPoint.transform.position, _targetPoint.transform.position);
                desiredPosition = _curPoint.transform.position + (direction * (dist / 2));
                _targetState    = ClimbState.betweenPoints;
                TransitDir transitDir = TransitDirection(inputDirection, false);
                PlayAnim(transitDir);
                break;

            case ConnectionType.direct:

                desiredPosition = _targetPoint.transform.position;
                _targetState    = ClimbState.onPoint;
                transitDir      = TransitDirection(direction, false);
                Debug.Log(transitDir.ToString());
                PlayAnim(transitDir);
                break;

            case ConnectionType.dismount:

                desiredPosition = _targetPoint.transform.position;
                _anim.SetInteger("JumpType", 20);
                _anim.SetBool("Move", true);
                break;
            }

            _targetPosition = desiredPosition;
        }