mirror of https://github.com/zeldaret/tp.git
Merge pull request #236 from notyourav/catdoor
d_a_obj_catdoor first pass
This commit is contained in:
commit
6cc376bb2b
|
|
@ -4,105 +4,151 @@
|
|||
//
|
||||
|
||||
#include "rel/d/a/obj/d_a_obj_catdoor/d_a_obj_catdoor.h"
|
||||
#include "JSystem/J3DGraphAnimator/J3DModel.h"
|
||||
#include "SSystem/SComponent/c_phase.h"
|
||||
#include "d/bg/d_bg_w.h"
|
||||
#include "d/com/d_com_inf_game.h"
|
||||
#include "dol2asm.h"
|
||||
#include "dolphin/types.h"
|
||||
#include "f_op/f_op_actor.h"
|
||||
#include "f_op/f_op_actor_mng.h"
|
||||
|
||||
//
|
||||
// Types:
|
||||
//
|
||||
extern const char* l_arcName;
|
||||
static int createSolidHeap(fopAc_ac_c* i_this);
|
||||
|
||||
struct request_of_phase_process_class {};
|
||||
|
||||
struct cXyz {};
|
||||
|
||||
struct mDoMtx_stack_c {
|
||||
/* 8000CCC8 */ void push();
|
||||
/* 8000CD14 */ void pop();
|
||||
/* 8000CD64 */ void transS(cXyz const&);
|
||||
/* 8000CD9C */ void transM(f32, f32, f32);
|
||||
|
||||
static u8 now[48];
|
||||
struct daObjCatDoor_Door_c {
|
||||
/* 0x00 */ J3DModel* pmodel;
|
||||
/* 0x04 */ dBgW bgw;
|
||||
/* 0xe0 */ Mtx mtx;
|
||||
/* 0xf4 */ s16 angle;
|
||||
};
|
||||
|
||||
struct fopAc_ac_c {
|
||||
/* 80018B64 */ fopAc_ac_c();
|
||||
/* 80018C8C */ ~fopAc_ac_c();
|
||||
};
|
||||
class daObjCatDoor_c : public fopAc_ac_c {
|
||||
public:
|
||||
daObjCatDoor_c() {}
|
||||
~daObjCatDoor_c() {
|
||||
if (mDoor1.bgw.ChkUsed()) {
|
||||
dComIfG_Bgsp().Release(&mDoor1.bgw);
|
||||
}
|
||||
if (mDoor2.bgw.ChkUsed()) {
|
||||
dComIfG_Bgsp().Release(&mDoor2.bgw);
|
||||
}
|
||||
dComIfG_resDelete(&mPhaseReq, l_arcName);
|
||||
}
|
||||
|
||||
struct daObjCatDoor_c {
|
||||
/* 80BC42B8 */ void attr() const;
|
||||
/* 80BC42B8 */ const s16* attr() const;
|
||||
/* 80BC43F4 */ void initBaseMtx();
|
||||
/* 80BC4454 */ void setBaseMtx();
|
||||
/* 80BC4560 */ void calcOpen();
|
||||
|
||||
u8 getSwitchNo() { return fopAcM_GetParam(this); }
|
||||
|
||||
int createHeap() {
|
||||
J3DModelData* modelData = (J3DModelData*)dComIfG_getObjectRes(l_arcName, 4);
|
||||
|
||||
ASSERT(modelData != NULL);
|
||||
mDoor1.pmodel = mDoExt_J3DModel__create(modelData, 0x80000, 0x11000084);
|
||||
mDoor2.pmodel = mDoExt_J3DModel__create(modelData, 0x80000, 0x11000084);
|
||||
if (mDoor1.pmodel == NULL || mDoor2.pmodel == NULL) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
cBgD_t* cbgd = (cBgD_t*)dComIfG_getObjectRes(l_arcName, 7);
|
||||
if (mDoor1.bgw.Set(cbgd, 1, &mDoor1.mtx)) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
cBgD_t* cbgd2 = (cBgD_t*)dComIfG_getObjectRes(l_arcName, 7);
|
||||
if (mDoor2.bgw.Set(cbgd2, 1, &mDoor2.mtx)) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
return 1;
|
||||
}
|
||||
|
||||
int draw() {
|
||||
g_env_light.settingTevStruct(0x10, ¤t.pos, &mTevStr);
|
||||
|
||||
fopAc_ac_c* p1 = static_cast<fopAc_ac_c*>(this);
|
||||
g_env_light.setLightTevColorType_MAJI(mDoor1.pmodel, &p1->mTevStr);
|
||||
g_env_light.setLightTevColorType_MAJI(mDoor2.pmodel, &p1->mTevStr);
|
||||
|
||||
dComIfGd_setListBG();
|
||||
mDoExt_modelUpdateDL(mDoor1.pmodel);
|
||||
mDoExt_modelUpdateDL(mDoor2.pmodel);
|
||||
dComIfGd_setList();
|
||||
return 1;
|
||||
}
|
||||
|
||||
int execute() {
|
||||
if (dComIfGs_isSwitch(fopAcM_GetParam(this) & 0xFF, fopAcM_GetHomeRoomNo(this)) ||
|
||||
mRotSpeed == 0) {
|
||||
return 1;
|
||||
}
|
||||
calcOpen();
|
||||
setBaseMtx();
|
||||
return 1;
|
||||
}
|
||||
|
||||
int create() {
|
||||
if (!fopAcM_CheckCondition(this, 8)) {
|
||||
new (this) daObjCatDoor_c();
|
||||
fopAcM_OnCondition(this, 8);
|
||||
}
|
||||
|
||||
int phase_state = dComIfG_resLoad(&mPhaseReq, l_arcName);
|
||||
if (phase_state != cPhs_COMPLEATE_e) {
|
||||
return phase_state;
|
||||
}
|
||||
|
||||
if (!fopAcM_entrySolidHeap(this, createSolidHeap, 0x2520)) {
|
||||
return cPhs_ERROR_e;
|
||||
}
|
||||
|
||||
create_init();
|
||||
return phase_state;
|
||||
}
|
||||
|
||||
void create_init() {
|
||||
ASSERT(getSwitchNo() != 0xff);
|
||||
fopAcM_setCullSizeBox(this, -200.0f, 0.0f, -20.0f, 200.0f, 260.0f, 100.0f);
|
||||
if (i_fopAcM_isSwitch(this, getSwitchNo())) {
|
||||
mDoor1.angle = 0x8800;
|
||||
mDoor2.angle = 0x7800;
|
||||
} else {
|
||||
mDoor1.bgw.SetCrrFunc(NULL);
|
||||
mDoor1.bgw.SetRoomId(fopAcM_GetRoomNo(this));
|
||||
dComIfG_Bgsp().Regist(&mDoor1.bgw, this);
|
||||
mDoor2.bgw.SetCrrFunc(NULL);
|
||||
mDoor2.bgw.SetRoomId(fopAcM_GetRoomNo(this));
|
||||
dComIfG_Bgsp().Regist(&mDoor2.bgw, this);
|
||||
}
|
||||
initBaseMtx();
|
||||
}
|
||||
|
||||
private:
|
||||
/* 0x568 */ request_of_phase_process_class mPhaseReq;
|
||||
/* 0x570 */ daObjCatDoor_Door_c mDoor1;
|
||||
/* 0x660 */ daObjCatDoor_Door_c mDoor2;
|
||||
/* 0x760 */ Mtx mMtx;
|
||||
/* 0x790 */ s16 mRotSpeed;
|
||||
|
||||
public:
|
||||
static u32 const M_attr;
|
||||
};
|
||||
|
||||
struct dSv_info_c {
|
||||
/* 80035200 */ void onSwitch(int, int);
|
||||
/* 80035360 */ void isSwitch(int, int) const;
|
||||
};
|
||||
|
||||
struct dKy_tevstr_c {};
|
||||
|
||||
struct J3DModelData {};
|
||||
|
||||
struct dScnKy_env_light_c {
|
||||
/* 801A37C4 */ void settingTevStruct(int, cXyz*, dKy_tevstr_c*);
|
||||
/* 801A4DA0 */ void setLightTevColorType_MAJI(J3DModelData*, dKy_tevstr_c*);
|
||||
};
|
||||
|
||||
struct dRes_info_c {};
|
||||
|
||||
struct dRes_control_c {
|
||||
/* 8003C2EC */ void getRes(char const*, s32, dRes_info_c*, int);
|
||||
};
|
||||
|
||||
struct dBgW_Base {};
|
||||
|
||||
struct dBgW {
|
||||
/* 8007B970 */ dBgW();
|
||||
/* 8007B9C0 */ void Move();
|
||||
};
|
||||
|
||||
struct dBgS {
|
||||
/* 80074A08 */ void Regist(dBgW_Base*, fopAc_ac_c*);
|
||||
};
|
||||
|
||||
struct cBgW_BgId {
|
||||
/* 802681D4 */ void ChkUsed() const;
|
||||
};
|
||||
|
||||
struct cBgD_t {};
|
||||
|
||||
struct cBgW {
|
||||
/* 8007933C */ ~cBgW();
|
||||
/* 80079F38 */ void Set(cBgD_t*, u32, f32 (*)[3][4]);
|
||||
};
|
||||
|
||||
struct cBgS {
|
||||
/* 80074250 */ void Release(dBgW_Base*);
|
||||
};
|
||||
|
||||
struct J3DModel {};
|
||||
|
||||
//
|
||||
// Forward References:
|
||||
//
|
||||
|
||||
extern "C" void attr__14daObjCatDoor_cCFv();
|
||||
extern "C" static void createSolidHeap__FP10fopAc_ac_c();
|
||||
extern "C" void initBaseMtx__14daObjCatDoor_cFv();
|
||||
extern "C" void setBaseMtx__14daObjCatDoor_cFv();
|
||||
extern "C" void calcOpen__14daObjCatDoor_cFv();
|
||||
extern "C" static void daObjCatDoor_Draw__FP14daObjCatDoor_c();
|
||||
extern "C" static void daObjCatDoor_Execute__FP14daObjCatDoor_c();
|
||||
extern "C" static int daObjCatDoor_Execute__FP14daObjCatDoor_c();
|
||||
extern "C" static bool daObjCatDoor_IsDelete__FP14daObjCatDoor_c();
|
||||
extern "C" static void daObjCatDoor_Delete__FP14daObjCatDoor_c();
|
||||
extern "C" static void daObjCatDoor_Create__FP10fopAc_ac_c();
|
||||
extern "C" u32 const M_attr__14daObjCatDoor_c;
|
||||
extern "C" extern char const* const d_a_obj_catdoor__stringBase0;
|
||||
extern "C" extern void* g_profile_Obj_CatDoor[12];
|
||||
|
||||
//
|
||||
// External References:
|
||||
|
|
@ -134,18 +180,13 @@ extern "C" void settingTevStruct__18dScnKy_env_light_cFiP4cXyzP12dKy_tevstr_c();
|
|||
extern "C" void setLightTevColorType_MAJI__18dScnKy_env_light_cFP12J3DModelDataP12dKy_tevstr_c();
|
||||
extern "C" void ChkUsed__9cBgW_BgIdCFv();
|
||||
extern "C" void cLib_chaseS__FPsss();
|
||||
extern "C" void PSMTXCopy();
|
||||
extern "C" void _savegpr_25();
|
||||
extern "C" void _savegpr_29();
|
||||
extern "C" void _restgpr_25();
|
||||
extern "C" void _restgpr_29();
|
||||
extern "C" extern void* g_fopAc_Method[8];
|
||||
extern "C" extern void* g_fpcLf_Method[5 + 1 /* padding */];
|
||||
extern "C" extern void* __vt__4dBgW[65];
|
||||
extern "C" u8 now__14mDoMtx_stack_c[48];
|
||||
extern "C" extern u8 g_dComIfG_gameInfo[122384];
|
||||
extern "C" extern u8 g_env_light[4880];
|
||||
extern "C" extern u8 j3dSys[284];
|
||||
|
||||
//
|
||||
// Declarations:
|
||||
|
|
@ -157,118 +198,86 @@ SECTION_RODATA u32 const daObjCatDoor_c::M_attr = 0x001E0578;
|
|||
COMPILER_STRIP_GATE(0x80BC49B4, &daObjCatDoor_c::M_attr);
|
||||
|
||||
/* 80BC42B8-80BC42C4 000078 000C+00 1/1 0/0 1/1 .text attr__14daObjCatDoor_cCFv */
|
||||
#pragma push
|
||||
#pragma optimization_level 0
|
||||
#pragma optimizewithasm off
|
||||
asm void daObjCatDoor_c::attr() const {
|
||||
nofralloc
|
||||
#include "asm/rel/d/a/obj/d_a_obj_catdoor/d_a_obj_catdoor/attr__14daObjCatDoor_cCFv.s"
|
||||
const s16* daObjCatDoor_c::attr() const {
|
||||
return (const s16*)&daObjCatDoor_c::M_attr;
|
||||
}
|
||||
#pragma pop
|
||||
|
||||
/* ############################################################################################## */
|
||||
/* 80BC49D8-80BC49D8 000024 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */
|
||||
#pragma push
|
||||
#pragma force_active on
|
||||
SECTION_DEAD static char const* const stringBase_80BC49D8 = "CatDoor";
|
||||
#pragma pop
|
||||
|
||||
/* 80BC49E0-80BC49E4 -00001 0004+00 3/3 0/0 0/0 .data l_arcName */
|
||||
SECTION_DATA static void* l_arcName = (void*)&d_a_obj_catdoor__stringBase0;
|
||||
static const char* l_arcName = "CatDoor";
|
||||
|
||||
/* 80BC42C4-80BC43F4 000084 0130+00 1/1 0/0 0/0 .text createSolidHeap__FP10fopAc_ac_c */
|
||||
#pragma push
|
||||
#pragma optimization_level 0
|
||||
#pragma optimizewithasm off
|
||||
static asm void createSolidHeap(fopAc_ac_c* param_0) {
|
||||
nofralloc
|
||||
#include "asm/rel/d/a/obj/d_a_obj_catdoor/d_a_obj_catdoor/createSolidHeap__FP10fopAc_ac_c.s"
|
||||
static int createSolidHeap(fopAc_ac_c* i_this) {
|
||||
return static_cast<daObjCatDoor_c*>(i_this)->createHeap();
|
||||
}
|
||||
#pragma pop
|
||||
|
||||
/* 80BC43F4-80BC4454 0001B4 0060+00 1/1 0/0 0/0 .text initBaseMtx__14daObjCatDoor_cFv */
|
||||
#pragma push
|
||||
#pragma optimization_level 0
|
||||
#pragma optimizewithasm off
|
||||
asm void daObjCatDoor_c::initBaseMtx() {
|
||||
nofralloc
|
||||
#include "asm/rel/d/a/obj/d_a_obj_catdoor/d_a_obj_catdoor/initBaseMtx__14daObjCatDoor_cFv.s"
|
||||
void daObjCatDoor_c::initBaseMtx() {
|
||||
mCullMtx = mMtx;
|
||||
mDoMtx_stack_c::transS(current.pos);
|
||||
mDoMtx_YrotM(mDoMtx_stack_c::get(), shape_angle.y);
|
||||
PSMTXCopy(mDoMtx_stack_c::get(), mMtx);
|
||||
setBaseMtx();
|
||||
}
|
||||
#pragma pop
|
||||
|
||||
/* ############################################################################################## */
|
||||
/* 80BC49B8-80BC49BC 000004 0004+00 0/1 0/0 0/0 .rodata @3712 */
|
||||
#pragma push
|
||||
#pragma force_active on
|
||||
SECTION_RODATA static f32 const lit_3712 = -97.0f;
|
||||
COMPILER_STRIP_GATE(0x80BC49B8, &lit_3712);
|
||||
#pragma pop
|
||||
|
||||
/* 80BC49BC-80BC49C0 000008 0004+00 0/1 0/0 0/0 .rodata @3713 */
|
||||
#pragma push
|
||||
#pragma force_active on
|
||||
SECTION_RODATA static f32 const lit_3713 = 97.0f;
|
||||
COMPILER_STRIP_GATE(0x80BC49BC, &lit_3713);
|
||||
#pragma pop
|
||||
|
||||
/* 80BC49C0-80BC49C4 00000C 0004+00 0/2 0/0 0/0 .rodata @3714 */
|
||||
#pragma push
|
||||
#pragma force_active on
|
||||
SECTION_RODATA static u8 const lit_3714[4] = {
|
||||
0x00,
|
||||
0x00,
|
||||
0x00,
|
||||
0x00,
|
||||
};
|
||||
COMPILER_STRIP_GATE(0x80BC49C0, &lit_3714);
|
||||
#pragma pop
|
||||
|
||||
/* 80BC4454-80BC4560 000214 010C+00 2/2 0/0 1/1 .text setBaseMtx__14daObjCatDoor_cFv */
|
||||
#pragma push
|
||||
#pragma optimization_level 0
|
||||
#pragma optimizewithasm off
|
||||
asm void daObjCatDoor_c::setBaseMtx() {
|
||||
nofralloc
|
||||
#include "asm/rel/d/a/obj/d_a_obj_catdoor/d_a_obj_catdoor/setBaseMtx__14daObjCatDoor_cFv.s"
|
||||
void daObjCatDoor_c::setBaseMtx() {
|
||||
mDoMtx_stack_c::transS(current.pos);
|
||||
mDoMtx_YrotM(mDoMtx_stack_c::get(), shape_angle.y);
|
||||
for (int i = 0; i < 2; i++) {
|
||||
daObjCatDoor_Door_c* door = i == 0 ? &mDoor1 : &mDoor2;
|
||||
f32 xOff = i == 0 ? -97.0f : 97.0f;
|
||||
s16 rot = i == 0 ? door->angle : s16(door->angle + 0x8000);
|
||||
mDoMtx_stack_c::push();
|
||||
mDoMtx_stack_c::transM(xOff, 0.0, 0.0);
|
||||
mDoMtx_YrotM(mDoMtx_stack_c::get(), (s16)rot);
|
||||
mDoMtx_copy(mDoMtx_stack_c::get(), door->pmodel->mBaseTransformMtx);
|
||||
mDoMtx_copy(mDoMtx_stack_c::get(), door->mtx);
|
||||
door->bgw.Move();
|
||||
mDoMtx_stack_c::pop();
|
||||
}
|
||||
}
|
||||
#pragma pop
|
||||
|
||||
/* 80BC4560-80BC4628 000320 00C8+00 1/1 0/0 0/0 .text calcOpen__14daObjCatDoor_cFv */
|
||||
#pragma push
|
||||
#pragma optimization_level 0
|
||||
#pragma optimizewithasm off
|
||||
asm void daObjCatDoor_c::calcOpen() {
|
||||
nofralloc
|
||||
#include "asm/rel/d/a/obj/d_a_obj_catdoor/d_a_obj_catdoor/calcOpen__14daObjCatDoor_cFv.s"
|
||||
void daObjCatDoor_c::calcOpen() {
|
||||
s16 prev = mRotSpeed;
|
||||
int res = cLib_chaseS(&mRotSpeed, 0, *attr());
|
||||
for (int i = 0; i < 2; i++) {
|
||||
daObjCatDoor_Door_c* door = i == 0 ? &mDoor1 : &mDoor2;
|
||||
if (i == 0) {
|
||||
door->angle -= mRotSpeed;
|
||||
} else {
|
||||
door->angle += mRotSpeed;
|
||||
}
|
||||
}
|
||||
|
||||
if (prev != 0 && res != 0) {
|
||||
i_fopAcM_onSwitch(this, getSwitchNo());
|
||||
}
|
||||
}
|
||||
#pragma pop
|
||||
|
||||
/* 80BC4628-80BC46EC 0003E8 00C4+00 1/0 0/0 0/0 .text daObjCatDoor_Draw__FP14daObjCatDoor_c */
|
||||
#pragma push
|
||||
#pragma optimization_level 0
|
||||
#pragma optimizewithasm off
|
||||
static asm void daObjCatDoor_Draw(daObjCatDoor_c* param_0) {
|
||||
nofralloc
|
||||
#include "asm/rel/d/a/obj/d_a_obj_catdoor/d_a_obj_catdoor/daObjCatDoor_Draw__FP14daObjCatDoor_c.s"
|
||||
static int daObjCatDoor_Draw(daObjCatDoor_c* i_this) {
|
||||
return static_cast<daObjCatDoor_c*>(i_this)->draw();
|
||||
}
|
||||
#pragma pop
|
||||
|
||||
/* 80BC46EC-80BC4760 0004AC 0074+00 1/0 0/0 0/0 .text daObjCatDoor_Execute__FP14daObjCatDoor_c */
|
||||
#pragma push
|
||||
#pragma optimization_level 0
|
||||
#pragma optimizewithasm off
|
||||
static asm void daObjCatDoor_Execute(daObjCatDoor_c* param_0) {
|
||||
nofralloc
|
||||
#include "asm/rel/d/a/obj/d_a_obj_catdoor/d_a_obj_catdoor/daObjCatDoor_Execute__FP14daObjCatDoor_c.s"
|
||||
static int daObjCatDoor_Execute(daObjCatDoor_c* i_this) {
|
||||
return static_cast<daObjCatDoor_c*>(i_this)->execute();
|
||||
}
|
||||
#pragma pop
|
||||
|
||||
/* 80BC4760-80BC4768 000520 0008+00 1/0 0/0 0/0 .text daObjCatDoor_IsDelete__FP14daObjCatDoor_c */
|
||||
static bool daObjCatDoor_IsDelete(daObjCatDoor_c* param_0) {
|
||||
static bool daObjCatDoor_IsDelete(daObjCatDoor_c* i_this) {
|
||||
return true;
|
||||
}
|
||||
|
||||
/* 80BC4768-80BC4848 000528 00E0+00 1/0 0/0 0/0 .text daObjCatDoor_Delete__FP14daObjCatDoor_c */
|
||||
#ifdef NONMATCHING // ~dBgW is not inlined
|
||||
static int daObjCatDoor_Delete(daObjCatDoor_c* i_this) {
|
||||
fopAcM_GetID(i_this);
|
||||
i_this->~daObjCatDoor_c();
|
||||
return 1;
|
||||
}
|
||||
#else
|
||||
#pragma push
|
||||
#pragma optimization_level 0
|
||||
#pragma optimizewithasm off
|
||||
|
|
@ -277,6 +286,7 @@ static asm void daObjCatDoor_Delete(daObjCatDoor_c* param_0) {
|
|||
#include "asm/rel/d/a/obj/d_a_obj_catdoor/d_a_obj_catdoor/daObjCatDoor_Delete__FP14daObjCatDoor_c.s"
|
||||
}
|
||||
#pragma pop
|
||||
#endif
|
||||
|
||||
/* ############################################################################################## */
|
||||
/* 80BC49C4-80BC49C8 000010 0004+00 0/1 0/0 0/0 .rodata @3860 */
|
||||
|
|
@ -316,6 +326,12 @@ COMPILER_STRIP_GATE(0x80BC49D4, &lit_3864);
|
|||
|
||||
/* 80BC4848-80BC49AC 000608 0164+00 1/0 0/0 0/0 .text daObjCatDoor_Create__FP10fopAc_ac_c
|
||||
*/
|
||||
#ifdef NONMATCHING // inverted conditional branch
|
||||
static void daObjCatDoor_Create(fopAc_ac_c* i_this) {
|
||||
fopAcM_GetID(i_this);
|
||||
static_cast<daObjCatDoor_c*>(i_this)->create();
|
||||
}
|
||||
#else
|
||||
#pragma push
|
||||
#pragma optimization_level 0
|
||||
#pragma optimizewithasm off
|
||||
|
|
@ -324,6 +340,7 @@ static asm void daObjCatDoor_Create(fopAc_ac_c* param_0) {
|
|||
#include "asm/rel/d/a/obj/d_a_obj_catdoor/d_a_obj_catdoor/daObjCatDoor_Create__FP10fopAc_ac_c.s"
|
||||
}
|
||||
#pragma pop
|
||||
#endif
|
||||
|
||||
/* ############################################################################################## */
|
||||
/* 80BC49E4-80BC4A04 -00001 0020+00 1/0 0/0 0/0 .data l_daObjCatDoor_Method */
|
||||
|
|
|
|||
|
|
@ -39,7 +39,7 @@ def import_c_file(in_file) -> str:
|
|||
defines.add(guard_match[1])
|
||||
print("Processing file", in_file)
|
||||
include_match = include_pattern.match(line.strip())
|
||||
if include_match:
|
||||
if include_match and not include_match[1].endswith(".s"):
|
||||
out_text += f"/* \"{in_file}\" line {idx} \"{include_match[1]}\" */\n"
|
||||
out_text += import_h_file(include_match[1], os.path.dirname(in_file))
|
||||
out_text += f"/* end \"{include_match[1]}\" */\n"
|
||||
|
|
|
|||
Loading…
Reference in New Issue