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); }
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); }
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; }
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; }