mirror of https://github.com/AxioDL/metaforce.git
CDrone: Implement ShouldFire
This commit is contained in:
parent
21b04bf40d
commit
9489bd3812
|
@ -828,6 +828,21 @@ bool CDrone::ShouldAttack(CStateManager& mgr, float arg) {
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool CDrone::ShouldFire(CStateManager& mgr, float arg) {
|
||||||
|
if (mgr.GetPlayer().GetMorphballTransitionState() == CPlayer::EPlayerMorphBallState::Morphed || x624_ > 0.f) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
const zeus::CVector3f playerAimPos = mgr.GetPlayer().GetAimPosition(mgr, 0.f);
|
||||||
|
constexpr auto matFilter =
|
||||||
|
CMaterialFilter::MakeIncludeExclude({EMaterialTypes::Solid, EMaterialTypes::Character},
|
||||||
|
{EMaterialTypes::Player, EMaterialTypes::ProjectilePassthrough});
|
||||||
|
bool result = mgr.RayCollideWorld(GetLctrTransform("R_GUN_TOP_LCTR"sv).origin, playerAimPos, matFilter, this);
|
||||||
|
if (!result) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
return mgr.RayCollideWorld(GetLctrTransform("L_GUN_TOP_LCTR"sv).origin, playerAimPos, matFilter, this);
|
||||||
|
}
|
||||||
|
|
||||||
bool CDrone::HearShot(CStateManager& mgr, float arg) {
|
bool CDrone::HearShot(CStateManager& mgr, float arg) {
|
||||||
rstl::reserved_vector<TUniqueId, 1024> nearList;
|
rstl::reserved_vector<TUniqueId, 1024> nearList;
|
||||||
BuildNearList(EMaterialTypes::Projectile, EMaterialTypes::Player, nearList, 10.f, mgr);
|
BuildNearList(EMaterialTypes::Projectile, EMaterialTypes::Player, nearList, 10.f, mgr);
|
||||||
|
|
|
@ -158,6 +158,7 @@ public:
|
||||||
bool AnimOver(CStateManager&, float arg) override;
|
bool AnimOver(CStateManager&, float arg) override;
|
||||||
bool AttackOver(CStateManager& mgr, float arg) override;
|
bool AttackOver(CStateManager& mgr, float arg) override;
|
||||||
bool ShouldAttack(CStateManager&, float arg) override;
|
bool ShouldAttack(CStateManager&, float arg) override;
|
||||||
|
bool ShouldFire(CStateManager& mgr, float arg) override;
|
||||||
bool HearShot(CStateManager&, float arg) override;
|
bool HearShot(CStateManager&, float arg) override;
|
||||||
bool CoverCheck(CStateManager&, float arg) override;
|
bool CoverCheck(CStateManager&, float arg) override;
|
||||||
bool LineOfSight(CStateManager&, float arg) override;
|
bool LineOfSight(CStateManager&, float arg) override;
|
||||||
|
|
Loading…
Reference in New Issue