1#include "Library/Obj/EffectObjFunction.h"
2
3#include "Library/Base/StringUtil.h"
4#include "Library/File/FileUtil.h"
5#include "Library/LiveActor/ActorClippingFunction.h"
6#include "Library/LiveActor/ActorInitFunction.h"
7#include "Library/LiveActor/ActorInitUtil.h"
8#include "Library/LiveActor/LiveActor.h"
9#include "Library/Placement/PlacementFunction.h"
10
11namespace al::EffectObjFunction {
12void initActorEffectObj(LiveActor* actor, const ActorInitInfo& info) {
13 const char* modelName = nullptr;
14
15 if (!alPlacementFunction::tryGetModelName(modelName: &modelName, initInfo: info))
16 getObjectName(name: &modelName, initInfo: info);
17
18 initActorEffectObj(actor, info, archiveName: modelName);
19}
20
21void initActorEffectObj(LiveActor* actor, const ActorInitInfo& info, const char* archiveName) {
22 if (isExistArchive(fileName: StringTmp<128>("ObjectData/%s", archiveName)))
23 initActorWithArchiveName(actor, initInfo: info, archiveName, suffix: nullptr);
24 else
25 initActorEffectObjNoArchive(actor, info);
26
27 initActorEffectKeeper(actor, info, archiveName);
28}
29
30void initActorEffectObjNoArchive(LiveActor* actor, const ActorInitInfo& info) {
31 initActorSceneInfo(actor, info);
32 initActorPoseTQSV(actor);
33 initActorSRT(actor, info);
34 initActorClipping(actor, initInfo: info);
35 initGroupClipping(actor, initInfo: info);
36 setClippingInfo(actor, 1000.0f, nullptr);
37 initStageSwitch(actor, info);
38 initExecutorUpdate(actor, info, "エフェクトオブジェ");
39
40 if (isExistRail(initInfo: info, linkName: "Rail"))
41 actor->initRailKeeper(info, linkName: "Rail");
42}
43
44void initActorEffectObjNoArchive(LiveActor* actor, const ActorInitInfo& info,
45 const char* effectKeeperName) {
46 initActorEffectObjNoArchive(actor, info);
47 initActorEffectKeeper(actor, info, effectKeeperName);
48}
49} // namespace al::EffectObjFunction
50