catapult :: AObject -> StateT SpaceState IO ()
catapult lc = do
  state <- State.get
  let objpos = AObject.getPosition lc
      dist = AObject.size lc
      plloc = Entity.position (tri state)
      pldir = OpenGLUtils.normalize (plloc *-* objpos)
  modify $ modTri $ modifyPosition $ const $ objpos *+* (pldir *** (dist + 5))
  modify $ modTri $ modifyVelocity $ const $ pldir *** 0.2
  modify $ modTri $ resetAcceleration
  modify $ modTri $ modifyRotation $ (+180)
catapult :: AObject -> StateT SpaceState IO ()
catapult lc = do
  state <- State.get
  let objpos = AObject.getPosition lc
      dist = AObject.size lc
      plloc = Entity.position (tri state)
      pldir = OpenGLUtils.normalize (plloc *-* objpos)
  modify $ modTri $ modifyPosition $ const $ objpos *+* (pldir *** (dist + 5))
  modify $ modTri $ modifyVelocity $ const $ pldir *** 0.2
  modify $ modTri $ resetAcceleration
  modify $ modTri $ modifyRotation $ (+180)
catapult lc = do
  state <- State.get
  let objpos = AObject.getPosition lc
      dist = AObject.size lc
      plloc = Entity.position (tri state)
      pldir = OpenGLUtils.normalize (plloc *-* objpos)
  modify $ modTri $ modifyPosition $ const $ objpos *+* (pldir *** (dist + 5))
  modify $ modTri $ modifyVelocity $ const $ pldir *** 0.2
  modify $ modTri $ resetAcceleration
  modify $ modTri $ modifyRotation $ (+180)