2
0
mirror of https://github.com/AxioDL/metaforce.git synced 2025-12-09 11:47:43 +00:00

Various movement and HUD bug fixes

This commit is contained in:
Jack Andersen
2017-12-18 17:05:50 -10:00
parent 1bb7e882a0
commit 1c44f8d1bc
37 changed files with 84 additions and 62 deletions

View File

@@ -317,7 +317,7 @@ bool CActorLights::BuildAreaLightList(const CStateManager& mgr, const CGameArea&
std::sort(valList.begin(), valList.end(),
[](const SLightValue& a, const SLightValue& b)
{
return a.x10_colorMag >= b.x10_colorMag;
return a.x10_colorMag > b.x10_colorMag;
});
if (x298_27_findShadowLight)
@@ -333,12 +333,12 @@ bool CActorLights::BuildAreaLightList(const CStateManager& mgr, const CGameArea&
}
/* Ambient color for overflow area lights */
zeus::CColor overflowAmbColor;
zeus::CColor overflowAmbColor = zeus::CColor::skClear;
/* Averaged light for overflow area lights */
CLight overflowLight = CLight::BuildCustom(zeus::CVector3f::skZero, zeus::CVector3f::skZero, zeus::CColor::skBlack,
0.f, 0.f, 0.f, 0.f, 0.f, 0.f);
zeus::CColor overflowLightColor;
zeus::CColor overflowLightColor = zeus::CColor::skClear;
float overflowMag = 0.f;
/* Max significant lights */

View File

@@ -18,7 +18,7 @@ class CActorLights
static s32 sFrameSchedulerCount;
std::vector<CLight> x0_areaLights;
std::vector<CLight> x144_dynamicLights;
zeus::CColor x288_ambientColor;
zeus::CColor x288_ambientColor = zeus::CColor::skBlack;
TAreaId x294_aid = kInvalidAreaId;
union

View File

@@ -398,7 +398,7 @@ void CGroundMovement::MoveGroundCollider_New(CStateManager& mgr, CPhysicsActor&
float stepUp = player.GetStepUpHeight();
bool doStepDown = true;
CMaterialList material(EMaterialTypes::Unknown);
CMaterialList material(EMaterialTypes::NoStepLogic);
SMoveObjectResult result;
if (!startingJump)
@@ -437,7 +437,8 @@ void CGroundMovement::MoveGroundCollider_New(CStateManager& mgr, CPhysicsActor&
CMaterialList material2 = MoveObjectAnalytical(mgr, actor, dt, useNearList, cache, opts, result);
CPhysicsState physStatePost = actor.GetPhysicsState();
if (material2.XOR({EMaterialTypes::Unknown}))
/* NoStepLogic must be the only set material bit to bypass step logic */
if (material2.XOR({EMaterialTypes::NoStepLogic}))
{
SMovementOptions optsCopy = opts;
zeus::CVector3f postToPre = physStatePre.GetTranslation() - physStatePost.GetTranslation();
@@ -802,11 +803,10 @@ CMaterialList CGroundMovement::MoveObjectAnalytical(CStateManager& mgr, CPhysics
{
if (actor.x15c_force.canBeNormalized())
{
zeus::CVector3f prevForce = actor.x15c_force;
actor.x15c_force = CGroundMovement::CollisionDamping(actor.x15c_force,
actor.x15c_force.normalized(),
collisionNorm, 0.f, 1.f);
if (actor.x15c_force.z < -1000000.f)
printf("");
}
if (actor.x150_momentum.canBeNormalized())
{