static func rotatedDir(old_dir, ccwTicks):
  var dir = Vector2(old_dir.x, old_dir.y)
  ccwTicks = ccwTicks % 8
  while ccwTicks > 0:
    ccwTicks -= 1
    if dir.x == -1:
      if dir.y == 1:
        dir.y = 0
      elif dir.y == 0:
        dir.y = -1
      elif dir.y == -1:
        dir.x = 0
      else:
        print("Bad direction.")
    elif dir.x == 0:
      if dir.y == -1:
        dir.x = 1
      elif dir.y == 1:
        dir.x = -1
      else:
        print("Bad direction to rotate")
    elif dir.x == 1:
      if dir.y == -1:
        dir.y = 0
      elif dir.y == 0:
        dir.y = 1
      elif dir.y == 1:
        dir.x = 0
  return dir

static func dir2rot(dir):
  var rot
  if dir.x == -1:
    if dir.y == -1:
      rot = 3*PI/4
    elif dir.y == 1:
      rot = PI/4
    else:
      rot = PI/2
  elif dir.x == 1:
    if dir.y == -1:
      rot = -3*PI/4
    elif dir.y == 1:
      rot = -PI/4
    else:
      rot = -PI/2
  else:
    if dir.y == -1:
      rot = PI
    elif dir.y == 1:
      rot = 0
    else:
      print("dir.y should be non-zero if dir.x is zero!")
  return rot

static func createFromSpritesheet(sprSheet):
  var sprites = []
  var tileSize = 48
  var spritesheet = load(sprSheet)
  var w = spritesheet.get_width() / tileSize
  var h = spritesheet.get_height() / tileSize
  
  for y in range(h):
      for x in range(w):
          var tile = Sprite.new()
          sprites.append(tile)
          tile.set_texture(spritesheet)
          tile.set_region(true)
          tile.set_region_rect(Rect2(x*tileSize, y*tileSize, tileSize, tileSize))
#          tile.set_position(Vector2(x*tileSize+tileSize/2, y*tileSize+tileSize/2))
  return sprites 