mirror of
https://github.com/MonsterDruide1/OdysseyDecomp
synced 2026-04-23 09:04:21 +00:00
all: Fix more listsym issues (#734)
This commit is contained in:
parent
5e5cd6ff9c
commit
5dd0ba0915
|
|
@ -1,5 +1,7 @@
|
|||
#pragma once
|
||||
|
||||
#define ALWAYS_INLINE __attribute__((always_inline)) inline
|
||||
|
||||
// https://stackoverflow.com/a/26408195/9275661
|
||||
#define __NARG__(...) __NARG_I_(__VA_ARGS__, __RSEQ_N())
|
||||
#define __NARG_I_(...) __ARG_N(__VA_ARGS__)
|
||||
|
|
|
|||
|
|
@ -2,6 +2,7 @@
|
|||
|
||||
#include <prim/seadSafeString.h>
|
||||
|
||||
#include "Library/Base/Macros.h"
|
||||
#include "Library/Base/StringUtil.h"
|
||||
#include "Library/Camera/CameraTicketId.h"
|
||||
#include "Library/Placement/PlacementId.h"
|
||||
|
|
@ -19,8 +20,7 @@ CameraResourceHolder::CameraResourceHolder(const char* stageName, s32 maxResourc
|
|||
|
||||
// too large to inline with heuristic, but needs to be explicit function (or inline lambda) for
|
||||
// stack ordering to match original assembly
|
||||
__attribute__((always_inline)) void getStageName(StringTmp<128>* stageName,
|
||||
const char* archiveName) {
|
||||
ALWAYS_INLINE void getStageName(StringTmp<128>* stageName, const char* archiveName) {
|
||||
sead::FixedSafeString<256> safeArchiveName;
|
||||
safeArchiveName.format("%s", archiveName);
|
||||
if (safeArchiveName.endsWith("Map"))
|
||||
|
|
|
|||
|
|
@ -5,6 +5,7 @@
|
|||
|
||||
#include "Library/Action/ActorActionKeeper.h"
|
||||
#include "Library/Base/HashCodeUtil.h"
|
||||
#include "Library/Base/Macros.h"
|
||||
#include "Library/Base/StringUtil.h"
|
||||
#include "Library/Camera/CameraDirector.h"
|
||||
#include "Library/Draw/GraphicsQualityController.h"
|
||||
|
|
@ -67,7 +68,7 @@ void initActor(LiveActor* actor, const ActorInitInfo& initInfo) {
|
|||
initActorSuffix(actor, initInfo, nullptr);
|
||||
}
|
||||
|
||||
__attribute__((always_inline)) bool initActorPoseKeeper(const char* pose, LiveActor* actor) {
|
||||
ALWAYS_INLINE bool initActorPoseKeeper(const char* pose, LiveActor* actor) {
|
||||
if (!pose)
|
||||
return false;
|
||||
s32 poseId = -1;
|
||||
|
|
@ -84,8 +85,8 @@ __attribute__((always_inline)) bool initActorPoseKeeper(const char* pose, LiveAc
|
|||
return false;
|
||||
}
|
||||
|
||||
__attribute__((always_inline)) void initActorPose(LiveActor* actor, const ActorInitInfo& initInfo,
|
||||
Resource* modelRes, const char* suffix) {
|
||||
ALWAYS_INLINE void initActorPose(LiveActor* actor, const ActorInitInfo& initInfo,
|
||||
Resource* modelRes, const char* suffix) {
|
||||
ByamlIter initPose;
|
||||
if (!tryGetActorInitFileIter(&initPose, modelRes, "InitPose", suffix))
|
||||
return;
|
||||
|
|
@ -101,8 +102,8 @@ __attribute__((always_inline)) void initActorPose(LiveActor* actor, const ActorI
|
|||
((ActorPoseKeeperTFUSV*)actor->getPoseKeeper())->setFrontUp(true);
|
||||
}
|
||||
|
||||
__attribute__((always_inline)) void initActorScale(LiveActor* actor, const ActorInitInfo& initInfo,
|
||||
Resource* modelRes, const char* suffix) {
|
||||
ALWAYS_INLINE void initActorScale(LiveActor* actor, const ActorInitInfo& initInfo,
|
||||
Resource* modelRes, const char* suffix) {
|
||||
ByamlIter initScale;
|
||||
if (!tryGetActorInitFileIter(&initScale, modelRes, "InitScale", suffix))
|
||||
return;
|
||||
|
|
@ -118,8 +119,8 @@ __attribute__((always_inline)) void initActorScale(LiveActor* actor, const Actor
|
|||
setScale(actor, scale);
|
||||
}
|
||||
|
||||
__attribute__((always_inline)) ModelLodCtrl*
|
||||
initActorModelLodCtrl(LiveActor* actor, Resource* modelRes, const char* suffix) {
|
||||
ALWAYS_INLINE ModelLodCtrl* initActorModelLodCtrl(LiveActor* actor, Resource* modelRes,
|
||||
const char* suffix) {
|
||||
ByamlIter initLod;
|
||||
if (!tryGetActorInitFileIter(&initLod, modelRes, "InitLod", suffix))
|
||||
return nullptr;
|
||||
|
|
@ -144,9 +145,9 @@ initActorModelLodCtrl(LiveActor* actor, Resource* modelRes, const char* suffix)
|
|||
return modelLodCtrl;
|
||||
}
|
||||
|
||||
__attribute__((always_inline)) void initActorModel(LiveActor* actor, const ActorInitInfo& initInfo,
|
||||
Resource* modelRes, ActorResource* actorResource,
|
||||
const char* suffix) {
|
||||
ALWAYS_INLINE void initActorModel(LiveActor* actor, const ActorInitInfo& initInfo,
|
||||
Resource* modelRes, ActorResource* actorResource,
|
||||
const char* suffix) {
|
||||
ByamlIter initModel;
|
||||
if (!tryGetActorInitFileIter(&initModel, modelRes, "InitModel", suffix))
|
||||
return;
|
||||
|
|
@ -219,9 +220,8 @@ __attribute__((always_inline)) void initActorModel(LiveActor* actor, const Actor
|
|||
modelKeeper->getModelCtrl()->setCalcViewCore(2);
|
||||
}
|
||||
|
||||
__attribute__((always_inline)) void initActorExecutor(LiveActor* actor,
|
||||
const ActorInitInfo& initInfo,
|
||||
Resource* modelRes, const char* suffix) {
|
||||
ALWAYS_INLINE void initActorExecutor(LiveActor* actor, const ActorInitInfo& initInfo,
|
||||
Resource* modelRes, const char* suffix) {
|
||||
ByamlIter initExecutor;
|
||||
if (!tryGetActorInitFileIter(&initExecutor, modelRes, "InitExecutor", suffix)) {
|
||||
ModelKeeper* modelKeeper = actor->getModelKeeper();
|
||||
|
|
@ -261,8 +261,8 @@ __attribute__((always_inline)) void initActorExecutor(LiveActor* actor,
|
|||
}
|
||||
}
|
||||
|
||||
__attribute__((always_inline)) void initActorSensor(LiveActor* actor, const ActorInitInfo& initInfo,
|
||||
Resource* modelRes, const char* suffix) {
|
||||
ALWAYS_INLINE void initActorSensor(LiveActor* actor, const ActorInitInfo& initInfo,
|
||||
Resource* modelRes, const char* suffix) {
|
||||
ByamlIter initSensor;
|
||||
if (!tryGetActorInitFileIter(&initSensor, modelRes, "InitSensor", suffix))
|
||||
return;
|
||||
|
|
@ -307,9 +307,8 @@ __attribute__((always_inline)) void initActorSensor(LiveActor* actor, const Acto
|
|||
}
|
||||
}
|
||||
|
||||
__attribute__((always_inline)) void initActorCollision(LiveActor* actor,
|
||||
const ActorInitInfo& initInfo,
|
||||
Resource* modelRes, const char* suffix) {
|
||||
ALWAYS_INLINE void initActorCollision(LiveActor* actor, const ActorInitInfo& initInfo,
|
||||
Resource* modelRes, const char* suffix) {
|
||||
ByamlIter initCollision;
|
||||
if (!tryGetActorInitFileIter(&initCollision, modelRes, "InitCollision", suffix))
|
||||
return;
|
||||
|
|
@ -335,9 +334,8 @@ __attribute__((always_inline)) void initActorCollision(LiveActor* actor,
|
|||
initActorCollisionWithResource(actor, modelRes, name, sensor, jointMtx, suffix);
|
||||
}
|
||||
|
||||
__attribute__((always_inline)) void initActorCollider(LiveActor* actor,
|
||||
const ActorInitInfo& initInfo,
|
||||
Resource* modelRes, const char* suffix) {
|
||||
ALWAYS_INLINE void initActorCollider(LiveActor* actor, const ActorInitInfo& initInfo,
|
||||
Resource* modelRes, const char* suffix) {
|
||||
ByamlIter initCollider;
|
||||
if (!tryGetActorInitFileIter(&initCollider, modelRes, "InitCollider", suffix))
|
||||
return;
|
||||
|
|
@ -354,8 +352,8 @@ __attribute__((always_inline)) void initActorCollider(LiveActor* actor,
|
|||
actor->initCollider(radius, offset.y, planeNum);
|
||||
}
|
||||
|
||||
__attribute__((always_inline)) void initActorEffect(LiveActor* actor, const ActorInitInfo& initInfo,
|
||||
Resource* modelRes, const char* suffix) {
|
||||
ALWAYS_INLINE void initActorEffect(LiveActor* actor, const ActorInitInfo& initInfo,
|
||||
Resource* modelRes, const char* suffix) {
|
||||
ByamlIter initEffect;
|
||||
if (!tryGetActorInitFileIter(&initEffect, modelRes, "InitEffect", suffix))
|
||||
return;
|
||||
|
|
@ -367,8 +365,8 @@ __attribute__((always_inline)) void initActorEffect(LiveActor* actor, const Acto
|
|||
initActorEffectKeeper(actor, initInfo, name);
|
||||
}
|
||||
|
||||
__attribute__((always_inline)) void initActorSound(LiveActor* actor, const ActorInitInfo& initInfo,
|
||||
Resource* modelRes, const char* suffix) {
|
||||
ALWAYS_INLINE void initActorSound(LiveActor* actor, const ActorInitInfo& initInfo,
|
||||
Resource* modelRes, const char* suffix) {
|
||||
ByamlIter initSound;
|
||||
const char* seName = nullptr;
|
||||
const char* bgmName = nullptr;
|
||||
|
|
@ -386,14 +384,13 @@ __attribute__((always_inline)) void initActorSound(LiveActor* actor, const Actor
|
|||
initActorBgmKeeper(actor, initInfo, bgmName);
|
||||
}
|
||||
|
||||
__attribute__((always_inline)) void initActorRail(LiveActor* actor, const ActorInitInfo& initInfo) {
|
||||
ALWAYS_INLINE void initActorRail(LiveActor* actor, const ActorInitInfo& initInfo) {
|
||||
if (isExistRail(initInfo, "Rail"))
|
||||
actor->initRailKeeper(initInfo, "Rail");
|
||||
}
|
||||
|
||||
__attribute__((always_inline)) void initActorGroupClipping(LiveActor* actor,
|
||||
const ActorInitInfo& initInfo,
|
||||
const ByamlIter& initClipping) {
|
||||
ALWAYS_INLINE void initActorGroupClipping(LiveActor* actor, const ActorInitInfo& initInfo,
|
||||
const ByamlIter& initClipping) {
|
||||
if (initClipping.isExistKey("NoGroupClipping"))
|
||||
return;
|
||||
|
||||
|
|
@ -404,9 +401,8 @@ __attribute__((always_inline)) void initActorGroupClipping(LiveActor* actor,
|
|||
initGroupClipping(actor, initInfo);
|
||||
}
|
||||
|
||||
__attribute__((always_inline)) void initActorClipping(LiveActor* actor,
|
||||
const ActorInitInfo& initInfo,
|
||||
Resource* modelRes, const char* suffix) {
|
||||
ALWAYS_INLINE void initActorClipping(LiveActor* actor, const ActorInitInfo& initInfo,
|
||||
Resource* modelRes, const char* suffix) {
|
||||
ByamlIter initClipping;
|
||||
if (!tryGetActorInitFileIter(&initClipping, modelRes, "InitClipping", suffix))
|
||||
return;
|
||||
|
|
@ -440,9 +436,8 @@ __attribute__((always_inline)) void initActorClipping(LiveActor* actor,
|
|||
initActorGroupClipping(actor, initInfo, initClipping);
|
||||
}
|
||||
|
||||
__attribute__((always_inline)) void initActorShadowMask(LiveActor* actor,
|
||||
const ActorInitInfo& initInfo,
|
||||
Resource* modelRes, const char* suffix) {
|
||||
ALWAYS_INLINE void initActorShadowMask(LiveActor* actor, const ActorInitInfo& initInfo,
|
||||
Resource* modelRes, const char* suffix) {
|
||||
bool usingDepthShadow = false;
|
||||
tryGetArg(&usingDepthShadow, initInfo, "UsingDepthShadow");
|
||||
initDepthShadowMapCtrl(actor, modelRes, initInfo, suffix);
|
||||
|
|
@ -456,8 +451,8 @@ __attribute__((always_inline)) void initActorShadowMask(LiveActor* actor,
|
|||
invalidateShadowMaskIntensityAll(actor);
|
||||
}
|
||||
|
||||
__attribute__((always_inline)) void initActorFlag(LiveActor* actor, const ActorInitInfo& initInfo,
|
||||
Resource* modelRes, const char* suffix) {
|
||||
ALWAYS_INLINE void initActorFlag(LiveActor* actor, const ActorInitInfo& initInfo,
|
||||
Resource* modelRes, const char* suffix) {
|
||||
ByamlIter initFlag;
|
||||
if (!tryGetActorInitFileIter(&initFlag, modelRes, "InitFlag", suffix))
|
||||
return;
|
||||
|
|
@ -469,8 +464,8 @@ __attribute__((always_inline)) void initActorFlag(LiveActor* actor, const ActorI
|
|||
validatePuddleMaterial(actor);
|
||||
}
|
||||
|
||||
__attribute__((always_inline)) void initActorItem(LiveActor* actor, const ActorInitInfo& initInfo,
|
||||
Resource* modelRes, const char* suffix) {
|
||||
ALWAYS_INLINE void initActorItem(LiveActor* actor, const ActorInitInfo& initInfo,
|
||||
Resource* modelRes, const char* suffix) {
|
||||
ByamlIter initItem;
|
||||
if (!tryGetActorInitFileIter(&initItem, modelRes, "InitItem", suffix))
|
||||
return;
|
||||
|
|
@ -478,8 +473,8 @@ __attribute__((always_inline)) void initActorItem(LiveActor* actor, const ActorI
|
|||
initActorItemKeeper(actor, initInfo, initItem);
|
||||
}
|
||||
|
||||
__attribute__((always_inline)) void initActorScore(LiveActor* actor, const ActorInitInfo& initInfo,
|
||||
Resource* modelRes, const char* suffix) {
|
||||
ALWAYS_INLINE void initActorScore(LiveActor* actor, const ActorInitInfo& initInfo,
|
||||
Resource* modelRes, const char* suffix) {
|
||||
ByamlIter initScore;
|
||||
if (!tryGetActorInitFileIter(&initScore, modelRes, "InitScore", suffix))
|
||||
return;
|
||||
|
|
@ -488,10 +483,9 @@ __attribute__((always_inline)) void initActorScore(LiveActor* actor, const Actor
|
|||
actor->getActorScoreKeeper()->init(initScore);
|
||||
}
|
||||
|
||||
__attribute__((always_inline)) void initActorAction(LiveActor* actor, const ActorInitInfo& initInfo,
|
||||
Resource* modelRes,
|
||||
ActorResource* actorResource,
|
||||
const char* suffix) {
|
||||
ALWAYS_INLINE void initActorAction(LiveActor* actor, const ActorInitInfo& initInfo,
|
||||
Resource* modelRes, ActorResource* actorResource,
|
||||
const char* suffix) {
|
||||
const char* archiveName = actorResource->getModelRes()->getArchiveName();
|
||||
initActorActionKeeper(actor, actorResource, archiveName, suffix);
|
||||
|
||||
|
|
@ -734,8 +728,8 @@ void initCreateActorNoPlacementInfoNoViewId(LiveActor* actor, const ActorInitInf
|
|||
actor->init(childInitInfo);
|
||||
}
|
||||
|
||||
__attribute__((always_inline)) LiveActor*
|
||||
createActorFromFactory(const ActorInitInfo& childInitInfo, const PlacementInfo* placementInfo) {
|
||||
ALWAYS_INLINE LiveActor* createActorFromFactory(const ActorInitInfo& childInitInfo,
|
||||
const PlacementInfo* placementInfo) {
|
||||
const ActorFactory* factory = childInitInfo.actorFactory;
|
||||
|
||||
const char* objectName = nullptr;
|
||||
|
|
|
|||
|
|
@ -802,9 +802,9 @@ bool reboundVelocityFromActor(LiveActor* actor, const LiveActor* target, f32 reb
|
|||
return reboundVelocityFromActor(actor, target, getVelocity(target), reboundStrength);
|
||||
}
|
||||
|
||||
__attribute__((always_inline)) bool
|
||||
reboundVelocityFromActorInline(LiveActor* actor, const LiveActor* target,
|
||||
const sead::Vector3f& targetVelocity, f32 reboundStrength) {
|
||||
ALWAYS_INLINE bool reboundVelocityFromActorInline(LiveActor* actor, const LiveActor* target,
|
||||
const sead::Vector3f& targetVelocity,
|
||||
f32 reboundStrength) {
|
||||
sead::Vector3f direction;
|
||||
calcDirToActor(&direction, actor, target);
|
||||
f32 dot = (getVelocity(actor) - targetVelocity).dot(direction);
|
||||
|
|
|
|||
|
|
@ -106,7 +106,7 @@ SEND_MSG_IMPL(Hit);
|
|||
SEND_MSG_IMPL(HitStrong);
|
||||
SEND_MSG_IMPL(HitVeryStrong);
|
||||
SEND_MSG_IMPL(KnockDown);
|
||||
SEND_MSG_IMPL(MapPush);
|
||||
SEND_MSG_IMPL_(MapPush, Push);
|
||||
SEND_MSG_IMPL(Vanish);
|
||||
SEND_MSG_DATA_TO_ACTOR_IMPL(ChangeAlpha, f32, pAlpha);
|
||||
SEND_MSG_IMPL(ShowModel);
|
||||
|
|
@ -335,7 +335,7 @@ IS_MSG_IMPL(Hit);
|
|||
IS_MSG_IMPL(HitStrong);
|
||||
IS_MSG_IMPL(HitVeryStrong);
|
||||
IS_MSG_IMPL(KnockDown);
|
||||
IS_MSG_IMPL(MapPush);
|
||||
IS_MSG_IMPL_(MapPush, Push);
|
||||
IS_MSG_IMPL(Vanish);
|
||||
IS_MSG_IMPL(ChangeAlpha);
|
||||
IS_MSG_IMPL(ShowModel);
|
||||
|
|
@ -489,10 +489,10 @@ bool sendMsgEnemyAttackForCrossoverSensor(HitSensor* receiver, HitSensor* sender
|
|||
return sendMsgEnemyAttack(receiver, sender);
|
||||
}
|
||||
|
||||
__attribute__((always_inline)) bool
|
||||
isWithinCrossoverCylinderVolume(HitSensor* receiver, HitSensor* sender, f32 maxSensorDistance,
|
||||
const sead::Vector3f& basePoint, const sead::Vector3f& upAxis,
|
||||
f32 extraRadius) {
|
||||
ALWAYS_INLINE bool isWithinCrossoverCylinderVolume(HitSensor* receiver, HitSensor* sender,
|
||||
f32 maxSensorDistance,
|
||||
const sead::Vector3f& basePoint,
|
||||
const sead::Vector3f& upAxis, f32 extraRadius) {
|
||||
sead::Vector3f sensorDiff = receiver->getPos() - sender->getPos();
|
||||
sead::Vector3f senderUp = -getGravity(sender->getParentActor());
|
||||
verticalizeVec(&sensorDiff, upAxis, sensorDiff);
|
||||
|
|
|
|||
|
|
@ -730,13 +730,11 @@ SENSOR_MSG(Hit);
|
|||
SENSOR_MSG(HitStrong);
|
||||
SENSOR_MSG(HitVeryStrong);
|
||||
SENSOR_MSG(KnockDown);
|
||||
SENSOR_MSG(MapPush);
|
||||
SENSOR_MSG(Vanish);
|
||||
SENSOR_MSG_WITH_DATA(ChangeAlpha, (f32, Alpha));
|
||||
SENSOR_MSG(ShowModel);
|
||||
SENSOR_MSG(HideModel);
|
||||
SENSOR_MSG(Restart);
|
||||
// Impulse
|
||||
SENSOR_MSG(EnemyTouch);
|
||||
SENSOR_MSG(EnemyUpperPunch);
|
||||
SENSOR_MSG(EnemyTrample);
|
||||
|
|
|
|||
|
|
@ -15,8 +15,8 @@ struct ConveyerKey {
|
|||
s32 interpolateType;
|
||||
const PlacementInfo* placementInfo;
|
||||
|
||||
void init(const sead::Vector3f& keeperTrans, const sead::Vector3f& keeperDir,
|
||||
const PlacementInfo& placement);
|
||||
inline void init(const sead::Vector3f& keeperTrans, const sead::Vector3f& keeperDir,
|
||||
const PlacementInfo& placement);
|
||||
};
|
||||
|
||||
class ConveyerKeyKeeper {
|
||||
|
|
|
|||
|
|
@ -4,6 +4,7 @@
|
|||
#include <filedevice/seadFileDeviceMgr.h>
|
||||
#include <heap/seadHeapMgr.h>
|
||||
|
||||
#include "Library/Base/Macros.h"
|
||||
#include "Library/Base/StringUtil.h"
|
||||
#include "Library/Resource/Resource.h"
|
||||
#include "Library/Resource/ResourceFunction.h"
|
||||
|
|
@ -72,8 +73,7 @@ bool MemorySystem::createSceneHeap(const char* stageName, bool backwards) {
|
|||
return currentSceneResourceHeap == nullptr;
|
||||
}
|
||||
|
||||
__attribute__((always_inline)) u64
|
||||
MemorySystem::getSceneResourceHeapSize(const char* stageName) const {
|
||||
ALWAYS_INLINE u64 MemorySystem::getSceneResourceHeapSize(const char* stageName) const {
|
||||
bool isStaffRollOrDemoEnding = stageName && (isEqualString(stageName, "StaffRollStage") ||
|
||||
isEqualString(stageName, "DemoEndingStage"));
|
||||
|
||||
|
|
|
|||
|
|
@ -1,5 +1,6 @@
|
|||
#include "Item/CoinRail.h"
|
||||
|
||||
#include "Library/Base/Macros.h"
|
||||
#include "Library/LiveActor/ActorActionFunction.h"
|
||||
#include "Library/LiveActor/ActorClippingFunction.h"
|
||||
#include "Library/LiveActor/ActorInitFunction.h"
|
||||
|
|
@ -25,10 +26,8 @@ NERVES_MAKE_STRUCT(CoinRail, CloseMove, Move)
|
|||
|
||||
CoinRail::CoinRail(const char* name) : al::LiveActor(name) {}
|
||||
|
||||
__attribute__((always_inline)) void addStaticCoinToRail(CoinRail* rail,
|
||||
const al::ActorInitInfo& initInfo,
|
||||
Coin** coins, f32* railPos, s32 coinNum,
|
||||
bool isLoop) {
|
||||
ALWAYS_INLINE void addStaticCoinToRail(CoinRail* rail, const al::ActorInitInfo& initInfo,
|
||||
Coin** coins, f32* railPos, s32 coinNum, bool isLoop) {
|
||||
f32 posOnRail = 0.0f;
|
||||
f32 railDist = al::getRailTotalLength(rail) / (coinNum - (isLoop ? 0 : 1));
|
||||
for (s32 i = 0; i < coinNum; i++) {
|
||||
|
|
@ -45,8 +44,8 @@ __attribute__((always_inline)) void addStaticCoinToRail(CoinRail* rail,
|
|||
}
|
||||
}
|
||||
|
||||
__attribute__((always_inline)) void addCoinToRail(CoinRail* rail, const al::ActorInitInfo& initInfo,
|
||||
Coin** coins, f32* railPos, s32 coinNum) {
|
||||
ALWAYS_INLINE void addCoinToRail(CoinRail* rail, const al::ActorInitInfo& initInfo, Coin** coins,
|
||||
f32* railPos, s32 coinNum) {
|
||||
f32 posOnRail = 0.0f;
|
||||
for (s32 i = 0; i < coinNum; i++) {
|
||||
sead::Vector3f pos = sead::Vector3f::zero;
|
||||
|
|
|
|||
|
|
@ -612,8 +612,8 @@ s32 getStageShineAnimFrame(const al::LiveActor* actor, const char* stageName) {
|
|||
return getStageShineAnimFrame(actor, worldId);
|
||||
}
|
||||
|
||||
void startShineAnimAndSetFrameAndStop(al::LiveActor* actor, const char* animName, s32 frame,
|
||||
bool isMatAnim) {
|
||||
inline void startShineAnimAndSetFrameAndStop(al::LiveActor* actor, const char* animName, s32 frame,
|
||||
bool isMatAnim) {
|
||||
isMatAnim ? al::startMtpAnimAndSetFrameAndStop(actor, animName, frame) :
|
||||
al::startMclAnimAndSetFrameAndStop(actor, animName, frame);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -484,6 +484,11 @@ def source_no_nerve_make(c, path):
|
|||
FAIL("Use of NERVE_MAKE is not allowed. Use NERVES_MAKE_[NO]STRUCT instead.", line, path)
|
||||
return
|
||||
|
||||
def source_always_inline_macro(c, path):
|
||||
for line in c.splitlines():
|
||||
if "__attribute__((always_inline)) inline" in line:
|
||||
FAIL("Explicitly using `__attribute__((always_inline)) inline` is not allowed. Use ALWAYS_INLINE from Library/Base/Macros.h instead", line, path)
|
||||
|
||||
# -----
|
||||
# UTILS
|
||||
# -----
|
||||
|
|
@ -502,6 +507,7 @@ def check_source(c, path):
|
|||
source_no_raw_auto(c, path)
|
||||
common_self_other(c, path, False)
|
||||
common_consistent_float_literals(c, path)
|
||||
source_always_inline_macro(c, path)
|
||||
|
||||
def check_header(c, path):
|
||||
common_newline_eof(c, path)
|
||||
|
|
|
|||
Loading…
Reference in a new issue