identified/labeled camera functions
This commit is contained in:
@@ -92,7 +92,7 @@ void func_802B9EBC(s32 camera_node_index, s32 arg1){
|
||||
func_802BA76C(ncCameraNodeList[camera_node_index].data_ptr);
|
||||
break;
|
||||
case 2:// L802B9F38
|
||||
func_802BAA88(ncCameraNodeList[camera_node_index].data_ptr);
|
||||
ncCameraNodeType2_free(ncCameraNodeList[camera_node_index].data_ptr);
|
||||
break;
|
||||
case 0:// L802B9F40
|
||||
break;
|
||||
@@ -112,7 +112,7 @@ void func_802B9EBC(s32 camera_node_index, s32 arg1){
|
||||
ncCameraNodeList[camera_node_index].data_ptr = func_802BA6D4();
|
||||
break;
|
||||
case 2:// L802B9FB0
|
||||
ncCameraNodeList[camera_node_index].data_ptr = func_802BAA40();
|
||||
ncCameraNodeList[camera_node_index].data_ptr = ncCameraNodeType2_new();
|
||||
break;
|
||||
case 0:// L802B9FBC
|
||||
break;
|
||||
@@ -136,7 +136,7 @@ void __ncCameraNodeList_nodeFromFile(Struct61s *file_ptr, s32 arg1){
|
||||
func_802BA93C(file_ptr, func_802B9E5C(arg1));
|
||||
break;
|
||||
case 2:// L802BA084
|
||||
func_802BAB3C(file_ptr, func_802B9E70(arg1));
|
||||
ncCameraNodeType2_fromFile(file_ptr, func_802B9E70(arg1));
|
||||
break;
|
||||
case 0:// L802BA098
|
||||
break;
|
||||
|
47
src/core2/nc/dynamicCam1.c
Normal file
47
src/core2/nc/dynamicCam1.c
Normal file
@@ -0,0 +1,47 @@
|
||||
#include <ultra64.h>
|
||||
#include "functions.h"
|
||||
#include "variables.h"
|
||||
|
||||
extern f32 func_80259198(f32, f32);
|
||||
extern f32 func_802BD51C(void);
|
||||
extern f32 player_getYaw(void);
|
||||
extern void func_802BD870(f32, f32, f32, f32);
|
||||
|
||||
void ncDynamicCam1_init(void){
|
||||
func_802BD870(12.0f, 10.0f, 120.0f, 120.0f);
|
||||
}
|
||||
|
||||
void ncDynamicCam1_end(void){}
|
||||
|
||||
void ncDynamicCam1_update(void) {
|
||||
f32 sp8C[3];
|
||||
f32 sp80[3];
|
||||
f32 sp74[3];
|
||||
f32 sp68[3];
|
||||
f32 sp5C[3];
|
||||
f32 sp50[3];
|
||||
f32 sp4C;
|
||||
f32 sp48;
|
||||
f32 temp_f20;
|
||||
f32 sp40;
|
||||
f32 sp3C;
|
||||
|
||||
ncDynamicCamera_getPosition(sp74);
|
||||
func_802BD4C0(sp8C);
|
||||
sp3C = func_802BD8D4();
|
||||
temp_f20 = time_getDelta();
|
||||
ml_vec3f_diff_copy(sp50, sp74, sp8C);
|
||||
sp4C = gu_sqrtf((sp50[0] * sp50[0]) + (sp50[2] * sp50[2]));
|
||||
sp4C += func_80259198((sp3C - sp4C) * temp_f20 * 2, temp_f20 * 120.0f);
|
||||
func_8025801C(sp50, &sp48);
|
||||
sp40 = func_80259198(mlDiffDegF(mlNormalizeAngle(180.0f + player_getYaw()), sp48) * (temp_f20 * 1), temp_f20 * 50.0f);
|
||||
sp48 = mlNormalizeAngle(sp48 + sp40);
|
||||
func_80256E24(sp68, 0.0f, sp48, 0.0f, 0.0f, sp4C);
|
||||
ml_vec3f_add(sp80, sp8C, sp68);
|
||||
sp80[1] = sp74[1] + ((func_802BD51C() - sp74[1]) * temp_f20 * 2);
|
||||
ncDynamicCamera_setPosition(sp80);
|
||||
func_8025727C(sp8C[0], sp8C[1], sp8C[2], sp80[0], sp80[1], sp80[2], &sp5C[0], &sp5C[1]);
|
||||
sp5C[0] = -sp5C[0];
|
||||
sp5C[2] = 0.0f;
|
||||
func_802BD720(sp5C);
|
||||
}
|
57
src/core2/nc/dynamicCam10.c
Normal file
57
src/core2/nc/dynamicCam10.c
Normal file
@@ -0,0 +1,57 @@
|
||||
#include <ultra64.h>
|
||||
#include "functions.h"
|
||||
#include "variables.h"
|
||||
|
||||
/* .bss */
|
||||
f32 D_8037DAA0;
|
||||
|
||||
/* .code */
|
||||
void func_802BF0E0(f32 arg0[3]){
|
||||
if(func_8028ECAC() == BSGROUP_5_CLIMB){
|
||||
func_802C0150(3);
|
||||
}
|
||||
else{
|
||||
func_802C0150(1);
|
||||
}
|
||||
func_802C02D4(arg0);
|
||||
}
|
||||
|
||||
void func_802BF12C(void){
|
||||
f32 sp34[3];
|
||||
f32 sp28[3];
|
||||
f32 sp1C[3];
|
||||
|
||||
ncDynamicCamera_getPosition(sp34);
|
||||
func_802BF0E0(sp1C);
|
||||
ml_vec3f_diff_copy(sp28, sp34, sp1C);
|
||||
func_8025801C(sp28, &D_8037DAA0);
|
||||
}
|
||||
|
||||
void ncDynamicCam10_init(void){
|
||||
func_802BE244(4.0f, 16.0f);
|
||||
func_802BE230(1.1f, 14.0f);
|
||||
func_802C0150(3);
|
||||
func_802BF12C();
|
||||
}
|
||||
|
||||
void ncDynamicCam10_end(void){}
|
||||
|
||||
void ncDynamicCam10_update(void){
|
||||
f32 sp5C[3];
|
||||
f32 sp50[3];
|
||||
f32 sp44[3];
|
||||
f32 sp38[3];
|
||||
f32 sp2C[3];
|
||||
s32 pad28;
|
||||
|
||||
player_getVelocity(sp44);
|
||||
func_802BF0E0(sp5C);
|
||||
func_80256E24(sp38, 0.0f, D_8037DAA0, 0.0f, 0.0f,func_802BD8D4());
|
||||
ml_vec3f_add(sp50, sp5C, sp38);
|
||||
func_802BE190(sp50);
|
||||
if(func_802BE60C()){
|
||||
func_802BC84C(0);
|
||||
}
|
||||
func_802BE6FC(sp2C, sp5C);
|
||||
func_802BD904(sp2C);
|
||||
}
|
90
src/core2/nc/dynamicCam11.c
Normal file
90
src/core2/nc/dynamicCam11.c
Normal file
@@ -0,0 +1,90 @@
|
||||
#include <ultra64.h>
|
||||
#include "functions.h"
|
||||
#include "variables.h"
|
||||
|
||||
extern f32 func_802BA40C(void *);
|
||||
extern f32 func_802BA420(void *);
|
||||
|
||||
/* .bss */
|
||||
f32 D_8037DAC0[3];
|
||||
f32 D_8037DAD0[3];
|
||||
f32 D_8037DADC;
|
||||
f32 D_8037DAE0;
|
||||
u8 D_8037DAE4;
|
||||
u8 D_8037DAE5;
|
||||
f32 D_8037DAE8;
|
||||
f32 D_8037DAEC;
|
||||
|
||||
/* .code */
|
||||
void ncDynamicCam11_init(void){
|
||||
D_8037DAE5 = TRUE;
|
||||
func_802C0150(1);
|
||||
}
|
||||
|
||||
void ncDynamicCam11_end(void){}
|
||||
|
||||
void ncDynamicCam11_update(void) {
|
||||
f32 sp64[3];
|
||||
f32 sp58[3];
|
||||
f32 sp4C[3];
|
||||
f32 sp40[3];
|
||||
f32 sp34[3];
|
||||
f32 sp30;
|
||||
f32 sp24[3];
|
||||
f32 sp20;
|
||||
|
||||
if (D_8037DAE5 == 0) {
|
||||
func_802C02D4(sp64);
|
||||
ncDynamicCamera_getPosition(sp58);
|
||||
ml_vec3f_diff_copy(sp24, sp58, sp64);
|
||||
sp24[1] = 0.0f;
|
||||
sp20 = gu_sqrtf( sp24[0]*sp24[0] + sp24[2]*sp24[2] );
|
||||
if (sp20 < D_8037DAE0) {
|
||||
sp20 = D_8037DAE0;
|
||||
}
|
||||
if (D_8037DADC < sp20) {
|
||||
sp20 = D_8037DADC;
|
||||
}
|
||||
ml_vec3f_diff_copy(sp34, D_8037DAC0, sp64);
|
||||
sp34[1] = 0.0f;
|
||||
sp30 = gu_sqrtf(sp34[0]*sp34[0] + sp34[2]*sp34[2]);
|
||||
if (sp30 < sp20) {
|
||||
sp20 = sp30;
|
||||
}
|
||||
ml_vec3f_set_length_copy(sp24, sp34, sp20);
|
||||
sp24[0] += sp64[0];
|
||||
sp24[2] += sp64[2];
|
||||
sp24[1] = D_8037DAC0[1];
|
||||
func_802BE190(sp24);
|
||||
if (D_8037DAE4) {
|
||||
func_802BE60C();
|
||||
}
|
||||
ncDynamicCamera_getPosition(sp58);
|
||||
func_802BC434(sp4C, sp64, sp58);
|
||||
func_802BC434(sp40, sp64, D_8037DAD0);
|
||||
if (sp30 < 150.0f) {
|
||||
sp4C[1] = sp40[1];
|
||||
}
|
||||
func_802BD904(sp4C);
|
||||
}
|
||||
}
|
||||
|
||||
void func_802BF798(void) {
|
||||
f32 sp2C;
|
||||
f32 sp28;
|
||||
s32 temp_v0;
|
||||
|
||||
temp_v0 = func_802B9E48();
|
||||
D_8037DAE4 = func_802BA4F0(temp_v0);
|
||||
func_802BA3B8(temp_v0, &D_8037DAD0);
|
||||
func_802BA434(temp_v0, &D_8037DAC0);
|
||||
func_802BA480(temp_v0, &sp2C, &sp28);
|
||||
func_802BE230(sp2C, sp28);
|
||||
func_802BA4A8(temp_v0, &sp2C, &sp28);
|
||||
func_802BE244(sp2C, sp28);
|
||||
D_8037DAE8 = sp2C;
|
||||
D_8037DAEC = sp28;
|
||||
D_8037DAE0 = func_802BA420(temp_v0);
|
||||
D_8037DADC = func_802BA40C(temp_v0);
|
||||
D_8037DAE5 = 0;
|
||||
}
|
279
src/core2/nc/dynamicCam12.c
Normal file
279
src/core2/nc/dynamicCam12.c
Normal file
@@ -0,0 +1,279 @@
|
||||
#include <ultra64.h>
|
||||
#include "functions.h"
|
||||
#include "variables.h"
|
||||
|
||||
extern f32 func_802453DC(struct56s *, f32, f32[3], s32);
|
||||
extern f32 func_80259198(f32, f32);
|
||||
extern f32 func_802BD51C(void);
|
||||
extern f32 player_getYaw(void);
|
||||
extern void func_802BE244(f32, f32);
|
||||
extern void func_802BE230(f32, f32);
|
||||
extern void func_802BD82C(f32, f32);
|
||||
|
||||
extern void func_802BD870(f32, f32, f32, f32);
|
||||
extern void func_80323240(struct56s *, f32 , f32[3]);
|
||||
extern f32 func_803243D0(struct56s *, f32[3]);
|
||||
extern f32 func_80323540(struct56s *, f32, f32, f32);
|
||||
extern f32 func_80323F74(struct56s *, f32, f32);
|
||||
extern struct56s *func_80342038(s32);
|
||||
|
||||
|
||||
void func_802C16CC(s32 arg0);
|
||||
|
||||
/* .bss */
|
||||
struct {
|
||||
s32 unk0;
|
||||
f32 unk4;
|
||||
f32 unk8;
|
||||
f32 unkC[3];
|
||||
f32 unk18;
|
||||
f32 unk1C[3];
|
||||
s32 unk28;
|
||||
u8 unk2C;
|
||||
u8 unk2D;
|
||||
u8 unk2E;
|
||||
u8 unk2F;
|
||||
}D_8037DBE0;
|
||||
|
||||
/* .code */
|
||||
bool __is_flying_in_FP(void){
|
||||
return (map_get() == MAP_27_FP_FREEZEEZY_PEAK) && (func_8028ECAC() == BSGROUP_A_FLYING);
|
||||
}
|
||||
|
||||
struct56s *func_802C0EC0(void){
|
||||
return func_80342038(D_8037DBE0.unk0);
|
||||
}
|
||||
|
||||
void func_802C0EE4(void) {
|
||||
D_8037DBE0.unk0 = -1;
|
||||
D_8037DBE0.unk28 = 0;
|
||||
D_8037DBE0.unk2C = 0;
|
||||
D_8037DBE0.unk2F = 0;
|
||||
D_8037DBE0.unk2E = 0;
|
||||
D_8037DBE0.unk4 = 0.0f;
|
||||
D_8037DBE0.unk8 = 0.0f;
|
||||
ml_vec3f_clear(D_8037DBE0.unkC);
|
||||
ml_vec3f_clear(D_8037DBE0.unk1C);
|
||||
D_8037DBE0.unk18 = 0.0f;
|
||||
}
|
||||
|
||||
void func_802C0F4C(void){
|
||||
func_802C0EE4();
|
||||
}
|
||||
|
||||
void dynamicCam12_init(void){
|
||||
func_802C0150(4);
|
||||
func_802BE244(5.0f, 10.0f);
|
||||
func_802BE230(3.0f, 8.0f);
|
||||
func_802BD82C(100.0f, 100.0f);
|
||||
}
|
||||
|
||||
void ncDynamicCam12_end(void){
|
||||
func_802C0EE4();
|
||||
func_802BD840();
|
||||
}
|
||||
|
||||
void func_802C0FF4(s32 arg0) {
|
||||
s32 sp1C;
|
||||
|
||||
sp1C = func_802C0190();
|
||||
func_802C0150(5);
|
||||
func_802C02D4(arg0);
|
||||
func_802C0150(sp1C);
|
||||
}
|
||||
|
||||
f32 func_802C1030(struct56s *arg0, f32 arg1[3], f32 arg2[3]) {
|
||||
f32 sp54[3];
|
||||
f32 sp48[3];
|
||||
f32 sp3C[3];
|
||||
f32 sp30[3];
|
||||
f32 sp2C;
|
||||
|
||||
sp2C = func_803243D0(arg0, arg1);
|
||||
if ((sp2C == 0.0) || (sp2C == 1.0)) {
|
||||
func_80323240(arg0, sp2C, sp48);
|
||||
if (sp2C == 0.0) {
|
||||
func_80323240(arg0, sp2C + 0.001, sp3C);
|
||||
} else {
|
||||
func_80323240(arg0, sp2C - 0.001, sp3C);
|
||||
}
|
||||
ml_vec3f_diff_copy(sp30, sp3C, sp48);
|
||||
ml_vec3f_set_length_copy(sp30, sp30, 400.0f);
|
||||
ml_vec3f_add(sp3C, sp30, sp48);
|
||||
func_80259554(sp54, sp48, sp3C, arg1);
|
||||
return ml_distance_vec3f(sp54, arg2);
|
||||
}
|
||||
else{
|
||||
func_80323240(arg0, sp2C, sp54);
|
||||
if (sp2C < D_8037DBE0.unk8) {
|
||||
return func_80323540(arg0, sp2C, D_8037DBE0.unk8, 15.0f);
|
||||
}
|
||||
else{
|
||||
return func_80323540(arg0, D_8037DBE0.unk8, sp2C, 15.0f);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
s32 func_802C11C8(f32 arg0[3]) {
|
||||
f32 sp64[3];
|
||||
f32 sp58[3];
|
||||
f32 sp4C[3];
|
||||
f32 sp48;
|
||||
f32 sp44;
|
||||
f32 sp40;
|
||||
f32 sp3C;
|
||||
f32 sp38;
|
||||
f32 sp34;
|
||||
f32 sp30;
|
||||
struct56s *sp2C;
|
||||
f32 sp28;
|
||||
|
||||
sp2C = func_802C0EC0();
|
||||
func_802C0FF4(sp4C);
|
||||
if (func_8028EE84() == BSWATERGROUP_2_UNDERWATER) {
|
||||
func_802BD82C(20.0f, 200.0f);
|
||||
} else {
|
||||
func_802BD82C(80.0f, 200.0f);
|
||||
}
|
||||
sp30 = func_802C1030(sp2C, sp4C, arg0);
|
||||
sp40 = func_80323F74(sp2C, D_8037DBE0.unk8, 1000.0f);
|
||||
sp3C = func_80323F74(sp2C, D_8037DBE0.unk8, -1000.0f);
|
||||
func_80323240(sp2C, sp40, sp64);
|
||||
func_80323240(sp2C, sp3C, sp58);
|
||||
sp48 = ml_distance_vec3f(sp4C, sp64);
|
||||
sp44 = ml_distance_vec3f(sp4C, sp58);
|
||||
sp38 = 0.0f;
|
||||
sp38 = 0.0f;
|
||||
if (mlAbsF(sp48 - sp44) > 3.0f) {
|
||||
sp34 = (sp48 < sp44) ? 1.0f : -1.0f;
|
||||
if (550.0f < sp30) {
|
||||
sp38 = ml_map_f(sp30, 550.0f, 650.0f, 0.0f, 1500.0f) * sp34;
|
||||
} else if (sp30 < 500.0f) {
|
||||
sp38 = ml_map_f(sp30, 400.0f, 500.0f, 1500.0f, 0.0f) * -sp34;
|
||||
}
|
||||
sp28 = mlAbsF(D_8037DBE0.unk4);
|
||||
if (sp28 < mlAbsF(sp38)) {
|
||||
D_8037DBE0.unk4 = D_8037DBE0.unk4 + (sp38 - D_8037DBE0.unk4) * 0.08;
|
||||
} else {
|
||||
D_8037DBE0.unk4 = sp38;
|
||||
}
|
||||
D_8037DBE0.unk8 = func_80323F74(sp2C, D_8037DBE0.unk8, D_8037DBE0.unk4);
|
||||
if( ((sp38 > 0.0f) && (D_8037DBE0.unk8 == 1.0) && (D_8037DBE0.unk2F == 0))
|
||||
|| ((sp38 < 0.0f) && (D_8037DBE0.unk8 == 0.0) && (D_8037DBE0.unk2E == 0))
|
||||
) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
}
|
||||
else{
|
||||
return 1;
|
||||
}
|
||||
|
||||
if (sp38 != 0.0f){
|
||||
return 1;
|
||||
}
|
||||
return 2;
|
||||
}
|
||||
|
||||
void ncDynamicCam12_update(void) {
|
||||
f32 sp5C[3];
|
||||
f32 sp50[3];
|
||||
f32 sp4C;
|
||||
f32 sp40[3];
|
||||
f32 sp34[3];
|
||||
|
||||
if (D_8037DBE0.unk0 != -1) {
|
||||
if (D_8037DBE0.unk2C == 1) {
|
||||
D_8037DBE0.unk2C = 2;
|
||||
}
|
||||
ncDynamicCamera_getPosition(sp40);
|
||||
if ((D_8037DBE0.unk28 == -1) || (func_802C11C8(sp40) == 0) || __is_flying_in_FP()) {
|
||||
D_8037DBE0.unk28 = 0;
|
||||
return;
|
||||
}
|
||||
func_80323240(func_802C0EC0(), D_8037DBE0.unk8, sp40);
|
||||
if (D_8037DBE0.unk18 < 1.0) {
|
||||
sp4C = ml_map_f(D_8037DBE0.unk18, 0.5f, 1.0f, 0.05f, 0.01f);
|
||||
D_8037DBE0.unk18 += 30.0f * time_getDelta() * sp4C;
|
||||
if (D_8037DBE0.unk18 < 1.0) {
|
||||
ml_vec3f_diff_copy(sp50, sp40, D_8037DBE0.unkC);
|
||||
ml_vec3f_scale(sp50, D_8037DBE0.unk18);
|
||||
ml_vec3f_add(sp40, D_8037DBE0.unkC, sp50);
|
||||
}
|
||||
}
|
||||
ncDynamicCamera_setPosition(sp40);
|
||||
func_802C02D4(sp5C);
|
||||
func_802BE6FC(sp34, sp5C);
|
||||
func_802BD904(sp34);
|
||||
}
|
||||
}
|
||||
|
||||
void func_802C1674(s32 arg0, s32 arg1){
|
||||
if(D_8037DBE0.unk28){
|
||||
D_8037DBE0.unk28 = -1;
|
||||
}
|
||||
}
|
||||
|
||||
void func_802C169C(void *arg0, s32 arg1){
|
||||
func_802C16CC(func_8033451C(*((u16 *)((s32)arg0 + 8))));
|
||||
}
|
||||
|
||||
void func_802C16CC(s32 arg0) {
|
||||
f32 sp54[3];
|
||||
f32 sp48[3];
|
||||
f32 sp3C[3];
|
||||
s32 sp38;
|
||||
s32 sp34;
|
||||
s16 *sp30;
|
||||
|
||||
if ((func_8028ECAC() != 4) && !__is_flying_in_FP()){
|
||||
sp38 = func_80334524(arg0);
|
||||
if(sp38 != D_8037DBE0.unk28 && D_8037DBE0.unk28 != -1){
|
||||
player_getPosition(sp54);
|
||||
ml_vec3f_to_vec3w(sp48, sp54);
|
||||
sp30 = cubeList_findNodePropByActorId(sp38, sp48);
|
||||
if(sp30 != NULL) {
|
||||
nodeprop_getPosition(sp30, sp54);
|
||||
switch (func_80304DB8(sp30)) { /* irregular */
|
||||
default:
|
||||
D_8037DBE0.unk2E = 0;
|
||||
D_8037DBE0.unk2F = 0;
|
||||
break;
|
||||
case 1:
|
||||
D_8037DBE0.unk2E = 1;
|
||||
D_8037DBE0.unk2F = 0;
|
||||
break;
|
||||
case 2:
|
||||
D_8037DBE0.unk2E = 0;
|
||||
D_8037DBE0.unk2F = 1;
|
||||
break;
|
||||
case 3:
|
||||
D_8037DBE0.unk2E = 1;
|
||||
D_8037DBE0.unk2F = 1;
|
||||
break;
|
||||
}
|
||||
D_8037DBE0.unk2D = ncDynamicCamera_getState();
|
||||
ncDynamicCamera_getPosition(sp3C);
|
||||
ml_vec3f_copy(D_8037DBE0.unkC, sp3C);
|
||||
D_8037DBE0.unk18 = 0.0f;
|
||||
D_8037DBE0.unk28 = sp38;
|
||||
D_8037DBE0.unk0 = func_80341EC4(sp54);
|
||||
D_8037DBE0.unk8 = func_803243D0(func_802C0EC0(), sp3C);
|
||||
D_8037DBE0.unk8 = func_802453DC(func_802C0EC0(), D_8037DBE0.unk8, sp3C, baMarker_8028D694() | 0x1E0000);
|
||||
D_8037DBE0.unk2C = 1;
|
||||
func_80323240(func_802C0EC0(), D_8037DBE0.unk8, D_8037DBE0.unk1C);
|
||||
if (func_802C11C8(D_8037DBE0.unk1C) == 1) {
|
||||
ncDynamicCamera_setState(0x12);
|
||||
func_80291488(0xA);
|
||||
return;
|
||||
}
|
||||
D_8037DBE0.unk28 = 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
bool func_802C189C(void){
|
||||
return D_8037DBE0.unk28 < 1;
|
||||
}
|
90
src/core2/nc/dynamicCam13.c
Normal file
90
src/core2/nc/dynamicCam13.c
Normal file
@@ -0,0 +1,90 @@
|
||||
#include <ultra64.h>
|
||||
#include "functions.h"
|
||||
#include "variables.h"
|
||||
|
||||
|
||||
extern f32 player_getYaw(void);
|
||||
extern f32 func_802BD51C();
|
||||
extern void func_802BDB30(f32, f32*, f32*, f32, f32, f32);
|
||||
extern void func_802C2264(f32);
|
||||
|
||||
void func_802C095C(void);
|
||||
|
||||
/* .bss */
|
||||
f32 D_8037DBA0;
|
||||
f32 D_8037DBA4;
|
||||
f32 D_8037DBA8;
|
||||
f32 D_8037DBAC;
|
||||
|
||||
/* .code */
|
||||
bool func_802C0640(void){
|
||||
return mlAbsF(mlDiffDegF(D_8037DBA4, D_8037DBA8)) < 4.0;
|
||||
}
|
||||
|
||||
void ncDynamicCam13_end(void){}
|
||||
|
||||
void func_802C069C(void) {
|
||||
f32 sp34[3];
|
||||
f32 sp28[3];
|
||||
f32 sp1C[3];
|
||||
|
||||
ncDynamicCamera_getPosition(sp34);
|
||||
func_802C02D4(sp1C);
|
||||
ml_vec3f_diff_copy(sp28, sp34, sp1C);
|
||||
D_8037DBA0 = gu_sqrtf(sp28[0]*sp28[0] + sp28[2]*sp28[2]);
|
||||
func_8025801C(sp28, &D_8037DBA8);
|
||||
D_8037DBAC = 0.0f;
|
||||
}
|
||||
|
||||
void ncDynamicCam13_init(void) {
|
||||
func_802BE230(5.0f, 8.0f);
|
||||
func_802BE244(8.0f, 15.0f);
|
||||
func_802C0150(6);
|
||||
func_802C2264(0.5f);
|
||||
func_802C069C();
|
||||
func_802C095C();
|
||||
}
|
||||
|
||||
f32 func_802C0780(void){
|
||||
return func_802BD51C();
|
||||
}
|
||||
|
||||
void ncDynamicCam13_update(void) {
|
||||
f32 sp84[3];
|
||||
f32 sp78[3];
|
||||
f32 sp6C[3];
|
||||
f32 sp60[3];
|
||||
f32 sp54[3];
|
||||
f32 sp48[3];
|
||||
f32 sp44;
|
||||
f32 sp40;
|
||||
f32 sp34[3];
|
||||
f32 sp28[3];
|
||||
|
||||
ncDynamicCamera_getPosition(sp54);
|
||||
func_802C02D4(sp84);
|
||||
sp44 = time_getDelta();
|
||||
func_802BDB30(D_8037DBA4, &D_8037DBA8, &D_8037DBAC, 800.0f, 160.0f, 100.0f);
|
||||
ml_vec3f_diff_copy(sp6C, sp54, sp84);
|
||||
sp40 = gu_sqrtf(sp6C[0] * sp6C[0] + sp6C[2]*sp6C[2]);
|
||||
sp40 = sp40 + (func_802BD8D4() - sp40)* sp44 * 2;
|
||||
func_80256E24(sp60, 0.0f, D_8037DBA8, 0.0f, 0.0f, sp40);
|
||||
ml_vec3f_add(sp78, sp84, sp60);
|
||||
sp78[1] = sp54[1] + (func_802C0780() - sp54[1]) * sp44 * 2;
|
||||
ncDynamicCamera_setPosition(sp78);
|
||||
if (func_802BE60C() && func_802BC84C(0)) {
|
||||
func_802C069C();
|
||||
}
|
||||
func_802BE6FC(sp48, sp84);
|
||||
ncDynamicCamera_getRotation(sp34);
|
||||
sp28[0] = mlDiffDegF(sp48[0], sp34[0]);
|
||||
sp28[1] = mlDiffDegF(sp48[1], sp34[1]);
|
||||
sp28[2] = 0.0f;
|
||||
sp48[0] = sp34[0] + (sp28[0] * sp44 * 4);
|
||||
ncDynamicCamera_setRotation(sp48);
|
||||
}
|
||||
|
||||
void func_802C095C(void){
|
||||
D_8037DBA4 = mlNormalizeAngle(player_getYaw() + 180.0);
|
||||
}
|
||||
|
62
src/core2/nc/dynamicCam3.c
Normal file
62
src/core2/nc/dynamicCam3.c
Normal file
@@ -0,0 +1,62 @@
|
||||
#include <ultra64.h>
|
||||
#include "functions.h"
|
||||
#include "variables.h"
|
||||
|
||||
extern f32 func_80259198(f32, f32);
|
||||
extern f32 player_getYaw(void);
|
||||
extern void func_802BD870(f32, f32, f32, f32);
|
||||
|
||||
f32 D_8037DC10;
|
||||
|
||||
void ncDynamicCam3_end(void){}
|
||||
|
||||
void ncDynamicCam3_init(void){
|
||||
func_802BD870(10.0f, 20.0f, 120.0f, 200.0f);
|
||||
func_802C0150(4);
|
||||
D_8037DC10 = 600.0f;
|
||||
}
|
||||
|
||||
void func_802C1B20(f32 arg0){
|
||||
D_8037DC10 = arg0;
|
||||
}
|
||||
|
||||
void ncDynamicCam3_update(void) {
|
||||
f32 sp7C[3];
|
||||
f32 sp70[3];
|
||||
f32 sp64[3];
|
||||
f32 sp58[3];
|
||||
f32 sp4C[3];
|
||||
f32 sp40[3];
|
||||
f32 sp3C;
|
||||
f32 sp38;
|
||||
f32 sp34;
|
||||
f32 sp30;
|
||||
|
||||
|
||||
ncDynamicCamera_getPosition(sp64);
|
||||
sp34 = D_8037DC10;
|
||||
func_802C02D4(sp7C);
|
||||
sp30 = time_getDelta();
|
||||
if (sp30);
|
||||
ml_vec3f_diff_copy(sp40, sp64, sp7C);
|
||||
sp3C = gu_sqrtf(sp40[0]*sp40[0] + sp40[2]*sp40[2]);
|
||||
sp3C += func_80259198(sp30*(sp34 - sp3C)*2 , sp30 * 800.0f);
|
||||
func_8025727C(sp7C[0], sp7C[1], sp7C[2], sp64[0], sp64[1], sp64[2], &sp4C[0], &sp4C[1]);
|
||||
sp40[1] = sp30 * 0.77 * mlDiffDegF(mlNormalizeAngle(player_getYaw() + 180.0f), sp4C[1]);
|
||||
sp40[1] = func_80259198(sp40[1], sp30 * 300.0f);
|
||||
sp4C[1] = mlNormalizeAngle(sp4C[1] + sp40[1]);
|
||||
func_80256E24(&sp58, 0.0f, sp4C[1], 0.0f, 0.0f, sp3C);
|
||||
sp70[0] = sp7C[0] + sp58[0];
|
||||
sp70[1] = sp64[1];
|
||||
sp70[2] = sp7C[2] + sp58[2];
|
||||
sp40[1] = sp7C[1] - sp64[1];
|
||||
if (mlAbsF(sp40[1]) > 200.0f) {
|
||||
sp70[1] = sp64[1] - ((sp40[1] > 0.0f) ? sp30 * (200.0f - sp40[1]) * 2 : sp30 * (-200.0f - sp40[1]) * 2);
|
||||
}
|
||||
ncDynamicCamera_setPosition(sp70);
|
||||
if (func_802BE60C()) {
|
||||
func_802BC84C(0);
|
||||
}
|
||||
func_802BE6FC(sp4C, sp7C);
|
||||
func_802BD720(sp4C);
|
||||
}
|
100
src/core2/nc/dynamicCam4.c
Normal file
100
src/core2/nc/dynamicCam4.c
Normal file
@@ -0,0 +1,100 @@
|
||||
#include <ultra64.h>
|
||||
#include "functions.h"
|
||||
#include "variables.h"
|
||||
|
||||
extern f32 func_80259198(f32, f32);
|
||||
extern f32 player_getYaw(void);
|
||||
extern f32 player_getPitch(void);
|
||||
extern void func_802BD870(f32, f32, f32, f32);
|
||||
|
||||
void ncDynamicCam4_func_802BFE50(f32 arg0, f32 arg1, f32 arg2);
|
||||
void ncDynamicCam4_func_802BFE74(bool);
|
||||
|
||||
/* .bss */
|
||||
f32 D_8037DB10;
|
||||
f32 D_8037DB14;
|
||||
f32 D_8037DB18;
|
||||
f32 D_8037DB1C;
|
||||
f32 D_8037DB20;
|
||||
|
||||
/* .code */
|
||||
void ncDynamicCam4_init(void) {
|
||||
func_802BD870(10.0f, 20.0f, 120.0f, 200.0f);
|
||||
if (map_get() == MAP_90_GL_BATTLEMENTS) {
|
||||
ncDynamicCam4_func_802BFE50(10.0f, 800.0f, 1350.0f);
|
||||
} else {
|
||||
ncDynamicCam4_func_802BFE50(2.0f, 800.0f, 350.0f);
|
||||
}
|
||||
ncDynamicCam4_func_802BFE74(0);
|
||||
}
|
||||
|
||||
void ncDynamicCam4_end(void){}
|
||||
|
||||
void ncDynamicCam4_update(void) {
|
||||
f32 sp84[3];
|
||||
f32 sp78[3];
|
||||
f32 sp6C[3];
|
||||
f32 sp60[3];
|
||||
f32 sp54[3];
|
||||
f32 sp48[3];
|
||||
f32 sp44;
|
||||
f32 temp_f10;
|
||||
f32 sp3C;
|
||||
f32 sp38;
|
||||
f32 sp34;
|
||||
|
||||
ncDynamicCamera_getPosition(sp6C);
|
||||
func_802BD4C0(sp84);
|
||||
sp84[1] += 40.0f;
|
||||
sp34 = player_getPitch();
|
||||
if (sp34 > 180.0f) {
|
||||
sp3C = ml_map_f(sp34, 300.0f, 360.0f, 900.0f, D_8037DB18);
|
||||
sp84[1] += ml_map_f(sp34, 300.0f, 360.0f, -140.0f, 70.0f);
|
||||
} else {
|
||||
sp3C = D_8037DB18;
|
||||
sp84[1] += 70.0f;
|
||||
}
|
||||
sp38 = time_getDelta();
|
||||
ml_vec3f_diff_copy(sp48, sp6C, sp84);
|
||||
sp44 = gu_sqrtf(sp48[0]*sp48[0] + sp48[1]*sp48[1] + sp48[2]*sp48[2]);
|
||||
temp_f10 = (sp3C - sp44) * sp38;
|
||||
sp44 += func_80259198(temp_f10 * D_8037DB10, sp38 * D_8037DB14);
|
||||
func_8025727C(sp84[0], sp84[1], sp84[2], sp6C[0], sp6C[1], sp6C[2], &sp54[0], &sp54[1]);
|
||||
if ((sp34 > 180.0f) && (sp34 < 360.0f)) {
|
||||
sp34 = ml_min_f(100.0f, (f32) ((f64) (360.0f - sp34) * 1.4));
|
||||
}
|
||||
sp48[0] = mlDiffDegF(mlNormalizeAngle(sp34), sp54[0]);
|
||||
sp48[1] = mlDiffDegF(mlNormalizeAngle(player_getYaw() + 180.0f), sp54[1]);
|
||||
sp48[2] = 0.0f;
|
||||
sp48[0] = (f32) ((f64) sp48[0] * ((f64) sp38 * 0.8));
|
||||
sp48[1] = sp48[1] * (sp38 * D_8037DB1C);
|
||||
sp48[0] = func_80259198(sp48[0], sp38 * 40.0f);
|
||||
sp48[1] = func_80259198(sp48[1], sp38 * D_8037DB20);
|
||||
sp54[0] = mlNormalizeAngle(sp54[0] + sp48[0]);
|
||||
sp54[1] = mlNormalizeAngle(sp54[1] + sp48[1]);
|
||||
|
||||
func_80256E24(sp60, -sp54[0], sp54[1], 0.0f, 0.0f, sp44);
|
||||
ml_vec3f_add(sp78, sp84, sp60);
|
||||
ncDynamicCamera_setPosition(sp78);
|
||||
func_8025727C(sp84[0], sp84[1], sp84[2], sp78[0], sp78[1], sp78[2], &sp54[0], &sp54[1]);
|
||||
sp54[0] = -sp54[0];
|
||||
sp54[2] = 0.0f;
|
||||
func_802BD720(sp54);
|
||||
}
|
||||
|
||||
void ncDynamicCam4_func_802BFE50(f32 arg0, f32 arg1, f32 arg2){
|
||||
D_8037DB10 = arg0;
|
||||
D_8037DB14 = arg1;
|
||||
D_8037DB18 = arg2;
|
||||
}
|
||||
|
||||
void ncDynamicCam4_func_802BFE74(bool arg0) {
|
||||
if (arg0) {
|
||||
D_8037DB1C = 6.0f;
|
||||
D_8037DB20 = 270.0f;
|
||||
}
|
||||
else{
|
||||
D_8037DB1C = 2.0f;
|
||||
D_8037DB20 = 90.0f;
|
||||
}
|
||||
}
|
47
src/core2/nc/dynamicCam5.c
Normal file
47
src/core2/nc/dynamicCam5.c
Normal file
@@ -0,0 +1,47 @@
|
||||
#include <ultra64.h>
|
||||
#include "functions.h"
|
||||
#include "variables.h"
|
||||
|
||||
/* .bss */
|
||||
f32 D_8037DAB0[3];
|
||||
f32 D_8037DABC;
|
||||
|
||||
/* .code */
|
||||
void ncDynamicCam5_init(void) {
|
||||
func_802BE244(5.0f, 10.0f);
|
||||
func_802BE230(5.0f, 8.0f);
|
||||
ml_vec3f_clear(D_8037DAB0);
|
||||
D_8037DABC = 0.0f;
|
||||
}
|
||||
|
||||
void ncDynamicCam5_end(void){}
|
||||
|
||||
void ncDynamicCam5_update(void) {
|
||||
f32 sp74[3];
|
||||
f32 sp68[3];
|
||||
f32 sp5C[3];
|
||||
f32 sp50[3];
|
||||
f32 sp44[3];
|
||||
f32 sp38[3];
|
||||
s32 pad34;
|
||||
f32 sp30;
|
||||
|
||||
ncDynamicCamera_getPosition(sp44);
|
||||
player_getPosition(sp74);
|
||||
sp74[1] += 60.0f;
|
||||
ml_vec3f_diff_copy(sp5C, sp44, sp74);
|
||||
sp30 = ml_map_f(D_8037DABC, 0.2f, 0.5f, gu_sqrtf(sp5C[0] * sp5C[0] + sp5C[1] * sp5C[1] + sp5C[2] * sp5C[2]), 300.0f);
|
||||
D_8037DABC += time_getDelta();
|
||||
ml_vec3f_scale_copy(sp50, D_8037DAB0, sp30);
|
||||
ml_vec3f_diff_copy(sp68, sp74, sp50);
|
||||
func_802BE190(sp68);
|
||||
ncDynamicCamera_getPosition(sp68);
|
||||
func_8025727C(sp74[0], sp74[1], sp74[2], sp68[0], sp68[1], sp68[2], &sp38[0], &sp38[1]);
|
||||
sp38[0] = -sp38[0];
|
||||
sp38[2] = 0.0f;
|
||||
func_802BD904(sp38);
|
||||
}
|
||||
|
||||
void ncDynamicCam5_func_802BF590(f32 arg0[3]){
|
||||
ml_vec3f_normalize_copy(D_8037DAB0, arg0);
|
||||
}
|
76
src/core2/nc/dynamicCam8.c
Normal file
76
src/core2/nc/dynamicCam8.c
Normal file
@@ -0,0 +1,76 @@
|
||||
#include <ultra64.h>
|
||||
#include "functions.h"
|
||||
#include "variables.h"
|
||||
|
||||
extern f32 func_802BD51C(void);
|
||||
|
||||
|
||||
/* .bss */
|
||||
f32 D_8037DAF0[3];
|
||||
f32 D_8037DB00[3];
|
||||
u8 D_8037DB0C;
|
||||
u8 D_8037DB0D;
|
||||
u8 D_8037DB0E;
|
||||
|
||||
/* .code */
|
||||
void ncDynamicCam8_init(void){
|
||||
D_8037DB0E = TRUE;
|
||||
}
|
||||
|
||||
void ncDynamicCam8_end(void){}
|
||||
|
||||
void ncDynamicCam8_update(void) {
|
||||
f32 sp5C[3];
|
||||
f32 sp50[3];
|
||||
f32 sp44[3];
|
||||
f32 sp38[3];
|
||||
f32 sp2C[3];
|
||||
f32 sp20[3];
|
||||
f32 pad1C;
|
||||
|
||||
if(D_8037DB0E)
|
||||
return;
|
||||
|
||||
ncDynamicCamera_getPosition(sp44);
|
||||
sp20[0] = D_8037DB00[0];
|
||||
sp20[1] = D_8037DB00[1];
|
||||
sp20[2] = D_8037DB00[2];
|
||||
sp44[0] = D_8037DAF0[0];
|
||||
sp44[2] = D_8037DAF0[2];
|
||||
if (D_8037DB0C) {
|
||||
sp44[1] = D_8037DAF0[1];
|
||||
} else {
|
||||
sp44[1] = func_802BD51C();
|
||||
}
|
||||
func_802BE190(sp44);
|
||||
if (D_8037DB0D) {
|
||||
func_802BE60C();
|
||||
}
|
||||
ncDynamicCamera_getPosition(sp44);
|
||||
func_802BD4C0(sp5C);
|
||||
ml_vec3f_diff_copy(sp50, sp5C, sp44);
|
||||
func_802BC434(sp38, sp5C, sp44);
|
||||
func_802BC434(sp2C, sp5C, sp20);
|
||||
if (gu_sqrtf(sp50[0]*sp50[0] + sp50[2]*sp50[2]) < 100.0f) {
|
||||
sp38[1] = sp2C[1];
|
||||
}
|
||||
func_802BD904(sp38);
|
||||
}
|
||||
|
||||
|
||||
void ncDynamicCam8_func_802BF9B8(s32 arg0) {
|
||||
f32 sp2C;
|
||||
f32 sp28;
|
||||
s32 temp_s0;
|
||||
|
||||
temp_s0 = func_802B9E5C(arg0);
|
||||
D_8037DB0C = func_802BA8BC(temp_s0);
|
||||
D_8037DB0D = func_802BA87C(temp_s0);
|
||||
func_802BA7D8(temp_s0, &D_8037DB00);
|
||||
func_802BA78C(temp_s0, &D_8037DAF0);
|
||||
func_802BA82C(temp_s0, &sp2C, &sp28);
|
||||
func_802BE230(sp2C, sp28);
|
||||
func_802BA854(temp_s0, &sp2C, &sp28);
|
||||
func_802BE244(sp2C, sp28);
|
||||
D_8037DB0E = 0;
|
||||
}
|
115
src/core2/nc/dynamicCam9.c
Normal file
115
src/core2/nc/dynamicCam9.c
Normal file
@@ -0,0 +1,115 @@
|
||||
#include <ultra64.h>
|
||||
#include "functions.h"
|
||||
#include "variables.h"
|
||||
|
||||
extern f32 func_80259198(f32, f32);
|
||||
extern void func_802BD870(f32, f32, f32, f32);
|
||||
|
||||
/* .bss */
|
||||
f32 D_8037DBB0[3];
|
||||
f32 D_8037DBBC;
|
||||
f32 D_8037DBC0;
|
||||
f32 D_8037DBC8[3];
|
||||
|
||||
/* .code */
|
||||
void ncDynamicCam9_init(void) {
|
||||
func_802BD870(6.0f, 10.0f, 50.0f, 120.0f);
|
||||
ncDynamicCamera_getPosition(D_8037DBC8);
|
||||
}
|
||||
|
||||
void ncDynamicCam9_end(void){}
|
||||
|
||||
f32 ncDynamicCam9_func_802C09E8(void) {
|
||||
f32 d_pos[3];
|
||||
f32 player_position[3];
|
||||
|
||||
player_getPosition(player_position);
|
||||
d_pos[0] = D_8037DBB0[0] - player_position[0];
|
||||
d_pos[1] = 0.0f;
|
||||
d_pos[2] = D_8037DBB0[2] - player_position[2];
|
||||
return ml_min_f(gu_sqrtf(d_pos[0]*d_pos[0] + d_pos[2]*d_pos[2]), D_8037DBBC) / D_8037DBBC;
|
||||
}
|
||||
|
||||
void ncDynamicCam9_func_802C0A60(f32 arg0[3]) {
|
||||
f32 sp54[3];
|
||||
f32 sp48[3];
|
||||
f32 sp3C[3];
|
||||
f32 sp30[3];
|
||||
|
||||
func_802BD4C0(sp54);
|
||||
func_8025727C(sp54[0], sp54[1], sp54[2], D_8037DBB0[0], D_8037DBB0[1], D_8037DBB0[2], &sp30[0], &sp30[1]);
|
||||
sp30[1] = mlNormalizeAngle(sp30[1] - 60.0f);
|
||||
func_80256E24(sp48, 0.0f, sp30[1], 0.0f, 0.0f, D_8037DBC0);
|
||||
ml_vec3f_add(arg0, D_8037DBB0, sp48);
|
||||
ml_vec3f_diff_copy(sp3C, sp54, D_8037DBB0);
|
||||
ml_vec3f_scale(sp3C, 0.3f);
|
||||
arg0[0] += sp3C[0];
|
||||
arg0[1] += sp3C[1];
|
||||
arg0[2] += sp3C[2];
|
||||
}
|
||||
|
||||
void ncDynamicCam9_func_802C0B70(f32 arg0[3], f32 arg1[3]) {
|
||||
f32 sp3C[3];
|
||||
f32 sp30[3];
|
||||
f32 dt;
|
||||
|
||||
dt = time_getDelta();
|
||||
ncDynamicCamera_getPosition(sp30);
|
||||
ml_vec3f_diff_copy(sp3C, arg1, sp30);
|
||||
sp3C[0] *= dt * 1.5;
|
||||
sp3C[1] *= dt * 1.0;
|
||||
sp3C[2] *= dt * 1.5;
|
||||
sp3C[0] = func_80259198(sp3C[0], dt * 1000.0);
|
||||
sp3C[1] = func_80259198(sp3C[1], dt * 1000.0);
|
||||
sp3C[2] = func_80259198(sp3C[2], dt * 1000.0);
|
||||
ml_vec3f_add(arg0, sp30, sp3C);
|
||||
ncDynamicCamera_setPosition(arg0);
|
||||
}
|
||||
|
||||
void ncDynamicCam9_func_802C0C5C(f32 arg0[3], f32 arg1[3]) {
|
||||
f32 sp54[3];
|
||||
f32 sp48[3];
|
||||
f32 sp3C[3];
|
||||
f32 sp38;
|
||||
f32 temp_f14;
|
||||
|
||||
sp38 = ncDynamicCam9_func_802C09E8();
|
||||
func_802BD4C0(sp48);
|
||||
ml_vec3f_diff_copy(sp3C, sp48, D_8037DBB0);
|
||||
ml_vec3f_scale(sp3C, ml_map_f(sp38, 0.4f, 0.75f, 0.5f, 1.0f));
|
||||
ml_vec3f_add(sp54, D_8037DBB0, sp3C);
|
||||
sp54[1] = sp48[1] + (sp54[1] - sp48[1]) * 0.4;
|
||||
func_8025727C(sp54[0], sp54[1], sp54[2], arg1[0], arg1[1], arg1[2], &arg0[0], &arg0[1]);
|
||||
arg0[0] = mlNormalizeAngle(-arg0[0]);
|
||||
arg0[2] = 0.0f;
|
||||
}
|
||||
|
||||
void ncDynamicCam9_update(void) {
|
||||
f32 sp44[3];
|
||||
f32 sp38[3];
|
||||
f32 sp2C[3];
|
||||
f32 sp20[3];
|
||||
f32 temp_f0;
|
||||
|
||||
ncDynamicCamera_getPosition(sp44);
|
||||
ncDynamicCamera_getRotation(sp38);
|
||||
if (ncDynamicCam9_func_802C09E8() > 0.25){
|
||||
ncDynamicCam9_func_802C0A60(sp2C);
|
||||
ncDynamicCam9_func_802C0C5C(sp20, sp2C);
|
||||
temp_f0 = mlNormalizeAngle(sp20[1] - sp38[1]);
|
||||
if((temp_f0 > 200.0f) || (temp_f0 < 160.0f)) {
|
||||
ml_vec3f_copy(D_8037DBC8, sp2C);
|
||||
}
|
||||
}
|
||||
ncDynamicCam9_func_802C0B70(sp2C, D_8037DBC8);
|
||||
ncDynamicCam9_func_802C0C5C(sp20, sp2C);
|
||||
func_802BD720(sp20);
|
||||
}
|
||||
|
||||
void ncDynamicCam9_func_802C0E38(f32 arg0, f32 arg1, f32 arg2, f32 arg3, f32 arg4){
|
||||
D_8037DBB0[0] = arg0;
|
||||
D_8037DBB0[1] = arg1;
|
||||
D_8037DBB0[2] = arg2;
|
||||
D_8037DBBC = arg3;
|
||||
D_8037DBC0 = arg4;
|
||||
}
|
139
src/core2/nc/dynamicCamA.c
Normal file
139
src/core2/nc/dynamicCamA.c
Normal file
@@ -0,0 +1,139 @@
|
||||
#include <ultra64.h>
|
||||
#include "functions.h"
|
||||
#include "variables.h"
|
||||
|
||||
extern f32 func_802BD51C(void);
|
||||
extern void func_802BDCE0(f32, f32*, f32*, f32, f32);
|
||||
extern void func_802BDE88(f32*, f32*, f32, f32, f32);
|
||||
extern void func_802589E4(f32[3], f32, f32);
|
||||
extern void ncDynamicCamera_setState(s32);
|
||||
|
||||
/* .data */
|
||||
f32 D_80365DA0 = 0.0f;
|
||||
f32 D_80365DA4 = 0.0f;
|
||||
f32 D_80365DA8 = 0.0f;
|
||||
f32 D_80365DAC = 100.0f;
|
||||
u8 D_80365DB0 = 0;
|
||||
f32 D_80365DB4 = 0.0f;
|
||||
|
||||
/* .code */
|
||||
void ncDynamicCamA_init(void){}
|
||||
|
||||
void ncDynamicCamA_end(void){}
|
||||
|
||||
bool ncDynamicCamA_func_802C1DB0(f32 arg0) {
|
||||
f32 pad4C;
|
||||
f32 camera_position[3];
|
||||
f32 sp34[3];
|
||||
f32 sp28[3];
|
||||
f32 sp1C[3];
|
||||
|
||||
|
||||
ncDynamicCamera_getPosition(camera_position);
|
||||
func_802C02D4(sp28);
|
||||
ml_vec3f_diff_copy(sp34, camera_position, sp28);
|
||||
D_80365DAC = gu_sqrtf(sp34[0]*sp34[0] + sp34[2]*sp34[2]);
|
||||
func_8025801C(sp34, &D_80365DA4);
|
||||
D_80365DA8 = 0.0f;
|
||||
D_80365DA0 = mlNormalizeAngle(D_80365DA4 + arg0);
|
||||
D_80365DB0 = 0;
|
||||
pad4C = (arg0 / 5.0);
|
||||
func_802589E4(sp1C, mlNormalizeAngle(D_80365DA4 + pad4C), D_80365DAC);
|
||||
sp1C[0] += sp28[0];
|
||||
sp1C[2] += sp28[2];
|
||||
pad4C = camera_position[1];
|
||||
sp1C[1] = pad4C;
|
||||
if (func_802BCE0C(camera_position, sp1C)) {
|
||||
ncDynamicCamera_setState(0xA);
|
||||
return TRUE;
|
||||
}
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
bool ncDynamicCamA_func_802C1EE0(void){
|
||||
return D_80365DB0;
|
||||
}
|
||||
|
||||
f32 ncDynamicCamA_func_802C1EEC(void){
|
||||
f32 sp1C[3];
|
||||
|
||||
if(func_802C0190() == 3){
|
||||
ncDynamicCamera_getPosition(sp1C);
|
||||
return sp1C[1];
|
||||
}
|
||||
else{
|
||||
return func_802BD51C();
|
||||
}
|
||||
}
|
||||
|
||||
void ncDynamicCamA_update(void) {
|
||||
f32 spB4[3];
|
||||
f32 spA8[3];
|
||||
f32 sp9C[3];
|
||||
f32 sp90[3];
|
||||
f32 sp84[3];
|
||||
f32 sp80;
|
||||
s32 sp7C;
|
||||
s32 sp78;
|
||||
f32 sp6C[3];
|
||||
f32 sp60[3];
|
||||
f32 temp_f0;
|
||||
f32 sp50[3];
|
||||
f32 sp44[3];
|
||||
f32 sp38[3];
|
||||
f32 sp2C[3];
|
||||
s32 phi_a0;
|
||||
|
||||
ncDynamicCamera_getPosition(sp6C);
|
||||
ncDynamicCamera_getPosition(sp9C);
|
||||
func_802C02D4(spB4);
|
||||
sp80 = time_getDelta();
|
||||
|
||||
if(D_80365DB0){
|
||||
return;
|
||||
}
|
||||
|
||||
func_802BDCE0(D_80365DA0, &D_80365DA4, &D_80365DA8, 50.0f, 3.0f);
|
||||
D_80365DB0 = (mlAbsF(D_80365DA0 - D_80365DA4) < 0.5);
|
||||
ml_vec3f_diff_copy(sp60, sp9C, spB4);
|
||||
D_80365DAC = gu_sqrtf(sp60[0]*sp60[0] + sp60[2]*sp60[2]);
|
||||
func_802BDE88(&D_80365DB4, &D_80365DAC, func_802BD8D4(), 0.01f, 0.008f);
|
||||
func_80256E24(sp90, 0.0f, D_80365DA4, 0.0f, 0.0f, D_80365DAC);
|
||||
ml_vec3f_add(spA8, spB4, sp90);
|
||||
spA8[1] = sp9C[1] + ((ncDynamicCamA_func_802C1EEC() - sp9C[1]) * sp80 * 2);
|
||||
ncDynamicCamera_setPosition(spA8);
|
||||
sp78 = 0;
|
||||
sp7C = 0;
|
||||
if (func_802BE60C() != 0) {
|
||||
D_80365DB0 = 1;
|
||||
D_80365DB4 = 0.0f;
|
||||
sp7C = 1;
|
||||
}
|
||||
phi_a0 = (mlDiffDegF(D_80365DA0, D_80365DA4) > 0.0f) ? 2 : 3;
|
||||
if (func_802BC84C(phi_a0)) {
|
||||
D_80365DB4 = 0.0f;
|
||||
sp78 = 1;
|
||||
sp7C += 1;
|
||||
}
|
||||
func_802BE6FC(sp84, spB4);
|
||||
if (sp7C != 0) {
|
||||
ncDynamicCamera_getPosition(sp44);
|
||||
ml_vec3f_diff_copy(sp50, sp44, spB4);
|
||||
D_80365DAC = gu_sqrtf((sp50[0] * sp50[0]) + (sp50[2] * sp50[2]));
|
||||
}
|
||||
if (sp78 != 0) {
|
||||
D_80365DB0 = 1;
|
||||
ncDynamicCamera_setRotation(sp84);
|
||||
return;
|
||||
}
|
||||
ncDynamicCamera_getRotation(sp38);
|
||||
sp2C[0] = mlDiffDegF(sp84[0], sp38[0]);
|
||||
sp2C[1] = mlDiffDegF(sp84[1], sp38[1]);
|
||||
sp2C[2] = 0.0f;
|
||||
sp84[0] = sp38[0] + (sp2C[0] * sp80 * 4.0f);
|
||||
sp84[1] = sp38[1] + sp2C[1];
|
||||
ncDynamicCamera_setRotation(sp84);
|
||||
if (D_80365DB0 != 0) {
|
||||
D_80365DB4 = 0.0f;
|
||||
}
|
||||
}
|
95
src/core2/nc/dynamicCamB.c
Normal file
95
src/core2/nc/dynamicCamB.c
Normal file
@@ -0,0 +1,95 @@
|
||||
#include <ultra64.h>
|
||||
#include "functions.h"
|
||||
#include "variables.h"
|
||||
|
||||
extern f32 func_802BD51C(void);
|
||||
extern void func_802C0150(s32 arg0);
|
||||
|
||||
f32 D_8037DB70;
|
||||
struct {
|
||||
f32 D_8037DB78[3];
|
||||
f32 D_8037DB84[3];
|
||||
f32 D_8037DB90[3];
|
||||
}cameraStateB;
|
||||
|
||||
void func_802C0370(){
|
||||
ncDynamicCamera_getPosition(cameraStateB.D_8037DB84);
|
||||
}
|
||||
|
||||
void func_802C0394(f32 src[3]){
|
||||
ml_vec3f_copy(cameraStateB.D_8037DB90, src);
|
||||
}
|
||||
|
||||
void func_802C03BC(void) {
|
||||
f32 sp2C[3];
|
||||
f32 sp20[3];
|
||||
f32 sp1C;
|
||||
static f32 D_8037DB9C;
|
||||
|
||||
|
||||
ncDynamicCamera_getPosition(cameraStateB.D_8037DB78);
|
||||
ml_vec3f_diff_copy(sp20, cameraStateB.D_8037DB90, cameraStateB.D_8037DB84);
|
||||
ml_vec3f_diff_copy(sp2C, cameraStateB.D_8037DB78, cameraStateB.D_8037DB84);
|
||||
ml_vec3f_normalize(sp20);
|
||||
ml_vec3f_normalize(sp2C);
|
||||
sp1C = sp20[0]*sp2C[0] + sp20[1]*sp2C[1] + sp20[2]*sp2C[2];
|
||||
if (sp1C < 0.0f || D_8037DB9C < 0.0f) {
|
||||
ncDynamicCamera_setPosition(cameraStateB.D_8037DB84);
|
||||
}
|
||||
D_8037DB9C = sp1C;
|
||||
}
|
||||
|
||||
void func_802C0490(f32 arg0[3]){
|
||||
func_802C02D4(arg0);
|
||||
}
|
||||
|
||||
void func_802C04B0(void) {
|
||||
f32 sp34[3];
|
||||
f32 sp28[3];
|
||||
f32 sp1C[3];
|
||||
|
||||
ncDynamicCamera_getPosition(sp34);
|
||||
func_802C0490(sp1C);
|
||||
ml_vec3f_diff_copy(sp28,sp34, sp1C);
|
||||
func_8025801C(sp28, &D_8037DB70);
|
||||
}
|
||||
|
||||
void ncDynamicCamB_init(void) {
|
||||
func_802BE244(5.0f, 10.0f);
|
||||
func_802BE230(3.0f, 8.0f);
|
||||
func_802C0150(2);
|
||||
func_802C04B0();
|
||||
}
|
||||
|
||||
void ncDynamicCamB_end(void){}
|
||||
|
||||
void ncDynamicCamB_update(void) {
|
||||
f32 sp4C[3];
|
||||
f32 sp40[3];
|
||||
f32 sp34[3];
|
||||
f32 sp28[3];
|
||||
s32 sp24;
|
||||
|
||||
func_802C0370();
|
||||
func_802C0490(sp4C);
|
||||
func_80256E24(sp34, 0.0f, D_8037DB70, 0.0f, 0.0f, func_802BD8D4());
|
||||
ml_vec3f_add(sp40, sp4C, sp34);
|
||||
sp40[1] = func_802BD51C();
|
||||
func_802C0394(sp40);
|
||||
func_802BE190(sp40);
|
||||
sp24 = 0;
|
||||
if (func_802BE60C() != 0) {
|
||||
if (func_802BC84C(1) != 0) {
|
||||
sp24 = 1;
|
||||
} else {
|
||||
func_802C03BC();
|
||||
}
|
||||
func_802C04B0();
|
||||
}
|
||||
func_802C0490(sp4C);
|
||||
func_802BE6FC(sp28, sp4C);
|
||||
if (sp24) {
|
||||
ncDynamicCamera_setRotation(sp28);
|
||||
}
|
||||
func_802BD904(sp28);
|
||||
}
|
75
src/core2/nc/dynamicCamC.c
Normal file
75
src/core2/nc/dynamicCamC.c
Normal file
@@ -0,0 +1,75 @@
|
||||
#include <ultra64.h>
|
||||
#include "functions.h"
|
||||
#include "variables.h"
|
||||
|
||||
/*.bss */
|
||||
struct {
|
||||
f32 unk0;
|
||||
f32 unk4;
|
||||
f32 unk8;
|
||||
}D_8037DB30;
|
||||
|
||||
/* .code */
|
||||
void func_802BFED0(void){
|
||||
f32 sp34;
|
||||
f32 sp28[3];
|
||||
f32 sp1C[3];
|
||||
|
||||
player_getPosition(sp28);
|
||||
ncDynamicCamera_getPosition(sp1C);
|
||||
func_80257F18(sp28, sp1C, &sp34);
|
||||
D_8037DB30.unk8 = sp34;
|
||||
D_8037DB30.unk4 = 0.0f;
|
||||
}
|
||||
|
||||
void ncDynamicCamC_init(void) {
|
||||
func_802BE244(4.0f, 16.0f);
|
||||
func_802BE230(1.8f, 14.0f);
|
||||
D_8037DB30.unk0 = 290.0f;
|
||||
func_802BFED0();
|
||||
}
|
||||
|
||||
void ncDynamicCamC_end(void){}
|
||||
|
||||
void func_802BFF80(f32 arg0){
|
||||
D_8037DB30.unk0 = arg0;
|
||||
}
|
||||
|
||||
void ncDynamicCamC_update(void) {
|
||||
f32 sp54[3];
|
||||
f32 sp48[3];
|
||||
f32 sp3C[3];
|
||||
f32 sp30[3];
|
||||
f32 tmp1;
|
||||
|
||||
player_getPosition(sp3C);
|
||||
sp3C[1] += 160.0f;
|
||||
tmp1 = D_8037DB30.unk8;
|
||||
func_80256E24(sp30, D_8037DB30.unk4, tmp1, 0.0f, 0.0f, D_8037DB30.unk0);
|
||||
sp3C[0] += sp30[0];
|
||||
sp3C[1] += sp30[1];
|
||||
sp3C[2] += sp30[2];
|
||||
func_802BE190(sp3C);
|
||||
switch(map_get()){
|
||||
case MAP_B_CC_CLANKERS_CAVERN:
|
||||
case MAP_14_GV_SANDYBUTTS_MAZE:
|
||||
case MAP_27_FP_FREEZEEZY_PEAK:
|
||||
case MAP_48_FP_MUMBOS_SKULL:
|
||||
if (!func_802BE834(sp3C)) {
|
||||
D_8037DB30.unk4 = ml_max_f(D_8037DB30.unk4 - 8.0f, -75.0f);
|
||||
}
|
||||
break;
|
||||
default:
|
||||
if (func_802BC84C(1)) {
|
||||
func_802BFED0();
|
||||
return;
|
||||
}
|
||||
break;
|
||||
}
|
||||
ncDynamicCamera_getPosition(sp54);
|
||||
player_getPosition(sp3C);
|
||||
sp3C[1] += 100.0f;
|
||||
func_8025727C(sp3C[0], sp3C[1], sp3C[2], sp54[0], sp54[1], sp54[2], &sp48[0], &sp48[1]);
|
||||
sp48[0] = mlNormalizeAngle(-sp48[0]);
|
||||
func_802BD904(sp48);
|
||||
}
|
42
src/core2/nc/dynamicCamD.c
Normal file
42
src/core2/nc/dynamicCamD.c
Normal file
@@ -0,0 +1,42 @@
|
||||
#include <ultra64.h>
|
||||
#include "functions.h"
|
||||
#include "variables.h"
|
||||
|
||||
/* .data */
|
||||
f32 D_80365D90 = 30.0f;
|
||||
|
||||
/* .code */
|
||||
void ncDynamicCamD_init(void){
|
||||
func_802BE244(4.0f, 16.0f);
|
||||
func_802BE230(1.4f, 14.0f);
|
||||
}
|
||||
|
||||
void ncDynamicCamD_end(void){}
|
||||
|
||||
void ncDynamicCamD_func_802BF2C0(f32 arg0){
|
||||
D_80365D90 = arg0;
|
||||
}
|
||||
|
||||
void ncDynamicCamD_update(void) {
|
||||
f32 sp54[3];
|
||||
f32 sp48[3];
|
||||
f32 sp3C[3];
|
||||
f32 sp30[3];
|
||||
f32 sp2C;
|
||||
|
||||
player_getPosition(sp3C);
|
||||
sp3C[1] += 120.0f;
|
||||
ncDynamicCamera_getPosition(sp54);
|
||||
func_80257F18(sp3C, sp54, &sp2C);
|
||||
func_80256E24(sp30, 0.0f, sp2C, 0.0f, 0.0f, 200.0f);
|
||||
sp3C[0] += sp30[0];
|
||||
sp3C[1] += sp30[1];
|
||||
sp3C[2] += sp30[2];
|
||||
func_802BE190(sp3C);
|
||||
ncDynamicCamera_getPosition(sp54);
|
||||
player_getPosition(sp3C);
|
||||
sp3C[1] += D_80365D90;
|
||||
func_8025727C(sp3C[0], sp3C[1], sp3C[2], sp54[0], sp54[1], sp54[2], &sp48[0], &sp48[1]);
|
||||
sp48[0] = mlNormalizeAngle(-sp48[0]);
|
||||
func_802BD904(sp48);
|
||||
}
|
31
src/core2/nc/dynamicCamF.c
Normal file
31
src/core2/nc/dynamicCamF.c
Normal file
@@ -0,0 +1,31 @@
|
||||
#include <ultra64.h>
|
||||
#include "functions.h"
|
||||
|
||||
static f32 __playerStartPosition[3];
|
||||
|
||||
void ncDynamicCamF_init(void){
|
||||
f32 sp24[3];
|
||||
f32 sp12[3];
|
||||
|
||||
viewport_getPosition(sp24);
|
||||
viewport_getRotation(sp12);
|
||||
ncDynamicCamera_setPosition(sp24);
|
||||
ncDynamicCamera_setRotation(sp12);
|
||||
player_getPosition(__playerStartPosition);
|
||||
func_80291488(5);
|
||||
}
|
||||
|
||||
void ncDynamicCamF_end(void){}
|
||||
|
||||
void ncDynamicCamF_update(void){
|
||||
f32 player_position[3];
|
||||
f32 d_position[3];
|
||||
|
||||
player_getPosition(player_position);
|
||||
ml_vec3f_diff_copy(d_position, __playerStartPosition, player_position);
|
||||
if( !(gu_sqrtf(d_position[0]*d_position[0] + d_position[1]*d_position[1] + d_position[2]*d_position[2]) < 2.0f)){
|
||||
func_80291488(2);
|
||||
ncDynamicCamera_setState(0xB);
|
||||
func_802BE720();
|
||||
}
|
||||
}
|
1002
src/core2/nc/dynamicCamera.c
Normal file
1002
src/core2/nc/dynamicCamera.c
Normal file
File diff suppressed because it is too large
Load Diff
143
src/core2/nc/firstpersoncamera.c
Normal file
143
src/core2/nc/firstpersoncamera.c
Normal file
@@ -0,0 +1,143 @@
|
||||
#include <ultra64.h>
|
||||
#include "functions.h"
|
||||
#include "variables.h"
|
||||
|
||||
|
||||
extern void func_802BD780(f32[3], f32[3], f32, f32, f32, f32);
|
||||
extern f32 func_80257CF8(f32, f32, f32, f32, f32);
|
||||
|
||||
|
||||
enum nc_first_person_state{
|
||||
FIRSTPERSON_STATE_1_ENTER = 1,
|
||||
FIRSTPERSON_STATE_2_IDLE,
|
||||
FIRSTPERSON_STATE_3_EXIT,
|
||||
FIRSTPERSON_STATE_4_DONE,
|
||||
};
|
||||
|
||||
void ncFirstPersonCamera_setState(enum nc_first_person_state state);
|
||||
|
||||
/* .bss */
|
||||
struct{
|
||||
f32 position[3]; //first_person_position
|
||||
f32 rotation[3];
|
||||
f32 zoomed_in_position[3];
|
||||
f32 zoomed_in_rotation[3];
|
||||
f32 zoomed_out_position[3];
|
||||
f32 zoomed_out_rotation[3];
|
||||
f32 transistion_timer;
|
||||
u8 state;
|
||||
} D_8037DC60;
|
||||
|
||||
/* .code */
|
||||
bool __ncFirstPersonCamera_fullyZoomedIn(void) {
|
||||
return (ml_distance_vec3f(D_8037DC60.position, D_8037DC60.zoomed_in_position) < 40.0f);
|
||||
}
|
||||
|
||||
void __ncFirstPersonCamera_getPositionAndRotation_entering(f32 arg0[3], f32 arg1[3]) {
|
||||
s32 i;
|
||||
|
||||
func_80259430(&D_8037DC60.transistion_timer);
|
||||
for( i = 0; i<3; i++){
|
||||
D_8037DC60.position[i] = func_80257CF8(D_8037DC60.transistion_timer, 1.0f, 0.0f, D_8037DC60.zoomed_out_position[i], D_8037DC60.zoomed_in_position[i]);
|
||||
D_8037DC60.rotation[i] = mlNormalizeAngle(D_8037DC60.zoomed_out_rotation[i] + func_80257CF8(D_8037DC60.transistion_timer, 0.5f, 0.0f, 0.0f, mlDiffDegF(D_8037DC60.zoomed_in_rotation[i], D_8037DC60.zoomed_out_rotation[i])));
|
||||
}
|
||||
if (D_8037DC60.transistion_timer == 0.0f) {
|
||||
ncFirstPersonCamera_setState(2);
|
||||
}
|
||||
if (__ncFirstPersonCamera_fullyZoomedIn() && func_8028F150()) {
|
||||
func_8028FCC8(0);
|
||||
}
|
||||
ml_vec3f_copy(arg0, D_8037DC60.position);
|
||||
ml_vec3f_copy(arg1, D_8037DC60.rotation);
|
||||
}
|
||||
|
||||
|
||||
void __ncFirstPersonCamera_getPositionAndRotation_exiting(f32 arg0[3], f32 arg1[3]) {
|
||||
s32 i;
|
||||
|
||||
func_80259430(&D_8037DC60.transistion_timer);
|
||||
for( i = 0; i<3; i++){
|
||||
D_8037DC60.position[i] = func_80257CF8(D_8037DC60.transistion_timer, 1.0f, 0.0f, D_8037DC60.zoomed_in_position[i], arg0[i]);
|
||||
D_8037DC60.rotation[i] = mlNormalizeAngle(D_8037DC60.zoomed_in_rotation[i] + func_80257CF8(D_8037DC60.transistion_timer, 1.0f, 0.5f, 0.0f, mlDiffDegF(arg1[i], D_8037DC60.zoomed_in_rotation[i])));
|
||||
}
|
||||
if (D_8037DC60.transistion_timer == 0.0f) {
|
||||
ncFirstPersonCamera_setState(4);
|
||||
}
|
||||
if (!__ncFirstPersonCamera_fullyZoomedIn() && !func_8028F150()) {
|
||||
func_8028FCC8(1);
|
||||
}
|
||||
ml_vec3f_copy(arg0, D_8037DC60.position);
|
||||
ml_vec3f_copy(arg1, D_8037DC60.rotation);
|
||||
}
|
||||
|
||||
|
||||
void __ncFirstPersonCamera_getPositionAndRotation_idle(f32 arg0[3], f32 arg1[3]) {
|
||||
ml_vec3f_copy(D_8037DC60.position, D_8037DC60.zoomed_in_position);
|
||||
func_802BD780(D_8037DC60.zoomed_in_rotation, D_8037DC60.rotation, 10.0f, 20.0f, 120.0f, 200.0f);
|
||||
D_8037DC60.rotation[2] = 0.0f;
|
||||
ml_vec3f_copy(arg0, D_8037DC60.position);
|
||||
ml_vec3f_copy(arg1, D_8037DC60.rotation);
|
||||
}
|
||||
|
||||
void ncFirstPersonCamera_reset(void){
|
||||
ml_vec3f_clear(D_8037DC60.position);
|
||||
ml_vec3f_clear(D_8037DC60.rotation);
|
||||
ml_vec3f_clear(D_8037DC60.zoomed_in_position);
|
||||
ml_vec3f_clear(D_8037DC60.zoomed_in_rotation);
|
||||
ml_vec3f_clear(D_8037DC60.zoomed_out_position);
|
||||
ml_vec3f_clear(D_8037DC60.zoomed_out_rotation);
|
||||
D_8037DC60.state = 0;
|
||||
}
|
||||
|
||||
void ncFirstPersonCamera_getPositionAndRotation(f32 position[3], f32 rotation[3]) {
|
||||
switch (D_8037DC60.state) {
|
||||
case FIRSTPERSON_STATE_1_ENTER:
|
||||
__ncFirstPersonCamera_getPositionAndRotation_entering(position, rotation);
|
||||
break;
|
||||
case FIRSTPERSON_STATE_2_IDLE:
|
||||
__ncFirstPersonCamera_getPositionAndRotation_idle(position, rotation);
|
||||
break;
|
||||
case FIRSTPERSON_STATE_3_EXIT:
|
||||
__ncFirstPersonCamera_getPositionAndRotation_exiting(position, rotation);
|
||||
/* fallthrough */
|
||||
case FIRSTPERSON_STATE_4_DONE:
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
void ncFirstPersonCamera_setState(enum nc_first_person_state next_state) {
|
||||
if (next_state == FIRSTPERSON_STATE_1_ENTER) {
|
||||
if (D_8037DC60.state == FIRSTPERSON_STATE_3_EXIT) {
|
||||
ml_vec3f_copy(D_8037DC60.zoomed_out_position, D_8037DC60.position);
|
||||
ml_vec3f_copy(D_8037DC60.zoomed_out_rotation, D_8037DC60.rotation);
|
||||
} else {
|
||||
ncDynamicCamera_getPosition(D_8037DC60.position);
|
||||
ncDynamicCamera_getRotation(D_8037DC60.rotation);
|
||||
ncDynamicCamera_getPosition(D_8037DC60.zoomed_out_position);
|
||||
ncDynamicCamera_getRotation(D_8037DC60.zoomed_out_rotation);
|
||||
}
|
||||
D_8037DC60.transistion_timer = 1.0f;
|
||||
}
|
||||
if (next_state == FIRSTPERSON_STATE_3_EXIT) {
|
||||
D_8037DC60.transistion_timer = 1.0f;
|
||||
}
|
||||
D_8037DC60.state = next_state;
|
||||
}
|
||||
|
||||
void ncFirstPersonCamera_setZoomedOutPosition(f32 src[3]){
|
||||
ml_vec3f_copy(D_8037DC60.zoomed_in_position, src);
|
||||
}
|
||||
|
||||
void ncFirstPersonCamera_setZoomedOutRotation(f32 src[3]){
|
||||
D_8037DC60.zoomed_in_rotation[0] = mlNormalizeAngle(src[0]);
|
||||
D_8037DC60.zoomed_in_rotation[1] = mlNormalizeAngle(src[1]);
|
||||
D_8037DC60.zoomed_in_rotation[2] = mlNormalizeAngle(src[2]);
|
||||
}
|
||||
|
||||
void ncFirstPersonCamera_getZoomedInRotation(f32 dst[3]){
|
||||
ml_vec3f_copy(dst, D_8037DC60.zoomed_in_rotation);
|
||||
}
|
||||
|
||||
s32 ncFirstPersonCamera_getState(void){
|
||||
return D_8037DC60.state;
|
||||
}
|
50
src/core2/nc/randomCamera.c
Normal file
50
src/core2/nc/randomCamera.c
Normal file
@@ -0,0 +1,50 @@
|
||||
#include <ultra64.h>
|
||||
#include "functions.h"
|
||||
#include "variables.h"
|
||||
|
||||
/* .bss */
|
||||
struct {
|
||||
f32 storedPosition[3];
|
||||
f32 storedRotation[3];
|
||||
f32 minPosition[3];
|
||||
f32 maxPosition[3];
|
||||
}D_8037DA50;
|
||||
|
||||
/* .code */
|
||||
void ncRandomCamera_init(void) {
|
||||
s32 sp24[3];
|
||||
s32 sp18[3];
|
||||
|
||||
viewport_getPosition(D_8037DA50.storedPosition);
|
||||
viewport_getRotation(D_8037DA50.storedRotation);
|
||||
mapModel_getBounds(sp24, sp18);
|
||||
|
||||
D_8037DA50.minPosition[0] = (f32) sp24[0];
|
||||
D_8037DA50.minPosition[1] = (f32) sp24[1];
|
||||
D_8037DA50.minPosition[2] = (f32) sp24[2];
|
||||
|
||||
D_8037DA50.maxPosition[0] = (f32) sp18[0];
|
||||
D_8037DA50.maxPosition[1] = (f32) sp18[1];
|
||||
D_8037DA50.maxPosition[2] = (f32) sp18[2];
|
||||
}
|
||||
|
||||
|
||||
void ncRandomCamera_end(void){
|
||||
viewport_setPosition(D_8037DA50.storedPosition);
|
||||
viewport_setRotation(D_8037DA50.storedRotation);
|
||||
}
|
||||
|
||||
void ncRandomCamera_update(void) {
|
||||
f32 sp24[3];
|
||||
f32 sp18[3];
|
||||
|
||||
sp24[0] = randf2(D_8037DA50.minPosition[0], D_8037DA50.maxPosition[0]);\
|
||||
sp24[1] = randf2(D_8037DA50.minPosition[1], D_8037DA50.maxPosition[1]);\
|
||||
sp24[2] = randf2(D_8037DA50.minPosition[2], D_8037DA50.maxPosition[2]);
|
||||
|
||||
sp18[0] = randf2(-90.0f, 90.0f);\
|
||||
sp18[1] = randf2(0.0f, 360.0f);\
|
||||
sp18[2] = 0.0f;
|
||||
viewport_setPosition(sp24);
|
||||
viewport_setRotation(sp18);
|
||||
}
|
73
src/core2/nc/staticCamera.c
Normal file
73
src/core2/nc/staticCamera.c
Normal file
@@ -0,0 +1,73 @@
|
||||
#include <ultra64.h>
|
||||
#include "functions.h"
|
||||
#include "variables.h"
|
||||
#include "core2/nc/camera.h"
|
||||
|
||||
|
||||
extern void func_8025727C(f32, f32, f32, f32, f32, f32, f32*, f32*);
|
||||
|
||||
/* .bss */
|
||||
static f32 ncStaticCameraPosition[3];
|
||||
static f32 ncStaticCameraRotation[3];
|
||||
|
||||
/* .code */
|
||||
void ncStaticCamera_init(void){
|
||||
ml_vec3f_clear(ncStaticCameraPosition);
|
||||
ml_vec3f_clear(ncStaticCameraRotation);
|
||||
}
|
||||
|
||||
void ncStaticCamera_end(void){}
|
||||
|
||||
void ncStaticCamera_rotateToTarget(f32 target[3]){
|
||||
func_8025727C(
|
||||
target[0], target[1], target[2],
|
||||
ncStaticCameraPosition[0], ncStaticCameraPosition[1], ncStaticCameraPosition[2],
|
||||
&ncStaticCameraRotation[0], &ncStaticCameraRotation[1]
|
||||
);
|
||||
ncStaticCameraRotation[0] = mlNormalizeAngle(-ncStaticCameraRotation[0]);
|
||||
ncStaticCameraRotation[2] = 0.0f;
|
||||
}
|
||||
|
||||
void ncStaticCamera_setPosition(f32 arg0[3]){
|
||||
ml_vec3f_copy(ncStaticCameraPosition, arg0);
|
||||
}
|
||||
|
||||
void ncStaticCamera_update(void){
|
||||
viewport_setPosition(ncStaticCameraPosition);
|
||||
viewport_setRotation(ncStaticCameraRotation);
|
||||
}
|
||||
|
||||
void __ncStaticCamera_setToNode(s32 camera_node_index){
|
||||
UNK_TYPE(s32) sp1C;
|
||||
|
||||
sp1C = func_802B9E70(camera_node_index);
|
||||
ncCameraNodeType2_getPosition(sp1C, ncStaticCameraPosition);
|
||||
ncCameraNodeType2_getRotation(sp1C, ncStaticCameraRotation);
|
||||
}
|
||||
|
||||
void ncStaticCamera_setToNode(s32 camera_node_index){
|
||||
camera_setType(CAMERA_TYPE_3_STATIC);
|
||||
__ncStaticCamera_setToNode(camera_node_index);
|
||||
}
|
||||
|
||||
void ncStaticCamera_exit(void){
|
||||
camera_setType(CAMERA_TYPE_2_DYNAMIC);
|
||||
}
|
||||
|
||||
void ncStaticCamera_setPositionAndRotation(f32 arg0[3], f32 arg1[3]){
|
||||
camera_setType(CAMERA_TYPE_3_STATIC);
|
||||
ml_vec3f_copy(ncStaticCameraPosition, arg0);
|
||||
ml_vec3f_copy(ncStaticCameraRotation, arg1);
|
||||
}
|
||||
|
||||
void ncStaticCamera_setPositionAndTarget(f32 arg0[3], f32 arg1[3]){
|
||||
camera_setType(CAMERA_TYPE_3_STATIC);
|
||||
ml_vec3f_copy(ncStaticCameraPosition, arg0);
|
||||
ncStaticCamera_rotateToTarget(arg1);
|
||||
}
|
||||
|
||||
void ncStaticCamera_getPosition(f32 dst[3]){
|
||||
dst[0] = ncStaticCameraPosition[0];
|
||||
dst[1] = ncStaticCameraPosition[1];
|
||||
dst[2] = ncStaticCameraPosition[2];
|
||||
}
|
Reference in New Issue
Block a user