1#include <game/bases/d_actor.hpp>
2#include <game/bases/d_a_player_manager.hpp>
3#include <game/bases/d_a_yoshi.hpp>
4#include <game/bases/d_attention.hpp>
6#include <game/bases/d_bg.hpp>
7#include <game/bases/d_cd.hpp>
8#include <game/bases/d_eff_actor_manager.hpp>
9#include <game/bases/d_fukidashi_manager.hpp>
10#include <game/bases/d_game_com.hpp>
11#include <game/bases/d_info.hpp>
12#include <game/bases/d_multi_manager.hpp>
13#include <game/bases/d_s_stage.hpp>
14#include <game/bases/d_score_manager.hpp>
15#include <game/bases/d_SmallScore.hpp>
16#include <game/mLib/m_effect.hpp>
18#include <constants/sjis_constants.h>
61 dCdFile_c *file = dCd_c::m_instance->getFileP(dScStage_c::m_instance->mCurrFile);
125 mPos.x = dScStage_c::getLoopPosX(
mPos.x);
133 dAttention_c::mspInstance->entry(
mUniqueID);
135 m_1eb.set(0.0f, 0.0f);
158 return D_ACTOR_KIND_STRING;
200 dAcPy_c *closestPlayer =
nullptr;
201 float closestDist = 1e9;
202 for (
int i = 0; i < 4; i++) {
203 dAcPy_c *player = daPyMng_c::getPlayer(i);
204 if (player ==
nullptr || !daPyMng_c::checkPlayer(i)) {
210 float dist = xDiff * xDiff + yDiff * yDiff;
212 if (closestDist > dist) {
213 delta.set(xDiff, yDiff);
214 closestPlayer = player;
218 return closestPlayer;
222 dAcPy_c *closestPlayer =
nullptr;
224 float loopOffset = dBg_c::m_bg_p->mLoopOffset;
227 loopPos.x = dScStage_c::getLoopPosX(pos.x);
229 float closestDist = 1e9;
232 for (
int i = 0; i < 4; i++) {
233 if ((player = daPyMng_c::getPlayer(i)) ==
nullptr || !daPyMng_c::checkPlayer(i)) {
238 loopPlayerPos.x = dScStage_c::getLoopPosX(player->
getCenterPos().x);
242 adjDelta.x = loopPlayerPos.x - loopPos.x;
245 if (adjDelta.x < 0.0f) {
246 if (adjDelta.x < -loopOffset / 2) {
247 adjDelta.x += loopOffset;
250 if (adjDelta.x > loopOffset / 2) {
251 adjDelta.x -= loopOffset;
255 adjDelta.y = loopPlayerPos.y - loopPos.y;
257 float dist = adjDelta.x * adjDelta.x + adjDelta.y * adjDelta.y;
258 if (closestDist > dist) {
259 delta.set(adjDelta.x, adjDelta.y);
260 closestPlayer = player;
264 return closestPlayer;
285 float loopTrgX = dScStage_c::getLoopPosX(trgX);
286 float loopSrcX = dScStage_c::getLoopPosX(srcX);
287 float diffX = loopTrgX - loopSrcX;
289 float loopOffset = dBg_c::m_bg_p->mLoopOffset / 2;
291 return !(diffX < -loopOffset);
293 return diffX > loopOffset;
298 dScStage_c::changePos(pos);
302 dScStage_c::setChangePosFunc(loopType);
312 for (
int i = 0; i < 4; i++) {
313 dActor_c *player = daPyMng_c::getPlayer(i);
342 nw4r::g3d::ResMdl resMdl = mdl.getResMdl();
343 m3d::replaceLightMapTexture(
"lm_01i", mdl, 0);
344 m3d::replaceLightMapTexture(
"lm_02i", mdl, 0);
346 for (
size_t i = 0; i < resMdl.GetResMatNumEntries(); i++) {
347 nw4r::g3d::ScnMdl::CopiedMatAccess cma(nw4r::g3d::G3dObj::DynamicCast<nw4r::g3d::ScnMdl>(mdl.getScn()), i);
348 nw4r::g3d::ResMatMisc mat = cma.GetResMatMisc(
false);
350 mat.SetLightSetIdx(6);
360 if (spawnFlags ==
nullptr || deleteVal ==
nullptr) {
364 if (!deleteForever) {
365 if (spawnFlags !=
nullptr) {
369 if (spawnFlags !=
nullptr) {
372 if (deleteVal !=
nullptr) {
379 dCdFile_c *course = dCd_c::m_instance->getFileP(dScStage_c::m_instance->mCurrFile);
380 sAreaData *area = course->getAreaDataP(areaID,
nullptr);
381 if (area ==
nullptr) {
388 bt.x = pos.x + bound.mOffset.x - bound.mSize.x;
389 bt.y = pos.y + bound.mOffset.y + bound.mSize.y;
392 b.x -= area->mRangeData.mX;
393 b.y += area->mRangeData.mY;
395 mVec2_c doubleBoundSize = bound.getSize();
396 doubleBoundSize.x = 2.0f * doubleBoundSize.x;
397 doubleBoundSize.y = 2.0f * doubleBoundSize.y;
401 if (!(course->mpOptions->mFlags & sOptionData::WRAP_AROUND_EDGES)) {
402 if (b.x + doubleBoundSize.x < -maxBoundSize.x || b.x > area->mRangeData.mWidth + maxBoundSize.x) {
406 if (b.y - doubleBoundSize.y > maxBoundSize.y || b.y < -(area->mRangeData.mHeight + maxBoundSize.y)) {
428 bool outOfScreen =
false;
478 mVec3_c minTriggerPos(centerPos.x - fukidashiTriggerSize.x, centerPos.y - fukidashiTriggerSize.y,
mPos.z);
479 mVec3_c maxTriggerPos(centerPos.x + fukidashiTriggerSize.x, centerPos.y + fukidashiTriggerSize.y,
mPos.z);
488 if (player !=
nullptr) {
489 bool canDrawFukidashi = player->isDrawingCarryFukidashi();
494 dScStage_c::getLoopPosX(playerBoundBox.mOffset.x + player->
mPos.x),
495 playerBoundBox.mOffset.y + player->
mPos.y,
499 mVec3_c minPlayerPos(playerPos.x - playerBoundBox.mSize.x - 2.0f, playerPos.y - playerBoundBox.mSize.y, playerPos.z);
500 mVec3_c maxPlayerPos(playerPos.x + playerBoundBox.mSize.x + 2.0f, playerPos.y + playerBoundBox.mSize.y, playerPos.z);
507 if ((!canDrawFukidashi) || (!overlap)) {
515 if (player !=
nullptr) {
516 bool canDrawFukidashi = player->isDrawingCarryFukidashi();
521 dScStage_c::getLoopPosX(playerBoundBox.mOffset.x + player->
mPos.x),
522 playerBoundBox.mOffset.y + player->
mPos.y,
526 mVec3_c minPlayerPos(playerPos.x - playerBoundBox.mSize.x, playerPos.y - playerBoundBox.mSize.y, playerPos.z);
527 mVec3_c maxPlayerPos(playerPos.x + playerBoundBox.mSize.x, playerPos.y + playerBoundBox.mSize.y, playerPos.z);
530 if (canDrawFukidashi && overlap) {
540 for (
int i = 0; i < 4; i++) {
554 dAcPy_c *closestPlayer =
nullptr;
555 float closestDist = 1e9;
556 for (
int i = 0; i < 4; i++) {
557 if (daPyMng_c::checkPlayer(i) && !dInfo_c::m_instance->mFukidashiActionPerformed[i][fukidashiAction]) {
558 dAcPy_c *player = daPyMng_c::getPlayer(i);
559 if (player ==
nullptr) {
565 float dist = diffX * diffX + diffY * diffY;
566 if (closestDist > dist) {
567 closestPlayer = player;
572 return closestPlayer;
584 mEf::createEffect(
"Wm_en_burst_s", 0, &effPos,
nullptr,
nullptr);
592 for (
int i = 0; i < daPyMng_c::mNum; i++) {
593 dAcPy_c *player = daPyMng_c::getPlayer(i);
595 player->cancelCarry(
this);
599 effPos += centerOffs;
600 mEf::createEffect(
"Wm_en_burst_s", 0, &effPos,
nullptr,
nullptr);
605 dScoreMng_c::m_instance->UnKnownScoreSet(
this, 1, dScoreMng_c::smc_SCORE_X, dScoreMng_c::smc_SCORE_Y);
607 dScoreMng_c::m_instance->ScoreSet(
this, 1, playerId, dScoreMng_c::smc_SCORE_X, dScoreMng_c::smc_SCORE_Y);
628 static const int yoshiEatPoints[] = { 200, 1000 };
632 smallScorePos.y += 40.0f;
634 s8 plrNo = *eatingActor->
getPlrNo();
635 dGameCom::CreateSmallScore(smallScorePos, yoshiEatPopupTypes[
mEatPoints], plrNo,
false);
638 daPyMng_c::addScore(yoshiEatPoints[
mEatPoints], plrNo);
655 yoshi->getMouthMtx(&mouthMtx);
657 PSMTXTrans(transposeMtx, 10.0f, -7.0f, 0.0f);
659 PSMTXConcat(mouthMtx, transposeMtx, mouthMtx);
660 mPos.x = mouthMtx.transX();
661 mPos.y = mouthMtx.transY();
668 if (yoshi->m_a0 <= 1) {
669 res = yoshi->m_a0 / 1.25f;
678 if (scaleRate < 1.0f) {
687 yoshi->getTongueTipMtx(&tongueTipMtx);
688 mPos.x = tongueTipMtx.transX();
714 int combo = multiplier;
715 if (combo >= ARRAY_SIZE(cs_combo_se)) {
716 combo = ARRAY_SIZE(cs_combo_se) - 1;
718 int comboNeededForClaps = shortCombo ? 4 : 7;
719 if (combo >= comboNeededForClaps) {
732 mVec3_c shiftedPos(pos, 6500.0f);
734 int waterDepth = dBc_c::checkWaterDepth(shiftedPos.x, shiftedPos.y,
mLayer,
mBc.mAmiLine,
nullptr);
737 if (waterDepth < 3) {
740 splashInfo |= (
mLayer << 16);
742 mVec3_c splashSize(size, size, size);
743 dEffActorMng_c::m_instance->createWaterSplashEff(shiftedPos, splashInfo, -1, splashSize);
745 dAudio::g_pSndObjMap->startSound(SE_OBJ_CMN_SPLASH, shiftedPos, 0);
747 dBg_c::m_bg_p->setWaterInWave(pos.x, pos.y, 6);
751 mVec3_c shiftedPos(pos, 6500.0f);
753 u32 splashInfo = 4 | (
mLayer << 16);
755 mVec3_c splashSize(size, size, size);
756 dEffActorMng_c::m_instance->createWaterSplashEff(shiftedPos, splashInfo, -1, splashSize);
758 dAudio::g_pSndObjMap->startSound(SE_OBJ_CMN_SPLASH_LAVA, shiftedPos, 0);
761 dBg_c::m_bg_p->setWaterInWave(pos.x, pos.y, 16);
763 dBg_c::m_bg_p->setWaterInWave(pos.x, pos.y, 14);
768 mVec3_c shiftedPos(pos, 6500.0f);
770 u32 splashInfo = 6 | (
mLayer << 16);
772 mVec3_c splashSize(size, size, size);
773 dEffActorMng_c::m_instance->createWaterSplashEff(shiftedPos, splashInfo, -1, splashSize);
775 dAudio::g_pSndObjMap->startSound(SE_OBJ_CMN_SPLASH_POISON, pos, 0);
778 dBg_c::m_bg_p->setWaterInWave(pos.x, pos.y, 23);
780 dBg_c::m_bg_p->setWaterInWave(pos.x, pos.y, 21);
785 for (
int i = 0; i < 4; i++) {
786 dAcPy_c *player = daPyMng_c::getPlayer(i);
788 if (playerNum !=
nullptr) {
794 if (playerNum !=
nullptr) {
void getCcBounds(sRangeDataF &bounds)
static u8 mExecStopReq
The actors for which the execute operation is requested to be disabled.
static u8 mExecStop
The actors for which the execute operation is currently disabled.
static bool getTrgToSrcDirLoop(float trgX, float srcX)
See getTrgToSrcDirFunc.
void deleteActor(u8 deleteForever)
Deletes the actor and optionally disables respawn.
static const float smc_CULL_AREA_XLIMIT
The default max bound X size.
u8 mExecStopMask
The mask required to disable the execute operation for the actor.
static dActor_c * construct(ProfileName profName, unsigned long param, const mVec3_c *position, const mAng3_c *rotation, u8 layer)
Creates a stage actor without a parent.
void slideComboSE(int multiplier, bool shortCombo)
Plays the combo kill sound effect.
static bool screenCullCheck(const mVec3_c &pos, const sRangeDataF &visibleBound, sRangeDataF destroyBound, u8 areaID)
Checks if the actor should be culled due to being outside the screen.
virtual bool setEatGlupDown(dActor_c *eatingActor)
Callback for when the actor is about to be fully swallowed.
bool mBlockHit
Whether a block below the actor was hit.
dAcPy_c * searchNearPlayer(mVec2_c &delta)
Gets the closest player to the actor and its distance.
sRangeDataF mDestroyBound
static void setLoopFunc(int loopType)
Sets the position-related functions for the level.
bool checkAreaNo()
Checks if at least one player is in the same zone as the actor.
void carryFukidashiCancel(int fukidashiAction, int playerId)
Hides the given action prompt for all players.
virtual void postCreate(fBase_c::MAIN_STATE_e status)
post method for the create operation.
virtual void postDelete(fBase_c::MAIN_STATE_e status)
post method for the delete operation.
mVec3_c mPreEatScale
The actor's scale before being eaten.
static void setSoftLight_MapObj(m3d::bmdl_c &mdl)
Sets the soft light effect for map objects.
virtual void cancelFunsuiActUpper()
static u64 m_flagbit_keep
Temporary storage for the next created sprite actor's event mask. See mEventMask.
u8 m_00
Seems to be a player bit flag.
static void setSoftLight_Map(m3d::bmdl_c &mdl)
Sets the soft light effect for map actors.
bool mNoRespawn
Whether the actor should not respawn after being deleted.
virtual void setSpinLiftUpActor(dActor_c *carryingActor)
Callback for when the actor is picked up by another actor.
virtual void reviveCc()
Enables the actor's collision.
static void setTmpCtData(u8 layer)
Sets temporary data to be used for the next actor's construction.
static u8 m_tmpCtLayerNo
Temporary storage for the next constructed actor's layer. See mLayer.
u8 * mpSpawnFlags
The spawn flags for the actor. See ACTOR_SPAWN_FLAG_e.
bool HasamareBgCheck()
Returns whether the actor is colliding with any enabled collision sides.
bool areaCullCheck(const mVec3_c &pos, const sRangeDataF &bound, u8 areaID) const
Checks if the actor should be culled due to zone limits.
dBc_c mBc
The actor-to-tile collision sensor.
static getTrgToSrcDirFunc mGetTrgToSrcDirFunc
The direction detection function.
virtual void poisonSplashEffect(const mVec3_c &pos, float size)
Generates a poison water splash effect.
static bool getTrgToSrcDir_Main(float trgX, float srcX)
See getTrgToSrcDirFunc.
static void setSoftLight_Enemy(m3d::bmdl_c &mdl)
Sets the soft light effect for enemies.
void clrComboCnt()
Clears the actor's combo counter.
virtual void setEatTongue(dActor_c *eatingActor)
Callback for when the actor is targeted by Yoshi's tongue.
@ EAT_POINTS_200
Awards 200 points (default).
@ EAT_POINTS_NONE
No points are awarded.
virtual mVec2_c getLookatPos() const
Gets the position players look to when focused on the actor.
@ SKIP_SCREEN_CHECK
The actor position is not checked against the screen boundaries.
@ SKIP_RIDE_CHECK
The actor's ride status is not checked.
@ SKIP_ACTOR_DELETE
The actor is not deleted if out of screen.
static bool getTrgToSrcDirNormal(float trgX, float srcX)
See getTrgToSrcDirFunc.
static void setSoftLight_Boss(m3d::bmdl_c &mdl)
Sets the soft light effect for bosses.
static const float smc_CULL_YLIMIT
The default max bound Y offset.
static void setSoftLight_Player(m3d::bmdl_c &mdl)
Sets the soft light effect for players.
virtual float calcEatScaleRate(dActor_c *eatingActor)
Computes the scaling rate during eating.
static dAcPy_c * searchNearPlayerLoop(mVec2_c &delta, const mVec2_c &pos)
See searchNearPlayerFunc.
u8 mKind
The actor's kind. Value is a STAGE_ACTOR_KIND_e.
u8 mEatState
The actor's eat state. Value is a EAT_STATE_e.
static void changePosAngle(mVec3_c *pos, mAng3_c *ang, int param3)
Adjusts the actor's position to account for looping stages.
dCc_c mCc
The actor-to-actor collision sensor.
static dAcPy_c * searchNearPlayerNormal(mVec2_c &delta, const mVec2_c &pos)
See searchNearPlayerFunc.
@ EAT_TYPE_EAT_PERMANENT
The actor is consumed permanently after being eaten (default).
virtual bool ActorDrawCullCheck()
Checks if the actor is out of view.
dAcPy_c * searchCarryFukidashiPlayer(int fukidashiAction)
Searches the closest player who has not yet performed the given action.
static void setSearchNearPlayerFunc(int loopType)
Sets the player search function to be used for the level.
mVec2_c mVisibleAreaSize
The size of the area inside which the actor is visible.
virtual void removeCc()
Disables the actor's collision.
virtual int preCreate()
pre method for the create operation.
static dAcPy_c * searchNearPlayer_Main(mVec2_c &delta, const mVec2_c &pos)
See searchNearPlayerFunc.
static u8 mDrawStopReq
The actor kinds for which the draw operation is requested to be disabled.
dAcPy_c *(* searchNearPlayerFunc)(mVec2_c &delta, const mVec2_c &pos)
Gets the closest player to the given position and its distance.
virtual void postExecute(fBase_c::MAIN_STATE_e status)
post method for the execute operation.
virtual void eatMove(dActor_c *eatingActor)
Updates the actor's position during eating actions.
static void setGetTrgToSrcDirFunc(int loopType)
Sets the direction detection function to be used for the level.
u8 mEatBehaviour
The actor's eat behaviour. Value is a EAT_BEHAVIOR_e.
u8 mAreaNo
The actor's zone ID.
void setKind(u8 kind)
Sets the actor's kind. See STAGE_ACTOR_KIND_e.
virtual int preExecute()
pre method for the execute operation.
virtual void allEnemyDeathEffSet()
Spawns the visual effects for when all players reach the flagpole and all enemies are cleared.
static void setSoftLight_Item(m3d::bmdl_c &mdl)
Sets the soft light effect for items.
int mComboMultiplier
The current combo multiplier obtained by the actor by colliding with other actors.
virtual const char * getKindString() const
Gets the base's kind string.
s8 mPlayerNo
The player associated with the actor, -1 if not associated to any player.
bool ActorScrOutCheck(u16 flags)
Checks if the actor is out of gameplay and optionally deletes it.
virtual void cancelFunsuiActSide(int)
virtual void cancelFunsuiActVanish()
virtual void setEatMouth(dActor_c *eatingActor)
Callback for when the actor is being eaten.
u32 mEatenByID
The unique identifier of the eating actor.
bool carryFukidashiCheck(int fukidashiAction, mVec2_c fukidashiTriggerSize)
Checks if the prompt for the given action should be displayed for each player.
virtual void waterSplashEffect(const mVec3_c &pos, float size)
Generates a water splash effect.
void killActor(s8 playerId, int noScore)
Kills the actor and optionally awards points to one or all players.
virtual void setEatTongueOff(dActor_c *eatingActor)
Callback for when the eating action is canceled.
virtual void block_hit_init()
Callback for when a block directly beneath the actor is hit.
@ EAT_STATE_EATEN
The actor has been successfully eaten.
static u8 * m_read_p_keep
Temporary storage for the next created sprite actor's spawn flags. See mpSpawnFlags.
bool checkCarried(int *playerNum)
Returns whether the actor is being carried by a player.
dActor_c()
Constructs a new actor.
virtual void yoganSplashEffect(const mVec3_c &pos, float size)
Generates a lava splash effect.
@ COLL_FOOT
The actor can collide with the ground.
@ COLL_HEAD
The actor can collide with ceilings.
@ COLL_WALL_L
The actor can collide with walls on its left.
@ COLL_WALL_R
The actor can collide with walls on its right.
@ COLL_NONE
The actor does not collide with any surface.
static const float smc_CULL_AREA_YLIMIT
The default max bound Y size.
dRc_c mRc
The actor's ride surface manager.
@ ACTOR_SPAWNED
The actor is spawned.
@ ACTOR_NO_RESPAWN
The actor must not respawn after deletion.
virtual void calcEatInScale(dActor_c *eatingActor)
Adjusts the actor's scale while being eaten.
u32 mCarryFukidashiPlayerNo
The player for whom an action prompt related to the actor is being displayed. -1 if no players meet t...
virtual int preDraw()
pre method for the draw operation.
virtual s8 * getPlrNo()
Gets the player number associated with the actor. See mPlayerNo.
virtual void setAfterEatScale()
Restores the actor's scale once spat out.
static const mVec2_c smc_FUKIDASHI_RANGE
The default trigger area size for displaying action prompts.
virtual bool setEatSpitOut(dActor_c *eatingActor)
Callback for when the actor is about to be spat out.
@ STAGE_ACTOR_GENERIC
A generic stage actor (default).
virtual void calcSpitOutPos(dActor_c *eatingActor)
Calculates the position where the actor will be spat out.
static void setChangePosAngleFunc(int loopType)
Sets the position update function to be used for the level.
virtual void postDraw(fBase_c::MAIN_STATE_e status)
post method for the draw operation.
virtual int preDelete()
pre method for the delete operation.
static u16 m_flag_keep
Temporary storage for the next created sprite actor's tracked event IDs. See mEventNums.
static const float smc_CULL_XLIMIT
The default max bound X offset.
static searchNearPlayerFunc mSearchNearPlayerFunc
The player search function.
u8 mLayer
The actor's layer.
mVec2_c mVisibleAreaOffset
The offset applied to the area size.
bool(* getTrgToSrcDirFunc)(float trgX, float srcX)
Gets the direction the target position is in, from the source position's viewpoint.
~dActor_c()
Destroys the actor.
u8 mBgCollFlags
The collision directions that the actor can respond to.
static u8 mDrawStop
The actor kinds for which the draw operation is currently disabled.
EAT_POINTS_e mEatPoints
The score awarded when the actor is eaten by Yoshi.
static u8 m_mbgchoice_keep
Temporary storage for the next created sprite actor's layer. See mLayer.
bool mVisible
Whether the actor should be visible or not. Defaults to true .
virtual int preDraw()
pre method for the draw operation.
mVec3_c mScale
The actor's scale (defaults to 1).
mVec3_c mPos
The actor's position.
virtual void postExecute(fBase_c::MAIN_STATE_e status)
post method for the execute operation.
virtual void postDraw(fBase_c::MAIN_STATE_e status)
post method for the draw operation.
mVec3_c mCenterOffs
The offset from the position to the center of the actor (defaults to 0).
static dBaseActor_c * construct(ProfileName profName, unsigned long param, const mVec3_c *position, const mAng3_c *rotation)
Creates an actor without a parent.
virtual int preDelete()
pre method for the delete operation.
virtual void postDelete(fBase_c::MAIN_STATE_e status)
post method for the delete operation.
mVec3_c getCenterPos() const
Gets the actor's centered position.
virtual void postCreate(fBase_c::MAIN_STATE_e status)
post method for the create operation.
u32 mActorProperties
The actor's properties. See fProfile::fActorProfile_c::mActorProperties.
virtual int preExecute()
pre method for the execute operation.
virtual int preCreate()
pre method for the create operation.
@ ACTOR_MAP_GENERIC
A generic map actor (dWmActor_c).
dBase_c()
Constructs a new base.
const char * mpKindString
The base's kind string.
Course data file holder. A course data file contains the actual course elements - areas,...
static dMultiMng_c * mspInstance
The instance of this class.
@ POPUP_TYPE_1000
The number 1000.
@ POPUP_TYPE_200
The number 200.
MAIN_STATE_e
The possible operation results.
@ SUCCESS
The operation was completed successfully.
void deleteRequest()
Requests deletion of the base.
bool mDeleteRequested
If deletion of the base was requested, but the delete operation has not been scheduled yet.
@ NOT_READY
The step could not completed at this time.
@ SUCCEEDED
The step was completed successfully.
fBaseID_e mUniqueID
The base's unique identifier.
static fBase_c * searchBaseByID(fBaseID_e id)
Searches for a base with the given ID.
A three-dimensional short angle vector.
A two-dimensional floating point vector.
A three-dimensional floating point vector.
const u8 l_Ami_Line[]
The sub-layer for each side of chainlink fences.
const float l_Ami_Zpos[]
The additional Z offset for each side of chainlink fences.
@ BASE_ID_NULL
Represents the null base.
u16 ProfileName
The name of a profile. Value is a fProfile::PROFILE_NAME_e.
void SetSoftLight_Player(m3d::bmdl_c &, int)
Sets the soft light effect for players.
void SetSoftLight_Enemy(m3d::bmdl_c &, int)
Sets the soft light effect for enemies.
bool someCheck(mVec3_c *a, sRangeDataF *b)
void SetSoftLight_MapObj(m3d::bmdl_c &, int)
Sets the soft light effect for map objects.
void SetSoftLight_Map(m3d::bmdl_c &, int)
Sets the soft light effect for map actors.
void hideFukidashiForLevel(int playerId, int fukidashiAction, int param3)
Hides the given action prompt for the given player for the rest of the current level.
void showFukidashi(int playerId, int fukidashiAction)
Displays the given action prompt to the given player.
bool isGameStop(ulong flag)
Determines if gameplay is currently stopped for the specified reason(s).
bool checkRectangleOverlap(mVec3_c *, mVec3_c *, mVec3_c *, mVec3_c *, float)
void SetSoftLight_Boss(m3d::bmdl_c &, int)
Sets the soft light effect for bosses.
void hideFukidashiTemporarily(int playerId, int fukidashiAction, int param3)
Temporarily hides the given action prompt for the given player.
void hideFukidashiForSession(int playerId, int fukidashiAction)
Hides the given action prompt for the given player for the rest of the current session.
@ GAME_STOP_ANY
The game is stopped for any unspecified reason.