mirror of
https://github.com/TwilitRealm/dusklight
synced 2026-08-16 20:27:36 -04:00
NPC work, obj_szbridge matching (#2757)
* Some NPC work * Fix impal * Hopefully fix regressions in debug * HIO work for more NPCs * fix regressions * obj_szbridge matching * Fix literals
This commit is contained in:
+133
-144
@@ -1,13 +1,61 @@
|
||||
/**
|
||||
* @file d_a_npc_impal.cpp
|
||||
* @file d_a_npc_impal.cpp
|
||||
*
|
||||
*/
|
||||
|
||||
#include "d/dolzel_rel.h" // IWYU pragma: keep
|
||||
#include "d/dolzel_rel.h" // IWYU pragma: keep
|
||||
|
||||
#include "d/actor/d_a_npc_impal.h"
|
||||
|
||||
static daNpcImpal_Param_c l_HIO;
|
||||
/* 80A0C270-80A0C2E0 000000 0070+00 12/12 0/0 0/0 .rodata m__18daNpcImpal_Param_c */
|
||||
daNpcImpal_HIOParam const daNpcImpal_Param_c::m = {
|
||||
135.0f, // attention_offset
|
||||
-3.0f, // gravity
|
||||
1.0f, // scale
|
||||
560.0f, // real_shadow_size
|
||||
255.0f, // weight
|
||||
130.0f, // height
|
||||
35.0f, // knee_length
|
||||
30.0f, // width
|
||||
0.0f, // body_angleX_max
|
||||
0.0f, // body_angleX_min
|
||||
10.0f, // body_angleY_max
|
||||
-10.0f, // body_angleY_min
|
||||
30.0f, // head_angleX_max
|
||||
-10.0f, // head_angleX_min
|
||||
45.0f, // head_angleY_max
|
||||
-45.0f, // head_angleY_min
|
||||
0.600000024f, // neck_rotation_ratio
|
||||
20.0f, // morf_frame
|
||||
3, // talk_distance
|
||||
6, // talk_angle
|
||||
5, // attention_distance
|
||||
6, // attention_angle
|
||||
80.0f, // fov
|
||||
500.0f, // search_distance
|
||||
300.0f, // search_height
|
||||
-300.0f, // search_depth
|
||||
60, // attention_time
|
||||
8, // damage_time
|
||||
0, // face_expression
|
||||
0, // motion
|
||||
0, // look_mode
|
||||
0, // debug_mode_ON
|
||||
0, // debug_info_ON
|
||||
300.0f, // field_0x6c
|
||||
};
|
||||
|
||||
#if DEBUG
|
||||
daNpcImpal_HIO_c::daNpcImpal_HIO_c() {
|
||||
m = daNpcImpal_Param_c::m;
|
||||
}
|
||||
|
||||
void daNpcImpal_HIO_c::genMessage(JORMContext* ctext) {
|
||||
// TODO
|
||||
}
|
||||
#endif
|
||||
|
||||
NPC_IMPAL_HIO_CLASS l_HIO;
|
||||
|
||||
/* 80A0C544-80A0C61C 000020 00D8+00 1/2 0/0 0/0 .data l_bckGetParamList */
|
||||
static daNpc_GetParam2 l_bckGetParamList[18] = {
|
||||
@@ -56,9 +104,7 @@ daNpcImpal_c::EventFn daNpcImpal_c::mEvtSeqList[4] = {
|
||||
};
|
||||
|
||||
/* 80A079EC-80A07B70 0000EC 0184+00 1/1 0/0 0/0 .text __ct__12daNpcImpal_cFv */
|
||||
daNpcImpal_c::daNpcImpal_c() {
|
||||
// NONMATCHING
|
||||
}
|
||||
daNpcImpal_c::daNpcImpal_c() {}
|
||||
|
||||
/* 80A07C00-80A07DC4 000300 01C4+00 1/0 0/0 0/0 .text __dt__12daNpcImpal_cFv */
|
||||
daNpcImpal_c::~daNpcImpal_c() {
|
||||
@@ -71,43 +117,6 @@ daNpcImpal_c::~daNpcImpal_c() {
|
||||
}
|
||||
}
|
||||
|
||||
/* 80A0C270-80A0C2E0 000000 0070+00 12/12 0/0 0/0 .rodata m__18daNpcImpal_Param_c */
|
||||
daNpc_Impal_HIOParam const daNpcImpal_Param_c::m = {
|
||||
135.0f, // mAttnOffsetY
|
||||
-3.0f, // mGravity
|
||||
1.0f, // mScale
|
||||
560.0f, // mShadowDepth
|
||||
255.0f, // mCcWeight
|
||||
130.0f, // mCylH
|
||||
35.0f, // mWallH
|
||||
30.0f, // mWallR
|
||||
0.0f, // mBodyUpAngle
|
||||
0.0f, // mBodyDownAngle
|
||||
10.0f, // mBodyLeftAngle
|
||||
-10.0f, // mBodyRightAngle
|
||||
30.0f, // mHeadUpAngle
|
||||
-10.0f, // mHeadDownAngle
|
||||
45.0f, // mHeadLeftAngle
|
||||
-45.0f, // mHeadRightAngle
|
||||
0.600000024f, // mNeckAngleScl
|
||||
20.0f, // mMorfFrames
|
||||
3, // mSpeakDistIdx
|
||||
6, // mSpeakAngleIdx
|
||||
5, // mTalkDistIdx
|
||||
6, // mTalkAngleIdx
|
||||
80.0f, // mAttnFovY
|
||||
500.0f, // mAttnRadius
|
||||
300.0f, // mAttnUpperY
|
||||
-300.0f, // mAttnLowerY
|
||||
60, // field_0x60
|
||||
8, // mDamageTimer
|
||||
0, // mTestExpression
|
||||
0, // mTestMotion
|
||||
0, // mTestLookMode
|
||||
false, // mTest
|
||||
300.0f, // field_0x6c
|
||||
};
|
||||
|
||||
/* 80A07DC4-80A080F8 0004C4 0334+00 1/1 0/0 0/0 .text Create__12daNpcImpal_cFv */
|
||||
int daNpcImpal_c::Create() {
|
||||
int phase;
|
||||
@@ -139,13 +148,13 @@ int daNpcImpal_c::Create() {
|
||||
fopAcM_SetMtx(this, mpMorf->getModel()->getBaseTRMtx());
|
||||
fopAcM_setCullSizeBox(this, -160.0f, -50.0f, -160.0f, 160.0f, 220.0f, 160.0f);
|
||||
mCreatureSound.init(¤t.pos, &eyePos, 3, 1);
|
||||
mAcchCir.SetWall(daNpcImpal_Param_c::m.mWallR, daNpcImpal_Param_c::m.mWallH);
|
||||
mAcchCir.SetWall(mpHIO->m.common.width, mpHIO->m.common.knee_length);
|
||||
mAcch.Set(fopAcM_GetPosition_p(this), fopAcM_GetOldPosition_p(this), this, 1, &mAcchCir,
|
||||
fopAcM_GetSpeed_p(this), fopAcM_GetAngle_p(this), fopAcM_GetShapeAngle_p(this));
|
||||
mAcch.SetRoofNone();
|
||||
mAcch.SetWaterNone();
|
||||
mAcch.CrrPos(dComIfG_Bgsp());
|
||||
mCcStts.Init((int)daNpcImpal_Param_c::m.mCcWeight, 0, this);
|
||||
mCcStts.Init((int)mpHIO->m.common.weight, 0, this);
|
||||
mCyl.Set(daNpcF_c::mCcDCyl);
|
||||
mCyl.SetStts(&mCcStts);
|
||||
mCyl.SetTgType(0);
|
||||
@@ -222,7 +231,7 @@ int daNpcImpal_c::Draw() {
|
||||
}
|
||||
|
||||
mpMorf->getModel()->getModelData()->getMaterialNodePointer(2)->setMaterialAnm(mpMatAnm);
|
||||
draw(false, false, daNpcImpal_Param_c::m.mShadowDepth, NULL, false);
|
||||
draw(false, false, mpHIO->m.common.real_shadow_size, NULL, false);
|
||||
|
||||
return 1;
|
||||
}
|
||||
@@ -247,7 +256,7 @@ bool daNpcImpal_c::ctrlJoint(J3DJoint* i_joint, J3DModel* i_model) {
|
||||
case 1:
|
||||
case 3:
|
||||
case 4:
|
||||
setLookatMtx(jointNo, lookatJoints, daNpcImpal_Param_c::m.mNeckAngleScl);
|
||||
setLookatMtx(jointNo, lookatJoints, mpHIO->m.common.neck_rotation_ratio);
|
||||
break;
|
||||
}
|
||||
|
||||
@@ -314,21 +323,21 @@ s16 daNpcImpal_c::step(s16 i_angle, int i_animate) {
|
||||
}
|
||||
|
||||
void daNpcImpal_c::playExpression() {
|
||||
daNpcF_anmPlayData dat0 = {ANM_1, daNpcImpal_Param_c::m.mMorfFrames, 1};
|
||||
daNpcF_anmPlayData dat0 = {ANM_1, mpHIO->m.common.morf_frame, 1};
|
||||
daNpcF_anmPlayData* pDat0[1] = {&dat0};
|
||||
daNpcF_anmPlayData dat1 = {ANM_5, daNpcImpal_Param_c::m.mMorfFrames, 1};
|
||||
daNpcF_anmPlayData dat1 = {ANM_5, mpHIO->m.common.morf_frame, 1};
|
||||
daNpcF_anmPlayData* pDat1[1] = {&dat1};
|
||||
daNpcF_anmPlayData dat2 = {ANM_4, daNpcImpal_Param_c::m.mMorfFrames, 1};
|
||||
daNpcF_anmPlayData dat2 = {ANM_4, mpHIO->m.common.morf_frame, 1};
|
||||
daNpcF_anmPlayData* pDat2[1] = {&dat2};
|
||||
daNpcF_anmPlayData dat3 = {ANM_6, daNpcImpal_Param_c::m.mMorfFrames, 1};
|
||||
daNpcF_anmPlayData dat3 = {ANM_6, mpHIO->m.common.morf_frame, 1};
|
||||
daNpcF_anmPlayData* pDat3[1] = {&dat3};
|
||||
daNpcF_anmPlayData dat4 = {ANM_8, daNpcImpal_Param_c::m.mMorfFrames, 0};
|
||||
daNpcF_anmPlayData dat4 = {ANM_8, mpHIO->m.common.morf_frame, 0};
|
||||
daNpcF_anmPlayData* pDat4[1] = {&dat4};
|
||||
daNpcF_anmPlayData dat5 = {ANM_7, daNpcImpal_Param_c::m.mMorfFrames, 0};
|
||||
daNpcF_anmPlayData dat5 = {ANM_7, mpHIO->m.common.morf_frame, 0};
|
||||
daNpcF_anmPlayData* pDat5[1] = {&dat5};
|
||||
daNpcF_anmPlayData dat6 = {ANM_9, daNpcImpal_Param_c::m.mMorfFrames, 0};
|
||||
daNpcF_anmPlayData dat6 = {ANM_9, mpHIO->m.common.morf_frame, 0};
|
||||
daNpcF_anmPlayData* pDat6[1] = {&dat6};
|
||||
daNpcF_anmPlayData dat7 = {ANM_0, daNpcImpal_Param_c::m.mMorfFrames, 0};
|
||||
daNpcF_anmPlayData dat7 = {ANM_0, mpHIO->m.common.morf_frame, 0};
|
||||
daNpcF_anmPlayData* pDat7[1] = {&dat7};
|
||||
|
||||
daNpcF_anmPlayData** ppDat[8] = {
|
||||
@@ -340,21 +349,21 @@ void daNpcImpal_c::playExpression() {
|
||||
}
|
||||
|
||||
void daNpcImpal_c::playMotion() {
|
||||
daNpcF_anmPlayData dat0 = {0xA, daNpcImpal_Param_c::m.mMorfFrames, 0};
|
||||
daNpcF_anmPlayData dat0 = {0xA, mpHIO->m.common.morf_frame, 0};
|
||||
daNpcF_anmPlayData* pDat0[1] = {&dat0};
|
||||
|
||||
daNpcF_anmPlayData dat1a = {0xD, daNpcImpal_Param_c::m.mMorfFrames, 1};
|
||||
daNpcF_anmPlayData dat1b = {0xB, daNpcImpal_Param_c::m.mMorfFrames, 0};
|
||||
daNpcF_anmPlayData dat1a = {0xD, mpHIO->m.common.morf_frame, 1};
|
||||
daNpcF_anmPlayData dat1b = {0xB, mpHIO->m.common.morf_frame, 0};
|
||||
daNpcF_anmPlayData* pDat1[2] = {&dat1a, &dat1b};
|
||||
|
||||
daNpcF_anmPlayData dat2 = {0xB, daNpcImpal_Param_c::m.mMorfFrames, 0};
|
||||
daNpcF_anmPlayData dat2 = {0xB, mpHIO->m.common.morf_frame, 0};
|
||||
daNpcF_anmPlayData* pDat2[1] = {&dat2};
|
||||
|
||||
daNpcF_anmPlayData dat3 = {0xC, daNpcImpal_Param_c::m.mMorfFrames, 0};
|
||||
daNpcF_anmPlayData dat3 = {0xC, mpHIO->m.common.morf_frame, 0};
|
||||
daNpcF_anmPlayData* pDat3[1] = {&dat3};
|
||||
|
||||
daNpcF_anmPlayData dat4a = {0xE, daNpcImpal_Param_c::m.mMorfFrames, 1};
|
||||
daNpcF_anmPlayData dat4b = {0xA, daNpcImpal_Param_c::m.mMorfFrames, 0};
|
||||
daNpcF_anmPlayData dat4a = {0xE, mpHIO->m.common.morf_frame, 1};
|
||||
daNpcF_anmPlayData dat4b = {0xA, mpHIO->m.common.morf_frame, 0};
|
||||
daNpcF_anmPlayData* pDat4[2] = {&dat4a, &dat4b};
|
||||
|
||||
daNpcF_anmPlayData dat5a = {0x10, 0.0f, 1};
|
||||
@@ -459,7 +468,8 @@ bool daNpcImpal_c::setExpressionAnm(int i_idx, bool i_modify) {
|
||||
return false;
|
||||
}
|
||||
|
||||
/* 80A08A68-80A08B48 001168 00E0+00 1/0 0/0 0/0 .text setExpressionBtp__12daNpcImpal_cFi */
|
||||
/* 80A08A68-80A08B48 001168 00E0+00 1/0 0/0 0/0 .text setExpressionBtp__12daNpcImpal_cFi
|
||||
*/
|
||||
bool daNpcImpal_c::setExpressionBtp(int i_idx) {
|
||||
J3DAnmTexPattern* btpAnm = getTexPtrnAnmP(l_arcNames[l_btpGetParamList[i_idx].arcIdx],
|
||||
l_btpGetParamList[i_idx].fileIdx);
|
||||
@@ -583,25 +593,57 @@ bool daNpcImpal_c::setAction(daNpcImpal_c::actionFunc i_actionFn) {
|
||||
return true;
|
||||
}
|
||||
|
||||
static u8 const lit_4589[12 + 4 /* padding */] = {
|
||||
0x00,
|
||||
0x00,
|
||||
0x00,
|
||||
0x00,
|
||||
0x00,
|
||||
0x00,
|
||||
0x00,
|
||||
0x00,
|
||||
0x00,
|
||||
0x00,
|
||||
0x00,
|
||||
0x00,
|
||||
/* padding */
|
||||
0x00,
|
||||
0x00,
|
||||
0x00,
|
||||
0x00,
|
||||
};
|
||||
/* 80A0B76C-80A0B94C 003E6C 01E0+00 1/1 0/0 0/0 .text lookat__12daNpcImpal_cFv */
|
||||
void daNpcImpal_c::lookat() {
|
||||
fopAc_ac_c* actor = NULL;
|
||||
J3DModel* model = mpMorf->getModel();
|
||||
BOOL snap = false;
|
||||
|
||||
f32 body_angleX_min = mpHIO->m.common.body_angleX_min;
|
||||
f32 body_angleX_max = mpHIO->m.common.body_angleX_max;
|
||||
f32 body_angleY_min = mpHIO->m.common.body_angleY_min;
|
||||
f32 body_angleY_max = mpHIO->m.common.body_angleY_max;
|
||||
f32 head_angleX_min = mpHIO->m.common.head_angleX_min;
|
||||
f32 head_angleX_max = mpHIO->m.common.head_angleX_max;
|
||||
f32 head_angleY_min = mpHIO->m.common.head_angleY_min;
|
||||
f32 head_angleY_max = mpHIO->m.common.head_angleY_max;
|
||||
|
||||
s16 angle_delta = mCurAngle.y - mOldAngle.y;
|
||||
|
||||
cXyz lookat_pos[3] = {mLookatPos[0], mLookatPos[1], mLookatPos[2]};
|
||||
csXyz* lookat_angle[3] = {&mLookatAngle[0], &mLookatAngle[1], &mLookatAngle[2]};
|
||||
|
||||
switch (mLookMode) {
|
||||
case LOOK_NONE:
|
||||
break;
|
||||
case LOOK_RESET:
|
||||
snap = true;
|
||||
break;
|
||||
case LOOK_PLAYER:
|
||||
case LOOK_PLAYER_TALK:
|
||||
actor = daPy_getPlayerActorClass();
|
||||
if (mLookMode == LOOK_PLAYER_TALK) {
|
||||
head_angleY_min = -80.0f;
|
||||
head_angleY_max = 80.0f;
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
if (actor != NULL) {
|
||||
mLookPos = actor->attention_info.position;
|
||||
if (mLookMode != LOOK_PLAYER && mLookMode != LOOK_PLAYER_TALK) {
|
||||
mLookPos.y -= 40.0f;
|
||||
}
|
||||
mLookat.setAttnPos(&mLookPos);
|
||||
} else {
|
||||
mLookat.setAttnPos(NULL);
|
||||
}
|
||||
|
||||
mLookat.setParam(body_angleX_min, body_angleX_max, body_angleY_min, body_angleY_max, 0.0f, 0.0f,
|
||||
0.0f, 0.0f, head_angleX_min, head_angleX_max, head_angleY_min, head_angleY_max,
|
||||
mCurAngle.y, lookat_pos);
|
||||
mLookat.calc(this, model->getBaseTRMtx(), lookat_angle, snap, angle_delta, false);
|
||||
}
|
||||
|
||||
/* 80A08F60-80A090E8 001660 0188+00 1/1 0/0 0/0 .text s_sub1__FPvPv */
|
||||
static void* s_sub1(void* i_actor, void* i_data) {
|
||||
@@ -616,7 +658,7 @@ static void* s_sub1(void* i_actor, void* i_data) {
|
||||
BOOL daNpcImpal_c::chkFindPlayer() {
|
||||
BOOL ret;
|
||||
|
||||
if (!chkActorInSight(daPy_getPlayerActorClass(), daNpcImpal_Param_c::m.mAttnFovY)) {
|
||||
if (!chkActorInSight(daPy_getPlayerActorClass(), mpHIO->m.common.fov)) {
|
||||
mActorMngr[0].remove();
|
||||
ret = false;
|
||||
} else {
|
||||
@@ -1111,10 +1153,10 @@ static int daNpcImpal_IsDelete(void* i_this) {
|
||||
/* 80A0ADF8-80A0AEA8 0034F8 00B0+00 1/0 0/0 0/0 .text setParam__12daNpcImpal_cFv */
|
||||
void daNpcImpal_c::setParam() {
|
||||
attention_info.distances[0] =
|
||||
getDistTableIdx(daNpcImpal_Param_c::m.mTalkDistIdx, daNpcImpal_Param_c::m.mTalkAngleIdx);
|
||||
getDistTableIdx(mpHIO->m.common.attention_distance, mpHIO->m.common.attention_angle);
|
||||
attention_info.distances[1] = attention_info.distances[0];
|
||||
attention_info.distances[3] =
|
||||
getDistTableIdx(daNpcImpal_Param_c::m.mSpeakDistIdx, daNpcImpal_Param_c::m.mSpeakAngleIdx);
|
||||
getDistTableIdx(mpHIO->m.common.talk_distance, mpHIO->m.common.talk_angle);
|
||||
|
||||
if (field_0xde9) {
|
||||
attention_info.flags = fopAc_AttnFlag_SPEAK_e | fopAc_AttnFlag_TALK_e;
|
||||
@@ -1122,10 +1164,10 @@ void daNpcImpal_c::setParam() {
|
||||
attention_info.flags = 0;
|
||||
}
|
||||
|
||||
mAcchCir.SetWallR(daNpcImpal_Param_c::m.mWallR);
|
||||
mAcchCir.SetWallH(daNpcImpal_Param_c::m.mWallH);
|
||||
mAcchCir.SetWallR(mpHIO->m.common.width);
|
||||
mAcchCir.SetWallH(mpHIO->m.common.knee_length);
|
||||
|
||||
gravity = daNpcImpal_Param_c::m.mGravity;
|
||||
gravity = mpHIO->m.common.gravity;
|
||||
}
|
||||
|
||||
/* 80A0AEA8-80A0B380 0035A8 04D8+00 1/0 0/0 0/0 .text main__12daNpcImpal_cFv */
|
||||
@@ -1198,70 +1240,17 @@ void daNpcImpal_c::setAttnPos() {
|
||||
mEyeAngle.x = 0;
|
||||
}
|
||||
|
||||
attention_info.position.set(current.pos.x, current.pos.y + daNpcImpal_Param_c::m.mAttnOffsetY,
|
||||
attention_info.position.set(current.pos.x, current.pos.y + mpHIO->m.common.attention_offset,
|
||||
current.pos.z);
|
||||
|
||||
if (field_0xde9) {
|
||||
mCyl.SetC(current.pos);
|
||||
mCyl.SetH(daNpcImpal_Param_c::m.mCylH);
|
||||
mCyl.SetR(daNpcImpal_Param_c::m.mWallR);
|
||||
mCyl.SetH(mpHIO->m.common.height);
|
||||
mCyl.SetR(mpHIO->m.common.width);
|
||||
dComIfG_Ccsp()->Set(&mCyl);
|
||||
}
|
||||
}
|
||||
|
||||
/* 80A0B76C-80A0B94C 003E6C 01E0+00 1/1 0/0 0/0 .text lookat__12daNpcImpal_cFv */
|
||||
// Nonmatching - lookat_angle causing issues with literals
|
||||
void daNpcImpal_c::lookat() {
|
||||
fopAc_ac_c* actor = NULL;
|
||||
J3DModel* model = mpMorf->getModel();
|
||||
BOOL snap = false;
|
||||
|
||||
f32 body_down_angle = daNpcImpal_Param_c::m.mBodyDownAngle;
|
||||
f32 body_up_angle = daNpcImpal_Param_c::m.mBodyUpAngle;
|
||||
f32 body_right_angle = daNpcImpal_Param_c::m.mBodyRightAngle;
|
||||
f32 body_left_angle = daNpcImpal_Param_c::m.mBodyLeftAngle;
|
||||
f32 head_down_angle = daNpcImpal_Param_c::m.mHeadDownAngle;
|
||||
f32 head_up_angle = daNpcImpal_Param_c::m.mHeadUpAngle;
|
||||
f32 head_right_angle = daNpcImpal_Param_c::m.mHeadRightAngle;
|
||||
f32 head_left_angle = daNpcImpal_Param_c::m.mHeadLeftAngle;
|
||||
|
||||
s16 angle_delta = mCurAngle.y - mOldAngle.y;
|
||||
|
||||
cXyz lookat_pos[3] = {mLookatPos[0], mLookatPos[1], mLookatPos[2]};
|
||||
csXyz* lookat_angle[3] = {&mLookatAngle[0], &mLookatAngle[1], &mLookatAngle[2]};
|
||||
|
||||
switch (mLookMode) {
|
||||
case LOOK_NONE:
|
||||
break;
|
||||
case LOOK_RESET:
|
||||
snap = true;
|
||||
break;
|
||||
case LOOK_PLAYER:
|
||||
case LOOK_PLAYER_TALK:
|
||||
actor = daPy_getPlayerActorClass();
|
||||
if (mLookMode == LOOK_PLAYER_TALK) {
|
||||
head_right_angle = -80.0f;
|
||||
head_left_angle = 80.0f;
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
if (actor != NULL) {
|
||||
mLookPos = actor->attention_info.position;
|
||||
if (mLookMode != LOOK_PLAYER && mLookMode != LOOK_PLAYER_TALK) {
|
||||
mLookPos.y -= 40.0f;
|
||||
}
|
||||
mLookat.setAttnPos(&mLookPos);
|
||||
} else {
|
||||
mLookat.setAttnPos(NULL);
|
||||
}
|
||||
|
||||
mLookat.setParam(body_down_angle, body_up_angle, body_right_angle, body_left_angle, 0.0f, 0.0f,
|
||||
0.0f, 0.0f, head_down_angle, head_up_angle, head_right_angle, head_left_angle,
|
||||
mCurAngle.y, lookat_pos);
|
||||
mLookat.calc(this, model->getBaseTRMtx(), lookat_angle, snap, angle_delta, false);
|
||||
}
|
||||
|
||||
/* 80A0B94C-80A0B954 00404C 0008+00 1/0 0/0 0/0 .text drawDbgInfo__12daNpcImpal_cFv */
|
||||
BOOL daNpcImpal_c::drawDbgInfo() {
|
||||
return FALSE;
|
||||
|
||||
Reference in New Issue
Block a user