mirror of
https://github.com/TwilitRealm/dusklight
synced 2026-05-24 15:00:55 -04:00
29 lines
1.2 KiB
C
29 lines
1.2 KiB
C
#pragma once
|
|
|
|
#include "f_op/f_op_actor_mng.h"
|
|
#include "f_pc/f_pc_layer.h"
|
|
#include "f_pc/f_pc_manager.h"
|
|
#include "f_pc/f_pc_node.h"
|
|
#include "m_Do/m_Do_controller_pad.h"
|
|
|
|
// Remove a button from this frame's trigger state so the game won't see it
|
|
// Call after detecting a combo in mod_tick to prevent double-processing
|
|
inline void consumeInput(u32 pad, u32 buttonMask) {
|
|
mDoCPd_c::getCpadInfo(pad).mPressedButtonFlags &= ~buttonMask;
|
|
}
|
|
|
|
// Spawn an actor in the play scene layer
|
|
// calling fopAcM_create directly outside game simulation context creates the actor in the wrong
|
|
// layer, corrupting its first-frame rendering setup
|
|
inline fpc_ProcID fopAcM_createInPlayScene(s16 proc_name, u32 params, const cXyz* pos, int room_no,
|
|
const csXyz* angle, const cXyz* scale, s8 argument) {
|
|
layer_class* savedLayer = fpcLy_CurrentLayer();
|
|
base_process_class* playScene = fpcM_SearchByName(fpcNm_PLAY_SCENE_e);
|
|
if (playScene != nullptr) {
|
|
fpcLy_SetCurrentLayer(&((process_node_class*)playScene)->layer);
|
|
}
|
|
fpc_ProcID result = fopAcM_create(proc_name, params, pos, room_no, angle, scale, argument);
|
|
fpcLy_SetCurrentLayer(savedLayer);
|
|
return result;
|
|
}
|