diff --git a/Aircraft/c172p/Instruments/kr87-adf/kr87.xml b/Aircraft/c172p/Instruments/kr87-adf/kr87.xml index d9a4311a6..811eb9229 100644 --- a/Aircraft/c172p/Instruments/kr87-adf/kr87.xml +++ b/Aircraft/c172p/Instruments/kr87-adf/kr87.xml @@ -11,8 +11,7 @@ select indicator - /instrumentation/adf[0]/serviceable - /instrumentation/adf[0]/power-btn + /instrumentation/adf[0]/operable diff --git a/Aircraft/c172p/Models/Pedals/pedals.xml b/Aircraft/c172p/Models/Pedals/pedals.xml old mode 100755 new mode 100644 diff --git a/Aircraft/c172p/Models/Yoke/yoke.xml b/Aircraft/c172p/Models/Yoke/yoke.xml old mode 100755 new mode 100644 diff --git a/Aircraft/c172p/Nasal/c172-electrical.nas b/Aircraft/c172p/Nasal/c172-electrical.nas index 29c6c39ac..492773a1d 100644 --- a/Aircraft/c172p/Nasal/c172-electrical.nas +++ b/Aircraft/c172p/Nasal/c172-electrical.nas @@ -9,23 +9,22 @@ # Initialize internal values # -battery = nil; -alternator = nil; +var battery = nil; +var alternator = nil; -last_time = 0.0; +var last_time = 0.0; -vbus_volts = 0.0; -ebus1_volts = 0.0; -ebus2_volts = 0.0; +var vbus_volts = 0.0; +var ebus1_volts = 0.0; +var ebus2_volts = 0.0; -ammeter_ave = 0.0; +var ammeter_ave = 0.0; ## # Initialize the electrical system # init_electrical = func { - print("Initializing Nasal Electrical System"); battery = BatteryClass.new(); alternator = AlternatorClass.new(); @@ -35,8 +34,9 @@ init_electrical = func { setprop("/controls/switches/master-avionics", 1); setprop("/systems/electrical/outputs/autopilot",0.0); - # Request that the update fuction be called next frame + # Request that the update function be called next frame settimer(update_electrical, 0); + print("Electrical system initialized"); } @@ -47,12 +47,12 @@ init_electrical = func { BatteryClass = {}; BatteryClass.new = func { - obj = { parents : [BatteryClass], - ideal_volts : 24.0, - ideal_amps : 30.0, - amp_hours : 12.75, - charge_percent : 1.0, - charge_amps : 7.0 }; + var obj = { parents : [BatteryClass], + ideal_volts : 24.0, + ideal_amps : 30.0, + amp_hours : 12.75, + charge_percent : 1.0, + charge_amps : 7.0 }; return obj; } @@ -62,8 +62,8 @@ BatteryClass.new = func { # BatteryClass.apply_load = func( amps, dt ) { - amphrs_used = amps * dt / 3600.0; - percent_used = amphrs_used / me.amp_hours; + var amphrs_used = amps * dt / 3600.0; + var percent_used = amphrs_used / me.amp_hours; me.charge_percent -= percent_used; if ( me.charge_percent < 0.0 ) { me.charge_percent = 0.0; @@ -76,13 +76,13 @@ BatteryClass.apply_load = func( amps, dt ) { ## # Return output volts based on percent charged. Currently based on a simple -# polynomal percent charge vs. volts function. +# polynomial percent charge vs. volts function. # BatteryClass.get_output_volts = func { - x = 1.0 - me.charge_percent; - tmp = -(3.0 * x - 1.0); - factor = (tmp*tmp*tmp*tmp*tmp + 32) / 32; + var x = 1.0 - me.charge_percent; + var tmp = -(3.0 * x - 1.0); + var factor = (tmp*tmp*tmp*tmp*tmp + 32) / 32; return me.ideal_volts * factor; } @@ -95,9 +95,9 @@ BatteryClass.get_output_volts = func { # BatteryClass.get_output_amps = func { - x = 1.0 - me.charge_percent; - tmp = -(3.0 * x - 1.0); - factor = (tmp*tmp*tmp*tmp*tmp + 32) / 32; + var x = 1.0 - me.charge_percent; + var tmp = -(3.0 * x - 1.0); + var factor = (tmp*tmp*tmp*tmp*tmp + 32) / 32; return me.ideal_amps * factor; } @@ -109,11 +109,11 @@ BatteryClass.get_output_amps = func { AlternatorClass = {}; AlternatorClass.new = func { - obj = { parents : [AlternatorClass], - rpm_source : "/engines/engine[0]/rpm", - rpm_threshold : 800.0, - ideal_volts : 28.0, - ideal_amps : 60.0 }; + var obj = { parents : [AlternatorClass], + rpm_source : "/engines/engine[0]/rpm", + rpm_threshold : 800.0, + ideal_volts : 28.0, + ideal_amps : 60.0 }; setprop( obj.rpm_source, 0.0 ); return obj; } @@ -126,13 +126,13 @@ AlternatorClass.apply_load = func( amps, dt ) { # Scale alternator output for rpms < 800. For rpms >= 800 # give full output. This is just a WAG, and probably not how # it really works but I'm keeping things "simple" to start. - rpm = getprop( me.rpm_source ); - factor = rpm / me.rpm_threshold; + var rpm = getprop( me.rpm_source ); + var factor = rpm / me.rpm_threshold; if ( factor > 1.0 ) { factor = 1.0; } # print( "alternator amps = ", me.ideal_amps * factor ); - available_amps = me.ideal_amps * factor; + var available_amps = me.ideal_amps * factor; return available_amps - amps; } @@ -144,8 +144,8 @@ AlternatorClass.get_output_volts = func { # scale alternator output for rpms < 800. For rpms >= 800 # give full output. This is just a WAG, and probably not how # it really works but I'm keeping things "simple" to start. - rpm = getprop( me.rpm_source ); - factor = rpm / me.rpm_threshold; + var rpm = getprop( me.rpm_source ); + var factor = rpm / me.rpm_threshold; if ( factor > 1.0 ) { factor = 1.0; } @@ -162,8 +162,8 @@ AlternatorClass.get_output_amps = func { # scale alternator output for rpms < 800. For rpms >= 800 # give full output. This is just a WAG, and probably not how # it really works but I'm keeping things "simple" to start. - rpm = getprop( me.rpm_source ); - factor = rpm / me.rpm_threshold; + var rpm = getprop( me.rpm_source ); + var factor = rpm / me.rpm_threshold; if ( factor > 1.0 ) { factor = 1.0; } @@ -177,13 +177,13 @@ AlternatorClass.get_output_amps = func { # update_electrical = func { - time = getprop("/sim/time/elapsed-sec"); - dt = time - last_time; + var time = getprop("/sim/time/elapsed-sec"); + var dt = time - last_time; last_time = time; update_virtual_bus( dt ); - # Request that the update fuction be called again next frame + # Request that the update function be called again next frame settimer(update_electrical, 0); } @@ -194,24 +194,23 @@ update_electrical = func { # update_virtual_bus = func( dt ) { - serviceable = getprop("/systems/electrical/serviceable"); + var serviceable = getprop("/systems/electrical/serviceable"); + var external_volts = 0.0; + var load = 0.0; + var battery_volts = 0.0; + var alternator_volts = 0.0; if ( serviceable ) { - battery_volts = battery.get_output_volts(); - alternator_volts = alternator.get_output_volts(); - } else { - battery_volts = 0.0; - alternator_volts = 0.0; + battery_volts = battery.get_output_volts(); + alternator_volts = alternator.get_output_volts(); } - external_volts = 0.0; - load = 0.0; # switch state - master_bat = getprop("/controls/engines/engine[0]/master-bat"); - master_alt = getprop("/controls/engines/engine[0]/master-alt"); + var master_bat = getprop("/controls/engines/engine[0]/master-bat"); + var master_alt = getprop("/controls/engines/engine[0]/master-alt"); # determine power source - bus_volts = 0.0; - power_source = nil; + var bus_volts = 0.0; + var power_source = nil; if ( master_bat ) { bus_volts = battery_volts; power_source = "battery"; @@ -235,10 +234,10 @@ update_virtual_bus = func( dt ) { } setprop("systems/electrical/outputs/starter[0]", starter_volts); if (starter_volts > 1) { - setprop("controls/engines/engine[0]/starter",1); - setprop("controls/engines/engine[0]/magnetos",3); + setprop("controls/engines/engine[0]/starter",1); + setprop("controls/engines/engine[0]/magnetos",3); } else { - setprop("controls/engines/engine[0]/starter",0); + setprop("controls/engines/engine[0]/starter",0); } # bus network (1. these must be called in the right order, 2. the @@ -250,7 +249,7 @@ update_virtual_bus = func( dt ) { load += avionics_bus_2(); # system loads and ammeter gauge - ammeter = 0.0; + var ammeter = 0.0; if ( bus_volts > 1.0 ) { # normal load load += 15.0; @@ -272,7 +271,7 @@ update_virtual_bus = func( dt ) { } # filter ammeter needle pos - ammeter_ave = 0.8 * ammeter_ave + 0.2 * ammeter; + var ammeter_ave = 0.8 * ammeter_ave + 0.2 * ammeter; # outputs setprop("/systems/electrical/amps", ammeter_ave); @@ -285,9 +284,9 @@ update_virtual_bus = func( dt ) { electrical_bus_1 = func() { # we are fed from the "virtual" bus - bus_volts = vbus_volts; - load = 0.0; - + var bus_volts = vbus_volts; + var load = 0.0; + # Cabin Lights Power if ( getprop("/controls/circuit-breakers/cabin-lights-pwr") ) { setprop("/systems/electrical/outputs/cabin-lights", bus_volts); @@ -333,8 +332,8 @@ electrical_bus_1 = func() { electrical_bus_2 = func() { # we are fed from the "virtual" bus - bus_volts = vbus_volts; - load = 0.0; + var bus_volts = vbus_volts; + var load = 0.0; # Turn Coordinator Power setprop("/systems/electrical/outputs/turn-coordinator", bus_volts); @@ -381,13 +380,12 @@ electrical_bus_2 = func() { cross_feed_bus = func() { # we are fed from either of the electrical bus 1 or 2 + var bus_volts = ebus2_volts; if ( ebus1_volts > ebus2_volts ) { bus_volts = ebus1_volts; - } else { - bus_volts = ebus2_volts; } - load = 0.0; + var load = 0.0; setprop("/systems/electrical/outputs/annunciators", bus_volts); @@ -397,20 +395,18 @@ cross_feed_bus = func() { avionics_bus_1 = func() { - master_av = getprop("/controls/switches/master-avionics"); + var bus_volts = 0.0; + var load = 0.0; # we are fed from the electrical bus 1 + var master_av = getprop("/controls/switches/master-avionics"); if ( master_av ) { bus_volts = ebus1_volts; - } else { - bus_volts = 0.0; } - load = 0.0; - # Avionics Fan Power setprop("/systems/electrical/outputs/avionics-fan", bus_volts); - + # GPS Power setprop("/systems/electrical/outputs/gps", bus_volts); @@ -435,15 +431,13 @@ avionics_bus_1 = func() { avionics_bus_2 = func() { - master_av = getprop("/controls/switches/master-avionics"); - + var master_av = getprop("/controls/switches/master-avionics"); # we are fed from the electrical bus 2 + var bus_volts = 0.0; if ( master_av ) { bus_volts = ebus2_volts; - } else { - bus_volts = 0.0; } - load = 0.0; + var load = 0.0; # NavCom 2 Power setprop("/systems/electrical/outputs/nav[1]", bus_volts); diff --git a/Aircraft/c172p/Nasal/kma20.nas b/Aircraft/c172p/Nasal/kma20.nas new file mode 100644 index 000000000..e8770762e --- /dev/null +++ b/Aircraft/c172p/Nasal/kma20.nas @@ -0,0 +1,41 @@ +################################################################## +# +# These are the helper functions for the kma20 audio panel +# Maintainer: Thorsten Brehm (brehmt at gmail dot com) +# +# Usage: +# just create one instance of kma20 class for each kma20 panel +# you have in your aircraft: +# kma20.new(0); +# +# KMA20 audio panel properties: +# root: /instrumentation/kma20 +# knob: microphone/radio selector (com1/2) +# auto: selects COM1/2 based on microphone selector +# com1: enable/disable COM1 audio (e.g. for ATIS) +# com2: enable/disable COM2 audio (e.g. for ATIS) +# nav1: enable/disable NAV1 station identifier +# nav2: enable/disable NAV2 station identifier +# adf: enable/disable ADF station identifier +# dme: enable/disable DME station identifier +# mkr: enable/disable marker beacon audio +# sens: beacon receiver sensitivity + +var kma20 = {}; + +kma20.new = func(rootPath) { + var obj = {}; + obj.parents = [kma20]; + + setlistener(rootPath ~ "/com1", func(v) {setprop("/instrumentation/comm/volume", 0.7*(v.getValue() != 0));}, 1); + setlistener(rootPath ~ "/com2", func(v) {setprop("/instrumentation/comm[1]/volume", 0.7*(v.getValue() != 0));}, 1); + setlistener(rootPath ~ "/nav1", func(v) {setprop("/instrumentation/nav/audio-btn", (v.getValue() != 0));}, 1); + setlistener(rootPath ~ "/nav2", func(v) {setprop("/instrumentation/nav[1]/audio-btn", (v.getValue() != 0));}, 1); + setlistener(rootPath ~ "/adf", func(v) {setprop("/instrumentation/adf/ident-audible", (v.getValue() != 0));}, 1); + setlistener(rootPath ~ "/dme", func(v) {setprop("/instrumentation/dme/ident", (v.getValue() != 0));}, 1); + setlistener(rootPath ~ "/mkr", func(v) {setprop("/instrumentation/marker-beacon/audio-btn",(v.getValue() != 0));}, 1); + print( "KMA20 audio panel initialized" ); + return obj; +}; + +var kma20_0 = kma20.new( "/instrumentation/kma20" ); diff --git a/Aircraft/c172p/c172p-set.xml b/Aircraft/c172p/c172p-set.xml index 491c7316b..f27dffcc8 100644 --- a/Aircraft/c172p/c172p-set.xml +++ b/Aircraft/c172p/c172p-set.xml @@ -25,7 +25,7 @@ Started October 23 2001 by John Check, fgpanels@rockfish.net jsb c172p - true + true Aircraft/c172p/Models/c172p.xml @@ -51,7 +51,7 @@ Started October 23 2001 by John Check, fgpanels@rockfish.net false false - + false @@ -69,10 +69,10 @@ Started October 23 2001 by John Check, fgpanels@rockfish.net true - -0.21 - 0.235 - 0.36 - -12 + -0.21 + 0.235 + 0.36 + -12 @@ -135,12 +135,14 @@ Started October 23 2001 by John Check, fgpanels@rockfish.net - 0.027 - 0.0 + 0.027 + 0.0 - 3 + 3 + true + true @@ -150,6 +152,16 @@ Started October 23 2001 by John Check, fgpanels@rockfish.net false false + + true + false + + + + true + true + + @@ -183,6 +195,16 @@ Started October 23 2001 by John Check, fgpanels@rockfish.net true + + false + 0.7 + + + @@ -202,6 +224,7 @@ Started October 23 2001 by John Check, fgpanels@rockfish.net Aircraft/c172p/Nasal/doors.nas Aircraft/c172p/Nasal/light.nas Aircraft/c172p/Nasal/tanks.nas + Aircraft/c172p/Nasal/kma20.nas Aircraft/c172p/Nasal/ki266.nas - Aircraft/c172p/Nasal/kr87.nas - + Aircraft/c172p/Nasal/kr87.nas + diff --git a/Aircraft/ufo/Models/ufo.xml b/Aircraft/ufo/Models/ufo.xml old mode 100755 new mode 100644 diff --git a/Effects/building.eff b/Effects/building.eff index aa2175da5..65a599a42 100644 --- a/Effects/building.eff +++ b/Effects/building.eff @@ -66,7 +66,7 @@ 1.0 1.0 1.0 1.0 0.0 0.0 0.0 1.0 0.02 0.02 0.02 1.0 - 0.0 + 0.1 ambient-and-diffuse ambient-and-diffuse diff --git a/Shaders/runway-gbuffer.frag b/Shaders/runway-gbuffer.frag index 7cfb15154..42def8f40 100644 --- a/Shaders/runway-gbuffer.frag +++ b/Shaders/runway-gbuffer.frag @@ -50,12 +50,14 @@ void main (void) if (normalmap_dds > 0) N = -N; + float nFactor = 1.0 - N.z; float lightness = dot(texel.rgb, vec3( 0.3, 0.59, 0.11 )); // calculate the specular light float refl_correction = spec_adjust * 2.5 - 1.0; - float shininess = max (0.35, refl_correction) * nmap.a; + float shininess = max (0.35, refl_correction) * nmap.a * nFactor; - float specular = dot(vec3(1.0) * lightness , vec3( 0.3, 0.59, 0.11 )); + + float specular = dot(vec3(1.0) * lightness , vec3( 0.3, 0.59, 0.11 )) * nFactor; vec4 color = vec4(1.0); @@ -65,7 +67,7 @@ void main (void) vec3 viewVec = normalize(vViewVec); // Map a rainbowish color - float v = dot(viewVec, normalize(VNormal)); + float v = abs(dot(viewVec, normalize(VNormal))); vec4 rainbow = texture2D(Rainbow, vec2(v, 0.0)); // Map a fresnel effect @@ -83,7 +85,7 @@ void main (void) MixFactor = 0.75 * smoothstep(0.0, 1.0, MixFactor); - reflFactor = max(map.a * (texel.r + texel.g), 1.0 - MixFactor) * (1.0- N.z) + transparency_offset ; + reflFactor = max(map.a * (texel.r + texel.g), 1.0 - MixFactor) * nFactor + transparency_offset ; reflFactor =0.75 * smoothstep(0.05, 1.0, reflFactor); // set ambient adjustment to remove bluiness with user input @@ -96,12 +98,12 @@ void main (void) vec4 reflfrescolor = mix(reflcolor, fresnel, fresneliness * v); vec4 noisecolor = mix(reflfrescolor, noisevec, noisiness); - vec4 raincolor = vec4(noisecolor.rgb * reflFactor, 1.0); + vec4 raincolor = vec4(noisecolor.rgb * reflFactor, 1.0) * nFactor; vec4 mixedcolor = mix(texel, raincolor * (1.0 - refl_correction * (1.0 - lightness)), reflFactor); // the final reflection - vec4 fragColor = vec4(color.rgb * mixedcolor.rgb + ambient_Correction, color.a); + vec4 fragColor = vec4(color.rgb * mixedcolor.rgb + ambient_Correction * nFactor, color.a); encode_gbuffer(N, fragColor.rgb, 1, specular, shininess, emission, gl_FragCoord.z); } \ No newline at end of file diff --git a/Shaders/runway.frag b/Shaders/runway.frag index d4bb31d05..fad9defd9 100644 --- a/Shaders/runway.frag +++ b/Shaders/runway.frag @@ -79,14 +79,15 @@ void main (void) vec4 color = gl_Color + Diffuse * gl_FrontMaterial.diffuse; //color += Specular * vec4(vec3(0.5*shininess), 1.0) * nmap.a; - color += Specular * vec4(1.0) * nmap.a; + float nFactor = 1.0 - N.z; + color += Specular * vec4(1.0) * nmap.a * nFactor; color.a = texel.a * alpha; color = clamp(color, 0.0, 1.0); vec3 viewVec = normalize(vViewVec); // Map a rainbowish color - float v = dot(viewVec, normalize(VNormal)); + float v = abs(dot(viewVec, normalize(VNormal))); vec4 rainbow = texture2D(Rainbow, vec2(v, 0.0)); // Map a fresnel effect @@ -115,18 +116,18 @@ void main (void) // add fringing fresnel and rainbow effects and modulate by reflection vec4 reflcolor = mix(reflection, rainbow, rainbowiness * v); - reflcolor += Specular * nmap.a; + reflcolor += Specular * nmap.a * nFactor; vec4 reflfrescolor = mix(reflcolor, fresnel, fresneliness * v); vec4 noisecolor = mix(reflfrescolor, noisevec, noisiness); vec4 raincolor = vec4(noisecolor.rgb * reflFactor, 1.0); - raincolor += Specular * nmap.a; + raincolor += Specular * nmap.a * nFactor; vec4 mixedcolor = mix(texel, raincolor * (1.0 - refl_correction * (1.0 - lightness)), reflFactor); //* (1.0 - 0.5 * transparency_offset ) // the final reflection - vec4 fragColor = vec4(color.rgb * mixedcolor.rgb + ambient_Correction.rgb * (1.0 - refl_correction * (1.0 - 0.8 * lightness)), color.a); - fragColor += Specular * nmap.a; + vec4 fragColor = vec4(color.rgb * mixedcolor.rgb + ambient_Correction.rgb * (1.0 - refl_correction * (1.0 - 0.8 * lightness)) * nFactor, color.a); + fragColor += Specular * nmap.a * nFactor; fragColor.rgb = fog_Func(fragColor.rgb, fogType); gl_FragColor = fragColor; diff --git a/Shaders/ubershader-gbuffer.frag b/Shaders/ubershader-gbuffer.frag index 60782195b..bfd2538f8 100644 --- a/Shaders/ubershader-gbuffer.frag +++ b/Shaders/ubershader-gbuffer.frag @@ -92,7 +92,7 @@ void main (void) ///END bump vec4 reflection = textureCube(Environment, reflVec * N); vec3 viewVec = normalize(vViewVec); - float v = dot(viewVec, normalize(VNormal));// Map a rainbowish color + float v = abs(dot(viewVec, normalize(VNormal)));// Map a rainbowish color vec4 fresnel = texture2D(ReflFresnelTex, vec2(v, 0.0)); vec4 rainbow = texture2D(ReflRainbowTex, vec2(v, 0.0)); vec4 color = gl_Color * gl_FrontMaterial.diffuse; diff --git a/Shaders/ubershader.frag b/Shaders/ubershader.frag index 6e135e8aa..51df2d02a 100644 --- a/Shaders/ubershader.frag +++ b/Shaders/ubershader.frag @@ -85,7 +85,7 @@ void main (void) ///END bump vec4 reflection = textureCube(Environment, reflVec * dot(N,VNormal)); vec3 viewVec = normalize(vViewVec); - float v = dot(viewVec, normalize(VNormal));// Map a rainbowish color + float v = abs(dot(viewVec, normalize(VNormal)));// Map a rainbowish color vec4 fresnel = texture2D(ReflFresnelTex, vec2(v, 0.0)); vec4 rainbow = texture2D(ReflRainbowTex, vec2(v, 0.0)); diff --git a/Translations/es/menu.xml b/Translations/es/menu.xml index e42cd2759..78ae5e48c 100644 --- a/Translations/es/menu.xml +++ b/Translations/es/menu.xml @@ -1,7 +1,7 @@ - - - - + + + + Reiniciar autopiloto Reiniciar conexión de red - + Recargar modelo de la aeronave Consola nasal Teclas de desarrollo Configurar extensiones de desarrollo diff --git a/Translations/es/options.xml b/Translations/es/options.xml index 7a6b47466..4332f8c30 100644 --- a/Translations/es/options.xml +++ b/Translations/es/options.xml @@ -1,7 +1,7 @@ - - - - + + + + Desactiva splash screen Activa splash screen - + Restaurar todas las configuraciones a las iniciales (opciones de renderizado, etc) No guardar las preferencias al salir del programa Permitir guardar las preferencias al salir del programa Desactiva la introducción musical @@ -48,10 +48,10 @@ (p.ej. para tarjetas tipo Voodoo a pantalla completa) Excluir objetos aleatorios de escenografía Incluir objetos aleatorios de escenografía - - - - + Excluir objetos aleatorios de vegetación + Incluir objetos aleatorios de vegetación + Excluir edificios aleatorios + Incluir edificios aleatorios --> Desactiva la recogida de meteo real basada en METAR Activa la recogida de meteo real basada en METAR (esto requiere una conexión a Internet) Pasar una METAR para establecer una meteo estática diff --git a/Translations/pl/menu.xml b/Translations/pl/menu.xml index 54857a4bc..1b8b02b2e 100644 --- a/Translations/pl/menu.xml +++ b/Translations/pl/menu.xml @@ -1,15 +1,15 @@ - - - - - - + + + + + + - false - 1 - - true true diff --git a/version b/version index 834f26295..c8e38b614 100644 --- a/version +++ b/version @@ -1 +1 @@ -2.8.0 +2.9.0