改结构
This commit is contained in:
@@ -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;为空表示尚未构建。 */
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user