mirror of https://github.com/AxioDL/metaforce.git
CFlyingPirate: Remove useless references
This commit is contained in:
parent
a2bcb4d086
commit
61577b16d2
|
@ -122,9 +122,9 @@ CFlyingPirate::CFlyingPirateRagDoll::CFlyingPirateRagDoll(CStateManager& mgr, CF
|
||||||
CAnimData* animData = modelData->GetAnimationData();
|
CAnimData* animData = modelData->GetAnimationData();
|
||||||
const zeus::CVector3f& scale = modelData->GetScale();
|
const zeus::CVector3f& scale = modelData->GetScale();
|
||||||
animData->BuildPose();
|
animData->BuildPose();
|
||||||
const zeus::CVector3f& center = actor->GetBoundingBox().center();
|
const zeus::CVector3f center = actor->GetBoundingBox().center();
|
||||||
for (size_t i = 0; i < skParts.size(); ++i) {
|
for (size_t i = 0; i < skParts.size(); ++i) {
|
||||||
const CSegId& id = animData->GetLocatorSegId(skParts[i]);
|
const CSegId id = animData->GetLocatorSegId(skParts[i]);
|
||||||
AddParticle(id, center, actor->GetTransform() * (scale * animData->GetPose().GetOffset(id)),
|
AddParticle(id, center, actor->GetTransform() * (scale * animData->GetPose().GetOffset(id)),
|
||||||
skRadii[i] * scale.z());
|
skRadii[i] * scale.z());
|
||||||
}
|
}
|
||||||
|
@ -185,7 +185,7 @@ void CFlyingPirate::CFlyingPirateRagDoll::PreRender(const zeus::CVector3f& v, CM
|
||||||
CAnimData* const animData = mData.GetAnimationData();
|
CAnimData* const animData = mData.GetAnimationData();
|
||||||
const CCharLayoutInfo& layout = animData->GetCharLayoutInfo();
|
const CCharLayoutInfo& layout = animData->GetCharLayoutInfo();
|
||||||
CHierarchyPoseBuilder& poseBuilder = animData->PoseBuilder();
|
CHierarchyPoseBuilder& poseBuilder = animData->PoseBuilder();
|
||||||
for (const auto& id : layout.GetSegIdList().GetList()) {
|
for (const auto id : layout.GetSegIdList().GetList()) {
|
||||||
if (layout.GetRootNode()->GetBoneMap()[id].x10_children.size() > 1) {
|
if (layout.GetRootNode()->GetBoneMap()[id].x10_children.size() > 1) {
|
||||||
poseBuilder.GetTreeMap()[id].x4_rotation = zeus::CQuaternion();
|
poseBuilder.GetTreeMap()[id].x4_rotation = zeus::CQuaternion();
|
||||||
}
|
}
|
||||||
|
@ -231,7 +231,7 @@ void CFlyingPirate::CFlyingPirateRagDoll::Update(CStateManager& mgr, float dt, f
|
||||||
if (!x68_25_over) {
|
if (!x68_25_over) {
|
||||||
if (x6c_actor->x6a1_30_spinToDeath) {
|
if (x6c_actor->x6a1_30_spinToDeath) {
|
||||||
x84_ -= dt;
|
x84_ -= dt;
|
||||||
const zeus::CVector3f& v9c = (x6c_actor->x2e0_destPos - x4_particles[14].GetPosition()).normalized();
|
const zeus::CVector3f v9c = (x6c_actor->x2e0_destPos - x4_particles[14].GetPosition()).normalized();
|
||||||
x74_ = zeus::CVector3f::slerp(x74_, v9c, zeus::degToRad(360.f * dt));
|
x74_ = zeus::CVector3f::slerp(x74_, v9c, zeus::degToRad(360.f * dt));
|
||||||
x70_ = 25.f;
|
x70_ = 25.f;
|
||||||
zeus::CVector3f mul = x70_ * x74_;
|
zeus::CVector3f mul = x70_ * x74_;
|
||||||
|
@ -393,7 +393,7 @@ void CFlyingPirate::AcceptScriptMsg(EScriptObjectMessage msg, TUniqueId uid, CSt
|
||||||
SetMomentumWR({0.f, 0.f, -xe8_mass * GetGravityConstant()});
|
SetMomentumWR({0.f, 0.f, -xe8_mass * GetGravityConstant()});
|
||||||
AddMaterial(EMaterialTypes::GroundCollider, mgr);
|
AddMaterial(EMaterialTypes::GroundCollider, mgr);
|
||||||
SetDestPos(cover->GetTranslation());
|
SetDestPos(cover->GetTranslation());
|
||||||
const zeus::CVector3f& dist = cover->GetTranslation() - GetTranslation();
|
const zeus::CVector3f dist = cover->GetTranslation() - GetTranslation();
|
||||||
if (dist.z() < 0.f) {
|
if (dist.z() < 0.f) {
|
||||||
zeus::CVector3f velocity = GetVelocity();
|
zeus::CVector3f velocity = GetVelocity();
|
||||||
const float gravity = GetGravityConstant();
|
const float gravity = GetGravityConstant();
|
||||||
|
@ -402,7 +402,7 @@ void CFlyingPirate::AcceptScriptMsg(EScriptObjectMessage msg, TUniqueId uid, CSt
|
||||||
float dVar9 = (-velocity.z() + fVar3) / gravity;
|
float dVar9 = (-velocity.z() + fVar3) / gravity;
|
||||||
if (0.f < dVar9) {
|
if (0.f < dVar9) {
|
||||||
zeus::CVector2f dist2f(dist.x(), dist.y());
|
zeus::CVector2f dist2f(dist.x(), dist.y());
|
||||||
const zeus::CVector2f& normal = dist2f.normalized();
|
const zeus::CVector2f normal = dist2f.normalized();
|
||||||
const float mag = dist2f.magnitude();
|
const float mag = dist2f.magnitude();
|
||||||
velocity.x() = (mag / dVar9) * normal.x();
|
velocity.x() = (mag / dVar9) * normal.x();
|
||||||
velocity.y() = (mag / dVar9) * normal.y();
|
velocity.y() = (mag / dVar9) * normal.y();
|
||||||
|
@ -534,16 +534,16 @@ void CFlyingPirate::CalculateRenderBounds() {
|
||||||
if (!x89c_ragDoll || !x89c_ragDoll->IsPrimed()) {
|
if (!x89c_ragDoll || !x89c_ragDoll->IsPrimed()) {
|
||||||
CActor::CalculateRenderBounds();
|
CActor::CalculateRenderBounds();
|
||||||
} else {
|
} else {
|
||||||
const zeus::CAABox& bounds = x89c_ragDoll->CalculateRenderBounds();
|
const zeus::CAABox bounds = x89c_ragDoll->CalculateRenderBounds();
|
||||||
const zeus::CVector3f& scale = 0.25f * GetModelData()->GetScale();
|
const zeus::CVector3f scale = 0.25f * GetModelData()->GetScale();
|
||||||
x9c_renderBounds = {bounds.min - scale, bounds.max + scale};
|
x9c_renderBounds = {bounds.min - scale, bounds.max + scale};
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
bool CFlyingPirate::CanFireMissiles(CStateManager& mgr) {
|
bool CFlyingPirate::CanFireMissiles(CStateManager& mgr) {
|
||||||
for (const auto& seg : x864_missileSegments) {
|
for (const auto seg : x864_missileSegments) {
|
||||||
const zeus::CTransform& xf = GetLctrTransform(seg);
|
const zeus::CTransform xf = GetLctrTransform(seg);
|
||||||
const zeus::CVector3f& dir = xf.origin + (3.f * xf.frontVector());
|
const zeus::CVector3f dir = xf.origin + (3.f * xf.frontVector());
|
||||||
CMaterialList matList(EMaterialTypes::Player, EMaterialTypes::ProjectilePassthrough);
|
CMaterialList matList(EMaterialTypes::Player, EMaterialTypes::ProjectilePassthrough);
|
||||||
if (!LineOfSightTest(mgr, xf.origin, dir, matList) || !LineOfSightTest(mgr, dir, GetTargetPos(mgr), matList)) {
|
if (!LineOfSightTest(mgr, xf.origin, dir, matList) || !LineOfSightTest(mgr, dir, GetTargetPos(mgr), matList)) {
|
||||||
x6a1_28_ = true;
|
x6a1_28_ = true;
|
||||||
|
@ -563,7 +563,7 @@ void CFlyingPirate::CheckForProjectiles(CStateManager& mgr) {
|
||||||
|
|
||||||
rstl::reserved_vector<TUniqueId, 1024> nearList;
|
rstl::reserved_vector<TUniqueId, 1024> nearList;
|
||||||
mgr.BuildNearList(nearList, box, CMaterialFilter::MakeInclude(EMaterialTypes::Projectile), this);
|
mgr.BuildNearList(nearList, box, CMaterialFilter::MakeInclude(EMaterialTypes::Projectile), this);
|
||||||
for (const auto& id : nearList) {
|
for (const auto id : nearList) {
|
||||||
if (TCastToConstPtr<CGameProjectile> proj = mgr.GetObjectById(id)) {
|
if (TCastToConstPtr<CGameProjectile> proj = mgr.GetObjectById(id)) {
|
||||||
zeus::CVector3f dist = GetBoundingBox().center() - proj->GetTranslation();
|
zeus::CVector3f dist = GetBoundingBox().center() - proj->GetTranslation();
|
||||||
if (dist.isMagnitudeSafe()) {
|
if (dist.isMagnitudeSafe()) {
|
||||||
|
@ -662,7 +662,7 @@ void CFlyingPirate::DoUserAnimEvent(CStateManager& mgr, const CInt32POINode& nod
|
||||||
CProjectileInfo& pInfo =
|
CProjectileInfo& pInfo =
|
||||||
x6a1_26_isAttackingObject ? x568_data.x60_altProjectileInfo2 : x568_data.x38_altProjectileInfo1;
|
x6a1_26_isAttackingObject ? x568_data.x60_altProjectileInfo2 : x568_data.x38_altProjectileInfo1;
|
||||||
if (pInfo.Token().IsLoaded() && mgr.CanCreateProjectile(x8_uid, EWeaponType::AI, 16)) {
|
if (pInfo.Token().IsLoaded() && mgr.CanCreateProjectile(x8_uid, EWeaponType::AI, 16)) {
|
||||||
const zeus::CTransform& xf = GetLctrTransform(node.GetLocatorName());
|
const zeus::CTransform xf = GetLctrTransform(node.GetLocatorName());
|
||||||
TUniqueId target = x6a1_26_isAttackingObject ? x85c_attackObjectId : mgr.GetPlayer().GetUniqueId();
|
TUniqueId target = x6a1_26_isAttackingObject ? x85c_attackObjectId : mgr.GetPlayer().GetUniqueId();
|
||||||
CEnergyProjectile* projectile =
|
CEnergyProjectile* projectile =
|
||||||
new CEnergyProjectile(true, pInfo.Token(), EWeaponType::AI, xf, EMaterialTypes::Character, pInfo.GetDamage(),
|
new CEnergyProjectile(true, pInfo.Token(), EWeaponType::AI, xf, EMaterialTypes::Character, pInfo.GetDamage(),
|
||||||
|
@ -721,7 +721,7 @@ void CFlyingPirate::MassiveDeath(CStateManager& mgr) {
|
||||||
|
|
||||||
void CFlyingPirate::FireProjectile(CStateManager& mgr, float dt) {
|
void CFlyingPirate::FireProjectile(CStateManager& mgr, float dt) {
|
||||||
bool projectileFired = false;
|
bool projectileFired = false;
|
||||||
const zeus::CTransform& xf = GetLctrTransform(x7e0_gunSegId);
|
const zeus::CTransform xf = GetLctrTransform(x7e0_gunSegId);
|
||||||
if (!x400_25_alive) {
|
if (!x400_25_alive) {
|
||||||
LaunchProjectile(xf, mgr, 8, EProjectileAttrib::None, false, std::nullopt, -1, false, zeus::skOne3f);
|
LaunchProjectile(xf, mgr, 8, EProjectileAttrib::None, false, std::nullopt, -1, false, zeus::skOne3f);
|
||||||
projectileFired = true;
|
projectileFired = true;
|
||||||
|
@ -746,7 +746,7 @@ void CFlyingPirate::FireProjectile(CStateManager& mgr, float dt) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (projectileFired) {
|
if (projectileFired) {
|
||||||
const std::pair<float, s32>& anim = x450_bodyController->GetPASDatabase().FindBestAnimation(
|
const std::pair<float, s32> anim = x450_bodyController->GetPASDatabase().FindBestAnimation(
|
||||||
CPASAnimParmData{24, CPASAnimParm::FromEnum(2)}, *mgr.GetActiveRandom(), -1);
|
CPASAnimParmData{24, CPASAnimParm::FromEnum(2)}, *mgr.GetActiveRandom(), -1);
|
||||||
if (anim.first > 0.f) {
|
if (anim.first > 0.f) {
|
||||||
GetModelData()->GetAnimationData()->AddAdditiveAnimation(anim.second, 1.f, false, true);
|
GetModelData()->GetAnimationData()->AddAdditiveAnimation(anim.second, 1.f, false, true);
|
||||||
|
@ -766,7 +766,7 @@ pas::EStepDirection CFlyingPirate::GetDodgeDirection(CStateManager& mgr, float a
|
||||||
if (entity == this)
|
if (entity == this)
|
||||||
continue;
|
continue;
|
||||||
if (TCastToPtr<CPhysicsActor> actor = entity) {
|
if (TCastToPtr<CPhysicsActor> actor = entity) {
|
||||||
const zeus::CVector3f& dist = actor->GetTranslation() - GetTranslation();
|
const zeus::CVector3f dist = actor->GetTranslation() - GetTranslation();
|
||||||
float distMagSquared = dist.magSquared();
|
float distMagSquared = dist.magSquared();
|
||||||
if (distMagSquared < argSquared) {
|
if (distMagSquared < argSquared) {
|
||||||
float rightVecMag = GetTransform().rightVector().magSquared();
|
float rightVecMag = GetTransform().rightVector().magSquared();
|
||||||
|
@ -785,7 +785,7 @@ pas::EStepDirection CFlyingPirate::GetDodgeDirection(CStateManager& mgr, float a
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
const zeus::CVector3f& center = GetBoundingBox().center();
|
const zeus::CVector3f center = GetBoundingBox().center();
|
||||||
if (canDodgeRight) {
|
if (canDodgeRight) {
|
||||||
canDodgeRight = LineOfSightTest(mgr, center, center + (arg * GetTransform().rightVector()), {});
|
canDodgeRight = LineOfSightTest(mgr, center, center + (arg * GetTransform().rightVector()), {});
|
||||||
}
|
}
|
||||||
|
@ -816,7 +816,7 @@ pas::EStepDirection CFlyingPirate::GetDodgeDirection(CStateManager& mgr, float a
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (canDodgeUp && canDodgeDown) {
|
if (canDodgeUp && canDodgeDown) {
|
||||||
const zeus::CVector3f& target = GetTargetPos(mgr);
|
const zeus::CVector3f target = GetTargetPos(mgr);
|
||||||
if (target.z() - (GetTranslation().z() + x568_data.x8c_flyingHeight) <= 0.f) {
|
if (target.z() - (GetTranslation().z() + x568_data.x8c_flyingHeight) <= 0.f) {
|
||||||
canDodgeUp = false;
|
canDodgeUp = false;
|
||||||
} else {
|
} else {
|
||||||
|
@ -838,7 +838,7 @@ pas::EStepDirection CFlyingPirate::GetDodgeDirection(CStateManager& mgr, float a
|
||||||
|
|
||||||
zeus::CVector3f CFlyingPirate::GetTargetPos(CStateManager& mgr) {
|
zeus::CVector3f CFlyingPirate::GetTargetPos(CStateManager& mgr) {
|
||||||
const CPlayer& player = mgr.GetPlayer();
|
const CPlayer& player = mgr.GetPlayer();
|
||||||
const TUniqueId& playerUid = player.GetUniqueId();
|
const TUniqueId playerUid = player.GetUniqueId();
|
||||||
if (x7e8_targetId != playerUid) {
|
if (x7e8_targetId != playerUid) {
|
||||||
if (TCastToPtr<CActor> actor = mgr.ObjectById(x7e8_targetId)) {
|
if (TCastToPtr<CActor> actor = mgr.ObjectById(x7e8_targetId)) {
|
||||||
if (actor->GetActive()) {
|
if (actor->GetActive()) {
|
||||||
|
@ -883,7 +883,7 @@ bool CFlyingPirate::InPosition(CStateManager& mgr, float) {
|
||||||
if (cover == nullptr) {
|
if (cover == nullptr) {
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
const zeus::CVector3f& dist = cover->GetTranslation() - GetTranslation();
|
const zeus::CVector3f dist = cover->GetTranslation() - GetTranslation();
|
||||||
return dist.z() < 0.f && dist.magnitude() < 4.f;
|
return dist.z() < 0.f && dist.magnitude() < 4.f;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -929,8 +929,8 @@ void CFlyingPirate::KnockBack(const zeus::CVector3f& pos, CStateManager& mgr, co
|
||||||
// if (waypointId != kInvalidUniqueId) {
|
// if (waypointId != kInvalidUniqueId) {
|
||||||
// casts and then does nothing?
|
// casts and then does nothing?
|
||||||
// }
|
// }
|
||||||
const zeus::CVector3f& homingPosition = mgr.GetPlayer().GetHomingPosition(mgr, 0.f);
|
const zeus::CVector3f homingPosition = mgr.GetPlayer().GetHomingPosition(mgr, 0.f);
|
||||||
const zeus::CVector3f& homingDist = homingPosition - GetTranslation();
|
const zeus::CVector3f homingDist = homingPosition - GetTranslation();
|
||||||
zeus::CVector3f cross = homingDist.cross(zeus::skUp);
|
zeus::CVector3f cross = homingDist.cross(zeus::skUp);
|
||||||
if (zeus::close_enough(cross, zeus::skZero3f, 1.0E-4f)) {
|
if (zeus::close_enough(cross, zeus::skZero3f, 1.0E-4f)) {
|
||||||
cross = homingDist.cross(zeus::skForward);
|
cross = homingDist.cross(zeus::skForward);
|
||||||
|
@ -993,7 +993,7 @@ bool CFlyingPirate::Listen(const zeus::CVector3f& pos, EListenNoiseType type) {
|
||||||
bool ret = false;
|
bool ret = false;
|
||||||
if (x400_25_alive) {
|
if (x400_25_alive) {
|
||||||
float x4Squared = x568_data.x4_hearingDistance * x568_data.x4_hearingDistance;
|
float x4Squared = x568_data.x4_hearingDistance * x568_data.x4_hearingDistance;
|
||||||
const zeus::CVector3f& dist = pos - GetTranslation();
|
const zeus::CVector3f dist = pos - GetTranslation();
|
||||||
if (dist.magSquared() < x4Squared && (x3c0_detectionHeightRange == 0.f || (dist.z() * dist.z() < x4Squared))) {
|
if (dist.magSquared() < x4Squared && (x3c0_detectionHeightRange == 0.f || (dist.z() * dist.z() < x4Squared))) {
|
||||||
ret = true;
|
ret = true;
|
||||||
x6a0_26_hearShot = true;
|
x6a0_26_hearShot = true;
|
||||||
|
@ -1061,7 +1061,7 @@ void CFlyingPirate::PathFind(CStateManager& mgr, EStateMsg msg, float arg) {
|
||||||
if (search->GetResult() == CPathFindSearch::EResult::Success &&
|
if (search->GetResult() == CPathFindSearch::EResult::Success &&
|
||||||
search->GetCurrentWaypoint() < search->GetWaypoints().size() - 1) {
|
search->GetCurrentWaypoint() < search->GetWaypoints().size() - 1) {
|
||||||
zeus::CVector3f out = GetTranslation();
|
zeus::CVector3f out = GetTranslation();
|
||||||
const zeus::CVector3f& front = out + GetTransform().frontVector();
|
const zeus::CVector3f front = out + GetTransform().frontVector();
|
||||||
search->GetSplinePointWithLookahead(out, front, 3.f);
|
search->GetSplinePointWithLookahead(out, front, 3.f);
|
||||||
if (search->SegmentOver(out)) {
|
if (search->SegmentOver(out)) {
|
||||||
search->SetCurrentWaypoint(search->GetCurrentWaypoint() + 1);
|
search->SetCurrentWaypoint(search->GetCurrentWaypoint() + 1);
|
||||||
|
@ -1086,7 +1086,7 @@ void CFlyingPirate::PathFind(CStateManager& mgr, EStateMsg msg, float arg) {
|
||||||
x898_ = fVar2;
|
x898_ = fVar2;
|
||||||
x870_ += x87c_;
|
x870_ += x87c_;
|
||||||
|
|
||||||
const zeus::CVector3f& face = (GetTargetPos(mgr) - GetTranslation()).normalized();
|
const zeus::CVector3f face = (GetTargetPos(mgr) - GetTranslation()).normalized();
|
||||||
x450_bodyController->GetCommandMgr().DeliverCmd(CBCLocomotionCmd(move, face, 1.f));
|
x450_bodyController->GetCommandMgr().DeliverCmd(CBCLocomotionCmd(move, face, 1.f));
|
||||||
UpdateCanSeePlayer(mgr);
|
UpdateCanSeePlayer(mgr);
|
||||||
} else if (msg == EStateMsg::Deactivate) {
|
} else if (msg == EStateMsg::Deactivate) {
|
||||||
|
@ -1153,7 +1153,7 @@ void CFlyingPirate::Retreat(CStateManager& mgr, EStateMsg msg, float arg) {
|
||||||
if (msg == EStateMsg::Activate) {
|
if (msg == EStateMsg::Activate) {
|
||||||
const zeus::CVector3f& origin = GetTranslation();
|
const zeus::CVector3f& origin = GetTranslation();
|
||||||
const zeus::CVector3f& playerOrigin = mgr.GetPlayer().GetTranslation();
|
const zeus::CVector3f& playerOrigin = mgr.GetPlayer().GetTranslation();
|
||||||
const zeus::CVector3f& dist = (playerOrigin - origin).normalized();
|
const zeus::CVector3f dist = (playerOrigin - origin).normalized();
|
||||||
zeus::CVector3f target{
|
zeus::CVector3f target{
|
||||||
origin.x() - x2fc_minAttackRange * dist.x(),
|
origin.x() - x2fc_minAttackRange * dist.x(),
|
||||||
origin.y() - x2fc_minAttackRange * dist.y(),
|
origin.y() - x2fc_minAttackRange * dist.y(),
|
||||||
|
@ -1203,7 +1203,7 @@ void CFlyingPirate::Retreat(CStateManager& mgr, EStateMsg msg, float arg) {
|
||||||
x898_ = fVar2;
|
x898_ = fVar2;
|
||||||
x870_ += x87c_;
|
x870_ += x87c_;
|
||||||
|
|
||||||
const zeus::CVector3f& face = (GetTargetPos(mgr) - GetTranslation()).normalized();
|
const zeus::CVector3f face = (GetTargetPos(mgr) - GetTranslation()).normalized();
|
||||||
x450_bodyController->GetCommandMgr().DeliverCmd(CBCLocomotionCmd(move, face, 1.f));
|
x450_bodyController->GetCommandMgr().DeliverCmd(CBCLocomotionCmd(move, face, 1.f));
|
||||||
UpdateCanSeePlayer(mgr);
|
UpdateCanSeePlayer(mgr);
|
||||||
}
|
}
|
||||||
|
@ -1241,7 +1241,7 @@ bool CFlyingPirate::ShouldMove(CStateManager& mgr, float) {
|
||||||
const CPlayer& player = mgr.GetPlayer();
|
const CPlayer& player = mgr.GetPlayer();
|
||||||
const zeus::CVector3f& origin = GetTranslation();
|
const zeus::CVector3f& origin = GetTranslation();
|
||||||
const zeus::CVector3f& playerOrigin = player.GetTranslation();
|
const zeus::CVector3f& playerOrigin = player.GetTranslation();
|
||||||
const zeus::CVector3f& dist = origin - playerOrigin;
|
const zeus::CVector3f dist = origin - playerOrigin;
|
||||||
|
|
||||||
CRandom16* activeRandom = mgr.GetActiveRandom();
|
CRandom16* activeRandom = mgr.GetActiveRandom();
|
||||||
float rand = activeRandom->Float();
|
float rand = activeRandom->Float();
|
||||||
|
@ -1251,7 +1251,7 @@ bool CFlyingPirate::ShouldMove(CStateManager& mgr, float) {
|
||||||
rand = activeRandom->Range(-25.f, -15.f);
|
rand = activeRandom->Range(-25.f, -15.f);
|
||||||
}
|
}
|
||||||
|
|
||||||
const zeus::CVector3f& cross = dist.cross(zeus::skUp).normalized();
|
const zeus::CVector3f cross = dist.cross(zeus::skUp).normalized();
|
||||||
SetDestPos({
|
SetDestPos({
|
||||||
origin.x() + (rand * cross.x()),
|
origin.x() + (rand * cross.x()),
|
||||||
origin.y() + (rand * cross.y()),
|
origin.y() + (rand * cross.y()),
|
||||||
|
@ -1307,7 +1307,7 @@ bool CFlyingPirate::ShouldSpecialAttack(CStateManager& mgr, float) {
|
||||||
}
|
}
|
||||||
|
|
||||||
bool CFlyingPirate::SpotPlayer(CStateManager& mgr, float) {
|
bool CFlyingPirate::SpotPlayer(CStateManager& mgr, float) {
|
||||||
const zeus::CVector3f& dir = mgr.GetPlayer().GetAimPosition(mgr, 0.f) - GetGunEyePos();
|
const zeus::CVector3f dir = mgr.GetPlayer().GetAimPosition(mgr, 0.f) - GetGunEyePos();
|
||||||
return dir.magnitude() * x3c4_detectionAngle < dir.dot(GetTransform().frontVector());
|
return dir.magnitude() * x3c4_detectionAngle < dir.dot(GetTransform().frontVector());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1326,7 +1326,7 @@ void CFlyingPirate::UpdateLandingSmoke(CStateManager& mgr, bool active) {
|
||||||
if (cover != nullptr) {
|
if (cover != nullptr) {
|
||||||
particleLevel = cover->GetTranslation().z() - 1.f;
|
particleLevel = cover->GetTranslation().z() - 1.f;
|
||||||
}
|
}
|
||||||
const CRayCastResult& result = mgr.RayStaticIntersection(origin, zeus::skDown, origin.z() - particleLevel,
|
const CRayCastResult result = mgr.RayStaticIntersection(origin, zeus::skDown, origin.z() - particleLevel,
|
||||||
CMaterialFilter::MakeInclude({EMaterialTypes::Solid}));
|
CMaterialFilter::MakeInclude({EMaterialTypes::Solid}));
|
||||||
int idx = 1;
|
int idx = 1;
|
||||||
if (result.IsValid()) {
|
if (result.IsValid()) {
|
||||||
|
@ -1385,8 +1385,8 @@ void CFlyingPirate::DeliverGetUp() {
|
||||||
void CFlyingPirate::UpdateCanSeePlayer(CStateManager& mgr) {
|
void CFlyingPirate::UpdateCanSeePlayer(CStateManager& mgr) {
|
||||||
if (x7dc_ % 7 == 0) {
|
if (x7dc_ % 7 == 0) {
|
||||||
bool bVar4 = true;
|
bool bVar4 = true;
|
||||||
const zeus::CVector3f& start = GetGunEyePos() - GetTransform().rightVector();
|
const zeus::CVector3f start = GetGunEyePos() - GetTransform().rightVector();
|
||||||
const zeus::CVector3f& end = GetAimPosition(mgr, 0.f);
|
const zeus::CVector3f end = GetAimPosition(mgr, 0.f);
|
||||||
const CMaterialList matList(EMaterialTypes::Player, EMaterialTypes::ProjectilePassthrough);
|
const CMaterialList matList(EMaterialTypes::Player, EMaterialTypes::ProjectilePassthrough);
|
||||||
if (LineOfSightTest(mgr, start, end, matList)) {
|
if (LineOfSightTest(mgr, start, end, matList)) {
|
||||||
bVar4 = !LineOfSightTest(mgr, start, end, matList);
|
bVar4 = !LineOfSightTest(mgr, start, end, matList);
|
||||||
|
@ -1433,7 +1433,7 @@ void CFlyingPirate::Taunt(CStateManager& mgr, EStateMsg msg, float) {
|
||||||
if (msg == EStateMsg::Activate) {
|
if (msg == EStateMsg::Activate) {
|
||||||
x6a0_28_ = true;
|
x6a0_28_ = true;
|
||||||
x7a0_boneTracking.SetActive(true);
|
x7a0_boneTracking.SetActive(true);
|
||||||
const TUniqueId& playerUid = mgr.GetPlayer().GetUniqueId();
|
const TUniqueId playerUid = mgr.GetPlayer().GetUniqueId();
|
||||||
x7a0_boneTracking.SetTarget(playerUid);
|
x7a0_boneTracking.SetTarget(playerUid);
|
||||||
bool foundPirate = false;
|
bool foundPirate = false;
|
||||||
for (const auto& obj : *mgr.ObjectListById(EGameObjectList::AiWaypoint)) {
|
for (const auto& obj : *mgr.ObjectListById(EGameObjectList::AiWaypoint)) {
|
||||||
|
@ -1540,7 +1540,7 @@ void CFlyingPirate::Think(float dt, CStateManager& mgr) {
|
||||||
}
|
}
|
||||||
if (!x6a0_25_isAquaPirate && xc4_fluidId != kInvalidUniqueId) {
|
if (!x6a0_25_isAquaPirate && xc4_fluidId != kInvalidUniqueId) {
|
||||||
if (TCastToPtr<CScriptWater> water = mgr.ObjectById(xc4_fluidId)) {
|
if (TCastToPtr<CScriptWater> water = mgr.ObjectById(xc4_fluidId)) {
|
||||||
const zeus::CAABox& box = water->GetTriggerBoundsWR();
|
const zeus::CAABox box = water->GetTriggerBoundsWR();
|
||||||
if (2.f + GetTranslation().z() < box.max.z()) {
|
if (2.f + GetTranslation().z() < box.max.z()) {
|
||||||
x401_30_pendingDeath = true;
|
x401_30_pendingDeath = true;
|
||||||
}
|
}
|
||||||
|
@ -1575,11 +1575,11 @@ void CFlyingPirate::Think(float dt, CStateManager& mgr) {
|
||||||
x7ec_burstFire.Start(mgr);
|
x7ec_burstFire.Start(mgr);
|
||||||
if (x400_25_alive) {
|
if (x400_25_alive) {
|
||||||
x7e4_ = x308_attackTimeVariation * mgr.GetActiveRandom()->Float() + x304_averageAttackTime;
|
x7e4_ = x308_attackTimeVariation * mgr.GetActiveRandom()->Float() + x304_averageAttackTime;
|
||||||
const zeus::CVector3f& dist =
|
const zeus::CVector3f dist =
|
||||||
(GetBoundingBox().center() - mgr.GetPlayer().GetAimPosition(mgr, 0.f)).normalized();
|
(GetBoundingBox().center() - mgr.GetPlayer().GetAimPosition(mgr, 0.f)).normalized();
|
||||||
if (dist.magSquared() < 0.9f) {
|
if (dist.magSquared() < 0.9f) {
|
||||||
for (const auto& obj : *mgr.ObjectListById(EGameObjectList::AiWaypoint)) {
|
for (const auto& obj : *mgr.ObjectListById(EGameObjectList::AiWaypoint)) {
|
||||||
if (const CSpacePirate* pirate = CPatterned::CastTo<const CSpacePirate>(obj)) {
|
if (const auto* pirate = CPatterned::CastTo<const CSpacePirate>(obj)) {
|
||||||
if (pirate->GetEnableAim() && pirate->GetAreaIdAlways() == x4_areaId) {
|
if (pirate->GetEnableAim() && pirate->GetAreaIdAlways() == x4_areaId) {
|
||||||
x7e4_ += 0.2f;
|
x7e4_ += 0.2f;
|
||||||
}
|
}
|
||||||
|
@ -1647,8 +1647,8 @@ void CFlyingPirate::Think(float dt, CStateManager& mgr) {
|
||||||
vf8.normalize();
|
vf8.normalize();
|
||||||
}
|
}
|
||||||
zeus::CVector3f v1d0 = std::min(0.333f * x87c_.magnitude(), 0.333f) * vf8;
|
zeus::CVector3f v1d0 = std::min(0.333f * x87c_.magnitude(), 0.333f) * vf8;
|
||||||
const zeus::CVector3f& v104 = (zeus::skUp + v1d0).normalized();
|
const zeus::CVector3f v104 = (zeus::skUp + v1d0).normalized();
|
||||||
const zeus::CVector3f& v110 = GetTransform().upVector();
|
const zeus::CVector3f v110 = GetTransform().upVector();
|
||||||
float f26c = std::abs(zeus::CVector3f::getAngleDiff(v110, v104));
|
float f26c = std::abs(zeus::CVector3f::getAngleDiff(v110, v104));
|
||||||
if (f26c > 0.f) {
|
if (f26c > 0.f) {
|
||||||
float f1f4 = std::min(f26c, 30.f * zeus::degToRad(dt)); // ?
|
float f1f4 = std::min(f26c, 30.f * zeus::degToRad(dt)); // ?
|
||||||
|
|
Loading…
Reference in New Issue