+ double_update(&remains_, delta, sg_precision_workamount * sg_precision_timing);
+}
+
+void Action::set_last_update()
+{
+ last_update_ = EngineImpl::get_clock();
+}
+
+double ActionHeap::top_date() const
+{
+ return top().first;
+}
+
+void ActionHeap::insert(Action* action, double date, ActionHeap::Type type)
+{
+ action->type_ = type;
+ action->heap_hook_ = emplace(std::make_pair(date, action));
+}
+
+void ActionHeap::remove(Action* action)
+{
+ action->type_ = ActionHeap::Type::unset;
+ if (action->heap_hook_) {
+ erase(*action->heap_hook_);
+ action->heap_hook_ = boost::none;