public void step() { if (cameraState != CameraMoveState.NotMoving) { cameraMoving = true; switch (cameraState) { case CameraMoveState.MoveOut: if (currentNode.previous != null) { currentNode = currentNode.previous; } if (areX_AtRoot(currentNode)) { cameraState = CameraMoveState.MoveVertically; } break; case CameraMoveState.MoveVertically: if (currentNode.nodeYIndex > endNode.nodeYIndex) { currentNode = levels[currentNode.nodeYIndex - 1]; } else if (currentNode.nodeYIndex < endNode.nodeYIndex) { currentNode = levels[currentNode.nodeYIndex + 1]; } if (areYsEqual(currentNode, endNode)) { cameraState = CameraMoveState.MoveIn; } break; case CameraMoveState.MoveIn: if (currentNode.next != null) { currentNode = currentNode.next; } if (areXsEquals(currentNode, endNode)) { cameraState = CameraMoveState.NotMoving; } break; } if (areNodesEqual(currentNode, endNode)) { cameraState = CameraMoveState.NotMoving; } } }
public bool areNodesEqual(CameraPathNode currentNode, CameraPathNode targetNode) { if (currentNode.nodeXIndex == targetNode.nodeXIndex && currentNode.nodeYIndex == targetNode.nodeYIndex) { return(true); } return(false); }
private CameraPathNode getNodeInLevel(int n) { CameraPathNode tmpNode = levels[currentNode.nodeYIndex]; for (int i = 0; i < n && tmpNode.next != null; i++) { tmpNode = tmpNode.next; } return(tmpNode); }
/// <summary> /// To Check whether x-axis of the currentNode reached the root or not yet. /// </summary> /// <param name="currentNode"></param> /// <returns></returns> public bool areX_AtRoot(CameraPathNode currentNode) { if (currentNode.nodeXIndex == 0) { return(true); } else { return(false); } }
/// <summary> /// To Check whether x-axis of the currentNode and the target node are equal or not. /// </summary> /// <param name="currentNode"></param> /// <param name="targetNode"></param> /// <returns></returns> public bool areXsEquals(CameraPathNode currentNode, CameraPathNode targetNode) { if (currentNode.nodeXIndex == targetNode.nodeXIndex) { return(true); } else { return(false); } }
// Start is called before the first frame update void Start() { CameraPathNode tmpNode = GetComponent <CameraPathNode>(); int xIndexCounter = 0; while (tmpNode.previous != null) { xIndexCounter++; tmpNode = tmpNode.previous; } nodeXIndex = xIndexCounter; nodeYIndex = tmpNode.nodeYIndex; }
private void Awake() { if (!instance) { instance = this; } else { Destroy(gameObject); } cameraState = CameraMoveState.NotMoving; for (int i = 0; i < levels.Count; i++) { levels[i].nodeYIndex = i; } defaultNode = levels[0]; }
public void setTarget(CameraPathNode targetNode) { endNode = targetNode; }
int calculateDistanceToNode(CameraPathNode targetNode) { return(currentNode.nodeXIndex + targetNode.nodeXIndex + Mathf.Abs(currentNode.nodeYIndex - targetNode.nodeYIndex)); }