| 1 | #pragma once |
| 2 | |
| 3 | #include <basis/seadTypes.h> |
| 4 | #include <math/seadQuat.h> |
| 5 | #include <math/seadVector.h> |
| 6 | |
| 7 | namespace al { |
| 8 | struct ActorInitInfo; |
| 9 | class IUseRail; |
| 10 | class LiveActor; |
| 11 | class LiveActorGroup; |
| 12 | class PlacementInfo; |
| 13 | class RailPlacementCallBack; |
| 14 | |
| 15 | void setRailPosToStart(IUseRail* railHolder); |
| 16 | void setRailPosToEnd(IUseRail* railHolder); |
| 17 | void setRailPosToNearestPos(IUseRail* railHolder, const sead::Vector3f&); |
| 18 | void setRailPosToCoord(IUseRail* railHolder, f32); |
| 19 | void setRailPosToRailPoint(IUseRail* railHolder, s32); |
| 20 | void setSyncRailToStart(LiveActor* actor); |
| 21 | void syncRailTrans(LiveActor* actor); |
| 22 | void setSyncRailToEnd(LiveActor* actor); |
| 23 | void setSyncRailToNearestPos(LiveActor* actor, const sead::Vector3f&); |
| 24 | void setSyncRailToNearestRailControlPoint(LiveActor* actor); |
| 25 | void setSyncRailToNearestPos(LiveActor* actor); |
| 26 | void setSyncRailToCoord(LiveActor* actor, f32 coord); |
| 27 | void setSyncRailToRailPoint(LiveActor* actor, s32); |
| 28 | bool moveRail(IUseRail* railHolder, f32); |
| 29 | bool isRailReachedGoal(const IUseRail* railHolder); |
| 30 | bool moveRailLoop(IUseRail* railHolder, f32); |
| 31 | f32 getRailCoord(const IUseRail* railHolder); |
| 32 | bool isRailGoingToEnd(const IUseRail* railHolder); |
| 33 | f32 getRailTotalLength(const IUseRail* railHolder); |
| 34 | bool moveRailTurn(IUseRail* railHolder, f32, f32); |
| 35 | void reverseRail(IUseRail* railHolder); |
| 36 | bool isRailReachedNearGoal(const IUseRail* railHolder, f32); |
| 37 | bool turnToRailDir(LiveActor* actor, f32); |
| 38 | void calcRailMoveDir(sead::Vector3f*, const IUseRail* railHolder); |
| 39 | bool turnToRailDirImmediately(LiveActor* actor); |
| 40 | const sead::Vector3f& getRailPos(const IUseRail* railHolder); |
| 41 | bool moveSyncRail(LiveActor* actor, f32); |
| 42 | bool moveSyncRailLoop(LiveActor* actor, f32 speed); |
| 43 | bool moveSyncRailTurn(LiveActor* actor, f32 speed); |
| 44 | f32 calcNearestRailCoord(const IUseRail* railHolder, const sead::Vector3f&); |
| 45 | f32 calcNearestRailPos(sead::Vector3f*, const IUseRail* railHolder, const sead::Vector3f&); |
| 46 | void calcNearestRailDir(sead::Vector3f*, const IUseRail* railHolder, const sead::Vector3f&); |
| 47 | void calcNearestRailPosAndDir(sead::Vector3f*, sead::Vector3f*, const IUseRail* railHolder, |
| 48 | const sead::Vector3f&); |
| 49 | void calcRailPosDir(sead::Vector3f*, sead::Vector3f*, const IUseRail* railHolder, f32); |
| 50 | void calcRailPointPos(sead::Vector3f*, const IUseRail* railHolder, s32); |
| 51 | s32 calcNearestRailPointNo(const IUseRail* railHolder, const sead::Vector3f&); |
| 52 | s32 calcNearestRailPointNo(const IUseRail* railHolder); |
| 53 | s32 calcCoordNearestRailPointNo(const IUseRail* railHolder); |
| 54 | s32 getRailPartIndex(const IUseRail* railHolder); |
| 55 | f32 calcRailPartRate(const IUseRail* railHolder); |
| 56 | bool isLoopRail(const IUseRail* railHolder); |
| 57 | s32 getRailPointNum(const IUseRail* railHolder); |
| 58 | f32 calcNearestRailPointPosCoord(const IUseRail* railHolder, const sead::Vector3f&); |
| 59 | f32 calcRailCoordByPoint(const IUseRail* railHolder, s32); |
| 60 | void calcRailUp(sead::Vector3f*, const IUseRail* railHolder); |
| 61 | PlacementInfo* getRailPointInfo(const IUseRail* railHolder, s32); |
| 62 | s32 getRailPointNo(const IUseRail* railHolder); |
| 63 | s32 (const IUseRail* railHolder); |
| 64 | f32 calcRailToGoalLength(const IUseRail* railHolder); |
| 65 | f32 calcRailTotalRate(const IUseRail* railHolder); |
| 66 | f32 (const IUseRail* railHolder); |
| 67 | f32 calcRailToPreviousRailPointLength(const IUseRail* railHolder); |
| 68 | s32 getRailNum(const IUseRail* railHolder); |
| 69 | const sead::Vector3f& getRailDir(const IUseRail* railHolder); |
| 70 | bool isRailReachedEnd(const IUseRail* railHolder); |
| 71 | f32 getRailPartLength(const IUseRail* railHolder, s32); |
| 72 | bool tryGetCurrentRailPointArg(f32*, const IUseRail* railHolder, const char*); |
| 73 | bool (f32*, const IUseRail* railHolder, const char*); |
| 74 | bool tryGetCurrentRailPointArg(s32*, const IUseRail* railHolder, const char*); |
| 75 | bool (s32*, const IUseRail* railHolder, const char*); |
| 76 | bool tryGetCurrentRailPointArg(bool*, const IUseRail* railHolder, const char*); |
| 77 | bool (bool*, const IUseRail* railHolder, const char*); |
| 78 | bool tryGetCurrentRailPointArg(const char**, const IUseRail* railHolder, const char*); |
| 79 | bool (const char**, const IUseRail* railHolder, const char*); |
| 80 | bool isExistRail(const IUseRail* railHolder); |
| 81 | bool isRailReachedStart(const IUseRail* railHolder); |
| 82 | bool isRailReachedNearGoal(const IUseRail* railHolder, f32, f32); |
| 83 | bool isRailReachedEdge(const IUseRail* railHolder); |
| 84 | bool isRailReachedNearRailPoint(const IUseRail* railHolder, f32); |
| 85 | bool isRailIncludeBezierPart(const IUseRail* railHolder); |
| 86 | bool isRailBezierPart(const IUseRail* railHolder, s32); |
| 87 | bool isRailPlusDir(const IUseRail* railHolder, const sead::Vector3f&); |
| 88 | bool isRailPlusPoseSide(const LiveActor* actor); |
| 89 | bool isRailPlusPoseUp(const LiveActor* actor); |
| 90 | bool isRailPlusPoseFront(const LiveActor* actor); |
| 91 | void calcRailPosAtCoord(sead::Vector3f*, const IUseRail* railHolder, f32); |
| 92 | void calcRailDirAtCoord(sead::Vector3f*, const IUseRail* railHolder, f32); |
| 93 | void calcRailPosFront(sead::Vector3f*, const IUseRail* railHolder, f32); |
| 94 | void calcRailDirFront(sead::Vector3f*, const IUseRail* railHolder, f32); |
| 95 | void calcRailPointPose(sead::Quatf*, const IUseRail* railHolder, s32); |
| 96 | s32 calcRailPointNum(const IUseRail* railHolder, f32, f32); |
| 97 | s32 calcForwardRailPointNo(const IUseRail* railHolder, s32); |
| 98 | s32 calcPreviousRailPointNo(const IUseRail* railHolder, s32); |
| 99 | void calcRailClippingInfo(sead::Vector3f*, f32*, const IUseRail* railHolder, f32, f32); |
| 100 | void setRailClippingInfo(sead::Vector3f*, LiveActor* actor, f32, f32); |
| 101 | void calcAndSyncMoveFitRailDir(IUseRail* railHolder, sead::Vector3f*, f32, const sead::Vector3f&, |
| 102 | const sead::Vector3f&, bool); |
| 103 | void calcAndSyncMoveFitRailDir(LiveActor* actor, sead::Vector3f*, f32, bool); |
| 104 | LiveActorGroup* createRailModelGroup(const IUseRail* railHolder, const ActorInitInfo&, const char*, |
| 105 | const char*); |
| 106 | s32 calcRailDivideNum(const IUseRail* railHolder, f32, bool); |
| 107 | s32 calcRailDivideForcePointNum(const IUseRail* railHolder, f32); |
| 108 | s32 calcRailDivideEquallyNum(const IUseRail* railHolder, f32); |
| 109 | void placementRailDivide(const IUseRail* railHolder, f32, bool, const RailPlacementCallBack&); |
| 110 | void placementRailDivideForcePoint(const IUseRail* railHolder, f32, const RailPlacementCallBack&); |
| 111 | void placementRailDivideEqually(const IUseRail* railHolder, f32, const RailPlacementCallBack&); |
| 112 | } // namespace al |
| 113 | |