mirror of
https://github.com/zeldaret/tww.git
synced 2026-08-21 14:07:29 -04:00
f_op_actor progress, c_m3d_g_sph done
This commit is contained in:
+1
-1
@@ -524,7 +524,7 @@ config.libs = [
|
||||
Object(Matching, "SSystem/SComponent/c_m3d_g_aab.cpp"),
|
||||
Object(Matching, "SSystem/SComponent/c_m3d_g_cyl.cpp"),
|
||||
Object(Matching, "SSystem/SComponent/c_m3d_g_pla.cpp"),
|
||||
Object(NonMatching, "SSystem/SComponent/c_m3d_g_sph.cpp"),
|
||||
Object(Matching, "SSystem/SComponent/c_m3d_g_sph.cpp"),
|
||||
Object(Matching, "SSystem/SComponent/c_m3d_g_tri.cpp"),
|
||||
Object(NonMatching, "SSystem/SComponent/c_lib.cpp"),
|
||||
Object(NonMatching, "SSystem/SComponent/c_angle.cpp"),
|
||||
|
||||
@@ -58,7 +58,7 @@ int cM3d_Cross_LinSph_CrossPos(const cM3dGSph&, const cM3dGLin&, Vec*, Vec*);
|
||||
bool cM3d_Cross_CylSph(const cM3dGCyl*, const cM3dGSph*, f32*);
|
||||
bool cM3d_Cross_CylSph(const cM3dGCyl*, const cM3dGSph*, Vec*, f32*);
|
||||
bool cM3d_Cross_SphSph(const cM3dGSph*, const cM3dGSph*, f32*);
|
||||
static bool cM3d_Cross_SphSph(const cM3dGSph*, const cM3dGSph*, f32*, f32*);
|
||||
bool cM3d_Cross_SphSph(const cM3dGSph*, const cM3dGSph*, f32*, f32*);
|
||||
bool cM3d_Cross_SphSph(const cM3dGSph*, const cM3dGSph*, Vec*);
|
||||
static void cM3d_CalcSphVsTriCrossPoint(const cM3dGSph*, const cM3dGTri*, Vec*);
|
||||
bool cM3d_Cross_SphTri(const cM3dGSph*, const cM3dGTri*, Vec*);
|
||||
|
||||
+1
-1
@@ -66,7 +66,7 @@ class dNpc_EventCut_c {
|
||||
/* 0x18 */ int mTimer;
|
||||
/* 0x1C */ char* mpActorName;
|
||||
/* 0x20 */ u32 field_0x20;
|
||||
/* 0x24 */ s32 mSetID;
|
||||
/* 0x24 */ s32 mSetId;
|
||||
/* 0x28 */ cXyz mOffsetPos;
|
||||
/* 0x34 */ cXyz mTargetActorPos;
|
||||
/* 0x40 */ fopAc_ac_c* mpTargetActor;
|
||||
|
||||
@@ -185,11 +185,11 @@ public:
|
||||
/* 0x0C0 */ int mAcType;
|
||||
/* 0x0C4 */ create_tag_class mAcTg;
|
||||
/* 0x0D8 */ create_tag_class mDwTg;
|
||||
/* 0x0EC */ profile_method_class* mSubMtd;
|
||||
/* 0x0EC */ actor_method_class* mSubMtd;
|
||||
/* 0x0F0 */ JKRSolidHeap* mHeap;
|
||||
/* 0x0F4 */ dEvt_info_c mEvtInfo;
|
||||
/* 0x10C */ dKy_tevstr_c mTevStr;
|
||||
/* 0x1BC */ u16 mSetID;
|
||||
/* 0x1BC */ u16 mSetId;
|
||||
/* 0x1BE */ u8 mGroup;
|
||||
/* 0x1BF */ s8 mCullType;
|
||||
/* 0x1C0 */ u8 mDemoActorId;
|
||||
|
||||
@@ -28,10 +28,10 @@ struct fopAcM_prm_class {
|
||||
/* 0x00 */ u32 mParameter; // single U32 Parameter
|
||||
/* 0x04 */ cXyz mPos;
|
||||
/* 0x10 */ csXyz mAngle; // rotation
|
||||
/* 0x16 */ u16 mEnemyNo;
|
||||
/* 0x16 */ u16 mSetId;
|
||||
/* 0x18 */ u8 mScale[3];
|
||||
/* 0x1B */ u8 mGbaName; // from WW, maybe a different parameter here
|
||||
/* 0x1C */ s32 mParentPId; // parent process ID
|
||||
/* 0x1B */ u8 mGbaName;
|
||||
/* 0x1C */ s32 mParentPcId; // parent process ID
|
||||
/* 0x20 */ s8 mSubtype;
|
||||
/* 0x21 */ s8 mRoomNo;
|
||||
};
|
||||
@@ -315,7 +315,7 @@ inline f32 fopAcM_searchActorDistanceY(fopAc_ac_c* actorA, fopAc_ac_c* actorB) {
|
||||
}
|
||||
|
||||
inline u16 fopAcM_GetSetId(fopAc_ac_c* p_actor) {
|
||||
return p_actor->mSetID;
|
||||
return p_actor->mSetId;
|
||||
}
|
||||
|
||||
inline void dComIfGs_onActor(int bitNo, int roomNo);
|
||||
|
||||
@@ -13,18 +13,19 @@
|
||||
#define CHECK_VEC3_RANGE(line, v) JUT_ASSERT(line, -1.0e32f < v.x && v.x < 1.0e32f && -1.0e32f < v.y && v.y < 1.0e32f && -1.0e32f < v.z && v.z < 1.0e32f)
|
||||
|
||||
/* 8025238C-80252624 .text SetC__8cM3dGSphFRC4cXyz */
|
||||
void cM3dGSph::SetC(const cXyz& pos) {
|
||||
CHECK_FLOAT_CLASS(21, pos.x);
|
||||
CHECK_FLOAT_CLASS(22, pos.y);
|
||||
CHECK_FLOAT_CLASS(23, pos.z);
|
||||
CHECK_VEC3_RANGE(26, pos);
|
||||
mCenter = pos;
|
||||
void cM3dGSph::SetC(const cXyz& p) {
|
||||
CHECK_FLOAT_CLASS(18, p.x);
|
||||
CHECK_FLOAT_CLASS(19, p.y);
|
||||
CHECK_FLOAT_CLASS(20, p.z);
|
||||
CHECK_VEC3_RANGE(23, p);
|
||||
mCenter = p;
|
||||
}
|
||||
|
||||
/* 80252624-80252750 .text SetR__8cM3dGSphFf */
|
||||
void cM3dGSph::SetR(float r) {
|
||||
CHECK_FLOAT_CLASS(32, r);
|
||||
CHECK_FLOAT_RANGE(33, r);
|
||||
mRadius = r;
|
||||
}
|
||||
|
||||
/* 80252750-8025277C .text cross__8cM3dGSphCFPC8cM3dGSphP4cXyz */
|
||||
|
||||
+7
-7
@@ -794,10 +794,10 @@ void dNpc_EventCut_c::cutTurnToActorStart() {
|
||||
|
||||
u32* set = dComIfGp_evmng_getMyIntegerP(mEvtStaffId, "SetId");
|
||||
if(set) {
|
||||
mSetID = *set;
|
||||
mSetId = *set;
|
||||
}
|
||||
else {
|
||||
mSetID = 0;
|
||||
mSetId = 0;
|
||||
}
|
||||
|
||||
Vec* pos = dComIfGp_evmng_getMyVec3dP(mEvtStaffId, "OffsetPos");
|
||||
@@ -860,7 +860,7 @@ void dNpc_EventCut_c::cutTurnToActorStart() {
|
||||
}
|
||||
|
||||
void dNpc_EventCut_c::cutTurnToActorProc() {
|
||||
if(mSetID != 0) {
|
||||
if(mSetId != 0) {
|
||||
mTargetActorPos.set(0.0f, 0.0f, 0.0f);
|
||||
fopAcM_Search((fopAcIt_JudgeFunc)&findActorCallBack, this);
|
||||
}
|
||||
@@ -957,10 +957,10 @@ void dNpc_EventCut_c::cutMoveToActorStart() {
|
||||
}
|
||||
|
||||
if(set == 0) {
|
||||
mSetID = 0;
|
||||
mSetId = 0;
|
||||
}
|
||||
else {
|
||||
mSetID = *set;
|
||||
mSetId = *set;
|
||||
}
|
||||
|
||||
if(speed == 0) {
|
||||
@@ -986,7 +986,7 @@ void dNpc_EventCut_c::cutMoveToActorStart() {
|
||||
}
|
||||
|
||||
void dNpc_EventCut_c::cutMoveToActorProc() {
|
||||
if(mSetID != 0) {
|
||||
if(mSetId != 0) {
|
||||
mTargetActorPos.set(0.0f, 0.0f, 0.0f);
|
||||
fopAcM_Search((fopAcIt_JudgeFunc)&findActorCallBack, this);
|
||||
}
|
||||
@@ -1037,7 +1037,7 @@ fopAc_ac_c* dNpc_EventCut_c::findActorCallBack(fopAc_ac_c* pActor, void* pData)
|
||||
return 0;
|
||||
}
|
||||
|
||||
if(cut->mSetID != 0 && pActor->mSetID == cut->mSetID) {
|
||||
if(cut->mSetId != 0 && pActor->mSetId == cut->mSetId) {
|
||||
cut->mTargetActorPos = pActor->current.pos;
|
||||
cut->mpTargetActor = pActor;
|
||||
|
||||
|
||||
+68
-17
@@ -29,24 +29,26 @@ s32 fopAc_IsActor(void* pProc) {
|
||||
extern void drawActorPointMiniMap(fopAc_ac_c*);
|
||||
|
||||
/* 80023540-8002362C .text fopAc_Draw__FPv */
|
||||
void fopAc_Draw(void* pProc) {
|
||||
if (dMenu_flag())
|
||||
return;
|
||||
|
||||
s32 fopAc_Draw(void* pProc) {
|
||||
fopAc_ac_c * actor = (fopAc_ac_c *)pProc;
|
||||
if ((dComIfGp_event_moveApproval(pProc) == 2 || !fopAcM_checkStatus(actor, fopAc_ac_c::stopStatus)) &&
|
||||
(!fopAcM_checkStatus(actor, fopAcStts_CULL_e) || fopAcM_cullingCheck(actor)) &&
|
||||
!fopAcM_checkStatus(actor, fopAcStts_NODRAW_e)) {
|
||||
fopAcM_OffCondition(actor, fopAcCnd_NODRAW_e);
|
||||
fpcLf_DrawMethod(actor->mpDrawMtd, actor);
|
||||
} else {
|
||||
fopAcM_OnCondition(actor, fopAcCnd_NODRAW_e);
|
||||
s32 ret = TRUE;
|
||||
|
||||
if (!dMenu_flag()) {
|
||||
if ((dComIfGp_event_moveApproval(actor) == 2 || !fopAcM_checkStatus(actor, fopAc_ac_c::stopStatus)) &&
|
||||
(!fopAcM_checkStatus(actor, fopAcStts_CULL_e) || !fopAcM_cullingCheck(actor)) && !fopAcM_checkStatus(actor, fopAcStts_NODRAW_e)) {
|
||||
fopAcM_OffCondition(actor, fopAcCnd_NODRAW_e);
|
||||
ret = fpcLf_DrawMethod((leafdraw_method_class*)actor->mSubMtd, actor);
|
||||
} else {
|
||||
fopAcM_OnCondition(actor, fopAcCnd_NODRAW_e);
|
||||
}
|
||||
|
||||
fopAcM_OffStatus(actor, fopAcStts_NODRAW_e);
|
||||
|
||||
if (dComIfGp_roomControl_getStayNo() >= 0 && fopAcM_checkStatus(actor, fopAcStts_SHOWMAP_e))
|
||||
drawActorPointMiniMap(actor);
|
||||
}
|
||||
|
||||
fopAcM_OffStatus(actor, fopAcStts_NODRAW_e);
|
||||
|
||||
if (dComIfGp_roomControl_getStayNo() >= 0 && fopAcM_checkStatus(actor, fopAcStts_SHOWMAP_e))
|
||||
drawActorPointMiniMap(actor);
|
||||
return ret;
|
||||
}
|
||||
|
||||
#define CHECK_FLOAT_CLASS(line, x) JUT_ASSERT(line, !(((sizeof(x) == sizeof(float)) ? __fpclassifyf((float)(x)) : __fpclassifyd((double)(x)) ) == 1));
|
||||
@@ -111,8 +113,57 @@ s32 fopAc_Delete(void* pProc) {
|
||||
}
|
||||
|
||||
/* 80023CD4-80023F78 .text fopAc_Create__FPv */
|
||||
void fopAc_Create(void*) {
|
||||
/* Nonmatching */
|
||||
s32 fopAc_Create(void* pProc) {
|
||||
fopAc_ac_c* actor = (fopAc_ac_c*)pProc;
|
||||
|
||||
if (fpcM_IsFirstCreating(actor)) {
|
||||
actor_process_profile_definition* profile = (actor_process_profile_definition*)fpcM_GetProfile(pProc);
|
||||
actor->mAcType = fpcBs_MakeOfType(&g_fopAc_type);
|
||||
actor->mSubMtd = profile->mSubMtd;
|
||||
fopAcTg_Init(&actor->mAcTg, actor);
|
||||
fopAcTg_ToActorQ(&actor->mAcTg);
|
||||
fopDwTg_Init(&actor->mDwTg, actor);
|
||||
actor->mStatus = profile->mStatus;
|
||||
actor->mGroup = profile->mGroup;
|
||||
actor->mCullType = profile->mCullType;
|
||||
|
||||
fopAcM_prm_class* prm = fopAcM_GetAppend(actor);
|
||||
if (prm != NULL) {
|
||||
fopAcM_SetParam(actor, prm->mParameter);
|
||||
actor->orig.pos = prm->mPos;
|
||||
actor->orig.angle = prm->mAngle;
|
||||
actor->shape_angle = prm->mAngle;
|
||||
actor->mParentPcId = prm->mParentPcId;
|
||||
actor->mSubtype = prm->mSubtype;
|
||||
actor->mCarryType = prm->mGbaName;
|
||||
actor->mScale.set(prm->mScale[0] * 0.1f, prm->mScale[1] * 0.1f, prm->mScale[2] * 0.1f);
|
||||
actor->mSetId = prm->mSetId;
|
||||
actor->orig.roomNo = prm->mRoomNo;
|
||||
}
|
||||
|
||||
actor->next = actor->orig;
|
||||
actor->current = actor->orig;
|
||||
actor->mEyePos = actor->orig.pos;
|
||||
actor->mMaxFallSpeed = -100.0f;
|
||||
actor->mAttentionInfo.mDistances[0] = 1;
|
||||
actor->mAttentionInfo.mDistances[1] = 2;
|
||||
actor->mAttentionInfo.mDistances[2] = 3;
|
||||
actor->mAttentionInfo.mDistances[3] = 7;
|
||||
actor->mAttentionInfo.mDistances[4] = 8;
|
||||
actor->mAttentionInfo.mDistances[7] = 15;
|
||||
actor->mAttentionInfo.mDistances[5] = 16;
|
||||
actor->mAttentionInfo.mDistances[6] = 16;
|
||||
actor->mAttentionInfo.mPosition = actor->orig.pos;
|
||||
dKy_tevstr_init(&actor->mTevStr, actor->orig.roomNo, 0xFF);
|
||||
}
|
||||
|
||||
s32 status = fpcMtd_Create((process_method_class*)actor->mSubMtd, actor);
|
||||
if (status == cPhs_COMPLEATE_e) {
|
||||
s32 priority = fpcLf_GetPriority(actor);
|
||||
fopDwTg_ToDrawQ(&actor->mDwTg, priority);
|
||||
}
|
||||
|
||||
return status;
|
||||
}
|
||||
|
||||
actor_method_class g_fopAc_Method = {
|
||||
|
||||
Reference in New Issue
Block a user