Example #1
0
    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);
    }
Example #2
0
    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, );
    }