public virtual void CheckOnLandStatus() { var ground = IsOnGround(); if (ground) { if (!OnGround && OnLanding != null) { OnLanding.Invoke(); } if (OnStayGround != null) { OnStayGround.Invoke(); } } else { if (OnGround && OnTakingoff != null) { OnTakingoff.Invoke(); } } OnGround = ground; }
private void SubscribeContextEventHandlers(FlightContext context) { // Subscribe to the events so we can propagate 'em via the factory context.OnTakeoff += (sender, args) => OnTakeoff?.Invoke(sender, args); context.OnLaunchCompleted += (sender, args) => OnLaunchCompleted?.Invoke(sender, args); context.OnLanding += (sender, args) => OnLanding?.Invoke(sender, args); context.OnRadarContact += (sender, args) => OnRadarContact?.Invoke(sender, args); context.OnCompletedWithErrors += (sender, args) => OnCompletedWithErrors?.Invoke(sender, args); }
internal void InvokeOnLandingEvent() { try { OnLanding?.Invoke(this, new OnLandingEventArgs(Flight)); } catch (Exception ex) { Trace.Write(ex); throw; } }
public void SetGrounding(bool grounding) { if (isGrounded && !grounding) { currentJump++; } isGrounded = grounding; if (grounding) { OnLanding?.Invoke(); } }
public override void BeforeDispose() { OnLanding -= PlayerEntityManager_OnLanding; _energyUpdateTimer.OnTimerRaised -= energyUpdateTimer_OnTimerRaised; // Clean Up event Delegates if (OnLanding != null) { // Remove all Events associated to this Event (That haven't been unsubscribed !) foreach (var d in OnLanding.GetInvocationList()) { OnLanding -= (LandingGround)d; } } }
private void DefaultPhysicsStep() { if (ignoreFloor) { if (Col_ceiling) { ignoreFloor = false; leftGround = false; } if (Col_isGrounded) { if (leftGround) { ignoreFloor = false; leftGround = false; } else { leftGround = true; } } } if (Col_isGrounded) { if (!prevGrounded) { OnLanding.Invoke(); } if (!Col_GroundIsOneSided) { GroundProperties groundProp = TouchingGround[0].GetComponent <GroundProperties>(); if (groundProp != null) { groundProp.OnStandOn(this); } } if (!ignoreFloor) { velocity.x = velocity.x * GroundFriction; } } else { velocity += Vector2.down * gravity * gravityMultiplier * Time.fixedDeltaTime; } prevGrounded = Col_isGrounded; }
public void Update() { if (!isDead) { if (!grounded) { timeSinceLastJump += Time.deltaTime; } if (!grounded && groundDetector.Grounded() && timeSinceLastJump >= minLandTime) { grounded = true; landingParticles.SetActive(true); animator.Play("frog_land_anim"); OnLanding?.Invoke(); } } }
private void SubscribeContextFactoryEventHandlers(FlightContextFactory factory) { // Subscribe to the events so we can propagate 'em via the factory factory.OnTakeoff += (sender, args) => { var location = GetLocation(args.Flight.DepartureLocation); var immatriculation = GetImmatriculation(args.Flight.Aircraft); _logger.LogInformation("{UtcNow}: {Aircraft} {Immatriculation} - Took off from {Location} - Flight Info: {FlightInfo}", DateTime.UtcNow, args.Flight.Aircraft, immatriculation, location, args.Flight.GetFullFlightInformation()); //OnTakeoff?.Invoke(sender, args); OnTakeoff?.Invoke(this, new MovementEventArgs(args.Flight, location, immatriculation)); }; factory.OnLaunchCompleted += (sender, args) => { var immatriculation = GetImmatriculation(args.Flight.Aircraft); _logger.LogInformation("{UtcNow}: {Aircraft} {Immatriculation} - launch completed - Flight Info: {FlightInfo}", DateTime.UtcNow, args.Flight.Aircraft, immatriculation, args.Flight.GetFullFlightInformation()); OnLaunchCompleted?.Invoke(sender, args); }; factory.OnLanding += (sender, args) => { var location = GetLocation(args.Flight.ArrivalLocation); var immatriculation = GetImmatriculation(args.Flight.Aircraft); _logger.LogInformation("{UtcNow}: {Aircraft} {Immatriculation} - Landed at {Location} - Flight Info: {FlightInfo}", DateTime.UtcNow, args.Flight.Aircraft, immatriculation, location, args.Flight.GetFullFlightInformation()); //OnLanding?.Invoke(sender, args); OnLanding?.Invoke(this, new MovementEventArgs(args.Flight, location, immatriculation)); }; factory.OnRadarContact += (sender, args) => { if (args.Flight.PositionUpdates.Any() == false) { return; } var lastPositionUpdate = args.Flight.PositionUpdates.OrderByDescending(q => q.TimeStamp).First(); var location = GetLocation(lastPositionUpdate.Location); var immatriculation = GetImmatriculation(args.Flight.Aircraft); _logger.LogInformation("{UtcNow}: {Aircraft} {Immatriculation} - Radar contact near {Location} at {LastPositionLatitude}, {LastPositionLongitude} @ {LastPositionAltitude}ft {LastPositionHeading} - Flight Info: {FlightInfo}", DateTime.UtcNow, args.Flight.Aircraft, immatriculation, location, lastPositionUpdate.Latitude, lastPositionUpdate.Longitude, lastPositionUpdate.Altitude, lastPositionUpdate.Heading.ToHeadingArrow(), args.Flight.GetFullFlightInformation()); //OnRadarContact?.Invoke(sender, args); OnRadarContact?.Invoke(this, new MovementEventArgs(args.Flight, location, immatriculation)); }; factory.OnCompletedWithErrors += (sender, args) => { var immatriculation = GetImmatriculation(args.Flight.Aircraft); _logger.LogInformation("{UtcNow}: {Aircraft} {Immatriculation} - Flight completed with errors", DateTime.UtcNow, args.Flight.Aircraft, immatriculation); OnCompletedWithErrors?.Invoke(sender, args); }; factory.OnContextDispose += (sender, args) => { var immatriculation = GetImmatriculation(args.Context.Flight.Aircraft); _logger.LogInformation("{UtcNow}: {Aircraft} {Immatriculation} - Context disposed", DateTime.UtcNow, args.Context.Flight.Aircraft, immatriculation); OnContextDispose?.Invoke(sender, args); }; }