mirror of
https://github.com/MonsterDruide1/OdysseyDecomp
synced 2026-04-23 09:04:21 +00:00
Project/Execute: Implement ExecuteFunction (#755)
This commit is contained in:
parent
6de13a8b6e
commit
c7b2d00c87
|
|
@ -292743,51 +292743,51 @@ Project/Execute/ExecuteFunction.o:
|
|||
- offset: 0xa5e0d0
|
||||
size: 4
|
||||
label: _ZN17alExecuteFunction11executeDrawEPKN2al15ExecuteDirectorEPKc
|
||||
status: NotDecompiled
|
||||
status: Matching
|
||||
- offset: 0xa5e0d4
|
||||
size: 4
|
||||
label: _ZN17alExecuteFunction15executeDrawListEPKN2al15ExecuteDirectorEPKcS5_
|
||||
status: NotDecompiled
|
||||
status: Matching
|
||||
- offset: 0xa5e0d8
|
||||
size: 8
|
||||
label: _ZN18alExecutorFunction10isListNameERKN2al12ExecuteOrderEPKc
|
||||
status: NotDecompiled
|
||||
status: Matching
|
||||
- offset: 0xa5e0e0
|
||||
size: 116
|
||||
label: _ZN18alExecutorFunction17isUpdateListActorERKN2al12ExecuteOrderE
|
||||
status: NotDecompiled
|
||||
status: Matching
|
||||
- offset: 0xa5e154
|
||||
size: 16
|
||||
label: _ZN18alExecutorFunction15isDrawListActorERKN2al12ExecuteOrderE
|
||||
status: NotDecompiled
|
||||
status: Matching
|
||||
- offset: 0xa5e164
|
||||
size: 676
|
||||
label: _ZN18alExecutorFunction20isDrawListActorModelERKN2al12ExecuteOrderE
|
||||
status: NotDecompiled
|
||||
status: Matching
|
||||
- offset: 0xa5e408
|
||||
size: 76
|
||||
label: _ZN18alExecutorFunction16isDrawListLayoutERKN2al12ExecuteOrderE
|
||||
status: NotDecompiled
|
||||
status: Matching
|
||||
- offset: 0xa5e454
|
||||
size: 96
|
||||
label: _ZN18alExecutorFunction22calcExecutorListNumMaxEPKN2al12ExecuteOrderEiPKc
|
||||
status: NotDecompiled
|
||||
status: Matching
|
||||
- offset: 0xa5e4b4
|
||||
size: 192
|
||||
label: _ZN18alExecutorFunction25calcUpdateListActorNumMaxEPKN2al12ExecuteOrderEi
|
||||
status: NotDecompiled
|
||||
status: Matching
|
||||
- offset: 0xa5e574
|
||||
size: 100
|
||||
label: _ZN18alExecutorFunction23calcDrawListActorNumMaxEPKN2al12ExecuteOrderEi
|
||||
status: NotDecompiled
|
||||
status: Matching
|
||||
- offset: 0xa5e5d8
|
||||
size: 92
|
||||
label: _ZN18alExecutorFunction28calcDrawListActorModelNumMaxEPKN2al12ExecuteOrderEi
|
||||
status: NotDecompiled
|
||||
status: Matching
|
||||
- offset: 0xa5e634
|
||||
size: 136
|
||||
label: _ZN18alExecutorFunction24calcDrawListLayoutNumMaxEPKN2al12ExecuteOrderEi
|
||||
status: NotDecompiled
|
||||
status: Matching
|
||||
Project/Execute/ExecuteSystemInitInfo.o:
|
||||
'.text':
|
||||
- offset: 0xa5e6bc
|
||||
|
|
|
|||
|
|
@ -5,7 +5,7 @@
|
|||
|
||||
namespace al {
|
||||
class CollisionParts;
|
||||
class HitInfo;
|
||||
struct HitInfo;
|
||||
class SphereCheckInfo;
|
||||
class ArrowCheckInfo;
|
||||
class DiskCheckInfo;
|
||||
|
|
|
|||
117
lib/al/Project/Execute/ExecuteFunction.cpp
Normal file
117
lib/al/Project/Execute/ExecuteFunction.cpp
Normal file
|
|
@ -0,0 +1,117 @@
|
|||
#include "Project/Execute/ExecuteFunction.h"
|
||||
|
||||
#include "Library/Base/StringUtil.h"
|
||||
#include "Library/Execute/ExecuteDirector.h"
|
||||
#include "Library/Execute/ExecuteOrder.h"
|
||||
|
||||
namespace alExecuteFunction {
|
||||
|
||||
void executeDraw(const al::ExecuteDirector* executeDirector, const char* tableName) {
|
||||
executeDirector->draw(tableName);
|
||||
}
|
||||
|
||||
void executeDrawList(const al::ExecuteDirector* executeDirector, const char* tableName,
|
||||
const char* listName) {
|
||||
executeDirector->drawList(tableName, listName);
|
||||
}
|
||||
|
||||
} // namespace alExecuteFunction
|
||||
|
||||
namespace alExecutorFunction {
|
||||
|
||||
bool isListName(const al::ExecuteOrder& executeOrder, const char* listName) {
|
||||
// TODO: potentially wrong name of member?
|
||||
return al::isEqualString(executeOrder.executeGroup, listName);
|
||||
}
|
||||
|
||||
bool isUpdateListActor(const al::ExecuteOrder& executeOrder) {
|
||||
return isListName(executeOrder, "ActorMovement") || isListName(executeOrder, "ActorCalcAnim") ||
|
||||
isListName(executeOrder, "ActorCalcView") ||
|
||||
isListName(executeOrder, "ActorMovementCalcAnim");
|
||||
}
|
||||
|
||||
bool isDrawListActor(const al::ExecuteOrder& executeOrder) {
|
||||
return isListName(executeOrder, "ActorDraw");
|
||||
}
|
||||
|
||||
bool isDrawListActorModel(const al::ExecuteOrder& executeOrder) {
|
||||
return isListName(executeOrder, "ActorModelDraw") ||
|
||||
isListName(executeOrder, "ActorModelDrawForwardOnly") ||
|
||||
isListName(executeOrder, "ActorModelDrawForwardForce") ||
|
||||
isListName(executeOrder, "ActorModelDrawDepthChromakey") ||
|
||||
isListName(executeOrder, "ActorModelDrawDitherChromakey") ||
|
||||
isListName(executeOrder, "ActorModelDrawDepthOnly") ||
|
||||
isListName(executeOrder, "ActorModelDrawCulling") ||
|
||||
isListName(executeOrder, "ActorModelDrawDepthForce") ||
|
||||
isListName(executeOrder, "ActorModelDrawDepthXlu") ||
|
||||
isListName(executeOrder, "ActorModelDrawDepthIndirect") ||
|
||||
isListName(executeOrder, "ActorModelDrawDepthDither") ||
|
||||
isListName(executeOrder, "ActorModelDrawDepthDitherIndirect") ||
|
||||
isListName(executeOrder, "ActorModelDrawDepthShadow") ||
|
||||
isListName(executeOrder, "ActorModelDrawDepthShadowMarchingCube") ||
|
||||
isListName(executeOrder, "ActorModelDrawStaticDepthShadow") ||
|
||||
isListName(executeOrder, "ActorModelDrawDeferred") ||
|
||||
isListName(executeOrder, "ActorModelDrawDeferredOnly") ||
|
||||
isListName(executeOrder, "ActorModelDrawDeferredOpa") ||
|
||||
isListName(executeOrder, "ActorModelDrawDeferredXlu") ||
|
||||
isListName(executeOrder, "ActorModelDrawDeferredMarchingCube") ||
|
||||
isListName(executeOrder, "ActorModelDrawDeferredFootPrint") ||
|
||||
isListName(executeOrder, "ActorModelDrawDeferredSilhouette") ||
|
||||
isListName(executeOrder, "ActorModelDrawDeferredSky") ||
|
||||
isListName(executeOrder, "ActorModelDrawPostEffectMask") ||
|
||||
isListName(executeOrder, "ActorModelDrawWorldAo") ||
|
||||
isListName(executeOrder, "ActorModelDrawIndirect") ||
|
||||
isListName(executeOrder, "ActorModelDrawIndirectOnly") ||
|
||||
isListName(executeOrder, "ActorModelDrawUpdate") ||
|
||||
isListName(executeOrder, "ActorModelDrawPlayerChromakey") ||
|
||||
isListName(executeOrder, "ActorModelDrawPlayerChromakeyOpa") ||
|
||||
isListName(executeOrder, "ActorModelDrawPlayerChromakeyXlu") ||
|
||||
isListName(executeOrder, "ActorModelDrawCharacterChromakey");
|
||||
}
|
||||
|
||||
bool isDrawListLayout(const al::ExecuteOrder& executeOrder) {
|
||||
return isListName(executeOrder, "LayoutDraw") || isListName(executeOrder, "LayoutDrawBottom");
|
||||
}
|
||||
|
||||
s32 calcExecutorListNumMax(const al::ExecuteOrder* executeOrder, s32 executeOrderSize,
|
||||
const char* listName) {
|
||||
s32 count = 0;
|
||||
for (s32 i = 0; i < executeOrderSize; i++)
|
||||
if (isListName(executeOrder[i], listName))
|
||||
count++;
|
||||
return count;
|
||||
}
|
||||
|
||||
s32 calcUpdateListActorNumMax(const al::ExecuteOrder* executeOrder, s32 executeOrderSize) {
|
||||
s32 count = 0;
|
||||
for (s32 i = 0; i < executeOrderSize; i++)
|
||||
if (isUpdateListActor(executeOrder[i]))
|
||||
count++;
|
||||
return count;
|
||||
}
|
||||
|
||||
s32 calcDrawListActorNumMax(const al::ExecuteOrder* executeOrder, s32 executeOrderSize) {
|
||||
s32 count = 0;
|
||||
for (s32 i = 0; i < executeOrderSize; i++)
|
||||
if (isDrawListActor(executeOrder[i]))
|
||||
count++;
|
||||
return count;
|
||||
}
|
||||
|
||||
s32 calcDrawListActorModelNumMax(const al::ExecuteOrder* executeOrder, s32 executeOrderSize) {
|
||||
s32 count = 0;
|
||||
for (s32 i = 0; i < executeOrderSize; i++)
|
||||
if (isDrawListActorModel(executeOrder[i]))
|
||||
count++;
|
||||
return count;
|
||||
}
|
||||
|
||||
s32 calcDrawListLayoutNumMax(const al::ExecuteOrder* executeOrder, s32 executeOrderSize) {
|
||||
s32 count = 0;
|
||||
for (s32 i = 0; i < executeOrderSize; i++)
|
||||
if (isDrawListLayout(executeOrder[i]))
|
||||
count++;
|
||||
return count;
|
||||
}
|
||||
|
||||
} // namespace alExecutorFunction
|
||||
30
lib/al/Project/Execute/ExecuteFunction.h
Normal file
30
lib/al/Project/Execute/ExecuteFunction.h
Normal file
|
|
@ -0,0 +1,30 @@
|
|||
#pragma once
|
||||
|
||||
#include <basis/seadTypes.h>
|
||||
|
||||
namespace al {
|
||||
class ExecuteDirector;
|
||||
struct ExecuteOrder;
|
||||
} // namespace al
|
||||
|
||||
namespace alExecuteFunction {
|
||||
void executeDraw(const al::ExecuteDirector* executeDirector, const char* tableName);
|
||||
void executeDrawList(const al::ExecuteDirector* executeDirector, const char* tableName,
|
||||
const char* listName);
|
||||
} // namespace alExecuteFunction
|
||||
|
||||
namespace alExecutorFunction {
|
||||
|
||||
bool isListName(const al::ExecuteOrder& executeOrder, const char* listName);
|
||||
bool isUpdateListActor(const al::ExecuteOrder& executeOrder);
|
||||
bool isDrawListActor(const al::ExecuteOrder& executeOrder);
|
||||
bool isDrawListActorModel(const al::ExecuteOrder& executeOrder);
|
||||
bool isDrawListLayout(const al::ExecuteOrder& executeOrder);
|
||||
s32 calcExecutorListNumMax(const al::ExecuteOrder* executeOrder, s32 executeDirectorSize,
|
||||
const char* listName);
|
||||
s32 calcUpdateListActorNumMax(const al::ExecuteOrder* executeOrder, s32 executeDirectorSize);
|
||||
s32 calcDrawListActorNumMax(const al::ExecuteOrder* executeOrder, s32 executeDirectorSize);
|
||||
s32 calcDrawListActorModelNumMax(const al::ExecuteOrder* executeOrder, s32 executeDirectorSize);
|
||||
s32 calcDrawListLayoutNumMax(const al::ExecuteOrder* executeOrder, s32 executeDirectorSize);
|
||||
|
||||
} // namespace alExecutorFunction
|
||||
Loading…
Reference in a new issue