       'dive':            4
       'drop-middle':     4
       'drop-low':        4
+      'exchange-alt':    4
       'exchange':        4
-      'exchange-alt':    4
     'low':
       'crossing':        1
       'curve':           4

    'straight':          [0, 180]
    'dive':                 [  0]
    'drop-middle':          [  0]
    'exchange':             [ 90]
    'exchange-alt':         [  0]

  @LowHoles:
    'dive':                 [180]
    'drop-low':             [  0]
    'exchange':             [  0]
    'exchange-alt':         [ 90]


  getTexture: (group, type, rotation) ->
    unless rotation
      return @textures[group][type][0] if Renderer.TextureFileDescription[group][type]?

    rotationCount = Renderer.TextureFileDescription[group][type]
    return null unless rotationCount?
    return @textures[group][type][rotation / 90 % rotationCount]

  drawMap: (force = no) ->
    return if (@isDrawing or not @map.needsRedraw) and not force
    console.time "draw" if DEBUG
    @isDrawing = yes
