     .tween({ dy: 410 }, duration)
     .attr(dx: -300)
   )
-  sun.onHit '2D', (c) ->
-    covered = 0
+  Crafty.bind 'EnterFrame', ->
+    covered = [0]
     sunArea = sun.area()
-    for o in c
+
+    for o in sun.hit('2D')
+      continue if o.obj is sun
+      continue if o.obj.has 'Glare'
       e = o.obj
       xMin = Math.max(sun.x, e.x)
       xMax = Math.min(sun.x + sun.w, e.x + e.w)

    .attr(dx: -200)
  )

  glare.push(Crafty.e('2D, Canvas, Color, ViewportRelativeMotion, Tween')
    .attr(w: 10, h: 10, z: 1000, x: 150, y: 10, alpha: 0.8, originalAlpha: 0.8)
    .color('#FF9090')
    .viewportRelativeMotion(
      x: 150

      yMin = Math.max(sun.y, e.y)
      yMax = Math.min(sun.y + sun.h, e.y + e.h)
      h = yMax - yMin
      covered.push(w * h)


    perc = Math.max(covered...) / sunArea
    perc = 1 if covered > sunArea
    for e in glare
      e.attr alpha: e.originalAlpha * (1 - perc)
