mirror of
https://github.com/MonsterDruide1/OdysseyDecomp
synced 2026-04-29 20:14:41 +00:00
141 lines
5.5 KiB
C++
141 lines
5.5 KiB
C++
#include "Library/Execute/ExecuteUtil.h"
|
|
|
|
#include "Library/Execute/ActorExecuteInfo.h"
|
|
#include "Library/Execute/ExecuteDirector.h"
|
|
#include "Library/Execute/ExecuteRequestKeeper.h"
|
|
#include "Library/LiveActor/ActorFlagFunction.h"
|
|
#include "Library/LiveActor/LiveActor.h"
|
|
#include "Library/LiveActor/LiveActorFunction.h"
|
|
#include "Library/Model/ModelDrawerBase.h"
|
|
#include "Library/Model/ModelKeeper.h"
|
|
#include "Library/Shadow/ActorShadowUtil.h"
|
|
|
|
namespace al {
|
|
|
|
void registerExecutorActorUpdate(LiveActor* actor, ExecuteDirector* director,
|
|
const char* listName) {
|
|
director->registerActorUpdate(actor, listName);
|
|
}
|
|
|
|
void registerExecutorActorDraw(LiveActor* actor, ExecuteDirector* director, const char* listName) {
|
|
director->registerActorDraw(actor, listName);
|
|
}
|
|
|
|
void registerExecutorLayoutUpdate(LayoutActor* layout, ExecuteDirector* director,
|
|
const char* listName) {
|
|
director->registerLayoutUpdate(layout, listName);
|
|
}
|
|
|
|
void registerExecutorLayoutDraw(LayoutActor* layout, ExecuteDirector* director,
|
|
const char* listName) {
|
|
director->registerLayoutDraw(layout, listName);
|
|
}
|
|
|
|
void registerExecutorUser(IUseExecutor* user, ExecuteDirector* director, const char* listName) {
|
|
director->registerUser(user, listName);
|
|
}
|
|
|
|
void registerExecutorFunctor(const char* listName, ExecuteDirector* director,
|
|
const FunctorBase& functor) {
|
|
director->registerFunctor(functor, listName);
|
|
}
|
|
|
|
void registerExecutorFunctorDraw(const char* listName, ExecuteDirector* director,
|
|
const FunctorBase& functor) {
|
|
director->registerFunctorDraw(functor, listName);
|
|
}
|
|
|
|
} // namespace al
|
|
|
|
namespace alActorSystemFunction {
|
|
|
|
void addToExecutorMovement(al::LiveActor* actor) {
|
|
actor->getExecuteInfo()->getRequestKeeper()->request(
|
|
actor, al::ExecuteRequestKeeper::Request_Movement);
|
|
}
|
|
|
|
void addToExecutorDraw(al::LiveActor* actor) {
|
|
actor->getExecuteInfo()->getRequestKeeper()->request(actor,
|
|
al::ExecuteRequestKeeper::Request_Draw);
|
|
}
|
|
|
|
void removeFromExecutorMovement(al::LiveActor* actor) {
|
|
actor->getExecuteInfo()->getRequestKeeper()->request(
|
|
actor, al::ExecuteRequestKeeper::Request_RemoveFromMovement);
|
|
}
|
|
|
|
void removeFromExecutorDraw(al::LiveActor* actor) {
|
|
actor->getExecuteInfo()->getRequestKeeper()->request(
|
|
actor, al::ExecuteRequestKeeper::Request_RemoveFromDraw);
|
|
}
|
|
|
|
void updateExecutorDrawRec(al::LiveActor* baseActor, al::LiveActor* actor) {
|
|
if (al::isAlive(actor) && actor->getExecuteInfo()) {
|
|
for (s32 i = 0; i < actor->getExecuteInfo()->getDrawerCount(); i++) {
|
|
actor->getExecuteInfo()->getDrawer(i)->updateModel(
|
|
actor->getModelKeeper()->getModelCtrl());
|
|
}
|
|
}
|
|
|
|
al::updateDepthShadowMapCtrlShapeVisible(actor);
|
|
|
|
if (al::isExistSubActorKeeper(actor)) {
|
|
s32 subActorNum = al::getSubActorNum(actor);
|
|
for (s32 i = 0; i < subActorNum; i++) {
|
|
al::LiveActor* subActor = al::getSubActor(actor, i);
|
|
if (baseActor->getModelKeeper() == subActor->getModelKeeper())
|
|
updateExecutorDrawRec(baseActor, subActor);
|
|
}
|
|
}
|
|
}
|
|
|
|
void updateExecutorDraw(al::LiveActor* actor) {
|
|
updateExecutorDrawRec(actor, actor);
|
|
}
|
|
|
|
} // namespace alActorSystemFunction
|
|
|
|
namespace alExecuteFunction {
|
|
|
|
void updateEffect(const al::ExecuteDirector* director) {
|
|
director->executeList("更新", "エフェクト(前処理)");
|
|
director->executeList("更新", "エフェクト(3D)");
|
|
director->executeList("更新", "エフェクト(プレイヤー)");
|
|
director->executeList("更新", "エフェクト(Zソート)");
|
|
director->executeList("更新", "エフェクト(カメラデモ)");
|
|
director->executeList("更新", "エフェクト(カメラ前エフェクト)");
|
|
director->executeList("更新", "エフェクト(ベース2D)");
|
|
director->executeList("更新", "エフェクト(2D)");
|
|
director->executeList("更新", "エフェクト(後処理)");
|
|
}
|
|
|
|
void updateEffectSystem(const al::ExecuteDirector* director) {
|
|
director->executeList("更新", "エフェクト(前処理)");
|
|
director->executeList("更新", "エフェクト(後処理)");
|
|
}
|
|
|
|
void updateEffectPlayer(const al::ExecuteDirector* director) {
|
|
director->executeList("更新", "エフェクト(前処理)");
|
|
director->executeList("更新", "エフェクト(プレイヤー)");
|
|
director->executeList("更新", "エフェクト(ベース2D)");
|
|
director->executeList("更新", "エフェクト(2D)");
|
|
director->executeList("更新", "エフェクト(後処理)");
|
|
}
|
|
|
|
void updateEffectDemo(const al::ExecuteDirector* director) {
|
|
director->executeList("更新", "エフェクト(前処理)");
|
|
director->executeList("更新", "エフェクト(カメラデモ)");
|
|
director->executeList("更新", "エフェクト(カメラ前エフェクト)");
|
|
director->executeList("更新", "エフェクト(ベース2D)");
|
|
director->executeList("更新", "エフェクト(2D)");
|
|
director->executeList("更新", "エフェクト(後処理)");
|
|
}
|
|
|
|
void updateEffectLayout(const al::ExecuteDirector* director) {
|
|
director->executeList("更新", "エフェクト(前処理)");
|
|
director->executeList("更新", "エフェクト(2D)");
|
|
director->executeList("更新", "エフェクト(後処理)");
|
|
}
|
|
|
|
} // namespace alExecuteFunction
|