Skip to content

Commit

Permalink
feature: radio altimeter
Browse files Browse the repository at this point in the history
  • Loading branch information
Misaka-L committed Jun 7, 2023
1 parent 1535ca2 commit c275ea7
Show file tree
Hide file tree
Showing 14 changed files with 1,300 additions and 1,142 deletions.
606 changes: 102 additions & 504 deletions Packages/com.yuxiaviation.vau320neo/Runtime/Accesories/GPWS_OWML.asset

Large diffs are not rendered by default.

56 changes: 13 additions & 43 deletions Packages/com.yuxiaviation.vau320neo/Runtime/Accesories/GPWS_OWML.cs
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@

using A320VAU.Common;
using EsnyaSFAddons.DFUNC;
using UdonSharp;
using UnityEngine;
Expand All @@ -13,10 +14,8 @@ namespace A320VAU.Avionics
public class GPWS_OWML : UdonSharpBehaviour
{

public YFI_FlightDataInterface flightData;
public LayerMask groundLayers = -1;
public QueryTriggerInteraction queryTriggerInteraction = QueryTriggerInteraction.UseGlobal;
public Transform groundDetector, offsetTransorm;
private YFI_FlightDataInterface _flightData;
private RadioAltimeter.RadioAltimeter _radioAltimeter;

public AudioSource audioSource;
public AudioClip bankAngleSound, sinkRateSound, pullUpSound, terrainSound, dontSinkSound, tooLowGearSound, tooLowFlapsSound, tooLowTerrainSound;
Expand All @@ -31,34 +30,22 @@ public bool PullUpWarning
private float lastAlertTime = 0;
private Rigidbody vehicleRigidbody;

private float maxRange, seaLevel;
private SaccAirVehicle airVehicle;
private DFUNC_Gear gear;
private DFUNC_Flaps flaps;
private DFUNC_AdvancedFlaps advancedFlaps;

private float enabledTime;
private void OnEnable()
{
enabledTime = Time.time;
}

private float offset;
private void Start()
{
var injector = DependenciesInjector.GetInstance(this);

vehicleRigidbody = GetComponentInParent<Rigidbody>();
airVehicle = vehicleRigidbody.GetComponentInChildren<SaccAirVehicle>();
gear = vehicleRigidbody.GetComponentInChildren<DFUNC_Gear>(true);
flaps = vehicleRigidbody.GetComponentInChildren<DFUNC_Flaps>(true);
advancedFlaps = vehicleRigidbody.GetComponentInChildren<DFUNC_AdvancedFlaps>(true);
flightData = vehicleRigidbody.GetComponentInChildren<YFI_FlightDataInterface>(true);
gear = injector.gear;
airVehicle = injector.saccAirVehicle;
advancedFlaps = injector.flaps;
_flightData = injector.flightData;
_radioAltimeter = injector.radioAltimeter;

audioSource = GetComponent<AudioSource>();
maxRange = 5000f;
seaLevel = airVehicle.SeaLevel;

offset = Vector3.Dot(groundDetector.up, offsetTransorm.position - groundDetector.position);

}

private float radioAltitude, barometlicAltitude, prevBarometlicAltitude;
Expand All @@ -73,7 +60,7 @@ public override void PostLateUpdate()
var smoothingT = deltaTime / smoothing;

radioAltitude = Mathf.Lerp(radioAltitude, GetRadioAltitude(), smoothingT);
barometlicAltitude = Mathf.Lerp(barometlicAltitude, flightData.altitude, smoothingT);
barometlicAltitude = Mathf.Lerp(barometlicAltitude, _flightData.altitude, smoothingT);
var barometricDecendRate = -(barometlicAltitude - prevBarometlicAltitude) / Time.deltaTime * 60;
prevBarometlicAltitude = barometlicAltitude;

Expand All @@ -83,9 +70,8 @@ public override void PostLateUpdate()

var airspeed = velocity.magnitude * 1.94384f;

var flapsDown = flaps ? flaps.Flaps : false;
var advancedFlapsDown = advancedFlaps ? advancedFlaps.targetAngle > 0 : false;
var anyFlapsDown = !flaps && !advancedFlaps || flapsDown || advancedFlapsDown;
var anyFlapsDown = !advancedFlaps || advancedFlapsDown;
var gearDown = gear ? !gear.GearUp : true;

var landingConfiguration = gearDown && anyFlapsDown;
Expand Down Expand Up @@ -124,20 +110,7 @@ public override void PostLateUpdate()
PullUpWarning = state == ALERT_PULL_UP || state == ALERT_TERRAIN || state == ALERT_TOO_LOW_TERRAIN || state == ALERT_TOO_LOW_GEAR || state == ALERT_TOO_LOW_FLAPS || state == ALERT_SINK_RATE || state == ALERT_DONT_SINK;
}

private float GetRadioAltitude()
{
var position = groundDetector.position;
RaycastHit hit;
if (Physics.Raycast(position, Vector3.down, out hit, maxRange * 0.3048f, groundLayers, queryTriggerInteraction))
{
return (hit.distance + offset) * 3.28084f;
}
else
{
// return (position.y - seaLevel + offset) * 3.28084f;
return maxRange * 0.3048f;
}
}
private float GetRadioAltitude() => _radioAltimeter.radioAltitude;

private const int ALERT_WINDSHEAR = 1;
private const int ALERT_PULL_UP = 2;
Expand Down Expand Up @@ -307,9 +280,6 @@ private void Alert(AudioClip clip, float interval)
lastAlertTime = time;
}

#region Math
#endregion

#region Audio Soruce
public void PlayOneShot(AudioClip clip)
{
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -185,7 +185,7 @@ public void UpdateMemo()
var rightMemoText = "";
var leftMemoText = "";
var hasWarning = false;
foreach (var memo in FWS.FWSWarningMessageDatas)
foreach (var memo in FWS.fwsWarningMessageDatas)
{
if (memo.IsVisable)
{
Expand Down
Loading

0 comments on commit c275ea7

Please # to comment.