2
0
mirror of https://github.com/AxioDL/metaforce.git synced 2025-12-11 03:07:44 +00:00

zeus constexpr refactor and thermal visor fixes

This commit is contained in:
Jack Andersen
2019-02-23 21:15:54 -10:00
parent 1186b8097c
commit 8df0a4913c
226 changed files with 1339 additions and 1305 deletions

View File

@@ -62,7 +62,7 @@ CMorphBall::CMorphBall(CPlayer& player, float radius)
x19d4_spiderBallMagnetEffectGen = std::make_unique<CElementGen>(x1990_spiderBallMagnetEffect);
x19d8_boostBallGlowGen = std::make_unique<CElementGen>(x1998_boostBallGlow);
x1c14_worldShadow = std::make_unique<CWorldShadow>(128, 128, false);
x1c18_actorLights = std::make_unique<CActorLights>(8, zeus::CVector3f::skZero, 4, 4, false, false, false, 0.1f);
x1c18_actorLights = std::make_unique<CActorLights>(8, zeus::skZero3f, 4, 4, false, false, false, 0.1f);
x1c1c_rainSplashGen = std::make_unique<CRainSplashGenerator>(x58_ballModel->GetScale(), 40, 2, 0.15f, 0.5f);
x1de4_24_inBoost = false;
x1de4_25_boostEnabled = true;
@@ -287,13 +287,13 @@ void CMorphBall::UpdateMorphBallSounds(float dt) {
if (!x1e2c_rollSfxHandle) {
if (x1e34_rollSfx != 0xffff) {
x1e2c_rollSfxHandle = CSfxManager::AddEmitter(x1e34_rollSfx, x0_player.GetTranslation(),
zeus::CVector3f::skZero, true, true, 0x7f, kInvalidAreaId);
zeus::skZero3f, true, true, 0x7f, kInvalidAreaId);
}
x0_player.ApplySubmergedPitchBend(x1e2c_rollSfxHandle);
}
CSfxManager::PitchBend(x1e2c_rollSfxHandle, zeus::clamp(-1.f, vel * 0.122f - 0.831f, 1.f));
float maxVol = zeus::clamp(0.f, 0.025f * vel + 0.5f, 1.f);
CSfxManager::UpdateEmitter(x1e2c_rollSfxHandle, x0_player.GetTranslation(), zeus::CVector3f::skZero, maxVol);
CSfxManager::UpdateEmitter(x1e2c_rollSfxHandle, x0_player.GetTranslation(), zeus::skZero3f, maxVol);
break;
}
[[fallthrough]];
@@ -309,10 +309,10 @@ void CMorphBall::UpdateMorphBallSounds(float dt) {
if (x187c_spiderBallState == ESpiderBallState::Active) {
if (!x1e30_spiderSfxHandle) {
x1e30_spiderSfxHandle = CSfxManager::AddEmitter(SFXsam_spider_lp, x0_player.GetTranslation(),
zeus::CVector3f::skZero, true, true, 0xc8, kInvalidAreaId);
zeus::skZero3f, true, true, 0xc8, kInvalidAreaId);
x0_player.ApplySubmergedPitchBend(x1e30_spiderSfxHandle);
}
CSfxManager::UpdateEmitter(x1e30_spiderSfxHandle, x0_player.GetTranslation(), zeus::CVector3f::skZero, 1.f);
CSfxManager::UpdateEmitter(x1e30_spiderSfxHandle, x0_player.GetTranslation(), zeus::skZero3f, 1.f);
} else if (x1e30_spiderSfxHandle) {
CSfxManager::SfxStop(x1e30_spiderSfxHandle);
x1e30_spiderSfxHandle.reset();
@@ -371,7 +371,7 @@ void CMorphBall::ApplySpiderBallSwingingForces(const CFinalInput& input, CStateM
x0_player.ApplyForceWR(
x1880_playerToSpiderNormal.cross(x18a8_spiderBetweenPoints).cross(x1880_playerToSpiderNormal).normalized() * f29 *
swingMovement * 0.06f,
zeus::CAxisAngle::sIdentity);
zeus::CAxisAngle());
x0_player.SetMomentumWR({0.f, 0.f, x0_player.GetMass() * g_tweakBall->GetBallGravity()});
x18fc_refPullVel = (1.f - x188c_spiderPullMovement) * 3.7f + 1.4f;
x1900_playerToSpiderTrackDist = playerToSpiderDist;
@@ -489,7 +489,7 @@ void CMorphBall::ApplySpiderBallRollForces(const CFinalInput& input, CStateManag
if (distance > 1.05f)
finalForceMag *= (1.05f - (distance - 1.05f)) / 1.05f;
x0_player.ApplyForceWR(x18a8_spiderBetweenPoints.normalized() * 90000.f * finalForceMag,
zeus::CAxisAngle::sIdentity);
zeus::CAxisAngle());
} else {
x18b4_linVelDamp = 0.3f;
x18b8_angVelDamp = 0.2f;
@@ -497,7 +497,7 @@ void CMorphBall::ApplySpiderBallRollForces(const CFinalInput& input, CStateManag
float f30 = x18c4_spiderSurfaceTransform.basis[2].dot(viewSurfaceForces);
zeus::CVector3f forceVec =
(f31 * x18c4_spiderSurfaceTransform.basis[0] + f30 * x18c4_spiderSurfaceTransform.basis[2]) * 45000.f;
x0_player.ApplyForceWR(forceVec, zeus::CAxisAngle::sIdentity);
x0_player.ApplyForceWR(forceVec, zeus::CAxisAngle());
if (forceVec.magSquared() > 0.f) {
float angle = std::atan2(45000.f * f31, 45000.f * f30);
if (angle - x18f4_spiderSurfacePivotAngle > M_PIF / 2.f)
@@ -515,7 +515,7 @@ void CMorphBall::ApplySpiderBallRollForces(const CFinalInput& input, CStateManag
}
x0_player.ApplyForceWR(
{0.f, 0.f, g_tweakBall->GetBallGravity() * x0_player.GetMass() * 8.f * (1.f - x188c_spiderPullMovement)},
zeus::CAxisAngle::sIdentity);
zeus::CAxisAngle());
} else {
x18b4_linVelDamp = 0.2f;
x18b8_angVelDamp = 0.2f;
@@ -700,8 +700,8 @@ void CMorphBall::ResetSpiderBallForces() {
}
void CMorphBall::ComputeMarioMovement(const CFinalInput& input, CStateManager& mgr, float dt) {
x1c_controlForce = zeus::CVector3f::skZero;
x10_boostControlForce = zeus::CVector3f::skZero;
x1c_controlForce = zeus::skZero3f;
x10_boostControlForce = zeus::skZero3f;
if (!IsMovementAllowed())
return;
@@ -730,7 +730,7 @@ void CMorphBall::ComputeMarioMovement(const CFinalInput& input, CStateManager& m
float turn = -BallTurnInput(input);
float maxSpeed = ComputeMaxSpeed();
float curSpeed = x0_player.GetVelocity().magnitude();
zeus::CTransform controlXf = zeus::lookAt(zeus::CVector3f::skZero, x0_player.x54c_controlDirFlat);
zeus::CTransform controlXf = zeus::lookAt(zeus::skZero3f, x0_player.x54c_controlDirFlat);
zeus::CVector3f controlFrameVel = controlXf.transposeRotate(x0_player.GetVelocity());
float fwdAcc = 0.f;
float turnAcc = 0.f;
@@ -775,7 +775,7 @@ void CMorphBall::ComputeMarioMovement(const CFinalInput& input, CStateManager& m
DisableHalfPipeStatus();
x1e00_disableControlCooldown = 0.2f;
x0_player.ApplyImpulseWR(x1924_surfaceToWorld.basis[2] * (x0_player.GetMass() * -7.5f),
zeus::CAxisAngle::sIdentity);
zeus::CAxisAngle());
}
if (GetIsInHalfPipeMode()) {
controlForce -= controlForce.dot(x1924_surfaceToWorld.basis[2]) * x1924_surfaceToWorld.basis[2];
@@ -807,7 +807,7 @@ void CMorphBall::ComputeMarioMovement(const CFinalInput& input, CStateManager& m
}
}
x10_boostControlForce = controlForce;
x0_player.ApplyForceWR(controlForce, zeus::CAxisAngle::sIdentity);
x0_player.ApplyForceWR(controlForce, zeus::CAxisAngle());
}
ComputeLiftForces(x1c_controlForce, x0_player.GetVelocity(), mgr);
}
@@ -832,7 +832,7 @@ zeus::CTransform CMorphBall::CalculateSurfaceToWorld(const zeus::CVector3f& trac
if (right.canBeNormalized())
return zeus::CTransform(right, forward, right.cross(forward).normalized(), trackPoint);
}
return zeus::CTransform::Identity();
return zeus::CTransform();
}
bool CMorphBall::CalculateBallContactInfo(zeus::CVector3f& normal, zeus::CVector3f& point) const {
@@ -1050,7 +1050,7 @@ void CMorphBall::UpdateEffects(float dt, CStateManager& mgr) {
x19d0_ballInnerGlowGen->SetGlobalTranslation(swooshToWorld.origin);
x19d0_ballInnerGlowGen->Update(dt);
if (x1de8_boostChargeTime == 0.f && x1df4_boostDrainTime == 0.f) {
x19d8_boostBallGlowGen->SetModulationColor(zeus::CColor::skClear);
x19d8_boostBallGlowGen->SetModulationColor(zeus::skClear);
} else {
x19d8_boostBallGlowGen->SetGlobalTranslation(swooshToWorld.origin);
float t;
@@ -1059,7 +1059,7 @@ void CMorphBall::UpdateEffects(float dt, CStateManager& mgr) {
else
t = 1.f - x1df4_boostDrainTime / g_tweakBall->GetBoostBallDrainTime();
x19d8_boostBallGlowGen->SetModulationColor(
zeus::CColor::lerp(zeus::CColor::skBlack, zeus::CColor(1.f, 1.f, 0.4f, 1.f), t));
zeus::CColor::lerp(zeus::skBlack, zeus::CColor(1.f, 1.f, 0.4f, 1.f), t));
x19d8_boostBallGlowGen->Update(dt);
}
x19d4_spiderBallMagnetEffectGen->Update(dt);
@@ -1095,15 +1095,15 @@ void CMorphBall::UpdateEffects(float dt, CStateManager& mgr) {
float t = 0.f;
if (x0_player.x578_morphDuration != 0.f)
t = zeus::clamp(0.f, x0_player.x574_morphTime / x0_player.x578_morphDuration, 1.f);
lObj->SetColor(zeus::CColor::lerp(lObj->GetColor(), zeus::CColor::skBlack, t));
lObj->SetColor(zeus::CColor::lerp(lObj->GetColor(), zeus::skBlack, t));
} else if (x0_player.GetMorphballTransitionState() == CPlayer::EPlayerMorphBallState::Morphing) {
float t = 0.f;
if (x0_player.x578_morphDuration != 0.f)
t = zeus::clamp(0.f, x0_player.x574_morphTime / x0_player.x578_morphDuration, 1.f);
if (t < 0.5f)
lObj->SetColor(zeus::CColor::lerp(zeus::CColor::skBlack, lObj->GetColor(), std::min(2.f * t, 1.f)));
lObj->SetColor(zeus::CColor::lerp(zeus::skBlack, lObj->GetColor(), std::min(2.f * t, 1.f)));
} else {
lObj->SetColor(zeus::CColor::lerp(lObj->GetColor(), zeus::CColor::skWhite, x1c34_boostLightFactor));
lObj->SetColor(zeus::CColor::lerp(lObj->GetColor(), zeus::skWhite, x1c34_boostLightFactor));
}
light->SetLight(*lObj);
}
@@ -1154,7 +1154,7 @@ void CMorphBall::ComputeBoostBallMovement(const CFinalInput& input, CStateManage
x1e20_ballAnimIdx = 0;
CSfxManager::RemoveEmitter(x1e24_boostSfxHandle);
if (x1de8_boostChargeTime >= g_tweakBall->GetBoostBallMinChargeTime()) {
CSfxManager::AddEmitter(SFXsam_ball_boost, x0_player.GetTranslation(), zeus::CVector3f::skZero, true, false,
CSfxManager::AddEmitter(SFXsam_ball_boost, x0_player.GetTranslation(), zeus::skZero3f, true, false,
0xb4, kInvalidAreaId);
}
}
@@ -1164,14 +1164,14 @@ void CMorphBall::ComputeBoostBallMovement(const CFinalInput& input, CStateManage
if (GetIsInHalfPipeMode() || x1df8_27_ballCloseToCollision) {
EnterBoosting(mgr);
} else {
x0_player.ApplyImpulseWR(zeus::CVector3f::skZero,
x0_player.ApplyImpulseWR(zeus::skZero3f,
zeus::CAxisAngle(-x1924_surfaceToWorld.basis[1] * 10000.f));
CancelBoosting();
}
} else if (GetBallBoostState() == EBallBoostState::BoostDisabled) {
x0_player.SetTransform(
zeus::lookAt(x0_player.GetTranslation(), x0_player.GetTranslation() + GetBallToWorld().basis[1]));
x0_player.ApplyImpulseWR(zeus::CVector3f::skZero,
x0_player.ApplyImpulseWR(zeus::skZero3f,
zeus::CAxisAngle(-x0_player.GetTransform().basis[0] * 10000.f));
CancelBoosting();
}
@@ -1228,7 +1228,7 @@ void CMorphBall::EnterBoosting(CStateManager& mgr) {
speedMul = 0.35f * speedDamp + (1.f - speedDamp);
}
x0_player.ApplyImpulseWR(lookDir * (speedMul * incSpeed * x0_player.GetMass()), zeus::CAxisAngle::sIdentity);
x0_player.ApplyImpulseWR(lookDir * (speedMul * incSpeed * x0_player.GetMass()), zeus::CAxisAngle());
x1df4_boostDrainTime = 0.f;
x1de8_boostChargeTime = 0.f;
@@ -1312,7 +1312,7 @@ bool CMorphBall::UpdateMarbleDynamics(CStateManager& mgr, float dt, const zeus::
upVec.normalized() * g_tweakBall->GetTireness());
} else {
x0_player.RotateInOneFrameOR(
zeus::CQuaternion::shortestRotationArc(zeus::CVector3f::skRight, GetBallToWorld().transposeRotate(axis)),
zeus::CQuaternion::shortestRotationArc(zeus::skRight, GetBallToWorld().transposeRotate(axis)),
dt);
}
}
@@ -1327,7 +1327,7 @@ void CMorphBall::ApplyFriction(float f) {
if (f < vel.magnitude())
vel = vel.normalized() * (vel.magnitude() - f);
else
vel = zeus::CVector3f::skZero;
vel = zeus::skZero3f;
x0_player.SetVelocityWR(vel);
}
@@ -1355,7 +1355,7 @@ void CMorphBall::PreRender(CStateManager& mgr, const zeus::CFrustum& frustum) {
x0_player.ActorLights()->SetDirty();
CCollidableSphere sphere = x38_collisionSphere;
sphere.SetSphereCenter(zeus::CVector3f::skZero);
sphere.SetSphereCenter(zeus::skZero3f);
zeus::CAABox ballAABB = sphere.CalculateAABox(GetBallToWorld());
if (x0_player.GetAreaIdAlways() != kInvalidAreaId) {
@@ -1367,7 +1367,7 @@ void CMorphBall::PreRender(CStateManager& mgr, const zeus::CFrustum& frustum) {
x0_player.ActorLights()->BuildDynamicLightList(mgr, ballAABB);
if (x0_player.ActorLights()->HasShadowLight()) {
CCollidableSphere sphere = x38_collisionSphere;
sphere.SetSphereCenter(zeus::CVector3f::skZero);
sphere.SetSphereCenter(zeus::skZero3f);
x1c14_worldShadow->BuildLightShadowTexture(mgr, x0_player.GetAreaIdAlways(),
x0_player.GetActorLights()->GetShadowLightIndex(),
sphere.CalculateAABox(GetBallToWorld()), false, false);
@@ -1377,13 +1377,13 @@ void CMorphBall::PreRender(CStateManager& mgr, const zeus::CFrustum& frustum) {
zeus::CColor ambColor = x0_player.ActorLights()->GetAmbientColor();
ambColor.a() = 1.f;
x0_player.ActorLights()->SetAmbientColor(zeus::CColor::lerp(ambColor, zeus::CColor::skWhite, x1c34_boostLightFactor));
x0_player.ActorLights()->SetAmbientColor(zeus::CColor::lerp(ambColor, zeus::skWhite, x1c34_boostLightFactor));
*x1c18_actorLights = *x0_player.GetActorLights();
ambColor = x0_player.ActorLights()->GetAmbientColor();
ambColor.a() = 1.f;
x1c18_actorLights->SetAmbientColor(
zeus::CColor::lerp(ambColor, zeus::CColor::skWhite, std::max(x1c38_spiderLightFactor, x1c34_boostLightFactor)));
zeus::CColor::lerp(ambColor, zeus::skWhite, std::max(x1c38_spiderLightFactor, x1c34_boostLightFactor)));
if (CAnimData* animData = x58_ballModel->AnimationData())
animData->PreRender();
@@ -1421,7 +1421,7 @@ void CMorphBall::Render(const CStateManager& mgr, const CActorLights* lights) co
x58_ballModel->Render(mgr, ballToWorld, nullptr, flags);
}
CModelFlags flags(0, 0, 3, zeus::CColor::skWhite);
CModelFlags flags(0, 0, 3, zeus::skWhite);
if (x1e44_damageEffect > 0.f)
flags = CModelFlags(1, 0, 3, zeus::CColor(1.f, 1.f - x1e44_damageEffect, 1.f - x1e44_damageEffect, 1.f));
@@ -1492,7 +1492,7 @@ void CMorphBall::Render(const CStateManager& mgr, const CActorLights* lights) co
if (mgr.GetPlayerState()->HasPowerUp(CPlayerState::EItemType::SpiderBall) && x60_spiderBallGlassModel) {
float tmp = std::max(x1c38_spiderLightFactor, x1c34_boostLightFactor);
CModelFlags sflags(0, u8(x64_spiderBallGlassModelShader), 3, zeus::CColor::skWhite);
CModelFlags sflags(0, u8(x64_spiderBallGlassModelShader), 3, zeus::skWhite);
if (tmp != 1.f) {
if (lights->HasShadowLight()) {
x1c14_worldShadow->EnableModelProjectedShadow(ballToWorld, lights->GetShadowLightArrIndex(), 1.f);
@@ -1527,13 +1527,13 @@ void CMorphBall::Render(const CStateManager& mgr, const CActorLights* lights) co
x19d0_ballInnerGlowGen->Render();
x19d4_spiderBallMagnetEffectGen->Render();
RenderEnergyDrainEffects(mgr);
if (x19d8_boostBallGlowGen->GetModulationColor() != zeus::CColor::skClear)
if (x19d8_boostBallGlowGen->GetModulationColor() != zeus::skClear)
x19d8_boostBallGlowGen->Render();
RenderMorphBallTransitionFlash(mgr);
if (x0_player.GetFrozenState()) {
CModelFlags fflags(0, 0, 3, zeus::CColor::skWhite);
CModelFlags fflags(0, 0, 3, zeus::skWhite);
x70_frozenBallModel->Render(mgr, zeus::CTransform::Translate(ballToWorld.origin), lights, fflags);
}
@@ -1620,8 +1620,8 @@ void CMorphBall::UpdateHalfPipeStatus(CStateManager& mgr, float dt) {
SetIsInHalfPipeModeInAir(!x1df8_27_ballCloseToCollision);
SetTouchedHalfPipeRecently(x1e04_touchHalfPipeRecentCooldown > 0.f);
if (GetIsInHalfPipeModeInAir()) {
x1e08_prevHalfPipeNormal = zeus::CVector3f::skZero;
x1e14_halfPipeNormal = zeus::CVector3f::skZero;
x1e08_prevHalfPipeNormal = zeus::skZero3f;
x1e14_halfPipeNormal = zeus::skZero3f;
}
} else {
DisableHalfPipeStatus();
@@ -1643,8 +1643,8 @@ void CMorphBall::DisableHalfPipeStatus() {
x1dfc_touchHalfPipeCooldown = 0.f;
x1e00_disableControlCooldown = 0.f;
x0_player.SetCollisionAccuracyModifier(1.f);
x1e08_prevHalfPipeNormal = zeus::CVector3f::skZero;
x1e14_halfPipeNormal = zeus::CVector3f::skZero;
x1e08_prevHalfPipeNormal = zeus::skZero3f;
x1e14_halfPipeNormal = zeus::skZero3f;
}
bool CMorphBall::BallCloseToCollision(const CStateManager& mgr, float dist, const CMaterialFilter& filter) const {
@@ -1653,12 +1653,12 @@ bool CMorphBall::BallCloseToCollision(const CStateManager& mgr, float dist, cons
playerOrSolid);
rstl::reserved_vector<TUniqueId, 1024> nearList;
mgr.BuildColliderList(nearList, x0_player, sphere.CalculateLocalAABox());
if (CGameCollision::DetectStaticCollisionBoolean(mgr, sphere, zeus::CTransform::Identity(), filter))
if (CGameCollision::DetectStaticCollisionBoolean(mgr, sphere, zeus::CTransform(), filter))
return true;
for (TUniqueId id : nearList) {
if (TCastToConstPtr<CPhysicsActor> act = mgr.GetObjectById(id)) {
if (CCollisionPrimitive::CollideBoolean(
{sphere, filter, zeus::CTransform::Identity()},
{sphere, filter, zeus::CTransform()},
{*act->GetCollisionPrimitive(), CMaterialFilter::skPassEverything, act->GetPrimitiveTransform()}))
return true;
}
@@ -1739,7 +1739,7 @@ void CMorphBall::CollidedWith(TUniqueId id, const CCollisionInfoList& list, CSta
if (hitWall && !CSfxManager::IsPlaying(x1e28_wallHitSfxHandle)) {
x1e28_wallHitSfxHandle = CSfxManager::AddEmitter(SFXsam_ball_wallhit, x0_player.GetTranslation(),
zeus::CVector3f::skZero, true, false, 0x7f, kInvalidAreaId);
zeus::skZero3f, true, false, 0x7f, kInvalidAreaId);
x0_player.ApplySubmergedPitchBend(x1e28_wallHitSfxHandle);
}
}
@@ -1757,7 +1757,7 @@ void CMorphBall::CollidedWith(TUniqueId id, const CCollisionInfoList& list, CSta
if (info.GetNormalLeft().dot(x1e14_halfPipeNormal) < 0.99) {
x1e08_prevHalfPipeNormal = x1e14_halfPipeNormal;
x1e14_halfPipeNormal = info.GetNormalLeft();
if (zeus::close_enough(x1e08_prevHalfPipeNormal, zeus::CVector3f::skZero, 0.000011920929f))
if (zeus::close_enough(x1e08_prevHalfPipeNormal, zeus::skZero3f, 0.000011920929f))
x1e08_prevHalfPipeNormal = x1e14_halfPipeNormal;
}
}
@@ -1851,7 +1851,7 @@ void CMorphBall::ComputeLiftForces(const zeus::CVector3f& controlForce, const ze
aabb.min -= zeus::CVector3f(0.1f, 0.1f, -0.05f);
aabb.max += zeus::CVector3f(0.1f, 0.1f, -0.05f);
CCollidableAABox colAABB(aabb, {EMaterialTypes::Solid});
if (CGameCollision::DetectStaticCollisionBoolean(mgr, colAABB, zeus::CTransform::Identity(),
if (CGameCollision::DetectStaticCollisionBoolean(mgr, colAABB, zeus::CTransform(),
CMaterialFilter::skPassEverything)) {
zeus::CVector3f pos = xf.origin + zeus::CVector3f(0.f, 0.f, 1.75f * GetBallRadius());
zeus::CVector3f dir = avgControlForce * (1.f / avgControlForceMag);
@@ -1860,8 +1860,8 @@ void CMorphBall::ComputeLiftForces(const zeus::CVector3f& controlForce, const ze
if (result.IsInvalid()) {
float mag = 1.f - std::max(0.f, avgLiftSpeed - 3.f);
zeus::CVector3f force(0.f, 0.f, mag * 40000.f);
x0_player.ApplyForceWR(force, zeus::CAxisAngle::sIdentity);
x0_player.ApplyImpulseWR(zeus::CVector3f::skZero,
x0_player.ApplyForceWR(force, zeus::CAxisAngle());
x0_player.ApplyImpulseWR(zeus::skZero3f,
zeus::CAxisAngle(-x1924_surfaceToWorld.basis[0] * 1000.f * mag));
}
}
@@ -1904,7 +1904,7 @@ void CMorphBall::Touch(CActor& actor, CStateManager& mgr) {
if (x1de4_24_inBoost && (act->GetVelocity() - x0_player.GetVelocity()).magnitude() >
g_tweakBall->GetBoostBallMinRelativeSpeedForDamage()) {
mgr.ApplyDamage(x0_player.GetUniqueId(), actor.GetUniqueId(), x0_player.GetUniqueId(), kBallDamage,
CMaterialFilter::MakeIncludeExclude({EMaterialTypes::Solid}, {}), zeus::CVector3f::skZero);
CMaterialFilter::MakeIncludeExclude({EMaterialTypes::Solid}, {}), zeus::skZero3f);
}
}
}
@@ -2043,7 +2043,7 @@ void CMorphBall::AddSpiderBallElectricalEffect() {
void CMorphBall::UpdateSpiderBallElectricalEffects() {
zeus::CTransform ballToWorld = GetBallToWorld();
zeus::CVector3f ballTranslation = ballToWorld.origin;
ballToWorld.origin = zeus::CVector3f::skZero;
ballToWorld.origin = zeus::skZero3f;
for (auto it = x1b6c_activeSpiderElectricList.begin(); it != x1b6c_activeSpiderElectricList.end();) {
CSpiderBallElectricityManager& elec = *it;