###############################################################################
##
## JSBSim hydrodynamics system. FlightGear side.
##
##  Copyright (C) 2015  Anders Gidenstam  (anders(at)gidenstam.org)
##  This file is licensed under the GPL license v2 or later.
##
###############################################################################

var ground = func {
    # Send the current ground level to the JSBSim hydrodynamics model.
    setprop("/fdm/jsbsim/hydro/environment/water-level-ft",
            getprop("/position/ground-elev-ft") +
            getprop("/fdm/jsbsim/hydro/environment/wave-amplitude-ft"));

    # Connect the JSBSim hydrodynamics wave model with the custom water shader.
    setprop("environment/waves/time-sec",
            getprop("/fdm/jsbsim/simulation/sim-time-sec"));
    setprop("environment/waves/from-deg",
            getprop("/fdm/jsbsim/hydro/environment/waves-from-deg"));
    setprop("environment/waves/length-ft",
            getprop("/fdm/jsbsim/hydro/environment/wave-length-ft"));
    setprop("environment/waves/amplitude-ft",
            getprop("/fdm/jsbsim/hydro/environment/wave-amplitude-ft"));
    setprop("environment/waves/angular-frequency-rad_sec",
            getprop("/fdm/jsbsim/hydro/environment/wave/angular-frequency-rad_sec"));
    setprop("environment/waves/wave-number-rad_ft",
            getprop("/fdm/jsbsim/hydro/environment/wave/wave-number-rad_ft"));


    settimer(ground, 0.0);
}

settimer(ground, 0.0);


###############################################################################
# On-screen displays
var enableOSD = func {
    var left  = screen.display.new(20, 10);
    var right = screen.display.new(-300, 10);

    left.add("/fdm/jsbsim/sim-time-sec");
    left.add("/orientation/heading-magnetic-deg");
    left.add("/fdm/jsbsim/hydro/true-course-deg");
    left.add("/fdm/jsbsim/hydro/beta-deg");
    left.add("/fdm/jsbsim/hydro/pitch-deg");
    left.add("/fdm/jsbsim/hydro/roll-deg");
    left.add("/fdm/jsbsim/hydro/float/pitch-deg");
    left.add("/fdm/jsbsim/hydro/float/roll-deg");
    left.add("/fdm/jsbsim/hydro/float/height-agl-ft");
    left.add("/fdm/jsbsim/inertia/cg-x-in");
    left.add("/fdm/jsbsim/inertia/cg-z-in");
    left.add("/fdm/jsbsim/hydro/fdrag-lbs");
    left.add("/fdm/jsbsim/hydro/displacement-drag-lbs");
    left.add("/fdm/jsbsim/hydro/planing-drag-lbs");
    left.add("/fdm/jsbsim/hydro/fbz-lbs");
    left.add("/fdm/jsbsim/hydro/buoyancy-lbs");
    left.add("/fdm/jsbsim/hydro/planing-lift-lbs");
    #left.add("/fdm/jsbsim/hydro/X/force-lbs");
    #left.add("/fdm/jsbsim/hydro/Y/force-lbs");
    left.add("/fdm/jsbsim/hydro/yaw-moment-lbsft");
    left.add("/fdm/jsbsim/hydro/pitch-moment-lbsft");
    left.add("/fdm/jsbsim/hydro/roll-moment-lbsft");
    #left.add("/fdm/jsbsim/hydro/transverse-wave/wave-length-ft");
    #left.add("/fdm/jsbsim/hydro/transverse-wave/wave-amplitude-ft");
    left.add("/fdm/jsbsim/hydro/transverse-wave/squat-ft");
    #left.add("/fdm/jsbsim/hydro/transverse-wave/pitch-trim-change-deg");
    #left.add("/fdm/jsbsim/hydro/environment/wave/relative-heading-rad");
    #left.add("/fdm/jsbsim/hydro/orientation/wave-pitch-trim-change-deg");
    #left.add("/fdm/jsbsim/hydro/orientation/wave-roll-trim-change-deg");
    #left.add("/fdm/jsbsim/hydro/environment/wave/angular-frequency-rad_sec");
    #left.add("/fdm/jsbsim/hydro/environment/wave/wave-number-rad_ft");
    #left.add("/fdm/jsbsim/hydro/environment/wave/level-fwd-ft");
    #left.add("/fdm/jsbsim/hydro/environment/wave/level-at-hrp-ft");
    #left.add("/fdm/jsbsim/hydro/environment/wave/level-aft-ft");

    right.add("/instrumentation/airspeed-indicator/indicated-speed-kt");
    right.add("/fdm/jsbsim/hydro/active-norm");
    right.add("/fdm/jsbsim/hydro/v-kt");
    right.add("/fdm/jsbsim/hydro/vbx-fps");
    right.add("/fdm/jsbsim/hydro/vby-fps");
    right.add("/fdm/jsbsim/hydro/qbar-u-psf");
    right.add("/fdm/jsbsim/hydro/Frode-number");
    right.add("/fdm/jsbsim/hydro/speed-length-ratio");
    right.add("/fdm/jsbsim/left-pontoon/leaked-water-lbs");
    right.add("/fdm/jsbsim/right-pontoon/leaked-water-lbs");
}

# Debug settings.
#enableOSD();
###############################################################################