Fix optionDll inconsistencies
This commit is contained in:
parent
3a7cde9f33
commit
f2de6f7466
4 changed files with 29 additions and 43 deletions
|
|
@ -9,7 +9,7 @@ typedef struct {
|
|||
/* 0x00 */ Process *process;
|
||||
/* 0x04 */ s16 window;
|
||||
/* 0x08 */ s32 id;
|
||||
/* 0x0C */ s32 visible;
|
||||
/* 0x0C */ BOOL visible;
|
||||
/* 0x10 */ BOOL messWaitSignal;
|
||||
/* 0x14 */ BOOL choiceSignal;
|
||||
/* 0x18 */ u32 messToBeSet;
|
||||
|
|
|
|||
|
|
@ -17,8 +17,8 @@ typedef struct {
|
|||
/* 0x2C */ Vec posPrev;
|
||||
/* 0x38 */ Vec targetPrev;
|
||||
/* 0x44 */ char unk44[0xC];
|
||||
/* 0x50 */ float prevZoom;
|
||||
/* 0x54 */ float prevRot;
|
||||
/* 0x50 */ float zoomPrev;
|
||||
/* 0x54 */ float rotPrev;
|
||||
/* 0x58 */ Vec posTarget;
|
||||
/* 0x64 */ Vec posFocus;
|
||||
/* 0x70 */ char unk70[0xC];
|
||||
|
|
@ -34,8 +34,6 @@ typedef struct {
|
|||
|
||||
static void ExecCameraObj(omObjData *object);
|
||||
static void ExecCamera(omObjData *object);
|
||||
static void fn_1_12E4(omObjData *object);
|
||||
static void PrintDebugInfo(omObjData *object);
|
||||
|
||||
omObjData *optionCamera;
|
||||
|
||||
|
|
@ -45,11 +43,8 @@ static s32 pad_04_00000018_data = -1;
|
|||
|
||||
omObjData *OptionCameraCreate(void)
|
||||
{
|
||||
omObjData *object;
|
||||
CameraWork *work;
|
||||
|
||||
object = omAddObjEx(optionObjMan, 1001, 0, 0, 3, ExecCameraObj);
|
||||
work = HuMemDirectMallocNum(HEAP_SYSTEM, sizeof(CameraWork), MEMORY_DEFAULT_NUM);
|
||||
omObjData *object = omAddObjEx(optionObjMan, 1001, 0, 0, 3, ExecCameraObj);
|
||||
CameraWork *work = HuMemDirectMallocNum(HEAP_SYSTEM, sizeof(CameraWork), MEMORY_DEFAULT_NUM);
|
||||
object->data = work;
|
||||
work->pos.x = 0.0f;
|
||||
work->pos.y = 0.0f;
|
||||
|
|
@ -110,33 +105,26 @@ void OptionCameraViewSet(omObjData *object, float zoom, float rot, float y, s32
|
|||
work->zoomTarget = zoom;
|
||||
work->rotTarget = rot;
|
||||
work->targetPrev.y = work->target.y;
|
||||
work->prevZoom = work->zoom;
|
||||
work->prevRot = work->rot;
|
||||
work->zoomPrev = work->zoom;
|
||||
work->rotPrev = work->rot;
|
||||
work->timeRot = 0.0f;
|
||||
work->rotSpeed = 1.0f / duration;
|
||||
}
|
||||
|
||||
// GetZoom
|
||||
float OptionCameraZoomGet(omObjData *object)
|
||||
{
|
||||
CameraWork *work = object->data;
|
||||
float zoom;
|
||||
|
||||
zoom = work->zoom;
|
||||
float zoom = work->zoom;
|
||||
return zoom;
|
||||
}
|
||||
|
||||
// GetRot
|
||||
float OptionCameraRotGet(omObjData *object)
|
||||
{
|
||||
CameraWork *work = object->data;
|
||||
float rot;
|
||||
|
||||
rot = work->rot;
|
||||
float rot = work->rot;
|
||||
return rot;
|
||||
}
|
||||
|
||||
// Getpos
|
||||
void OptionCameraPosGet(omObjData *object, float *x, float *y, float *z)
|
||||
{
|
||||
CameraWork *temp_r31 = object->data;
|
||||
|
|
@ -146,7 +134,6 @@ void OptionCameraPosGet(omObjData *object, float *x, float *y, float *z)
|
|||
*z = temp_r31->pos.z;
|
||||
}
|
||||
|
||||
// Gettarget
|
||||
void OptionCameraTargetGet(omObjData *object, float *x, float *y, float *z)
|
||||
{
|
||||
CameraWork *work = object->data;
|
||||
|
|
@ -156,7 +143,6 @@ void OptionCameraTargetGet(omObjData *object, float *x, float *y, float *z)
|
|||
*z = work->target.z;
|
||||
}
|
||||
|
||||
// CameraDone
|
||||
s32 OptionCameraDoneCheck(omObjData *object)
|
||||
{
|
||||
CameraWork *work = object->data;
|
||||
|
|
@ -205,8 +191,8 @@ static void ExecCamera(omObjData *object)
|
|||
if (work->timeRot < 1.0f) {
|
||||
weight = sind(90.0f * work->timeRot);
|
||||
work->target.y = work->targetPrev.y + weight * (work->posFocus.y - work->targetPrev.y);
|
||||
work->zoom = work->prevZoom + weight * (work->zoomTarget - work->prevZoom);
|
||||
work->rot = work->prevRot + weight * (work->rotTarget - work->prevRot);
|
||||
work->zoom = work->zoomPrev + weight * (work->zoomTarget - work->zoomPrev);
|
||||
work->rot = work->rotPrev + weight * (work->rotTarget - work->rotPrev);
|
||||
if ((work->timeRot += work->rotSpeed) >= 1.0f) {
|
||||
work->target.y = work->posFocus.y;
|
||||
work->zoom = work->zoomTarget;
|
||||
|
|
@ -223,8 +209,7 @@ static void ExecCamera(omObjData *object)
|
|||
work->rot += 360.0f;
|
||||
}
|
||||
|
||||
Hu3DCameraPosSet(1, work->pos.x, work->pos.y, work->pos.z, work->up.x, work->up.y, work->up.z, work->target.x,
|
||||
work->target.y, work->target.z);
|
||||
Hu3DCameraPosSet(1, work->pos.x, work->pos.y, work->pos.z, work->up.x, work->up.y, work->up.z, work->target.x, work->target.y, work->target.z);
|
||||
}
|
||||
|
||||
static void CameraExecDebug(omObjData *object)
|
||||
|
|
|
|||
|
|
@ -22,8 +22,8 @@ typedef struct {
|
|||
/* 0x48 */ char unk48[0xC];
|
||||
/* 0x54 */ float time;
|
||||
/* 0x58 */ float speed;
|
||||
/* 0x5C */ s32 unk5C;
|
||||
/* 0x60 */ s32 unk60;
|
||||
/* 0x5C */ s32 unk_5C;
|
||||
/* 0x60 */ s32 unk_60;
|
||||
} GuideWork; // Size 0x64
|
||||
|
||||
#define MODE_DISABLED 0
|
||||
|
|
@ -70,8 +70,8 @@ omObjData *OptionGuideCreate(void)
|
|||
for (i = 0; i < 3; i++) {
|
||||
object->motion[i] = Hu3DJointMotion(object->model[0], HuDataSelHeapReadNum(guideMotTbl[i], MEMORY_DEFAULT_NUM, HEAP_DATA));
|
||||
}
|
||||
work->unk5C = CharModelEffectNpcInit(object->model[0], object->motion[2], 1, 0xC);
|
||||
work->unk60 = CharModelEffectNpcInit(object->model[0], object->motion[1], 0, 0xC);
|
||||
work->unk_5C = CharModelEffectNpcInit(object->model[0], object->motion[2], 1, 0xC);
|
||||
work->unk_60 = CharModelEffectNpcInit(object->model[0], object->motion[1], 0, 0xC);
|
||||
CharModelLayerSetAll(1);
|
||||
Hu3DModelShadowSet(object->model[0]);
|
||||
Hu3DMotionShiftSet(object->model[0], object->motion[0], 0.0f, 8.0f, 0x40000001);
|
||||
|
|
@ -186,9 +186,7 @@ static void ExecGuide(omObjData *object)
|
|||
static void UpdateGuide(omObjData *object)
|
||||
{
|
||||
GuideWork *work = object->data;
|
||||
s16 motion;
|
||||
|
||||
motion = 0;
|
||||
s16 motion = 0;
|
||||
work->distRemain = sqrtf(work->posDelta.x * work->posDelta.x + work->posDelta.z * work->posDelta.z);
|
||||
if (0.001f <= work->distRemain) {
|
||||
if (14.0f <= work->distRemain) {
|
||||
|
|
@ -219,9 +217,8 @@ static void UpdateGuide(omObjData *object)
|
|||
static float LerpAngle(float start, float end, float time)
|
||||
{
|
||||
float angle;
|
||||
float delta;
|
||||
|
||||
delta = fmod(end - start, 360.0);
|
||||
|
||||
float delta = fmod(end - start, 360.0);
|
||||
if (0.0f > delta) {
|
||||
delta += 360.0f;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -18,6 +18,12 @@ typedef struct {
|
|||
/* 0x18 */ GXColor color;
|
||||
} UnkLightDataStruct; /* size = 0x1C */ // TODO same as m446Dll::unkStruct10 and present::UnkPresentStruct3
|
||||
|
||||
typedef struct UnkShadowDataStruct {
|
||||
/* 0x00 */ Vec pos;
|
||||
/* 0x0C */ Vec up;
|
||||
/* 0x18 */ Vec target;
|
||||
} UnkShadowDataStruct; /* size = 0x24 */
|
||||
|
||||
static void ExecState(omObjData *object);
|
||||
|
||||
omObjData *optionState;
|
||||
|
|
@ -28,7 +34,7 @@ static UnkLightDataStruct lightTbl = {
|
|||
{ 0xFF, 0xFF, 0xFF, 0xFF },
|
||||
};
|
||||
|
||||
static Vec shadowPosTbl[3] = {
|
||||
static UnkShadowDataStruct shadowPosTbl = {
|
||||
{ 0.0f, 3000.0f, 1.0f },
|
||||
{ 0.0f, 1.0f, 0.0f },
|
||||
{ 0.0f, 0.0f, 0.0f },
|
||||
|
|
@ -36,12 +42,10 @@ static Vec shadowPosTbl[3] = {
|
|||
|
||||
omObjData *OptionStateCreate(void)
|
||||
{
|
||||
omObjData *object;
|
||||
StateWork *work;
|
||||
LightData *lightData;
|
||||
|
||||
object = omAddObjEx(optionObjMan, 1000, 0, 0, 4, ExecState);
|
||||
work = HuMemDirectMallocNum(HEAP_SYSTEM, sizeof(StateWork), MEMORY_DEFAULT_NUM);
|
||||
omObjData *object = omAddObjEx(optionObjMan, 1000, 0, 0, 4, ExecState);
|
||||
StateWork *work = HuMemDirectMallocNum(HEAP_SYSTEM, sizeof(StateWork), MEMORY_DEFAULT_NUM);
|
||||
object->data = work;
|
||||
optionCamera = OptionCameraCreate();
|
||||
optionRoom = OptionRoomCreate();
|
||||
|
|
@ -52,7 +56,7 @@ omObjData *OptionStateCreate(void)
|
|||
lightData = &Hu3DGlobalLight[work->light];
|
||||
Hu3DShadowCreate(30.0f, 20.0f, 5000.0f);
|
||||
Hu3DShadowTPLvlSet(0.45f);
|
||||
Hu3DShadowPosSet(&shadowPosTbl[0], &shadowPosTbl[1], &shadowPosTbl[2]);
|
||||
Hu3DShadowPosSet(&shadowPosTbl.pos, &shadowPosTbl.up, &shadowPosTbl.target);
|
||||
return object;
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue