public static void SurfaceGizmos(AeroSurface surf, GizmoType gizmoType) { Rigidbody rb = surf.GetComponentInParent <Rigidbody>(); if (surf.Config == null || rb == null) { return; } AircraftPhysicsDisplaySettings settings = AircraftPhysicsDisplaySettings.Instance; // Selection Shape if (settings.showSurfaces) { Gizmos.color = Color.clear; Gizmos.matrix = surf.transform.localToWorldMatrix; Gizmos.DrawCube(-Vector3.right * 0.25f * surf.Config.chord, new Vector3(surf.Config.chord, 0.1f, surf.Config.chord * surf.Config.aspectRatio)); DrawSurface(surf.transform, surf.Config, surf.FlapAngle, surf.IsAtStall); } if (settings.showForces) { float scale = settings.lengthScale; if (settings.scaleForcesByWeight) { scale /= rb.mass * Physics.gravity.magnitude; } DrawForces(surf.transform, surf.CurrentLift * scale, surf.CurrentDrag * scale, surf.CurrentTorque * scale); } }
private void OnEnable() { config = serializedObject.FindProperty("config"); isControlSurface = serializedObject.FindProperty("IsControlSurface"); inputType = serializedObject.FindProperty("InputType"); inputMultiplyer = serializedObject.FindProperty("InputMultiplyer"); surface = target as AeroSurface; }
public override void OnInspectorGUI() { AeroSurface surface = (AeroSurface)target; bool defaultChange = DrawDefaultInspector(); GUILayout.Space(10); EditorGUILayout.LabelField("Info", EditorStyles.boldLabel); EditorGUILayout.LabelField($"AoA*:\t{surface.AngleOfAttack}"); EditorGUILayout.LabelField($"Area:\t{surface.SurfaceArea}m"); EditorGUILayout.LabelField($"Wind:\t{surface.Wind.magnitude}m/s"); EditorGUILayout.LabelField($"Wind:\t{surface.WindSpeedFront}m/s (applicable) [{surface.WindSpeedFront / surface.Wind.magnitude * 100.0f}%]"); GUILayout.Space(10); EditorGUILayout.LabelField($"Lift:\t{surface.LiftForce} [{surface.LiftForce.magnitude}]"); EditorGUILayout.LabelField($"Drag:\t{surface.DragForce} [{surface.LiftForce.magnitude}]"); }