private IEnumerator HandleFiringBeam(BeamController beam) { float elapsed = 0f; yield return(null); while (m_Player && m_Player.IsFiring && this && m_AIActor.sprite && m_AIActor.healthHaver && !m_IsDisconnected) { elapsed += BraveTime.DeltaTime; if (!m_AIActor.TargetRigidbody) { m_AIActor.PlayerTarget = m_Player; } if (!m_MirrorGunToggle) { beam.CeaseAttack(); beam.DestroyBeam(); yield break; } if (m_AIActor.CurrentGun) { beam.Origin = m_AIActor.CurrentGun.sprite.WorldCenter; beam.LateUpdatePosition(m_AIActor.CurrentGun.sprite.WorldCenter); } else { beam.Origin = m_AIActor.specRigidbody.UnitCenter; beam.LateUpdatePosition(m_AIActor.specRigidbody.UnitCenter); } // beam.Origin = m_AIActor.specRigidbody.UnitCenter; // beam.LateUpdatePosition(m_AIActor.specRigidbody.UnitCenter); if (m_Player) { float angle = ((m_AIActor.TargetRigidbody.GetUnitCenter(ColliderType.HitBox) - m_AIActor.specRigidbody.UnitCenter).ToAngle()); if (m_AIActor.CurrentGun) { angle = ((m_AIActor.TargetRigidbody.GetUnitCenter(ColliderType.HitBox) - m_AIActor.CurrentGun.sprite.WorldCenter).ToAngle()); } if (m_InvertSweepAngle) { angle = (angle + m_BeamSweepAngle); } else { angle = (angle - m_BeamSweepAngle); } beam.Direction = BraveMathCollege.DegreesToVector(angle, 1); if (m_Player.IsDodgeRolling) { beam.CeaseAttack(); beam.DestroyBeam(); yield break; } } yield return(null); } beam.CeaseAttack(); beam.DestroyBeam(); yield break; }
private void ContinueFiringBeam(BeamController beam, PlayerController source, float angle, Vector2?overrideSpawnPoint) { Vector2 vector = (overrideSpawnPoint == null) ? source.CenterPosition : overrideSpawnPoint.Value; beam.Direction = BraveMathCollege.DegreesToVector(angle, 1f); beam.Origin = vector; beam.LateUpdatePosition(vector); }
private void ContinueFiringBeam(BeamController beam, float angle, Vector2 overrideSpawnPoint) { Vector2 vector = overrideSpawnPoint; beam.Direction = BraveMathCollege.DegreesToVector(angle, 1f); beam.Origin = vector; beam.LateUpdatePosition(vector); }
private IEnumerator HandleFreeFiringBeam(BeamController beam, SpeculativeRigidbody otherShooter, float duration) { float elapsed = 0f; yield return(null); while (elapsed < duration) { Vector2 sourcePos; if (otherShooter == null) { break; } if (!otherShooter.GetComponentInParent <FlippableCover>()) { break; } if (otherShooter.GetComponentInParent <FlippableCover>().IsBroken) { break; } else { sourcePos = otherShooter.UnitCenter; } elapsed += BraveTime.DeltaTime; if (sourcePos != null) { beam.Origin = sourcePos; beam.LateUpdatePosition(sourcePos); } else { ETGModConsole.Log("SOURCEPOS WAS NULL IN BEAM FIRING HANDLER"); } yield return(null); } beam.CeaseAttack(); yield break; }
private static IEnumerator HandleFreeFiringBeam(BeamController beam, SpeculativeRigidbody otherShooter, Vector2 fixedPosition, bool usesFixedPosition, float targetAngle, float duration, bool followProjDir, float projFollowOffset) { float elapsed = 0f; yield return(null); while (elapsed < duration) { Vector2 sourcePos; if (otherShooter == null) { break; } if (usesFixedPosition) { sourcePos = fixedPosition; } else { sourcePos = otherShooter.UnitCenter; } elapsed += BraveTime.DeltaTime; if (sourcePos != null) { if (otherShooter != null && !usesFixedPosition && otherShooter.GetComponent <Projectile>() && followProjDir) { beam.Direction = (otherShooter.GetComponent <Projectile>().Direction.ToAngle() + projFollowOffset).DegreeToVector2(); } beam.Origin = sourcePos; beam.LateUpdatePosition(sourcePos); } else { ETGModConsole.Log("SOURCEPOS WAS NULL IN BEAM FIRING HANDLER"); } yield return(null); } beam.CeaseAttack(); yield break; }
public static IEnumerator HandleFreeFiringBeam(BeamController beam, GameObject otherShooter, Vector2 fixedPosition, bool usesFixedPosition, float targetAngle, float duration) { float elapsed = 0f; yield return(null); while (elapsed < duration) { Vector2 sourcePos; if (otherShooter == null || otherShooter.GetComponent <SpeculativeRigidbody>() == null) { break; } if (usesFixedPosition) { sourcePos = fixedPosition; } else { sourcePos = otherShooter.GetComponent <SpeculativeRigidbody>().UnitCenter; } elapsed += BraveTime.DeltaTime; if (sourcePos != null) { beam.Origin = sourcePos; beam.LateUpdatePosition(sourcePos); } else { ETGModConsole.Log("SOURCEPOS WAS NULL IN BEAM FIRING HANDLER"); } yield return(null); } beam.CeaseAttack(); yield break; }