改结构

This commit is contained in:
2026-08-29 01:23:45 +08:00
parent e61542092e
commit e2cd28a93a
60 changed files with 839 additions and 876 deletions
+14
View File
@@ -24,6 +24,11 @@ struct Scene::Private : Prev_Private {
State_Access<State> pending_states,
const Prop* current_prop,
State_Access<State> current_states);
/* 写入事件统计字段表示开始新的统计窗口;累加器与发布 State 在同一入口归零。 */
template <typename Object, typename Owner, typename Member,
typename State_Type>
void before_state_set(Object* object, Member Owner::* member,
State_Access<State_Type> pending_states);
/* Private CRTP 入口:执行当前总 Taskflow;派生 Private 只有在替换完整 Scene 处理语义时才应覆盖。 */
template <Attached Object, typename Callback>
void process(Object* object, Callback&& callback) requires std::invocable<Callback, const Result&>;
@@ -36,6 +41,15 @@ struct Scene::Private : Prev_Private {
requires std::invocable<Callback, const Result&>;
/* 派生 Scene 的 Private 还可覆盖 Def::Private 的四个 State 生命周期 hook,并通过 State_Access::get<Tag>() 访问状态层。 */
};
template <typename Object, typename Owner, typename Member,
typename State_Type>
void Scene::Private::before_state_set(
Object* object, Member Owner::* member,
State_Access<State_Type> pending_states) {
if constexpr (std::same_as<Owner, State>)
if (member == &State::event_statistics) event_statistics.reset();
}
struct Scene::Private::Runtime {
std::unique_ptr<Task_Graph> taskflow; /* 当前已构建的总业务 DAG;为空表示尚未构建。 */
};