public void updateUncommittedSlots(Enums.ArrowDirection dir, Vector3 position, int xlength, int zlength) { var x = Mathf.FloorToInt(position.x); var z = Mathf.FloorToInt(position.z); var startIdx = posToBoardIdx(new Vector2(x - xlength / 2, z - zlength / 2)); var endIdx = posToBoardIdx(new Vector2(x + xlength / 2, z + zlength / 2)); if (xlength == 1) { endIdx.x += 1; } if (zlength == 1) { endIdx.y += 1; } IntVector2 newStartIdx, oldStartIdx, newEndIdx, oldEndIdx; newStartIdx = oldStartIdx = startIdx; newEndIdx = oldEndIdx = endIdx; if (dir == Enums.ArrowDirection.Up) { newStartIdx.y = endIdx.y - 1; oldStartIdx.y = startIdx.y - 1; oldEndIdx.y = startIdx.y; } else if (dir == Enums.ArrowDirection.Down) { newEndIdx.y = startIdx.y + 1; oldStartIdx.y = endIdx.y; oldEndIdx.y = endIdx.y + 1; } else if (dir == Enums.ArrowDirection.Right) { newStartIdx.x = endIdx.x - 1; oldStartIdx.x = startIdx.x - 1; oldEndIdx.x = startIdx.x; } else { newEndIdx.x = startIdx.x + 1; oldStartIdx.x = endIdx.x; oldEndIdx.x = endIdx.x + 1; } incrementSlots(newStartIdx, newEndIdx); decrementSlots(oldStartIdx, oldEndIdx); //printBoardSlotMembers(); }
private void move(Enums.ArrowDirection direction) { if (direction == Enums.ArrowDirection.Left) { this.transform.Translate(new Vector3(-1, 0, 0)); } else if (direction == Enums.ArrowDirection.Right) { this.transform.Translate(new Vector3(1, 0, 0)); } else if (direction == Enums.ArrowDirection.Up) { this.transform.Translate(new Vector3(0, 0, 1)); } else { this.transform.Translate(new Vector3(0, 0, -1)); } }
private bool getDirectionArrow(out Enums.ArrowDirection direction) { direction = Enums.ArrowDirection.Left; RaycastHit hitInfo; var ray = Camera.main.ScreenPointToRay(Input.mousePosition); var hit = Physics.Raycast(ray.origin, ray.direction, out hitInfo, 100f); if (hit && hitInfo.transform.tag == "ArrowDirection") { //Debug.DrawRay(ray.origin, ray.direction * Vector3.Distance(hitInfo.point, ray.origin), Color.cyan, 20f); var collider = hitInfo.collider.transform.parent.name; var topLevelParent = hitInfo.transform.parent.parent.parent; var oldTopLevelParentPos = topLevelParent.position; if (collider == "Left") { direction = Enums.ArrowDirection.Left; topLevelParent.Translate(new Vector3(-1, 0, 0)); } else if (collider == "Right") { direction = Enums.ArrowDirection.Right; topLevelParent.Translate(new Vector3(1, 0, 0)); } else if (collider == "Up") { direction = Enums.ArrowDirection.Up; topLevelParent.Translate(new Vector3(0, 0, 1)); } else { direction = Enums.ArrowDirection.Down; topLevelParent.Translate(new Vector3(0, 0, -1)); } //boardController.updateBoardSlots(direction, oldTopLevelParentPos, topLevelParent.position, this.xLength, this.zLength); boardController.updateUncommittedSlots(direction, topLevelParent.position, this.xLength, this.zLength); return(true); } return(false); }