1#pragma once
2
3#include <basis/seadTypes.h>
4#include <math/seadQuat.h>
5#include <math/seadVector.h>
6
7namespace al {
8struct ActorInitInfo;
9class LiveActor;
10class HitSensor;
11class SensorMsg;
12class MtxConnector;
13} // namespace al
14
15class TalkNpcParam;
16class NpcJointLookAtController;
17class NpcStateReactionParam;
18class PlayerEyeSensorHitHolder;
19class ShellActorStateReaction;
20
21namespace rs {
22bool tryApplyNpcMaterialAnimPresetFromPlacementInfo(al::LiveActor*, const al::ActorInitInfo&,
23 const TalkNpcParam*);
24void setNpcMaterialAnimFromPlacementInfo(al::LiveActor*, const al::ActorInitInfo&);
25bool tryUpdateNpcEyeLineAnim(al::LiveActor*, const TalkNpcParam*);
26bool tryUpdateNpcEyeLineAnimToTarget(al::LiveActor*, const TalkNpcParam*, const sead::Vector3f&,
27 bool);
28void resetNpcEyeLineAnim(al::LiveActor*);
29bool tryUpdateNpcFacialAnim(al::LiveActor*, const TalkNpcParam*);
30void trySwitchDepthToSelfShadow(al::LiveActor*);
31bool tryReceiveMsgPlayerDisregard(const al::SensorMsg*, al::HitSensor*, const TalkNpcParam*);
32void attackSensorNpcCommon(al::HitSensor*, al::HitSensor*);
33bool receiveMsgNpcCommonNoReaction(const al::SensorMsg*, al::HitSensor*, al::HitSensor*);
34void calcNpcPushVecBetweenSensors(sead::Vector3f*, al::HitSensor*, al::HitSensor*);
35NpcJointLookAtController* createAndAppendNpcJointLookAtController(al::LiveActor*,
36 const TalkNpcParam*);
37NpcJointLookAtController* tryCreateAndAppendNpcJointLookAtController(al::LiveActor*,
38 const TalkNpcParam*);
39NpcJointLookAtController* tryCreateAndAppendNpcJointLookAtController(al::LiveActor*,
40 const TalkNpcParam*, f32);
41void setPlayerEyeSensorHitHolder(NpcJointLookAtController*, const PlayerEyeSensorHitHolder*);
42s32 getNpcJointLookAtControlJointNum(const TalkNpcParam*);
43void updateNpcJointLookAtController(NpcJointLookAtController*);
44void cancelUpdateNpcJointLookAtController(NpcJointLookAtController*);
45void updateNpcJointLookAtControllerLookAtDistance(NpcJointLookAtController*, f32);
46void invalidateNpcJointLookAtController(NpcJointLookAtController*);
47void validateNpcJointLookAtController(NpcJointLookAtController*);
48void requestLookAtTargetTrans(NpcJointLookAtController*, const sead::Vector3f&);
49void initCapWorldNpcTail(al::LiveActor*);
50bool tryStartForestManFlowerAnim(al::LiveActor*);
51bool tryUpdateMaterialCodeByFloorCollisionOnArrow(al::LiveActor*);
52void tryAttachConnectorToCollisionTFSV(al::LiveActor*, al::MtxConnector*, sead::Quatf*);
53void tryConnectToCollisionTFSV(al::LiveActor*, const al::MtxConnector*, sead::Quatf*);
54al::LiveActor* tryGetSubActorCityMayorFace(const al::LiveActor*);
55void syncActionCityMayorFace(al::LiveActor*);
56void syncMtsAnimCityMayorFace(al::LiveActor*);
57bool isExistFaceAnim(al::LiveActor*, const char*);
58void animateCityMayorFace(al::LiveActor*, const char*, f32);
59ShellActorStateReaction* createNpcStateReaction(al::LiveActor*, const TalkNpcParam*,
60 const NpcStateReactionParam*);
61bool isInvalidTrampleSensor(const al::HitSensor*, const TalkNpcParam*);
62} // namespace rs
63