1#include "Library/Execute/ExecuteUtil.h"
2
3#include "Library/Execute/ActorExecuteInfo.h"
4#include "Library/Execute/ExecuteDirector.h"
5#include "Library/Execute/ExecuteRequestKeeper.h"
6#include "Library/LiveActor/ActorFlagFunction.h"
7#include "Library/LiveActor/LiveActor.h"
8#include "Library/LiveActor/LiveActorFunction.h"
9#include "Library/Model/ModelDrawerBase.h"
10#include "Library/Model/ModelKeeper.h"
11#include "Library/Shadow/ActorShadowUtil.h"
12
13namespace al {
14
15void registerExecutorActorUpdate(LiveActor* actor, ExecuteDirector* director,
16 const char* listName) {
17 director->registerActorUpdate(actor, listName);
18}
19
20void registerExecutorActorDraw(LiveActor* actor, ExecuteDirector* director, const char* listName) {
21 director->registerActorDraw(actor, listName);
22}
23
24void registerExecutorLayoutUpdate(LayoutActor* layout, ExecuteDirector* director,
25 const char* listName) {
26 director->registerLayoutUpdate(layout, listName);
27}
28
29void registerExecutorLayoutDraw(LayoutActor* layout, ExecuteDirector* director,
30 const char* listName) {
31 director->registerLayoutDraw(layout, listName);
32}
33
34void registerExecutorUser(IUseExecutor* user, ExecuteDirector* director, const char* listName) {
35 director->registerUser(user, listName);
36}
37
38void registerExecutorFunctor(const char* listName, ExecuteDirector* director,
39 const FunctorBase& functor) {
40 director->registerFunctor(functor, listName);
41}
42
43void registerExecutorFunctorDraw(const char* listName, ExecuteDirector* director,
44 const FunctorBase& functor) {
45 director->registerFunctorDraw(functor, listName);
46}
47
48} // namespace al
49
50namespace alActorSystemFunction {
51
52void addToExecutorMovement(al::LiveActor* actor) {
53 actor->getExecuteInfo()->getRequestKeeper()->request(
54 actor, requestType: al::ExecuteRequestKeeper::Request_Movement);
55}
56
57void addToExecutorDraw(al::LiveActor* actor) {
58 actor->getExecuteInfo()->getRequestKeeper()->request(actor,
59 requestType: al::ExecuteRequestKeeper::Request_Draw);
60}
61
62void removeFromExecutorMovement(al::LiveActor* actor) {
63 actor->getExecuteInfo()->getRequestKeeper()->request(
64 actor, requestType: al::ExecuteRequestKeeper::Request_RemoveFromMovement);
65}
66
67void removeFromExecutorDraw(al::LiveActor* actor) {
68 actor->getExecuteInfo()->getRequestKeeper()->request(
69 actor, requestType: al::ExecuteRequestKeeper::Request_RemoveFromDraw);
70}
71
72void updateExecutorDrawRec(al::LiveActor* baseActor, al::LiveActor* actor) {
73 if (al::isAlive(actor) && actor->getExecuteInfo()) {
74 for (s32 i = 0; i < actor->getExecuteInfo()->getDrawerCount(); i++) {
75 actor->getExecuteInfo()->getDrawer(idx: i)->updateModel(
76 model: actor->getModelKeeper()->getModelCtrl());
77 }
78 }
79
80 al::updateDepthShadowMapCtrlShapeVisible(actor);
81
82 if (al::isExistSubActorKeeper(actor)) {
83 s32 subActorNum = al::getSubActorNum(actor);
84 for (s32 i = 0; i < subActorNum; i++) {
85 al::LiveActor* subActor = al::getSubActor(actor, index: i);
86 if (baseActor->getModelKeeper() == subActor->getModelKeeper())
87 updateExecutorDrawRec(baseActor, actor: subActor);
88 }
89 }
90}
91
92void updateExecutorDraw(al::LiveActor* actor) {
93 updateExecutorDrawRec(baseActor: actor, actor);
94}
95
96} // namespace alActorSystemFunction
97
98namespace alExecuteFunction {
99
100void updateEffect(const al::ExecuteDirector* director) {
101 director->executeList(tableName: "更新", listName: "エフェクト(前処理)");
102 director->executeList(tableName: "更新", listName: "エフェクト(3D)");
103 director->executeList(tableName: "更新", listName: "エフェクト(プレイヤー)");
104 director->executeList(tableName: "更新", listName: "エフェクト(Zソート)");
105 director->executeList(tableName: "更新", listName: "エフェクト(カメラデモ)");
106 director->executeList(tableName: "更新", listName: "エフェクト(カメラ前エフェクト)");
107 director->executeList(tableName: "更新", listName: "エフェクト(ベース2D)");
108 director->executeList(tableName: "更新", listName: "エフェクト(2D)");
109 director->executeList(tableName: "更新", listName: "エフェクト(後処理)");
110}
111
112void updateEffectSystem(const al::ExecuteDirector* director) {
113 director->executeList(tableName: "更新", listName: "エフェクト(前処理)");
114 director->executeList(tableName: "更新", listName: "エフェクト(後処理)");
115}
116
117void updateEffectPlayer(const al::ExecuteDirector* director) {
118 director->executeList(tableName: "更新", listName: "エフェクト(前処理)");
119 director->executeList(tableName: "更新", listName: "エフェクト(プレイヤー)");
120 director->executeList(tableName: "更新", listName: "エフェクト(ベース2D)");
121 director->executeList(tableName: "更新", listName: "エフェクト(2D)");
122 director->executeList(tableName: "更新", listName: "エフェクト(後処理)");
123}
124
125void updateEffectDemo(const al::ExecuteDirector* director) {
126 director->executeList(tableName: "更新", listName: "エフェクト(前処理)");
127 director->executeList(tableName: "更新", listName: "エフェクト(カメラデモ)");
128 director->executeList(tableName: "更新", listName: "エフェクト(カメラ前エフェクト)");
129 director->executeList(tableName: "更新", listName: "エフェクト(ベース2D)");
130 director->executeList(tableName: "更新", listName: "エフェクト(2D)");
131 director->executeList(tableName: "更新", listName: "エフェクト(後処理)");
132}
133
134void updateEffectLayout(const al::ExecuteDirector* director) {
135 director->executeList(tableName: "更新", listName: "エフェクト(前処理)");
136 director->executeList(tableName: "更新", listName: "エフェクト(2D)");
137 director->executeList(tableName: "更新", listName: "エフェクト(後処理)");
138}
139
140} // namespace alExecuteFunction
141