mirror of https://github.com/AxioDL/metaforce.git
Minor fixes to CWaveBuster
This commit is contained in:
parent
ea4df90011
commit
6fe14ab71a
|
@ -57,7 +57,7 @@ void CWaveBuster::Think(float dt, CStateManager& mgr) {
|
||||||
float dVar17 = 0.f;
|
float dVar17 = 0.f;
|
||||||
if (!x3d0_25_ && !x3d0_26_) {
|
if (!x3d0_25_ && !x3d0_26_) {
|
||||||
TUniqueId uid = kInvalidUniqueId;
|
TUniqueId uid = kInvalidUniqueId;
|
||||||
CRayCastResult res = sub_801be010(uid, local_160, local_16c, mgr, dt);
|
CRayCastResult res = SeekDamageTarget(uid, local_160, local_16c, mgr, dt);
|
||||||
if (res.IsValid() && res.GetT() < 25.f) {
|
if (res.IsValid() && res.GetT() < 25.f) {
|
||||||
if (TCastToPtr<CActor> act = mgr.ObjectById(uid)) {
|
if (TCastToPtr<CActor> act = mgr.ObjectById(uid)) {
|
||||||
act->Touch(*this, mgr);
|
act->Touch(*this, mgr);
|
||||||
|
@ -287,19 +287,21 @@ void CWaveBuster::RenderBeam() {
|
||||||
m_lineRenderer2.Render();
|
m_lineRenderer2.Render();
|
||||||
}
|
}
|
||||||
|
|
||||||
CRayCastResult CWaveBuster::sub_801be010(TUniqueId uid, const zeus::CVector3f& pos, const zeus::CVector3f& dir,
|
CRayCastResult CWaveBuster::SeekDamageTarget(TUniqueId& uid, const zeus::CVector3f& pos, const zeus::CVector3f& dir,
|
||||||
CStateManager& mgr, float dt) {
|
CStateManager& mgr, float dt) {
|
||||||
CRayCastResult res = mgr.RayStaticIntersection(pos, dir, 25.f, xf8_filter);
|
CRayCastResult res = mgr.RayStaticIntersection(pos, dir, 25.f, xf8_filter);
|
||||||
TUniqueId physId = kInvalidUniqueId;
|
TUniqueId physId = kInvalidUniqueId;
|
||||||
TUniqueId actId = kInvalidUniqueId;
|
TUniqueId actId = kInvalidUniqueId;
|
||||||
CRayCastResult physRes;
|
CRayCastResult physRes;
|
||||||
CRayCastResult actRes;
|
CRayCastResult actRes;
|
||||||
sub_801bda14(mgr, physId, actId, pos, dir, 25.f, physRes, actRes);
|
RayCastTarget(mgr, physId, actId, pos, dir, 25.f, physRes, actRes);
|
||||||
if (actRes.IsValid() && ApplyDamageToTarget(physId, actRes, physRes, res, mgr, dt)) {
|
if (actRes.IsValid() && ApplyDamageToTarget(physId, actRes, physRes, res, mgr, dt)) {
|
||||||
|
uid = actId;
|
||||||
return actRes;
|
return actRes;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (physRes.IsValid() && ApplyDamageToTarget(actId, actRes, physRes, res, mgr, dt)) {
|
if (physRes.IsValid() && ApplyDamageToTarget(actId, actRes, physRes, res, mgr, dt)) {
|
||||||
|
uid = physId;
|
||||||
return physRes;
|
return physRes;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -409,7 +411,7 @@ float CWaveBuster::GetViewAngleToTarget(zeus::CVector3f& p1, const CActor& act)
|
||||||
return zeus::CVector2f::getAngleDiff(x2e8_originalXf.basis[1].toVec2f(), p1.toVec2f());
|
return zeus::CVector2f::getAngleDiff(x2e8_originalXf.basis[1].toVec2f(), p1.toVec2f());
|
||||||
}
|
}
|
||||||
|
|
||||||
void CWaveBuster::sub_801bda14(CStateManager& mgr, TUniqueId& physId, TUniqueId& actId, const zeus::CVector3f& start,
|
void CWaveBuster::RayCastTarget(CStateManager& mgr, TUniqueId& physId, TUniqueId& actId, const zeus::CVector3f& start,
|
||||||
const zeus::CVector3f& end, float length, CRayCastResult& physRes,
|
const zeus::CVector3f& end, float length, CRayCastResult& physRes,
|
||||||
CRayCastResult& actorRes) {
|
CRayCastResult& actorRes) {
|
||||||
const zeus::CAABox box = zeus::CAABox(-0.5f, 0.f, -0.5f, 0.5f, 25.f, 0.5f).getTransformedAABox(x2e8_originalXf);
|
const zeus::CAABox box = zeus::CAABox(-0.5f, 0.f, -0.5f, 0.5f, 25.f, 0.5f).getTransformedAABox(x2e8_originalXf);
|
||||||
|
|
|
@ -51,7 +51,7 @@ class CWaveBuster : public CGameProjectile {
|
||||||
|
|
||||||
void RenderParticles();
|
void RenderParticles();
|
||||||
void RenderBeam();
|
void RenderBeam();
|
||||||
CRayCastResult sub_801be010(TUniqueId uid, const zeus::CVector3f& pos, const zeus::CVector3f& dir, CStateManager& mgr,
|
CRayCastResult SeekDamageTarget(TUniqueId& uid, const zeus::CVector3f& pos, const zeus::CVector3f& dir, CStateManager& mgr,
|
||||||
float dt);
|
float dt);
|
||||||
bool ApplyDamageToTarget(TUniqueId damagee, const CRayCastResult& actRes, const CRayCastResult& physRes,
|
bool ApplyDamageToTarget(TUniqueId damagee, const CRayCastResult& actRes, const CRayCastResult& physRes,
|
||||||
const CRayCastResult& selfRes, CStateManager& mgr, float dt);
|
const CRayCastResult& selfRes, CStateManager& mgr, float dt);
|
||||||
|
@ -59,7 +59,7 @@ class CWaveBuster : public CGameProjectile {
|
||||||
void UpdateTargetSeek(float dt, CStateManager& mgr);
|
void UpdateTargetSeek(float dt, CStateManager& mgr);
|
||||||
void UpdateTargetDamage(float dt, CStateManager& mgr);
|
void UpdateTargetDamage(float dt, CStateManager& mgr);
|
||||||
bool UpdateBeamFrame(CStateManager& mgr, float dt);
|
bool UpdateBeamFrame(CStateManager& mgr, float dt);
|
||||||
void sub_801bda14(CStateManager& mgr, TUniqueId& physId, TUniqueId& actId, const zeus::CVector3f& start,
|
void RayCastTarget(CStateManager& mgr, TUniqueId& physId, TUniqueId& actId, const zeus::CVector3f& start,
|
||||||
const zeus::CVector3f& end, float length, CRayCastResult& physRes, CRayCastResult& actorRes);
|
const zeus::CVector3f& end, float length, CRayCastResult& physRes, CRayCastResult& actorRes);
|
||||||
CRayCastResult SeekTarget(float dt, TUniqueId& uid, CStateManager& mgr);
|
CRayCastResult SeekTarget(float dt, TUniqueId& uid, CStateManager& mgr);
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue