private static Vector3 GetLocalWindVelocity(AeroWindZone zone, Vector3 pos) { float squareDist = (zone.Position - pos).sqrMagnitude; if (squareDist < zone.OuterRadius * zone.OuterRadius) { float border = zone.OuterRadius - zone.InnerRadius; float affect = 1f - ((Mathf.Sqrt(squareDist) - zone.InnerRadius) / border); return(zone.Forward * (affect * zone.WindSpeed)); } return(Vector3.zero); }
private static void DrawHandle(AeroWindZone zone, GizmoType gizmosType) { Transform transform = zone.transform; Handles.color = Color.blue; zone.InnerRadius = Handles.RadiusHandle(Quaternion.identity, transform.position, zone.InnerRadius); Handles.color = Color.cyan; zone.OuterRadius = Handles.RadiusHandle(Quaternion.identity, transform.position, zone.OuterRadius); Handles.color = Color.red; zone.WindSpeed = Handles.ScaleSlider(zone.WindSpeed, transform.position, transform.forward, transform.rotation, zone.WindSpeed, 0.1f); if (GUI.changed) { EditorUtility.SetDirty(zone); } //Handles.DrawDottedLine(transform.position, transform.position, Vector3.forward * wind.InnerRadius, ); }