                         (let [moved-entity (-> entity
                                                update-orientation
                                                update-velocity
+                                               apply-friction
                                                update-position)]
 
                           (doseq [axis [:x :y]]

            (update-in [:motion :velocity :y]
                       (partial update-axis-velocity Math/sin))))
      entity)))

(sm/defn update-position :- Entity
  [entity :- Entity]


(sm/defn update-velocity :- Entity
  [entity :- Entity]
  ; TODO - acceleration will be computed differently for AI-controlled monsters
  (let [acceleration (if (not-empty (human-controlled-entity-movement-directions entity))
                       (get-in entity [:motion :max-acceleration])
                       0)]
