mirror of
https://github.com/coop-deluxe/sm64coopdx.git
synced 2025-10-30 08:01:01 +00:00
force billboard star numbers to fix romhacks that override star number actor
This commit is contained in:
parent
d6e243c4a7
commit
386417edc0
2 changed files with 9 additions and 13 deletions
|
|
@ -16,7 +16,7 @@ void bhv_star_number_loop(void) {
|
||||||
obj_set_angle(o, 0, 0, 0);
|
obj_set_angle(o, 0, 0, 0);
|
||||||
obj_scale(o, 1.f);
|
obj_scale(o, 1.f);
|
||||||
o->oAnimState = o->oBehParams2ndByte = ((star->oBehParams >> 24) & 0xFF) + 1;
|
o->oAnimState = o->oBehParams2ndByte = ((star->oBehParams >> 24) & 0xFF) + 1;
|
||||||
o->header.gfx.node.flags = star->header.gfx.node.flags;
|
o->header.gfx.node.flags = star->header.gfx.node.flags | GRAPH_RENDER_BILLBOARD;
|
||||||
} else {
|
} else {
|
||||||
cur_obj_disable_rendering();
|
cur_obj_disable_rendering();
|
||||||
cur_obj_hide();
|
cur_obj_hide();
|
||||||
|
|
|
||||||
|
|
@ -1235,6 +1235,7 @@ static void geo_process_object(struct Object *node) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool noBillboard = (node->header.gfx.sharedChild && node->header.gfx.sharedChild->extraFlags & GRAPH_EXTRA_FORCE_3D);
|
||||||
if (node->header.gfx.areaIndex == gCurGraphNodeRoot->areaIndex) {
|
if (node->header.gfx.areaIndex == gCurGraphNodeRoot->areaIndex) {
|
||||||
if (node->header.gfx.throwMatrix != NULL) {
|
if (node->header.gfx.throwMatrix != NULL) {
|
||||||
|
|
||||||
|
|
@ -1247,14 +1248,13 @@ static void geo_process_object(struct Object *node) {
|
||||||
mtxf_copy(mtxf, node->header.gfx.prevThrowMatrix);
|
mtxf_copy(mtxf, node->header.gfx.prevThrowMatrix);
|
||||||
mtxf_mul(gMatStackPrev[gMatStackIndex + 1], mtxf, gMatStackPrev[gMatStackIndex]);
|
mtxf_mul(gMatStackPrev[gMatStackIndex + 1], mtxf, gMatStackPrev[gMatStackIndex]);
|
||||||
} else {
|
} else {
|
||||||
mtxf_mul(gMatStackPrev[gMatStackIndex + 1], (void *) node->header.gfx.throwMatrix,
|
mtxf_mul(gMatStackPrev[gMatStackIndex + 1], (void *) node->header.gfx.throwMatrix, gMatStackPrev[gMatStackIndex]);
|
||||||
gMatStackPrev[gMatStackIndex]);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
mtxf_copy(node->header.gfx.prevThrowMatrix, *node->header.gfx.throwMatrix);
|
mtxf_copy(node->header.gfx.prevThrowMatrix, *node->header.gfx.throwMatrix);
|
||||||
node->header.gfx.prevThrowMatrixTimestamp = gGlobalTimer;
|
node->header.gfx.prevThrowMatrixTimestamp = gGlobalTimer;
|
||||||
|
|
||||||
} else if ((node->header.gfx.node.flags & GRAPH_RENDER_CYLBOARD) && !(node->header.gfx.sharedChild && node->header.gfx.sharedChild->extraFlags & GRAPH_EXTRA_FORCE_3D)) {
|
} else if (node->header.gfx.node.flags & GRAPH_RENDER_CYLBOARD && !noBillboard) {
|
||||||
|
|
||||||
Vec3f posPrev;
|
Vec3f posPrev;
|
||||||
|
|
||||||
|
|
@ -1268,12 +1268,10 @@ static void geo_process_object(struct Object *node) {
|
||||||
|
|
||||||
vec3f_copy(node->header.gfx.prevPos, node->header.gfx.pos);
|
vec3f_copy(node->header.gfx.prevPos, node->header.gfx.pos);
|
||||||
node->header.gfx.prevTimestamp = gGlobalTimer;
|
node->header.gfx.prevTimestamp = gGlobalTimer;
|
||||||
mtxf_cylboard(gMatStack[gMatStackIndex + 1], gMatStack[gMatStackIndex],
|
mtxf_cylboard(gMatStack[gMatStackIndex + 1], gMatStack[gMatStackIndex], node->header.gfx.pos, gCurGraphNodeCamera->roll);
|
||||||
node->header.gfx.pos, gCurGraphNodeCamera->roll);
|
mtxf_cylboard(gMatStackPrev[gMatStackIndex + 1], gMatStackPrev[gMatStackIndex], posPrev, gCurGraphNodeCamera->roll);
|
||||||
mtxf_cylboard(gMatStackPrev[gMatStackIndex + 1], gMatStackPrev[gMatStackIndex],
|
|
||||||
posPrev, gCurGraphNodeCamera->roll);
|
|
||||||
|
|
||||||
} else if ((node->header.gfx.node.flags & GRAPH_RENDER_BILLBOARD) && !(node->header.gfx.sharedChild && node->header.gfx.sharedChild->extraFlags & GRAPH_EXTRA_FORCE_3D)) {
|
} else if (node->header.gfx.node.flags & GRAPH_RENDER_BILLBOARD && !noBillboard) {
|
||||||
|
|
||||||
Vec3f posPrev;
|
Vec3f posPrev;
|
||||||
|
|
||||||
|
|
@ -1287,10 +1285,8 @@ static void geo_process_object(struct Object *node) {
|
||||||
|
|
||||||
vec3f_copy(node->header.gfx.prevPos, node->header.gfx.pos);
|
vec3f_copy(node->header.gfx.prevPos, node->header.gfx.pos);
|
||||||
node->header.gfx.prevTimestamp = gGlobalTimer;
|
node->header.gfx.prevTimestamp = gGlobalTimer;
|
||||||
mtxf_billboard(gMatStack[gMatStackIndex + 1], gMatStack[gMatStackIndex],
|
mtxf_billboard(gMatStack[gMatStackIndex + 1], gMatStack[gMatStackIndex], node->header.gfx.pos, gCurGraphNodeCamera->roll);
|
||||||
node->header.gfx.pos, gCurGraphNodeCamera->roll);
|
mtxf_billboard(gMatStackPrev[gMatStackIndex + 1], gMatStackPrev[gMatStackIndex], posPrev, gCurGraphNodeCamera->roll);
|
||||||
mtxf_billboard(gMatStackPrev[gMatStackIndex + 1], gMatStackPrev[gMatStackIndex],
|
|
||||||
posPrev, gCurGraphNodeCamera->roll);
|
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue