mirror of
https://github.com/coop-deluxe/sm64coopdx.git
synced 2024-11-28 23:13:02 +00:00
Merge pull request #5 from SharenTheCat/main
Modify Mario's head and torso rotation outside of specific cases
This commit is contained in:
commit
c686b390da
6 changed files with 14 additions and 4 deletions
|
@ -942,6 +942,7 @@
|
||||||
|
|
||||||
--- @class MarioBodyState
|
--- @class MarioBodyState
|
||||||
--- @field public action integer
|
--- @field public action integer
|
||||||
|
--- @field public allowPartRotation integer
|
||||||
--- @field public capState integer
|
--- @field public capState integer
|
||||||
--- @field public eyeState integer
|
--- @field public eyeState integer
|
||||||
--- @field public grabPos integer
|
--- @field public grabPos integer
|
||||||
|
@ -1990,6 +1991,7 @@
|
||||||
--- @field public surface Surface
|
--- @field public surface Surface
|
||||||
|
|
||||||
--- @class ServerSettings
|
--- @class ServerSettings
|
||||||
|
--- @field public bouncyLevelBounds BouncyLevelBounds
|
||||||
--- @field public bubbleDeath integer
|
--- @field public bubbleDeath integer
|
||||||
--- @field public enableCheats integer
|
--- @field public enableCheats integer
|
||||||
--- @field public enablePlayerList integer
|
--- @field public enablePlayerList integer
|
||||||
|
|
|
@ -1314,6 +1314,7 @@
|
||||||
| Field | Type | Access |
|
| Field | Type | Access |
|
||||||
| ----- | ---- | ------ |
|
| ----- | ---- | ------ |
|
||||||
| action | `integer` | |
|
| action | `integer` | |
|
||||||
|
| allowPartRotation | `integer` | |
|
||||||
| capState | `integer` | |
|
| capState | `integer` | |
|
||||||
| eyeState | `integer` | |
|
| eyeState | `integer` | |
|
||||||
| grabPos | `integer` | |
|
| grabPos | `integer` | |
|
||||||
|
@ -2510,6 +2511,7 @@
|
||||||
|
|
||||||
| Field | Type | Access |
|
| Field | Type | Access |
|
||||||
| ----- | ---- | ------ |
|
| ----- | ---- | ------ |
|
||||||
|
| bouncyLevelBounds | [enum BouncyLevelBounds](constants.md#enum-BouncyLevelBounds) | |
|
||||||
| bubbleDeath | `integer` | |
|
| bubbleDeath | `integer` | |
|
||||||
| enablePlayerList | `integer` | |
|
| enablePlayerList | `integer` | |
|
||||||
| enablePlayersInLevelDisplay | `integer` | |
|
| enablePlayersInLevelDisplay | `integer` | |
|
||||||
|
|
|
@ -316,6 +316,7 @@ struct MarioBodyState
|
||||||
/*????*/ f32 lightingDirX;
|
/*????*/ f32 lightingDirX;
|
||||||
/*????*/ f32 lightingDirY;
|
/*????*/ f32 lightingDirY;
|
||||||
/*????*/ f32 lightingDirZ;
|
/*????*/ f32 lightingDirZ;
|
||||||
|
/*????*/ u8 allowPartRotation;
|
||||||
// u8 padding[4];
|
// u8 padding[4];
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -2323,6 +2323,8 @@ void init_single_mario(struct MarioState* m) {
|
||||||
m->marioBodyState->lightingDirY = 0;
|
m->marioBodyState->lightingDirY = 0;
|
||||||
m->marioBodyState->lightingDirZ = 0;
|
m->marioBodyState->lightingDirZ = 0;
|
||||||
|
|
||||||
|
m->marioBodyState->allowPartRotation = FALSE;
|
||||||
|
|
||||||
m->marioObj->oPosX = m->pos[0];
|
m->marioObj->oPosX = m->pos[0];
|
||||||
m->marioObj->oPosY = m->pos[1];
|
m->marioObj->oPosY = m->pos[1];
|
||||||
m->marioObj->oPosZ = m->pos[2];
|
m->marioObj->oPosZ = m->pos[2];
|
||||||
|
|
|
@ -430,7 +430,8 @@ Gfx* geo_mario_tilt_torso(s32 callContext, struct GraphNode* node, Mat4* mtx) {
|
||||||
if (callContext == GEO_CONTEXT_RENDER) {
|
if (callContext == GEO_CONTEXT_RENDER) {
|
||||||
struct GraphNodeRotation* rotNode = (struct GraphNodeRotation*) node->next;
|
struct GraphNodeRotation* rotNode = (struct GraphNodeRotation*) node->next;
|
||||||
|
|
||||||
if (action != ACT_BUTT_SLIDE && action != ACT_HOLD_BUTT_SLIDE && action != ACT_WALKING && action != ACT_RIDING_SHELL_GROUND) {
|
if (action != ACT_BUTT_SLIDE && action != ACT_HOLD_BUTT_SLIDE && action != ACT_WALKING && action != ACT_RIDING_SHELL_GROUND
|
||||||
|
&& !bodyState->allowPartRotation) {
|
||||||
vec3s_copy(bodyState->torsoAngle, gVec3sZero);
|
vec3s_copy(bodyState->torsoAngle, gVec3sZero);
|
||||||
}
|
}
|
||||||
rotNode->rotation[0] = bodyState->torsoAngle[1] * character->torsoRotMult;
|
rotNode->rotation[0] = bodyState->torsoAngle[1] * character->torsoRotMult;
|
||||||
|
@ -468,7 +469,7 @@ Gfx* geo_mario_head_rotation(s32 callContext, struct GraphNode* node, Mat4* c) {
|
||||||
rotNode->rotation[0] = gPlayerCameraState[plrIdx].headRotation[1];
|
rotNode->rotation[0] = gPlayerCameraState[plrIdx].headRotation[1];
|
||||||
rotNode->rotation[2] = gPlayerCameraState[plrIdx].headRotation[0];
|
rotNode->rotation[2] = gPlayerCameraState[plrIdx].headRotation[0];
|
||||||
}
|
}
|
||||||
else if (action & ACT_FLAG_WATER_OR_TEXT) {
|
else if (action & ACT_FLAG_WATER_OR_TEXT || bodyState->allowPartRotation) {
|
||||||
rotNode->rotation[0] = bodyState->headAngle[1];
|
rotNode->rotation[0] = bodyState->headAngle[1];
|
||||||
rotNode->rotation[1] = bodyState->headAngle[2];
|
rotNode->rotation[1] = bodyState->headAngle[2];
|
||||||
rotNode->rotation[2] = bodyState->headAngle[0];
|
rotNode->rotation[2] = bodyState->headAngle[0];
|
||||||
|
|
|
@ -1059,9 +1059,10 @@ static struct LuaObjectField sMarioAnimationFields[LUA_MARIO_ANIMATION_FIELD_COU
|
||||||
{ "targetAnim", LVT_COBJECT_P, offsetof(struct MarioAnimation, targetAnim), false, LOT_ANIMATION },
|
{ "targetAnim", LVT_COBJECT_P, offsetof(struct MarioAnimation, targetAnim), false, LOT_ANIMATION },
|
||||||
};
|
};
|
||||||
|
|
||||||
#define LUA_MARIO_BODY_STATE_FIELD_COUNT 23
|
#define LUA_MARIO_BODY_STATE_FIELD_COUNT 24
|
||||||
static struct LuaObjectField sMarioBodyStateFields[LUA_MARIO_BODY_STATE_FIELD_COUNT] = {
|
static struct LuaObjectField sMarioBodyStateFields[LUA_MARIO_BODY_STATE_FIELD_COUNT] = {
|
||||||
{ "action", LVT_U32, offsetof(struct MarioBodyState, action), false, LOT_NONE },
|
{ "action", LVT_U32, offsetof(struct MarioBodyState, action), false, LOT_NONE },
|
||||||
|
{ "allowPartRotation", LVT_U8, offsetof(struct MarioBodyState, allowPartRotation), false, LOT_NONE },
|
||||||
{ "capState", LVT_S8, offsetof(struct MarioBodyState, capState), false, LOT_NONE },
|
{ "capState", LVT_S8, offsetof(struct MarioBodyState, capState), false, LOT_NONE },
|
||||||
{ "eyeState", LVT_S8, offsetof(struct MarioBodyState, eyeState), false, LOT_NONE },
|
{ "eyeState", LVT_S8, offsetof(struct MarioBodyState, eyeState), false, LOT_NONE },
|
||||||
{ "grabPos", LVT_S8, offsetof(struct MarioBodyState, grabPos), false, LOT_NONE },
|
{ "grabPos", LVT_S8, offsetof(struct MarioBodyState, grabPos), false, LOT_NONE },
|
||||||
|
@ -2179,8 +2180,9 @@ static struct LuaObjectField sRayIntersectionInfoFields[LUA_RAY_INTERSECTION_INF
|
||||||
{ "surface", LVT_COBJECT_P, offsetof(struct RayIntersectionInfo, surface), false, LOT_SURFACE },
|
{ "surface", LVT_COBJECT_P, offsetof(struct RayIntersectionInfo, surface), false, LOT_SURFACE },
|
||||||
};
|
};
|
||||||
|
|
||||||
#define LUA_SERVER_SETTINGS_FIELD_COUNT 11
|
#define LUA_SERVER_SETTINGS_FIELD_COUNT 12
|
||||||
static struct LuaObjectField sServerSettingsFields[LUA_SERVER_SETTINGS_FIELD_COUNT] = {
|
static struct LuaObjectField sServerSettingsFields[LUA_SERVER_SETTINGS_FIELD_COUNT] = {
|
||||||
|
{ "bouncyLevelBounds", LVT_S32, offsetof(struct ServerSettings, bouncyLevelBounds), false, LOT_NONE },
|
||||||
{ "bubbleDeath", LVT_U8, offsetof(struct ServerSettings, bubbleDeath), false, LOT_NONE },
|
{ "bubbleDeath", LVT_U8, offsetof(struct ServerSettings, bubbleDeath), false, LOT_NONE },
|
||||||
{ "enableCheats", LVT_U8, offsetof(struct ServerSettings, enableCheats), false, LOT_NONE },
|
{ "enableCheats", LVT_U8, offsetof(struct ServerSettings, enableCheats), false, LOT_NONE },
|
||||||
{ "enablePlayerList", LVT_U8, offsetof(struct ServerSettings, enablePlayerList), false, LOT_NONE },
|
{ "enablePlayerList", LVT_U8, offsetof(struct ServerSettings, enablePlayerList), false, LOT_NONE },
|
||||||
|
|
Loading…
Reference in a new issue