mirror of
https://github.com/HarbourMasters/SpaghettiKart
synced 2026-05-23 06:54:37 -04:00
clang format add header (#83)
* clang format add header * Update course_offsets.c * clang format * Update ImguiUI.h * Update actors.c
This commit is contained in:
@@ -319,4 +319,3 @@ Animation* d_course_koopa_troopa_beach_unk_data5[] = {
|
||||
uintptr_t d_course_koopa_troopa_beach_unk_data6[] = {
|
||||
0x00000000, 0x00000000, 0x00000001, 0x00000000, 0x00000001,
|
||||
};
|
||||
|
||||
|
||||
@@ -17,6 +17,7 @@
|
||||
#include "main.h"
|
||||
#include "spawn_players.h"
|
||||
#include "enhancements/freecam/freecam_engine.h"
|
||||
#include "freecam.h"
|
||||
|
||||
f32 D_800DDB30[] = { 0.4f, 0.6f, 0.275f, 0.3f };
|
||||
|
||||
|
||||
@@ -18,7 +18,10 @@ void render_collision(void) {
|
||||
gSPSetGeometryMode(gDisplayListHead++, G_ZBUFFER | G_SHADE | G_SHADING_SMOOTH);
|
||||
gSPClearGeometryMode(gDisplayListHead++, G_CULL_BACK);
|
||||
gDPPipeSync(gDisplayListHead++);
|
||||
gDPSetOtherMode(gDisplayListHead++, G_AD_NOTPATTERN | G_CD_MAGICSQ | G_CK_NONE | G_TC_FILT | G_TF_BILERP | G_TT_NONE | G_TL_TILE | G_TD_CLAMP | G_TP_PERSP | G_CYC_1CYCLE | G_PM_NPRIMITIVE, G_AC_NONE | G_ZS_PIXEL | G_RM_AA_ZB_OPA_SURF | G_RM_AA_ZB_OPA_SURF2);
|
||||
gDPSetOtherMode(gDisplayListHead++,
|
||||
G_AD_NOTPATTERN | G_CD_MAGICSQ | G_CK_NONE | G_TC_FILT | G_TF_BILERP | G_TT_NONE | G_TL_TILE |
|
||||
G_TD_CLAMP | G_TP_PERSP | G_CYC_1CYCLE | G_PM_NPRIMITIVE,
|
||||
G_AC_NONE | G_ZS_PIXEL | G_RM_AA_ZB_OPA_SURF | G_RM_AA_ZB_OPA_SURF2);
|
||||
gDPSetCombineMode(gDisplayListHead++, G_CC_SHADE, G_CC_SHADE);
|
||||
|
||||
// Set matrix
|
||||
@@ -27,20 +30,21 @@ void render_collision(void) {
|
||||
for (size_t i = 0; i < gCollisionMeshCount; i++) {
|
||||
// Load vertices for this tri
|
||||
|
||||
switch(gCollisionMesh[i].surfaceType) {
|
||||
switch (gCollisionMesh[i].surfaceType) {
|
||||
case ASPHALT:
|
||||
|
||||
// gSPTexture(gDisplayListHead++, 0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON);
|
||||
// gDPTileSync(gDisplayListHead++);
|
||||
// gDPSetTile(gDisplayListHead++, G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0x0000, G_TX_RENDERTILE, 0, G_TX_NOMIRROR | G_TX_WRAP, 5, G_TX_NOLOD, G_TX_MIRROR | G_TX_WRAP, 6, G_TX_NOLOD);
|
||||
// gDPSetTileSize(gDisplayListHead++, G_TX_RENDERTILE, 0, 0, 0x00FC, 0x007C);
|
||||
// gDPSetTextureImage(gDisplayListHead++, G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, gTextureRoad1);
|
||||
// gDPTileSync(gDisplayListHead++);
|
||||
// gDPSetTile(gDisplayListHead++, G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0x0000, G_TX_LOADTILE, 0, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMASK, G_TX_NOLOD, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMASK, G_TX_NOLOD);
|
||||
// gDPLoadSync(gDisplayListHead++);
|
||||
// gDPLoadBlock(gDisplayListHead++, G_TX_LOADTILE, 0, 0, 2047, 128);
|
||||
// gDPSetCombineMode(gDisplayListHead++, G_CC_MODULATEIA, G_CC_MODULATEIA);
|
||||
// gDPSetRenderMode(gDisplayListHead++, G_RM_AA_ZB_XLU_INTER, G_RM_NOOP2);
|
||||
// gSPTexture(gDisplayListHead++, 0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON);
|
||||
// gDPTileSync(gDisplayListHead++);
|
||||
// gDPSetTile(gDisplayListHead++, G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0x0000, G_TX_RENDERTILE, 0,
|
||||
// G_TX_NOMIRROR | G_TX_WRAP, 5, G_TX_NOLOD, G_TX_MIRROR | G_TX_WRAP, 6, G_TX_NOLOD);
|
||||
// gDPSetTileSize(gDisplayListHead++, G_TX_RENDERTILE, 0, 0, 0x00FC, 0x007C);
|
||||
// gDPSetTextureImage(gDisplayListHead++, G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, gTextureRoad1);
|
||||
// gDPTileSync(gDisplayListHead++);
|
||||
// gDPSetTile(gDisplayListHead++, G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0x0000, G_TX_LOADTILE, 0,
|
||||
// G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMASK, G_TX_NOLOD, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMASK,
|
||||
// G_TX_NOLOD); gDPLoadSync(gDisplayListHead++); gDPLoadBlock(gDisplayListHead++, G_TX_LOADTILE, 0,
|
||||
// 0, 2047, 128); gDPSetCombineMode(gDisplayListHead++, G_CC_MODULATEIA, G_CC_MODULATEIA);
|
||||
// gDPSetRenderMode(gDisplayListHead++, G_RM_AA_ZB_XLU_INTER, G_RM_NOOP2);
|
||||
gCollisionMesh[i].vtx1->v.cn[0] = 50;
|
||||
gCollisionMesh[i].vtx1->v.cn[1] = 50;
|
||||
gCollisionMesh[i].vtx1->v.cn[2] = 50;
|
||||
@@ -50,16 +54,19 @@ void render_collision(void) {
|
||||
gCollisionMesh[i].vtx3->v.cn[0] = 50;
|
||||
gCollisionMesh[i].vtx3->v.cn[1] = 50;
|
||||
gCollisionMesh[i].vtx3->v.cn[2] = 50;
|
||||
|
||||
|
||||
break;
|
||||
case DIRT: // gTexture64619C
|
||||
gSPTexture(gDisplayListHead++, 0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON);
|
||||
gDPTileSync(gDisplayListHead++);
|
||||
gDPSetTile(gDisplayListHead++, G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0x0000, G_TX_RENDERTILE, 0, G_TX_NOMIRROR | G_TX_WRAP, 5, G_TX_NOLOD, G_TX_NOMIRROR | G_TX_WRAP, 5, G_TX_NOLOD);
|
||||
gDPSetTile(gDisplayListHead++, G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0x0000, G_TX_RENDERTILE, 0,
|
||||
G_TX_NOMIRROR | G_TX_WRAP, 5, G_TX_NOLOD, G_TX_NOMIRROR | G_TX_WRAP, 5, G_TX_NOLOD);
|
||||
gDPSetTileSize(gDisplayListHead++, G_TX_RENDERTILE, 0, 0, 0x007C, 0x007C);
|
||||
gDPSetTextureImage(gDisplayListHead++, G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, gTexture64AF50);
|
||||
gDPTileSync(gDisplayListHead++);
|
||||
gDPSetTile(gDisplayListHead++, G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0x0000, G_TX_LOADTILE, 0, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMASK, G_TX_NOLOD, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMASK, G_TX_NOLOD);
|
||||
gDPSetTile(gDisplayListHead++, G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0x0000, G_TX_LOADTILE, 0,
|
||||
G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMASK, G_TX_NOLOD, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMASK,
|
||||
G_TX_NOLOD);
|
||||
gDPLoadSync(gDisplayListHead++);
|
||||
gDPLoadBlock(gDisplayListHead++, G_TX_LOADTILE, 0, 0, 1023, 256);
|
||||
gDPSetCombineMode(gDisplayListHead++, G_CC_MODULATEIA, G_CC_MODULATEIA);
|
||||
@@ -77,14 +84,15 @@ void render_collision(void) {
|
||||
case SAND:
|
||||
// gSPTexture(gDisplayListHead++, 0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON);
|
||||
// gDPTileSync(gDisplayListHead++);
|
||||
// gDPSetTile(gDisplayListHead++, G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0x0000, G_TX_RENDERTILE, 0, G_TX_NOMIRROR | G_TX_WRAP, 5, G_TX_NOLOD, G_TX_NOMIRROR | G_TX_WRAP, 5, G_TX_NOLOD);
|
||||
// gDPSetTile(gDisplayListHead++, G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0x0000, G_TX_RENDERTILE, 0,
|
||||
// G_TX_NOMIRROR | G_TX_WRAP, 5, G_TX_NOLOD, G_TX_NOMIRROR | G_TX_WRAP, 5, G_TX_NOLOD);
|
||||
// gDPSetTileSize(gDisplayListHead++, G_TX_RENDERTILE, 0, 0, 0x007C, 0x007C);
|
||||
// gDPSetTextureImage(gDisplayListHead++, G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, gTexture67BEE8);
|
||||
// gDPTileSync(gDisplayListHead++);
|
||||
// gDPSetTile(gDisplayListHead++, G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0x0000, G_TX_LOADTILE, 0, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMASK, G_TX_NOLOD, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMASK, G_TX_NOLOD);
|
||||
// gDPLoadSync(gDisplayListHead++);
|
||||
// gDPLoadBlock(gDisplayListHead++, G_TX_LOADTILE, 0, 0, 1023, 256);
|
||||
// gDPSetCombineMode(gDisplayListHead++, G_CC_MODULATEIA, G_CC_MODULATEIA);
|
||||
// gDPSetTile(gDisplayListHead++, G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0x0000, G_TX_LOADTILE, 0,
|
||||
// G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMASK, G_TX_NOLOD, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMASK,
|
||||
// G_TX_NOLOD); gDPLoadSync(gDisplayListHead++); gDPLoadBlock(gDisplayListHead++, G_TX_LOADTILE, 0, 0,
|
||||
// 1023, 256); gDPSetCombineMode(gDisplayListHead++, G_CC_MODULATEIA, G_CC_MODULATEIA);
|
||||
// gDPSetRenderMode(gDisplayListHead++, G_RM_AA_ZB_XLU_INTER, G_RM_NOOP2);
|
||||
// gCollisionMesh[i].vtx1->v.cn[0] = 255;
|
||||
// gCollisionMesh[i].vtx1->v.cn[1] = 121;
|
||||
@@ -99,11 +107,14 @@ void render_collision(void) {
|
||||
case STONE:
|
||||
gSPTexture(gDisplayListHead++, 0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON);
|
||||
gDPTileSync(gDisplayListHead++);
|
||||
gDPSetTile(gDisplayListHead++, G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0x0000, G_TX_RENDERTILE, 0, G_TX_NOMIRROR | G_TX_WRAP, 5, G_TX_NOLOD, G_TX_NOMIRROR | G_TX_WRAP, 5, G_TX_NOLOD);
|
||||
gDPSetTile(gDisplayListHead++, G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0x0000, G_TX_RENDERTILE, 0,
|
||||
G_TX_NOMIRROR | G_TX_WRAP, 5, G_TX_NOLOD, G_TX_NOMIRROR | G_TX_WRAP, 5, G_TX_NOLOD);
|
||||
gDPSetTileSize(gDisplayListHead++, G_TX_RENDERTILE, 0, 0, 0x007C, 0x007C);
|
||||
gDPSetTextureImage(gDisplayListHead++, G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, gTexture6528DC);
|
||||
gDPTileSync(gDisplayListHead++);
|
||||
gDPSetTile(gDisplayListHead++, G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0x0000, G_TX_LOADTILE, 0, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMASK, G_TX_NOLOD, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMASK, G_TX_NOLOD);
|
||||
gDPSetTile(gDisplayListHead++, G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0x0000, G_TX_LOADTILE, 0,
|
||||
G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMASK, G_TX_NOLOD, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMASK,
|
||||
G_TX_NOLOD);
|
||||
gDPLoadSync(gDisplayListHead++);
|
||||
gDPLoadBlock(gDisplayListHead++, G_TX_LOADTILE, 0, 0, 1023, 256);
|
||||
gDPSetCombineMode(gDisplayListHead++, G_CC_MODULATEIA, G_CC_MODULATEIA);
|
||||
@@ -121,11 +132,14 @@ void render_collision(void) {
|
||||
case SNOW:
|
||||
gSPTexture(gDisplayListHead++, 0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON);
|
||||
gDPTileSync(gDisplayListHead++);
|
||||
gDPSetTile(gDisplayListHead++, G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0x0000, G_TX_RENDERTILE, 0, G_TX_NOMIRROR | G_TX_WRAP, 5, G_TX_NOLOD, G_TX_NOMIRROR | G_TX_WRAP, 5, G_TX_NOLOD);
|
||||
gDPSetTile(gDisplayListHead++, G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0x0000, G_TX_RENDERTILE, 0,
|
||||
G_TX_NOMIRROR | G_TX_WRAP, 5, G_TX_NOLOD, G_TX_NOMIRROR | G_TX_WRAP, 5, G_TX_NOLOD);
|
||||
gDPSetTileSize(gDisplayListHead++, G_TX_RENDERTILE, 0, 0, 0x007C, 0x007C);
|
||||
gDPSetTextureImage(gDisplayListHead++, G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, gTexture677F04);
|
||||
gDPTileSync(gDisplayListHead++);
|
||||
gDPSetTile(gDisplayListHead++, G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0x0000, G_TX_LOADTILE, 0, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMASK, G_TX_NOLOD, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMASK, G_TX_NOLOD);
|
||||
gDPSetTile(gDisplayListHead++, G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0x0000, G_TX_LOADTILE, 0,
|
||||
G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMASK, G_TX_NOLOD, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMASK,
|
||||
G_TX_NOLOD);
|
||||
gDPLoadSync(gDisplayListHead++);
|
||||
gDPLoadBlock(gDisplayListHead++, G_TX_LOADTILE, 0, 0, 1023, 256);
|
||||
gDPSetCombineMode(gDisplayListHead++, G_CC_MODULATEIA, G_CC_MODULATEIA);
|
||||
@@ -134,11 +148,14 @@ void render_collision(void) {
|
||||
case SAND_OFFROAD:
|
||||
gSPTexture(gDisplayListHead++, 0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON);
|
||||
gDPTileSync(gDisplayListHead++);
|
||||
gDPSetTile(gDisplayListHead++, G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0x0000, G_TX_RENDERTILE, 0, G_TX_NOMIRROR | G_TX_WRAP, 5, G_TX_NOLOD, G_TX_NOMIRROR | G_TX_WRAP, 5, G_TX_NOLOD);
|
||||
gDPSetTile(gDisplayListHead++, G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0x0000, G_TX_RENDERTILE, 0,
|
||||
G_TX_NOMIRROR | G_TX_WRAP, 5, G_TX_NOLOD, G_TX_NOMIRROR | G_TX_WRAP, 5, G_TX_NOLOD);
|
||||
gDPSetTileSize(gDisplayListHead++, G_TX_RENDERTILE, 0, 0, 0x007C, 0x007C);
|
||||
gDPSetTextureImage(gDisplayListHead++, G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, gTexture67B9B0);
|
||||
gDPTileSync(gDisplayListHead++);
|
||||
gDPSetTile(gDisplayListHead++, G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0x0000, G_TX_LOADTILE, 0, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMASK, G_TX_NOLOD, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMASK, G_TX_NOLOD);
|
||||
gDPSetTile(gDisplayListHead++, G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0x0000, G_TX_LOADTILE, 0,
|
||||
G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMASK, G_TX_NOLOD, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMASK,
|
||||
G_TX_NOLOD);
|
||||
gDPLoadSync(gDisplayListHead++);
|
||||
gDPLoadBlock(gDisplayListHead++, G_TX_LOADTILE, 0, 0, 1023, 256);
|
||||
gDPSetCombineMode(gDisplayListHead++, G_CC_MODULATEIA, G_CC_MODULATEIA);
|
||||
@@ -148,17 +165,19 @@ void render_collision(void) {
|
||||
|
||||
gSPTexture(gDisplayListHead++, 0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON);
|
||||
gDPTileSync(gDisplayListHead++);
|
||||
gDPSetTile(gDisplayListHead++, G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0x0000, G_TX_RENDERTILE, 0, G_TX_NOMIRROR | G_TX_WRAP, 5, G_TX_NOLOD, G_TX_NOMIRROR | G_TX_WRAP, 5, G_TX_NOLOD);
|
||||
gDPSetTile(gDisplayListHead++, G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0x0000, G_TX_RENDERTILE, 0,
|
||||
G_TX_NOMIRROR | G_TX_WRAP, 5, G_TX_NOLOD, G_TX_NOMIRROR | G_TX_WRAP, 5, G_TX_NOLOD);
|
||||
gDPSetTileSize(gDisplayListHead++, G_TX_RENDERTILE, 0, 0, 0x007C, 0x007C);
|
||||
gDPSetTextureImage(gDisplayListHead++, G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, gTextureGrass1);
|
||||
gDPTileSync(gDisplayListHead++);
|
||||
gDPSetTile(gDisplayListHead++, G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0x0000, G_TX_LOADTILE, 0, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMASK, G_TX_NOLOD, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMASK, G_TX_NOLOD);
|
||||
gDPSetTile(gDisplayListHead++, G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0x0000, G_TX_LOADTILE, 0,
|
||||
G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMASK, G_TX_NOLOD, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMASK,
|
||||
G_TX_NOLOD);
|
||||
gDPLoadSync(gDisplayListHead++);
|
||||
gDPLoadBlock(gDisplayListHead++, G_TX_LOADTILE, 0, 0, 1023, 256);
|
||||
gDPSetCombineMode(gDisplayListHead++, G_CC_MODULATEIA, G_CC_MODULATEIA);
|
||||
gDPSetRenderMode(gDisplayListHead++, G_RM_AA_ZB_XLU_INTER, G_RM_NOOP2);
|
||||
|
||||
|
||||
// gCollisionMesh[i].vtx1->v.cn[0] = 50;
|
||||
// gCollisionMesh[i].vtx1->v.cn[1] = 180;
|
||||
// gCollisionMesh[i].vtx1->v.cn[2] = 50;
|
||||
@@ -172,11 +191,14 @@ void render_collision(void) {
|
||||
case ICE:
|
||||
gSPTexture(gDisplayListHead++, 0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON);
|
||||
gDPTileSync(gDisplayListHead++);
|
||||
gDPSetTile(gDisplayListHead++, G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0x0000, G_TX_RENDERTILE, 0, G_TX_NOMIRROR | G_TX_WRAP, 5, G_TX_NOLOD, G_TX_NOMIRROR | G_TX_WRAP, 5, G_TX_NOLOD);
|
||||
gDPSetTile(gDisplayListHead++, G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0x0000, G_TX_RENDERTILE, 0,
|
||||
G_TX_NOMIRROR | G_TX_WRAP, 5, G_TX_NOLOD, G_TX_NOMIRROR | G_TX_WRAP, 5, G_TX_NOLOD);
|
||||
gDPSetTileSize(gDisplayListHead++, G_TX_RENDERTILE, 0, 0, 0x007C, 0x007C);
|
||||
gDPSetTextureImage(gDisplayListHead++, G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, gTexture643B3C);
|
||||
gDPTileSync(gDisplayListHead++);
|
||||
gDPSetTile(gDisplayListHead++, G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0x0000, G_TX_LOADTILE, 0, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMASK, G_TX_NOLOD, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMASK, G_TX_NOLOD);
|
||||
gDPSetTile(gDisplayListHead++, G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0x0000, G_TX_LOADTILE, 0,
|
||||
G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMASK, G_TX_NOLOD, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMASK,
|
||||
G_TX_NOLOD);
|
||||
gDPLoadSync(gDisplayListHead++);
|
||||
gDPLoadBlock(gDisplayListHead++, G_TX_LOADTILE, 0, 0, 1023, 256);
|
||||
gDPSetCombineMode(gDisplayListHead++, G_CC_MODULATEIA, G_CC_MODULATEIA);
|
||||
@@ -185,54 +207,61 @@ void render_collision(void) {
|
||||
case WET_SAND:
|
||||
// gSPTexture(gDisplayListHead++, 0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON);
|
||||
// gDPTileSync(gDisplayListHead++);
|
||||
// gDPSetTile(gDisplayListHead++, G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0x0000, G_TX_RENDERTILE, 0, G_TX_NOMIRROR | G_TX_CLAMP, 6, G_TX_NOLOD, G_TX_NOMIRROR | G_TX_WRAP, 5, G_TX_NOLOD);
|
||||
// gDPSetTile(gDisplayListHead++, G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0x0000, G_TX_RENDERTILE, 0,
|
||||
// G_TX_NOMIRROR | G_TX_CLAMP, 6, G_TX_NOLOD, G_TX_NOMIRROR | G_TX_WRAP, 5, G_TX_NOLOD);
|
||||
// gDPSetTileSize(gDisplayListHead++, G_TX_RENDERTILE, 0, 0, 0x007C, 0x00FC);
|
||||
// gDPSetTextureImage(gDisplayListHead++, G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, gTexture66DD38);
|
||||
// gDPTileSync(gDisplayListHead++);
|
||||
// gDPSetTile(gDisplayListHead++, G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0x0000, G_TX_LOADTILE, 0, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMASK, G_TX_NOLOD, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMASK, G_TX_NOLOD);
|
||||
// gDPLoadSync(gDisplayListHead++);
|
||||
// gDPLoadBlock(gDisplayListHead++, G_TX_LOADTILE, 0, 0, 1023, 256);
|
||||
// gDPSetCombineMode(gDisplayListHead++, G_CC_MODULATEIA, G_CC_MODULATEIA);
|
||||
// gDPSetTile(gDisplayListHead++, G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0x0000, G_TX_LOADTILE, 0,
|
||||
// G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMASK, G_TX_NOLOD, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMASK,
|
||||
// G_TX_NOLOD); gDPLoadSync(gDisplayListHead++); gDPLoadBlock(gDisplayListHead++, G_TX_LOADTILE, 0, 0,
|
||||
// 1023, 256); gDPSetCombineMode(gDisplayListHead++, G_CC_MODULATEIA, G_CC_MODULATEIA);
|
||||
// gDPSetRenderMode(gDisplayListHead++, G_RM_AA_ZB_XLU_INTER, G_RM_NOOP2);
|
||||
break;
|
||||
case SNOW_OFFROAD:
|
||||
gCollisionMesh[i].vtx1->v.cn[0] = 80;
|
||||
gCollisionMesh[i].vtx1->v.cn[1] = 80;
|
||||
gCollisionMesh[i].vtx1->v.cn[2] = 80;
|
||||
gCollisionMesh[i].vtx2->v.cn[0] = 80;
|
||||
gCollisionMesh[i].vtx2->v.cn[1] = 80;
|
||||
gCollisionMesh[i].vtx2->v.cn[2] = 80;
|
||||
gCollisionMesh[i].vtx3->v.cn[0] = 80;
|
||||
gCollisionMesh[i].vtx3->v.cn[1] = 80;
|
||||
gCollisionMesh[i].vtx3->v.cn[2] = 80;
|
||||
break;
|
||||
case CLIFF:
|
||||
break;
|
||||
case DIRT_OFFROAD:
|
||||
break;
|
||||
case TRAIN_TRACK: // gTextureRailroadTrack
|
||||
gSPTexture(gDisplayListHead++, 0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON);
|
||||
gDPTileSync(gDisplayListHead++);
|
||||
gDPSetTile(gDisplayListHead++, G_IM_FMT_RGBA, G_IM_SIZ_16b, 16, 0x0000, G_TX_RENDERTILE, 0, G_TX_NOMIRROR | G_TX_WRAP, 5, G_TX_NOLOD, G_TX_NOMIRROR | G_TX_WRAP, 6, G_TX_NOLOD);
|
||||
gDPSetTileSize(gDisplayListHead++, G_TX_RENDERTILE, 0, 0, 0x00FC, 0x007C);
|
||||
gDPSetTextureImage(gDisplayListHead++, G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, gTextureRailroadTrack);
|
||||
gDPTileSync(gDisplayListHead++);
|
||||
gDPSetTile(gDisplayListHead++, G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0x0000, G_TX_LOADTILE, 0, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMASK, G_TX_NOLOD, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMASK, G_TX_NOLOD);
|
||||
gDPLoadSync(gDisplayListHead++);
|
||||
gDPLoadBlock(gDisplayListHead++, G_TX_LOADTILE, 0, 0, 2047, 128);
|
||||
gDPSetCombineMode(gDisplayListHead++, G_CC_MODULATEIA, G_CC_MODULATEIA);
|
||||
gDPSetRenderMode(gDisplayListHead++, G_RM_AA_ZB_XLU_INTER, G_RM_NOOP2);
|
||||
break;
|
||||
case CAVE:
|
||||
break;
|
||||
case SNOW_OFFROAD:
|
||||
gCollisionMesh[i].vtx1->v.cn[0] = 80;
|
||||
gCollisionMesh[i].vtx1->v.cn[1] = 80;
|
||||
gCollisionMesh[i].vtx1->v.cn[2] = 80;
|
||||
gCollisionMesh[i].vtx2->v.cn[0] = 80;
|
||||
gCollisionMesh[i].vtx2->v.cn[1] = 80;
|
||||
gCollisionMesh[i].vtx2->v.cn[2] = 80;
|
||||
gCollisionMesh[i].vtx3->v.cn[0] = 80;
|
||||
gCollisionMesh[i].vtx3->v.cn[1] = 80;
|
||||
gCollisionMesh[i].vtx3->v.cn[2] = 80;
|
||||
break;
|
||||
case CLIFF:
|
||||
break;
|
||||
case DIRT_OFFROAD:
|
||||
break;
|
||||
case TRAIN_TRACK: // gTextureRailroadTrack
|
||||
gSPTexture(gDisplayListHead++, 0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON);
|
||||
gDPTileSync(gDisplayListHead++);
|
||||
gDPSetTile(gDisplayListHead++, G_IM_FMT_RGBA, G_IM_SIZ_16b, 16, 0x0000, G_TX_RENDERTILE, 0,
|
||||
G_TX_NOMIRROR | G_TX_WRAP, 5, G_TX_NOLOD, G_TX_NOMIRROR | G_TX_WRAP, 6, G_TX_NOLOD);
|
||||
gDPSetTileSize(gDisplayListHead++, G_TX_RENDERTILE, 0, 0, 0x00FC, 0x007C);
|
||||
gDPSetTextureImage(gDisplayListHead++, G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, gTextureRailroadTrack);
|
||||
gDPTileSync(gDisplayListHead++);
|
||||
gDPSetTile(gDisplayListHead++, G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0x0000, G_TX_LOADTILE, 0,
|
||||
G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMASK, G_TX_NOLOD, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMASK,
|
||||
G_TX_NOLOD);
|
||||
gDPLoadSync(gDisplayListHead++);
|
||||
gDPLoadBlock(gDisplayListHead++, G_TX_LOADTILE, 0, 0, 2047, 128);
|
||||
gDPSetCombineMode(gDisplayListHead++, G_CC_MODULATEIA, G_CC_MODULATEIA);
|
||||
gDPSetRenderMode(gDisplayListHead++, G_RM_AA_ZB_XLU_INTER, G_RM_NOOP2);
|
||||
break;
|
||||
case CAVE:
|
||||
break;
|
||||
case OUT_OF_BOUNDS:
|
||||
gSPTexture(gDisplayListHead++, 0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON);
|
||||
gDPTileSync(gDisplayListHead++);
|
||||
gDPSetTile(gDisplayListHead++, G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0x0000, G_TX_RENDERTILE, 0, G_TX_NOMIRROR | G_TX_WRAP, 5, G_TX_NOLOD, G_TX_NOMIRROR | G_TX_WRAP, 5, G_TX_NOLOD);
|
||||
gDPSetTile(gDisplayListHead++, G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0x0000, G_TX_RENDERTILE, 0,
|
||||
G_TX_NOMIRROR | G_TX_WRAP, 5, G_TX_NOLOD, G_TX_NOMIRROR | G_TX_WRAP, 5, G_TX_NOLOD);
|
||||
gDPSetTileSize(gDisplayListHead++, G_TX_RENDERTILE, 0, 0, 0x007C, 0x007C);
|
||||
gDPSetTextureImage(gDisplayListHead++, G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, gTexture64313C);
|
||||
gDPTileSync(gDisplayListHead++);
|
||||
gDPSetTile(gDisplayListHead++, G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0x0000, G_TX_LOADTILE, 0, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMASK, G_TX_NOLOD, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMASK, G_TX_NOLOD);
|
||||
gDPSetTile(gDisplayListHead++, G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0x0000, G_TX_LOADTILE, 0,
|
||||
G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMASK, G_TX_NOLOD, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMASK,
|
||||
G_TX_NOLOD);
|
||||
gDPLoadSync(gDisplayListHead++);
|
||||
gDPLoadBlock(gDisplayListHead++, G_TX_LOADTILE, 0, 0, 1023, 256);
|
||||
gDPSetCombineMode(gDisplayListHead++, G_CC_MODULATEIA, G_CC_MODULATEIA);
|
||||
@@ -265,11 +294,14 @@ void render_collision(void) {
|
||||
case BRIDGE:
|
||||
gSPTexture(gDisplayListHead++, 0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_ON);
|
||||
gDPTileSync(gDisplayListHead++);
|
||||
gDPSetTile(gDisplayListHead++, G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0x0000, G_TX_RENDERTILE, 0, G_TX_NOMIRROR | G_TX_WRAP, 5, G_TX_NOLOD, G_TX_NOMIRROR | G_TX_WRAP, 5, G_TX_NOLOD);
|
||||
gDPSetTile(gDisplayListHead++, G_IM_FMT_RGBA, G_IM_SIZ_16b, 8, 0x0000, G_TX_RENDERTILE, 0,
|
||||
G_TX_NOMIRROR | G_TX_WRAP, 5, G_TX_NOLOD, G_TX_NOMIRROR | G_TX_WRAP, 5, G_TX_NOLOD);
|
||||
gDPSetTileSize(gDisplayListHead++, G_TX_RENDERTILE, 0, 0, 0x007C, 0x007C);
|
||||
gDPSetTextureImage(gDisplayListHead++, G_IM_FMT_RGBA, G_IM_SIZ_16b, 1, gTexture676FB0);
|
||||
gDPTileSync(gDisplayListHead++);
|
||||
gDPSetTile(gDisplayListHead++, G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0x0000, G_TX_LOADTILE, 0, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMASK, G_TX_NOLOD, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMASK, G_TX_NOLOD);
|
||||
gDPSetTile(gDisplayListHead++, G_IM_FMT_RGBA, G_IM_SIZ_16b, 0, 0x0000, G_TX_LOADTILE, 0,
|
||||
G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMASK, G_TX_NOLOD, G_TX_NOMIRROR | G_TX_WRAP, G_TX_NOMASK,
|
||||
G_TX_NOLOD);
|
||||
gDPLoadSync(gDisplayListHead++);
|
||||
gDPLoadBlock(gDisplayListHead++, G_TX_LOADTILE, 0, 0, 1023, 256);
|
||||
gDPSetCombineMode(gDisplayListHead++, G_CC_MODULATEIA, G_CC_MODULATEIA);
|
||||
@@ -294,4 +326,4 @@ void render_collision(void) {
|
||||
gSP1Triangle(gDisplayListHead++, 0, 1, 2, 0);
|
||||
gSPTexture(gDisplayListHead++, 0xFFFF, 0xFFFF, 0, G_TX_RENDERTILE, G_OFF);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -5,5 +5,4 @@
|
||||
|
||||
void render_collision(void);
|
||||
|
||||
|
||||
#endif // COLLISION_VIEWER_H
|
||||
|
||||
@@ -13,6 +13,9 @@
|
||||
#include <SDL2/SDL.h>
|
||||
#include "freecam_engine.h"
|
||||
#include "n64_freecam.h"
|
||||
#include "math_util.h"
|
||||
#include "skybox_and_splitscreen.h"
|
||||
#include "freecam.h"
|
||||
|
||||
typedef struct {
|
||||
Vec3f pos;
|
||||
@@ -40,10 +43,6 @@ u32 gFreecamControllerType = 0;
|
||||
// void freecam_n64_controller_manager(Camera *camera, struct Controller *controller, Player *player);
|
||||
// void freecam_target_player(Camera *camera, u32 playerIndex);
|
||||
// void freecam_move_camera_up(Camera* camera, struct Controller *controller, f32 distance);
|
||||
void freecam_save_state(Camera *camera);
|
||||
void freecam_load_state(Camera *camera);
|
||||
void freecam_mouse_manager(Camera *camera);
|
||||
void freecam_keyboard_manager(Camera* camera, Vec3f forwardVector);
|
||||
|
||||
/**
|
||||
* Controls
|
||||
@@ -67,10 +66,10 @@ void freecam_keyboard_manager(Camera* camera, Vec3f forwardVector);
|
||||
* Camera mode 1: Enter freecam at the player's position
|
||||
* Camera mode 2: Enter freecam at previous freecam spot
|
||||
*
|
||||
*/
|
||||
*/
|
||||
|
||||
void freecam(Camera *camera, Player *player, s8 index) {
|
||||
struct Controller *controller = &gControllers[0];
|
||||
void freecam(Camera* camera, Player* player, s8 index) {
|
||||
struct Controller* controller = &gControllers[0];
|
||||
f32 dirX;
|
||||
f32 dirY;
|
||||
f32 dirZ;
|
||||
@@ -101,7 +100,7 @@ void freecam(Camera *camera, Player *player, s8 index) {
|
||||
|
||||
return;
|
||||
} else {
|
||||
if(fMode) {
|
||||
if (fMode) {
|
||||
freecam_save_state(camera);
|
||||
}
|
||||
}
|
||||
@@ -114,14 +113,13 @@ void freecam(Camera *camera, Player *player, s8 index) {
|
||||
return;
|
||||
}
|
||||
|
||||
//if (player == gPlayerOne) { return; }
|
||||
// if (player == gPlayerOne) { return; }
|
||||
|
||||
//player->type &= ~PLAYER_HUMAN;
|
||||
//player->type |= PLAYER_HUMAN;
|
||||
// player->type &= ~PLAYER_HUMAN;
|
||||
// player->type |= PLAYER_HUMAN;
|
||||
|
||||
// if ((player->type & PLAYER_START_SEQUENCE)) { return; }
|
||||
|
||||
|
||||
// Mouse/Keyboard
|
||||
if (gFreecamControllerType == 0) {
|
||||
freecam_calculate_forward_vector_allow_rotation(camera, freeCam.forwardVector);
|
||||
@@ -135,7 +133,7 @@ void freecam(Camera *camera, Player *player, s8 index) {
|
||||
}
|
||||
}
|
||||
|
||||
void freecam_save_state(Camera *camera) {
|
||||
void freecam_save_state(Camera* camera) {
|
||||
fState.pos[0] = camera->pos[0];
|
||||
fState.pos[1] = camera->pos[1];
|
||||
fState.pos[2] = camera->pos[2];
|
||||
@@ -150,7 +148,7 @@ void freecam_save_state(Camera *camera) {
|
||||
fModeInit = true;
|
||||
}
|
||||
|
||||
void freecam_load_state(Camera *camera) {
|
||||
void freecam_load_state(Camera* camera) {
|
||||
camera->pos[0] = fState.pos[0];
|
||||
camera->pos[1] = fState.pos[1];
|
||||
camera->pos[2] = fState.pos[2];
|
||||
@@ -182,22 +180,23 @@ void freecam_mouse_manager(Camera* camera, Vec3f forwardVector) {
|
||||
f32 pitchChange = mouseY * MOUSE_SENSITIVITY_Y;
|
||||
|
||||
// Smoothly update yaw and pitch
|
||||
camera->rot[1] += (short)(yawChange * 65535.0f / (2 * M_PI)); // Yaw (left/right)
|
||||
camera->rot[2] += (short)(pitchChange * 65535.0f / (2 * M_PI)); // Pitch (up/down)
|
||||
camera->rot[1] += (short) (yawChange * 65535.0f / (2 * M_PI)); // Yaw (left/right)
|
||||
camera->rot[2] += (short) (pitchChange * 65535.0f / (2 * M_PI)); // Pitch (up/down)
|
||||
|
||||
// Clamp pitch to avoid extreme values
|
||||
if (camera->rot[2] > 15999) camera->rot[2] = 15999;
|
||||
if (camera->rot[2] < -15999) camera->rot[2] = -15999;
|
||||
if (camera->rot[2] > 15999) {
|
||||
camera->rot[2] = 15999;
|
||||
}
|
||||
if (camera->rot[2] < -15999) {
|
||||
camera->rot[2] = -15999;
|
||||
}
|
||||
|
||||
// Calculate the forward vector based on the new yaw and pitch
|
||||
//freecam_calculate_forward_vector_allow_rotation(camera, forwardVector);
|
||||
// freecam_calculate_forward_vector_allow_rotation(camera, forwardVector);
|
||||
|
||||
// Smoothly interpolate the lookAt position
|
||||
Vec3f targetLookAt = {
|
||||
camera->pos[0] + forwardVector[0],
|
||||
camera->pos[1] + forwardVector[1],
|
||||
camera->pos[2] + forwardVector[2]
|
||||
};
|
||||
Vec3f targetLookAt = { camera->pos[0] + forwardVector[0], camera->pos[1] + forwardVector[1],
|
||||
camera->pos[2] + forwardVector[2] };
|
||||
|
||||
// Smoothing
|
||||
camera->lookAt[0] += (targetLookAt[0] - camera->lookAt[0]) * gFreecamRotateSmoothingFactor;
|
||||
@@ -206,7 +205,6 @@ void freecam_mouse_manager(Camera* camera, Vec3f forwardVector) {
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
f32 gFreecamSpeed = 3.0f;
|
||||
f32 gFreecamSpeedMultiplier = 2.0f;
|
||||
|
||||
@@ -220,8 +218,7 @@ void freecam_keyboard_manager(Camera* camera, Vec3f forwardVector) {
|
||||
}
|
||||
|
||||
// Determine movement direction based on keys pressed
|
||||
Vec3f totalMove = {0.0f, 0.0f, 0.0f};
|
||||
|
||||
Vec3f totalMove = { 0.0f, 0.0f, 0.0f };
|
||||
|
||||
// if (keystate[SDL_SCANCODE_F]) {
|
||||
// fMode = true;
|
||||
@@ -257,7 +254,6 @@ void freecam_keyboard_manager(Camera* camera, Vec3f forwardVector) {
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
if (keystate[SDL_SCANCODE_W]) {
|
||||
totalMove[0] += forwardVector[0] * moveSpeed;
|
||||
totalMove[2] += forwardVector[2] * moveSpeed;
|
||||
@@ -290,7 +286,7 @@ void freecam_keyboard_manager(Camera* camera, Vec3f forwardVector) {
|
||||
}
|
||||
|
||||
// Control the camera using the n64 controller
|
||||
void freecam_n64_controller_manager(Camera *camera, struct Controller *controller, Player *player) {
|
||||
void freecam_n64_controller_manager(Camera* camera, struct Controller* controller, Player* player) {
|
||||
|
||||
if (controller->buttonPressed & U_JPAD) {
|
||||
fMode = !fMode;
|
||||
@@ -334,12 +330,12 @@ void freecam_n64_controller_manager(Camera *camera, struct Controller *controlle
|
||||
}
|
||||
|
||||
// Forward
|
||||
if (controller->button & A_BUTTON) {
|
||||
if (controller->button & A_BUTTON) {
|
||||
freecam_n64_move_camera_forward(camera, controller, 3.0f);
|
||||
}
|
||||
|
||||
// Backward B button but not A button.
|
||||
if (controller->button & B_BUTTON && !(controller->button & A_BUTTON)) {
|
||||
if (controller->button & B_BUTTON && !(controller->button & A_BUTTON)) {
|
||||
freecam_n64_move_camera_forward(camera, controller, -3.0f);
|
||||
}
|
||||
|
||||
@@ -354,21 +350,22 @@ void freecam_n64_controller_manager(Camera *camera, struct Controller *controlle
|
||||
}
|
||||
|
||||
void freecam_render_setup(void) {
|
||||
u16 perspNorm;
|
||||
Mat4 matrix;
|
||||
init_rdp();
|
||||
func_802A53A4();
|
||||
init_rdp();
|
||||
func_80057FC4(0);
|
||||
gSPSetGeometryMode(gDisplayListHead++, G_ZBUFFER | G_SHADE | G_SHADING_SMOOTH);
|
||||
gSPClearGeometryMode(gDisplayListHead++, G_CULL_BACK | G_CULL_BOTH | G_CULL_FRONT);
|
||||
guPerspective(&gGfxPool->mtxPersp[0], &perspNorm, gCameraZoom[0], gScreenAspect, D_80150150, D_8015014C, 1.0f);
|
||||
gSPPerspNormalize(gDisplayListHead++, perspNorm);
|
||||
gSPMatrix(gDisplayListHead++, (&gGfxPool->mtxPersp[0]), G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_PROJECTION);
|
||||
guLookAt(&gGfxPool->mtxLookAt[0], camera1->pos[0], camera1->pos[1], camera1->pos[2], camera1->lookAt[0], camera1->lookAt[1], camera1->lookAt[2], camera1->up[0], camera1->up[1], camera1->up[2]);
|
||||
gSPMatrix(gDisplayListHead++, (&gGfxPool->mtxLookAt[0]), G_MTX_NOPUSH | G_MTX_MUL | G_MTX_PROJECTION);
|
||||
mtxf_identity(matrix);
|
||||
gSPSetGeometryMode(gDisplayListHead++, G_CULL_BACK);
|
||||
render_set_position(matrix, 0);
|
||||
init_rdp();
|
||||
u16 perspNorm;
|
||||
Mat4 matrix;
|
||||
init_rdp();
|
||||
func_802A53A4();
|
||||
init_rdp();
|
||||
func_80057FC4(0);
|
||||
gSPSetGeometryMode(gDisplayListHead++, G_ZBUFFER | G_SHADE | G_SHADING_SMOOTH);
|
||||
gSPClearGeometryMode(gDisplayListHead++, G_CULL_BACK | G_CULL_BOTH | G_CULL_FRONT);
|
||||
guPerspective(&gGfxPool->mtxPersp[0], &perspNorm, gCameraZoom[0], gScreenAspect, D_80150150, D_8015014C, 1.0f);
|
||||
gSPPerspNormalize(gDisplayListHead++, perspNorm);
|
||||
gSPMatrix(gDisplayListHead++, (&gGfxPool->mtxPersp[0]), G_MTX_NOPUSH | G_MTX_LOAD | G_MTX_PROJECTION);
|
||||
guLookAt(&gGfxPool->mtxLookAt[0], camera1->pos[0], camera1->pos[1], camera1->pos[2], camera1->lookAt[0],
|
||||
camera1->lookAt[1], camera1->lookAt[2], camera1->up[0], camera1->up[1], camera1->up[2]);
|
||||
gSPMatrix(gDisplayListHead++, (&gGfxPool->mtxLookAt[0]), G_MTX_NOPUSH | G_MTX_MUL | G_MTX_PROJECTION);
|
||||
mtxf_identity(matrix);
|
||||
gSPSetGeometryMode(gDisplayListHead++, G_CULL_BACK);
|
||||
render_set_position(matrix, 0);
|
||||
init_rdp();
|
||||
}
|
||||
|
||||
@@ -10,6 +10,10 @@ extern "C" {
|
||||
|
||||
void freecam(Camera*, Player*, s8);
|
||||
void freecam_render_setup(void);
|
||||
void freecam_save_state(Camera*);
|
||||
void freecam_load_state(Camera*);
|
||||
void freecam_mouse_manager(Camera*, Vec3f);
|
||||
void freecam_keyboard_manager(Camera*, Vec3f);
|
||||
|
||||
extern f32 gFreecamSpeed;
|
||||
extern f32 gFreecamSpeedMultiplier;
|
||||
|
||||
@@ -17,7 +17,7 @@ FreeCam freeCam;
|
||||
|
||||
f32 gDampValue = 0.99f;
|
||||
|
||||
void freecam_update(Camera *camera, Vec3f forwardVector) {
|
||||
void freecam_update(Camera* camera, Vec3f forwardVector) {
|
||||
// Update FreeCam state
|
||||
camera->pos[0] += freeCam.velocity[0] * gDeltaTime;
|
||||
camera->pos[1] += freeCam.velocity[1] * gDeltaTime;
|
||||
@@ -34,10 +34,10 @@ void freecam_update(Camera *camera, Vec3f forwardVector) {
|
||||
}
|
||||
|
||||
// Function to move the camera forward or backward without changing its height
|
||||
void freecam_move_camera_forward(Camera *camera, f32 moveSpeed, Vec3f forwardVector) {
|
||||
void freecam_move_camera_forward(Camera* camera, f32 moveSpeed, Vec3f forwardVector) {
|
||||
// Calculate the forward vector
|
||||
forwardVector[0] = camera->lookAt[0] - camera->pos[0];
|
||||
//forwardVector[1] = 0; // Don't change the height
|
||||
// forwardVector[1] = 0; // Don't change the height
|
||||
forwardVector[2] = camera->lookAt[2] - camera->pos[2];
|
||||
|
||||
// Normalize the forward vector
|
||||
@@ -53,17 +53,15 @@ void freecam_move_camera_forward(Camera *camera, f32 moveSpeed, Vec3f forwardVec
|
||||
|
||||
camera->lookAt[0] = camera->pos[0] + forwardVector[0];
|
||||
camera->lookAt[2] = camera->pos[0] + forwardVector[2];
|
||||
|
||||
}
|
||||
|
||||
|
||||
void freecam_pan_camera(Camera *camera, f32 moveSpeed) {
|
||||
void freecam_pan_camera(Camera* camera, f32 moveSpeed) {
|
||||
Vec3f rightVector;
|
||||
f32 length;
|
||||
|
||||
// Calculate the right vector for pan movement
|
||||
rightVector[0] = camera->lookAt[2] - camera->pos[2];
|
||||
// rightVector[1] = 0; // Maintain the same height
|
||||
// rightVector[1] = 0; // Maintain the same height
|
||||
rightVector[2] = -(camera->lookAt[0] - camera->pos[0]);
|
||||
|
||||
// Normalize the right vector
|
||||
@@ -76,12 +74,8 @@ void freecam_pan_camera(Camera *camera, f32 moveSpeed) {
|
||||
// Update camera's position
|
||||
freeCam.velocity[0] = rightVector[0] * moveSpeed;
|
||||
freeCam.velocity[2] = rightVector[2] * moveSpeed;
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
void freecam_calculate_forward_vector_allow_rotation(Camera* camera, Vec3f forwardVector) {
|
||||
// Convert yaw from 0-65535 to degrees
|
||||
f32 pitch = (camera->rot[2] / 65535.0f) * 360.0f;
|
||||
@@ -93,16 +87,16 @@ void freecam_calculate_forward_vector_allow_rotation(Camera* camera, Vec3f forwa
|
||||
|
||||
// Calculate the forward vector based on yaw, ignoring pitch to keep height unchanged
|
||||
forwardVector[0] = -sinf(yaw);
|
||||
forwardVector[1] = -sinf(pitch); // Keep the height unchanged
|
||||
forwardVector[1] = -sinf(pitch); // Keep the height unchanged
|
||||
forwardVector[2] = cosf(yaw);
|
||||
}
|
||||
|
||||
// Calculates the forward direction vector based on camera orientation
|
||||
void freecam_calculate_forward_vector(Camera *camera, Vec3f forwardVector) {
|
||||
void freecam_calculate_forward_vector(Camera* camera, Vec3f forwardVector) {
|
||||
// Convert yaw from 0-65535 to degrees
|
||||
f32 yaw = (camera->rot[0] / 65535.0f) * 360.0f;
|
||||
f32 pitch = (camera->rot[2] / 65535.0f) * 360.0f;
|
||||
|
||||
|
||||
// Convert degrees to radians
|
||||
yaw = yaw * M_PI / 180.0f;
|
||||
pitch = pitch * M_PI / 180.0f;
|
||||
@@ -125,9 +119,9 @@ void freecam_move_camera_down(Camera* camera, f32 distance) {
|
||||
camera->lookAt[1] += distance;
|
||||
}
|
||||
|
||||
void freecam_target_player(Camera *camera, u32 playerIndex) {
|
||||
Vec3f forwardVector;// = 2.0f;
|
||||
Player *player = &gPlayers[playerIndex];
|
||||
void freecam_target_player(Camera* camera, u32 playerIndex) {
|
||||
Vec3f forwardVector; // = 2.0f;
|
||||
Player* player = &gPlayers[playerIndex];
|
||||
|
||||
// Calculate the direction from the player to the camera
|
||||
f32 dirX = player->pos[0] - camera->pos[0];
|
||||
|
||||
@@ -20,12 +20,12 @@ typedef struct {
|
||||
extern FreeCam freeCam;
|
||||
extern f32 gDampValue;
|
||||
|
||||
//void update_camera(Camera *camera, f32 deltaTime);
|
||||
void freecam_pan_camera(Camera *camera, f32 moveSpeed);
|
||||
// void update_camera(Camera *camera, f32 deltaTime);
|
||||
void freecam_pan_camera(Camera* camera, f32 moveSpeed);
|
||||
void freecam_calculate_forward_vector_allow_rotation(Camera* camera, Vec3f forwardVector);
|
||||
void freecam_calculate_forward_vector(Camera* camera, Vec3f forwardVector);
|
||||
void freecam_move_camera_forward(Camera* camera, f32 distance, Vec3f forwardVector);
|
||||
void freecam_target_player(Camera *camera, u32 playerIndex);
|
||||
void freecam_target_player(Camera* camera, u32 playerIndex);
|
||||
void freecam_update(Camera* camera, Vec3f forwardVector);
|
||||
void freecam_move_camera_up(Camera* camera, f32);
|
||||
void freecam_move_camera_down(Camera* camera, f32);
|
||||
@@ -36,4 +36,4 @@ extern f32 gDampValue;
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif // FREE_CAM_ENGINE_H
|
||||
#endif // FREE_CAM_ENGINE_H
|
||||
|
||||
@@ -7,6 +7,8 @@
|
||||
#include "camera.h"
|
||||
#include <common_structs.h>
|
||||
#include "player_controller.h"
|
||||
#include "collision.h"
|
||||
#include "freecam_engine.h"
|
||||
|
||||
#define N64_SENSITIVITY_X 0.0003f
|
||||
#define N64_SENSITIVITY_Y 0.0003f
|
||||
@@ -26,7 +28,7 @@ void freecam_n64_calculate_forward_vector(Camera* camera, Vec3f forwardVector) {
|
||||
}
|
||||
|
||||
// Function to move the camera forward
|
||||
void freecam_n64_move_camera_forward(Camera* camera, struct Controller *controller, f32 distance) {
|
||||
void freecam_n64_move_camera_forward(Camera* camera, struct Controller* controller, f32 distance) {
|
||||
Vec3f forwardVector;
|
||||
Vec3f rightVector;
|
||||
f32 length;
|
||||
@@ -37,7 +39,8 @@ void freecam_n64_move_camera_forward(Camera* camera, struct Controller *controll
|
||||
}
|
||||
|
||||
// Normalize the forward vector
|
||||
length = sqrtf(forwardVector[0] * forwardVector[0] + forwardVector[1] * forwardVector[1] + forwardVector[2] * forwardVector[2]);
|
||||
length = sqrtf(forwardVector[0] * forwardVector[0] + forwardVector[1] * forwardVector[1] +
|
||||
forwardVector[2] * forwardVector[2]);
|
||||
forwardVector[0] /= length;
|
||||
forwardVector[1] /= length;
|
||||
forwardVector[2] /= length;
|
||||
@@ -59,7 +62,7 @@ void freecam_n64_move_camera_forward(Camera* camera, struct Controller *controll
|
||||
}
|
||||
|
||||
// Function to move the camera forward
|
||||
void freecam_n64_move_camera_up(Camera* camera, struct Controller *controller, f32 distance) {
|
||||
void freecam_n64_move_camera_up(Camera* camera, struct Controller* controller, f32 distance) {
|
||||
// Check if the Z button is pressed (for faster movement)
|
||||
if (controller->button & Z_TRIG) {
|
||||
distance *= 3;
|
||||
@@ -73,7 +76,7 @@ void freecam_n64_move_camera_up(Camera* camera, struct Controller *controller, f
|
||||
}
|
||||
|
||||
// Update camera rotation and lookAt point based on input
|
||||
void freecam_n64_update(Camera* camera, struct Controller *controller) {
|
||||
void freecam_n64_update(Camera* camera, struct Controller* controller) {
|
||||
// Calculate yaw (horizontal movement)
|
||||
f32 yawChange = controller->rawStickX * N64_SENSITIVITY_X;
|
||||
f32 pitchChange = controller->rawStickY * N64_SENSITIVITY_Y;
|
||||
@@ -81,9 +84,9 @@ void freecam_n64_update(Camera* camera, struct Controller *controller) {
|
||||
|
||||
check_bounding_collision(&camera->collision, 50, camera->pos[0], camera->pos[1], camera->pos[2]);
|
||||
|
||||
camera->rot[1] += (short)(yawChange * 65535.0f / (2 * M_PI)); // Convert radians to 0-65535 range
|
||||
camera->rot[1] += (short) (yawChange * 65535.0f / (2 * M_PI)); // Convert radians to 0-65535 range
|
||||
|
||||
camera->rot[2] += (short)(-pitchChange * 65535.0f / (2 * M_PI)); // Convert radians to 0-65535 range
|
||||
camera->rot[2] += (short) (-pitchChange * 65535.0f / (2 * M_PI)); // Convert radians to 0-65535 range
|
||||
|
||||
if (camera->rot[2] > 15999) {
|
||||
camera->rot[2] = 15999;
|
||||
@@ -96,4 +99,4 @@ void freecam_n64_update(Camera* camera, struct Controller *controller) {
|
||||
camera->lookAt[0] = camera->pos[0] + forwardVector[0];
|
||||
camera->lookAt[1] = camera->pos[1] + forwardVector[1];
|
||||
camera->lookAt[2] = camera->pos[2] + forwardVector[2];
|
||||
}
|
||||
}
|
||||
|
||||
@@ -3,11 +3,10 @@
|
||||
|
||||
#include <libultraship.h>
|
||||
|
||||
|
||||
void freecam_n64_move_camera_up(Camera* camera, struct Controller *controller, f32 distance);
|
||||
void freecam_n64_controller_manager(Camera *camera, struct Controller *controller, Player *player);
|
||||
void freecam_n64_move_camera_up(Camera* camera, struct Controller* controller, f32 distance);
|
||||
void freecam_n64_controller_manager(Camera* camera, struct Controller* controller, Player* player);
|
||||
void freecam_n64_calculate_forward_vector(Camera* camera, Vec3f forwardVector);
|
||||
void freecam_n64_move_camera_forward(Camera* camera, struct Controller *controller, f32 distance);
|
||||
void freecam_n64_update(Camera* camera, struct Controller *controller);
|
||||
void freecam_n64_move_camera_forward(Camera* camera, struct Controller* controller, f32 distance);
|
||||
void freecam_n64_update(Camera* camera, struct Controller* controller);
|
||||
|
||||
#endif // N64_FREECAM_H
|
||||
#endif // N64_FREECAM_H
|
||||
|
||||
+3
-3
@@ -325,14 +325,14 @@ f32 calculate_delta_time(void) {
|
||||
f32 deltaTime;
|
||||
|
||||
if (now > prevtime) {
|
||||
deltaTime = (f32)(now - prevtime) / OS_CPU_COUNTER;
|
||||
deltaTime = (f32) (now - prevtime) / OS_CPU_COUNTER;
|
||||
} else {
|
||||
// Handle counter reset
|
||||
deltaTime = (f32)((0xffffffff - prevtime) + 1 + now) / OS_CPU_COUNTER;
|
||||
deltaTime = (f32) ((0xffffffff - prevtime) + 1 + now) / OS_CPU_COUNTER;
|
||||
}
|
||||
|
||||
prevtime = now;
|
||||
|
||||
|
||||
// Cap deltaTime to avoid large jumps (e.g., on pause/resume)
|
||||
if (deltaTime > 1.0f / 15.0f) { // Assume 15 FPS is the lowest acceptable rate
|
||||
deltaTime = 1.0f / 15.0f;
|
||||
|
||||
@@ -37,7 +37,7 @@ void FreecamWindow::InitElement() {
|
||||
|
||||
static s32 sReadyUpBool = false;
|
||||
|
||||
float dampMin = 0.995;
|
||||
float dampMin = 0.990;
|
||||
float dampMax = 1.0f;
|
||||
float minSpeed = 1.0;
|
||||
float maxSpeed = 30.0f;
|
||||
@@ -61,27 +61,20 @@ void FreecamWindow::DrawElement() {
|
||||
gFreecamControllerType = current_item;
|
||||
}
|
||||
|
||||
ImGui::Text("Move: W,A,S,D\nUp: Space, Down: Shift\nFaster: Ctrl\nLook: Right-mouse button\nTarget previous player: N, Target next player: M");
|
||||
ImGui::Text("Move: W,A,S,D\nUp: Space, Down: Shift\nFaster: Ctrl\nLook: Right-mouse button\nTarget previous "
|
||||
"player: N, Target next player: M");
|
||||
ImGui::Spacing();
|
||||
UIWidgets::CVarCheckbox("Enable Flycam", "gFreecam", {
|
||||
.tooltip = "Allows you to fly around the course"
|
||||
});
|
||||
UIWidgets::CVarCheckbox("Enable Flycam", "gFreecam", { .tooltip = "Allows you to fly around the course" });
|
||||
|
||||
ImGui::Spacing();
|
||||
|
||||
if (ImGui::SliderScalar("Camera Damping", ImGuiDataType_Float, &gDampValue, &dampMin, &dampMax, "%f")) {
|
||||
if (ImGui::SliderScalar("Camera Damping", ImGuiDataType_Float, &gDampValue, &dampMin, &dampMax, "%f")) {};
|
||||
if (ImGui::SliderScalar("Camera Speed", ImGuiDataType_Float, &gFreecamSpeed, &minSpeed, &maxSpeed, "%f")) {};
|
||||
if (ImGui::SliderScalar("Camera Speed Multiplier", ImGuiDataType_Float, &gFreecamSpeedMultiplier,
|
||||
&minSpeedMultiplier, &maxSpeedMultiplier, "%f")) {};
|
||||
if (ImGui::SliderScalar("Camera Rotation Smoothing", ImGuiDataType_Float, &gFreecamRotateSmoothingFactor,
|
||||
&minFreecamRotateFactor, &maxFreecamRotateFactor, "%f")) {};
|
||||
|
||||
};
|
||||
if (ImGui::SliderScalar("Camera Speed", ImGuiDataType_Float, &gFreecamSpeed, &minSpeed, &maxSpeed, "%f")) {
|
||||
|
||||
};
|
||||
if (ImGui::SliderScalar("Camera Speed Multiplier", ImGuiDataType_Float, &gFreecamSpeedMultiplier, &minSpeedMultiplier, &maxSpeedMultiplier, "%f")) {
|
||||
|
||||
};
|
||||
if (ImGui::SliderScalar("Camera Rotation Smoothing", ImGuiDataType_Float, &gFreecamRotateSmoothingFactor, &minFreecamRotateFactor, &maxFreecamRotateFactor, "%f")) {
|
||||
|
||||
};
|
||||
|
||||
ImGui::Spacing();
|
||||
|
||||
ImGui::Text("Target Player");
|
||||
@@ -100,7 +93,6 @@ void FreecamWindow::DrawElement() {
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
ImGui::PopStyleColor();
|
||||
}
|
||||
|
||||
|
||||
@@ -13,4 +13,4 @@ class FreecamWindow : public Ship::GuiWindow {
|
||||
void DrawElement() override;
|
||||
void UpdateElement() override;
|
||||
};
|
||||
} // namespace GameInfo
|
||||
} // namespace Freecam
|
||||
|
||||
+5
-11
@@ -468,11 +468,9 @@ void DrawEnhancementsMenu() {
|
||||
UIWidgets::WindowButton("Multiplayer", "gMultiplayerWindowEnabled", GameUI::mMultiplayerWindow,
|
||||
{ .tooltip = "Shows the multiplayer window" });
|
||||
|
||||
|
||||
if (UIWidgets::BeginMenu("Gameplay")) {
|
||||
UIWidgets::WindowButton("Freecam", "gFreecam", GameUI::mFreecamWindow, {
|
||||
.tooltip = "Allows you to fly around the course"
|
||||
});
|
||||
UIWidgets::WindowButton("Freecam", "gFreecam", GameUI::mFreecamWindow,
|
||||
{ .tooltip = "Allows you to fly around the course" });
|
||||
UIWidgets::CVarCheckbox(
|
||||
"No Level of Detail (LOD)", "gDisableLod",
|
||||
{ .tooltip = "Disable Level of Detail (LOD) to avoid models using lower poly versions at a distance" });
|
||||
@@ -485,7 +483,6 @@ void DrawEnhancementsMenu() {
|
||||
"Far Frustrum", "gFarFrustrum", 0.0f, 10000.0f, 10000.0f,
|
||||
{ .tooltip = "Say how Far the Frustrum are when 'Disable Culling' are enable", .step = 10.0f });
|
||||
ImGui::EndMenu();
|
||||
|
||||
}
|
||||
|
||||
ImGui::EndMenu();
|
||||
@@ -515,9 +512,7 @@ void DrawDebugMenu() {
|
||||
{ .tooltip =
|
||||
"Enables the Gfx Debugger window, allowing you to input commands, type help for some examples" });
|
||||
|
||||
UIWidgets::CVarCheckbox("Debug mode", "gEnableDebugMode", {
|
||||
.tooltip = "Enable debug mode"
|
||||
});
|
||||
UIWidgets::CVarCheckbox("Debug mode", "gEnableDebugMode", { .tooltip = "Enable debug mode" });
|
||||
|
||||
UIWidgets::CVarCheckbox("Level Selector", "gLevelSelector",
|
||||
{ .tooltip = "Allows you to select any level from the main menu" });
|
||||
@@ -525,9 +520,8 @@ void DrawDebugMenu() {
|
||||
UIWidgets::CVarCheckbox("SFX Jukebox", "gSfxJukebox",
|
||||
{ .tooltip = "Allows you to play sound effects from the game" });
|
||||
|
||||
UIWidgets::CVarCheckbox("Render Collision", "gRenderCollisionMesh", {
|
||||
.tooltip = "Renders the collision mesh instead of the course mesh"
|
||||
});
|
||||
UIWidgets::CVarCheckbox("Render Collision", "gRenderCollisionMesh",
|
||||
{ .tooltip = "Renders the collision mesh instead of the course mesh" });
|
||||
|
||||
UIWidgets::Spacer(0);
|
||||
|
||||
|
||||
@@ -1369,7 +1369,7 @@ void func_8029569C(void) {
|
||||
}
|
||||
}
|
||||
|
||||
void render_course(struct UnkStruct_800DC5EC *arg0) {
|
||||
void render_course(struct UnkStruct_800DC5EC* arg0) {
|
||||
func_802B5D64(D_800DC610, D_802B87D4, 0, 1);
|
||||
|
||||
// Freecam priority renders collision.
|
||||
@@ -1378,7 +1378,7 @@ void render_course(struct UnkStruct_800DC5EC *arg0) {
|
||||
return;
|
||||
}
|
||||
|
||||
if ((CVarGetInteger("gFreecam", 0) == true) ) {
|
||||
if ((CVarGetInteger("gFreecam", 0) == true)) {
|
||||
// Render credits courses
|
||||
func_8029569C();
|
||||
return;
|
||||
|
||||
Reference in New Issue
Block a user