Merge branch 'work' of D:\Git_New\fgdata
This commit is contained in:
commit
9e451e3205
17 changed files with 191 additions and 136 deletions
|
@ -11,8 +11,7 @@
|
||||||
<type>select</type>
|
<type>select</type>
|
||||||
<object-name>indicator</object-name>
|
<object-name>indicator</object-name>
|
||||||
<condition>
|
<condition>
|
||||||
<property>/instrumentation/adf[0]/serviceable</property>
|
<property>/instrumentation/adf[0]/operable</property>
|
||||||
<property>/instrumentation/adf[0]/power-btn</property>
|
|
||||||
</condition>
|
</condition>
|
||||||
</animation>
|
</animation>
|
||||||
<animation>
|
<animation>
|
||||||
|
|
0
Aircraft/c172p/Models/Pedals/pedals.xml
Executable file → Normal file
0
Aircraft/c172p/Models/Pedals/pedals.xml
Executable file → Normal file
0
Aircraft/c172p/Models/Yoke/yoke.xml
Executable file → Normal file
0
Aircraft/c172p/Models/Yoke/yoke.xml
Executable file → Normal file
|
@ -9,23 +9,22 @@
|
||||||
# Initialize internal values
|
# Initialize internal values
|
||||||
#
|
#
|
||||||
|
|
||||||
battery = nil;
|
var battery = nil;
|
||||||
alternator = nil;
|
var alternator = nil;
|
||||||
|
|
||||||
last_time = 0.0;
|
var last_time = 0.0;
|
||||||
|
|
||||||
vbus_volts = 0.0;
|
var vbus_volts = 0.0;
|
||||||
ebus1_volts = 0.0;
|
var ebus1_volts = 0.0;
|
||||||
ebus2_volts = 0.0;
|
var ebus2_volts = 0.0;
|
||||||
|
|
||||||
ammeter_ave = 0.0;
|
var ammeter_ave = 0.0;
|
||||||
|
|
||||||
##
|
##
|
||||||
# Initialize the electrical system
|
# Initialize the electrical system
|
||||||
#
|
#
|
||||||
|
|
||||||
init_electrical = func {
|
init_electrical = func {
|
||||||
print("Initializing Nasal Electrical System");
|
|
||||||
battery = BatteryClass.new();
|
battery = BatteryClass.new();
|
||||||
alternator = AlternatorClass.new();
|
alternator = AlternatorClass.new();
|
||||||
|
|
||||||
|
@ -35,8 +34,9 @@ init_electrical = func {
|
||||||
setprop("/controls/switches/master-avionics", 1);
|
setprop("/controls/switches/master-avionics", 1);
|
||||||
setprop("/systems/electrical/outputs/autopilot",0.0);
|
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);
|
settimer(update_electrical, 0);
|
||||||
|
print("Electrical system initialized");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -47,7 +47,7 @@ init_electrical = func {
|
||||||
BatteryClass = {};
|
BatteryClass = {};
|
||||||
|
|
||||||
BatteryClass.new = func {
|
BatteryClass.new = func {
|
||||||
obj = { parents : [BatteryClass],
|
var obj = { parents : [BatteryClass],
|
||||||
ideal_volts : 24.0,
|
ideal_volts : 24.0,
|
||||||
ideal_amps : 30.0,
|
ideal_amps : 30.0,
|
||||||
amp_hours : 12.75,
|
amp_hours : 12.75,
|
||||||
|
@ -62,8 +62,8 @@ BatteryClass.new = func {
|
||||||
#
|
#
|
||||||
|
|
||||||
BatteryClass.apply_load = func( amps, dt ) {
|
BatteryClass.apply_load = func( amps, dt ) {
|
||||||
amphrs_used = amps * dt / 3600.0;
|
var amphrs_used = amps * dt / 3600.0;
|
||||||
percent_used = amphrs_used / me.amp_hours;
|
var percent_used = amphrs_used / me.amp_hours;
|
||||||
me.charge_percent -= percent_used;
|
me.charge_percent -= percent_used;
|
||||||
if ( me.charge_percent < 0.0 ) {
|
if ( me.charge_percent < 0.0 ) {
|
||||||
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
|
# 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 {
|
BatteryClass.get_output_volts = func {
|
||||||
x = 1.0 - me.charge_percent;
|
var x = 1.0 - me.charge_percent;
|
||||||
tmp = -(3.0 * x - 1.0);
|
var tmp = -(3.0 * x - 1.0);
|
||||||
factor = (tmp*tmp*tmp*tmp*tmp + 32) / 32;
|
var factor = (tmp*tmp*tmp*tmp*tmp + 32) / 32;
|
||||||
return me.ideal_volts * factor;
|
return me.ideal_volts * factor;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -95,9 +95,9 @@ BatteryClass.get_output_volts = func {
|
||||||
#
|
#
|
||||||
|
|
||||||
BatteryClass.get_output_amps = func {
|
BatteryClass.get_output_amps = func {
|
||||||
x = 1.0 - me.charge_percent;
|
var x = 1.0 - me.charge_percent;
|
||||||
tmp = -(3.0 * x - 1.0);
|
var tmp = -(3.0 * x - 1.0);
|
||||||
factor = (tmp*tmp*tmp*tmp*tmp + 32) / 32;
|
var factor = (tmp*tmp*tmp*tmp*tmp + 32) / 32;
|
||||||
return me.ideal_amps * factor;
|
return me.ideal_amps * factor;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -109,7 +109,7 @@ BatteryClass.get_output_amps = func {
|
||||||
AlternatorClass = {};
|
AlternatorClass = {};
|
||||||
|
|
||||||
AlternatorClass.new = func {
|
AlternatorClass.new = func {
|
||||||
obj = { parents : [AlternatorClass],
|
var obj = { parents : [AlternatorClass],
|
||||||
rpm_source : "/engines/engine[0]/rpm",
|
rpm_source : "/engines/engine[0]/rpm",
|
||||||
rpm_threshold : 800.0,
|
rpm_threshold : 800.0,
|
||||||
ideal_volts : 28.0,
|
ideal_volts : 28.0,
|
||||||
|
@ -126,13 +126,13 @@ AlternatorClass.apply_load = func( amps, dt ) {
|
||||||
# Scale alternator output for rpms < 800. For rpms >= 800
|
# Scale alternator output for rpms < 800. For rpms >= 800
|
||||||
# give full output. This is just a WAG, and probably not how
|
# give full output. This is just a WAG, and probably not how
|
||||||
# it really works but I'm keeping things "simple" to start.
|
# it really works but I'm keeping things "simple" to start.
|
||||||
rpm = getprop( me.rpm_source );
|
var rpm = getprop( me.rpm_source );
|
||||||
factor = rpm / me.rpm_threshold;
|
var factor = rpm / me.rpm_threshold;
|
||||||
if ( factor > 1.0 ) {
|
if ( factor > 1.0 ) {
|
||||||
factor = 1.0;
|
factor = 1.0;
|
||||||
}
|
}
|
||||||
# print( "alternator amps = ", me.ideal_amps * factor );
|
# print( "alternator amps = ", me.ideal_amps * factor );
|
||||||
available_amps = me.ideal_amps * factor;
|
var available_amps = me.ideal_amps * factor;
|
||||||
return available_amps - amps;
|
return available_amps - amps;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -144,8 +144,8 @@ AlternatorClass.get_output_volts = func {
|
||||||
# scale alternator output for rpms < 800. For rpms >= 800
|
# scale alternator output for rpms < 800. For rpms >= 800
|
||||||
# give full output. This is just a WAG, and probably not how
|
# give full output. This is just a WAG, and probably not how
|
||||||
# it really works but I'm keeping things "simple" to start.
|
# it really works but I'm keeping things "simple" to start.
|
||||||
rpm = getprop( me.rpm_source );
|
var rpm = getprop( me.rpm_source );
|
||||||
factor = rpm / me.rpm_threshold;
|
var factor = rpm / me.rpm_threshold;
|
||||||
if ( factor > 1.0 ) {
|
if ( factor > 1.0 ) {
|
||||||
factor = 1.0;
|
factor = 1.0;
|
||||||
}
|
}
|
||||||
|
@ -162,8 +162,8 @@ AlternatorClass.get_output_amps = func {
|
||||||
# scale alternator output for rpms < 800. For rpms >= 800
|
# scale alternator output for rpms < 800. For rpms >= 800
|
||||||
# give full output. This is just a WAG, and probably not how
|
# give full output. This is just a WAG, and probably not how
|
||||||
# it really works but I'm keeping things "simple" to start.
|
# it really works but I'm keeping things "simple" to start.
|
||||||
rpm = getprop( me.rpm_source );
|
var rpm = getprop( me.rpm_source );
|
||||||
factor = rpm / me.rpm_threshold;
|
var factor = rpm / me.rpm_threshold;
|
||||||
if ( factor > 1.0 ) {
|
if ( factor > 1.0 ) {
|
||||||
factor = 1.0;
|
factor = 1.0;
|
||||||
}
|
}
|
||||||
|
@ -177,13 +177,13 @@ AlternatorClass.get_output_amps = func {
|
||||||
#
|
#
|
||||||
|
|
||||||
update_electrical = func {
|
update_electrical = func {
|
||||||
time = getprop("/sim/time/elapsed-sec");
|
var time = getprop("/sim/time/elapsed-sec");
|
||||||
dt = time - last_time;
|
var dt = time - last_time;
|
||||||
last_time = time;
|
last_time = time;
|
||||||
|
|
||||||
update_virtual_bus( dt );
|
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);
|
settimer(update_electrical, 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -194,24 +194,23 @@ update_electrical = func {
|
||||||
#
|
#
|
||||||
|
|
||||||
update_virtual_bus = func( dt ) {
|
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 ) {
|
if ( serviceable ) {
|
||||||
battery_volts = battery.get_output_volts();
|
battery_volts = battery.get_output_volts();
|
||||||
alternator_volts = alternator.get_output_volts();
|
alternator_volts = alternator.get_output_volts();
|
||||||
} else {
|
|
||||||
battery_volts = 0.0;
|
|
||||||
alternator_volts = 0.0;
|
|
||||||
}
|
}
|
||||||
external_volts = 0.0;
|
|
||||||
load = 0.0;
|
|
||||||
|
|
||||||
# switch state
|
# switch state
|
||||||
master_bat = getprop("/controls/engines/engine[0]/master-bat");
|
var master_bat = getprop("/controls/engines/engine[0]/master-bat");
|
||||||
master_alt = getprop("/controls/engines/engine[0]/master-alt");
|
var master_alt = getprop("/controls/engines/engine[0]/master-alt");
|
||||||
|
|
||||||
# determine power source
|
# determine power source
|
||||||
bus_volts = 0.0;
|
var bus_volts = 0.0;
|
||||||
power_source = nil;
|
var power_source = nil;
|
||||||
if ( master_bat ) {
|
if ( master_bat ) {
|
||||||
bus_volts = battery_volts;
|
bus_volts = battery_volts;
|
||||||
power_source = "battery";
|
power_source = "battery";
|
||||||
|
@ -250,7 +249,7 @@ update_virtual_bus = func( dt ) {
|
||||||
load += avionics_bus_2();
|
load += avionics_bus_2();
|
||||||
|
|
||||||
# system loads and ammeter gauge
|
# system loads and ammeter gauge
|
||||||
ammeter = 0.0;
|
var ammeter = 0.0;
|
||||||
if ( bus_volts > 1.0 ) {
|
if ( bus_volts > 1.0 ) {
|
||||||
# normal load
|
# normal load
|
||||||
load += 15.0;
|
load += 15.0;
|
||||||
|
@ -272,7 +271,7 @@ update_virtual_bus = func( dt ) {
|
||||||
}
|
}
|
||||||
|
|
||||||
# filter ammeter needle pos
|
# filter ammeter needle pos
|
||||||
ammeter_ave = 0.8 * ammeter_ave + 0.2 * ammeter;
|
var ammeter_ave = 0.8 * ammeter_ave + 0.2 * ammeter;
|
||||||
|
|
||||||
# outputs
|
# outputs
|
||||||
setprop("/systems/electrical/amps", ammeter_ave);
|
setprop("/systems/electrical/amps", ammeter_ave);
|
||||||
|
@ -285,8 +284,8 @@ update_virtual_bus = func( dt ) {
|
||||||
|
|
||||||
electrical_bus_1 = func() {
|
electrical_bus_1 = func() {
|
||||||
# we are fed from the "virtual" bus
|
# we are fed from the "virtual" bus
|
||||||
bus_volts = vbus_volts;
|
var bus_volts = vbus_volts;
|
||||||
load = 0.0;
|
var load = 0.0;
|
||||||
|
|
||||||
# Cabin Lights Power
|
# Cabin Lights Power
|
||||||
if ( getprop("/controls/circuit-breakers/cabin-lights-pwr") ) {
|
if ( getprop("/controls/circuit-breakers/cabin-lights-pwr") ) {
|
||||||
|
@ -333,8 +332,8 @@ electrical_bus_1 = func() {
|
||||||
|
|
||||||
electrical_bus_2 = func() {
|
electrical_bus_2 = func() {
|
||||||
# we are fed from the "virtual" bus
|
# we are fed from the "virtual" bus
|
||||||
bus_volts = vbus_volts;
|
var bus_volts = vbus_volts;
|
||||||
load = 0.0;
|
var load = 0.0;
|
||||||
|
|
||||||
# Turn Coordinator Power
|
# Turn Coordinator Power
|
||||||
setprop("/systems/electrical/outputs/turn-coordinator", bus_volts);
|
setprop("/systems/electrical/outputs/turn-coordinator", bus_volts);
|
||||||
|
@ -381,13 +380,12 @@ electrical_bus_2 = func() {
|
||||||
|
|
||||||
cross_feed_bus = func() {
|
cross_feed_bus = func() {
|
||||||
# we are fed from either of the electrical bus 1 or 2
|
# we are fed from either of the electrical bus 1 or 2
|
||||||
|
var bus_volts = ebus2_volts;
|
||||||
if ( ebus1_volts > ebus2_volts ) {
|
if ( ebus1_volts > ebus2_volts ) {
|
||||||
bus_volts = ebus1_volts;
|
bus_volts = ebus1_volts;
|
||||||
} else {
|
|
||||||
bus_volts = ebus2_volts;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
load = 0.0;
|
var load = 0.0;
|
||||||
|
|
||||||
setprop("/systems/electrical/outputs/annunciators", bus_volts);
|
setprop("/systems/electrical/outputs/annunciators", bus_volts);
|
||||||
|
|
||||||
|
@ -397,17 +395,15 @@ cross_feed_bus = func() {
|
||||||
|
|
||||||
|
|
||||||
avionics_bus_1 = 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
|
# we are fed from the electrical bus 1
|
||||||
|
var master_av = getprop("/controls/switches/master-avionics");
|
||||||
if ( master_av ) {
|
if ( master_av ) {
|
||||||
bus_volts = ebus1_volts;
|
bus_volts = ebus1_volts;
|
||||||
} else {
|
|
||||||
bus_volts = 0.0;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
load = 0.0;
|
|
||||||
|
|
||||||
# Avionics Fan Power
|
# Avionics Fan Power
|
||||||
setprop("/systems/electrical/outputs/avionics-fan", bus_volts);
|
setprop("/systems/electrical/outputs/avionics-fan", bus_volts);
|
||||||
|
|
||||||
|
@ -435,15 +431,13 @@ avionics_bus_1 = func() {
|
||||||
|
|
||||||
|
|
||||||
avionics_bus_2 = 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
|
# we are fed from the electrical bus 2
|
||||||
|
var bus_volts = 0.0;
|
||||||
if ( master_av ) {
|
if ( master_av ) {
|
||||||
bus_volts = ebus2_volts;
|
bus_volts = ebus2_volts;
|
||||||
} else {
|
|
||||||
bus_volts = 0.0;
|
|
||||||
}
|
}
|
||||||
load = 0.0;
|
var load = 0.0;
|
||||||
|
|
||||||
# NavCom 2 Power
|
# NavCom 2 Power
|
||||||
setprop("/systems/electrical/outputs/nav[1]", bus_volts);
|
setprop("/systems/electrical/outputs/nav[1]", bus_volts);
|
||||||
|
|
41
Aircraft/c172p/Nasal/kma20.nas
Normal file
41
Aircraft/c172p/Nasal/kma20.nas
Normal file
|
@ -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" );
|
|
@ -25,7 +25,7 @@ Started October 23 2001 by John Check, fgpanels@rockfish.net
|
||||||
<flight-model archive="y">jsb</flight-model>
|
<flight-model archive="y">jsb</flight-model>
|
||||||
<aero archive="y">c172p</aero>
|
<aero archive="y">c172p</aero>
|
||||||
|
|
||||||
<allow-toggle-cockpit>true</allow-toggle-cockpit>
|
<allow-toggle-cockpit type="bool">true</allow-toggle-cockpit>
|
||||||
|
|
||||||
<model>
|
<model>
|
||||||
<path archive="y">Aircraft/c172p/Models/c172p.xml</path>
|
<path archive="y">Aircraft/c172p/Models/c172p.xml</path>
|
||||||
|
@ -51,7 +51,7 @@ Started October 23 2001 by John Check, fgpanels@rockfish.net
|
||||||
<fairing2 type="bool">false</fairing2>
|
<fairing2 type="bool">false</fairing2>
|
||||||
<fairing3 type="bool">false</fairing3>
|
<fairing3 type="bool">false</fairing3>
|
||||||
</c172p>
|
</c172p>
|
||||||
|
<hide-yoke type="bool">false</hide-yoke>
|
||||||
</model>
|
</model>
|
||||||
|
|
||||||
<startup>
|
<startup>
|
||||||
|
@ -69,10 +69,10 @@ Started October 23 2001 by John Check, fgpanels@rockfish.net
|
||||||
<view>
|
<view>
|
||||||
<internal type="bool" archive="y">true</internal>
|
<internal type="bool" archive="y">true</internal>
|
||||||
<config>
|
<config>
|
||||||
<x-offset-m archive="y">-0.21</x-offset-m>
|
<x-offset-m archive="y" type="double">-0.21</x-offset-m>
|
||||||
<y-offset-m archive="y">0.235</y-offset-m>
|
<y-offset-m archive="y" type="double">0.235</y-offset-m>
|
||||||
<z-offset-m archive="y">0.36</z-offset-m>
|
<z-offset-m archive="y" type="double">0.36</z-offset-m>
|
||||||
<pitch-offset-deg>-12</pitch-offset-deg>
|
<pitch-offset-deg type="double">-12</pitch-offset-deg>
|
||||||
</config>
|
</config>
|
||||||
</view>
|
</view>
|
||||||
|
|
||||||
|
@ -135,12 +135,14 @@ Started October 23 2001 by John Check, fgpanels@rockfish.net
|
||||||
|
|
||||||
<controls>
|
<controls>
|
||||||
<flight>
|
<flight>
|
||||||
<aileron-trim>0.027</aileron-trim>
|
<aileron-trim type="double">0.027</aileron-trim>
|
||||||
<rudder-trim>0.0</rudder-trim>
|
<rudder-trim type="double">0.0</rudder-trim>
|
||||||
</flight>
|
</flight>
|
||||||
<engines>
|
<engines>
|
||||||
<engine n="0">
|
<engine n="0">
|
||||||
<magnetos>3</magnetos>
|
<magnetos type="int">3</magnetos>
|
||||||
|
<master-bat type="bool">true</master-bat>
|
||||||
|
<master-alt type="bool">true</master-alt>
|
||||||
</engine>
|
</engine>
|
||||||
</engines>
|
</engines>
|
||||||
<lighting>
|
<lighting>
|
||||||
|
@ -150,6 +152,16 @@ Started October 23 2001 by John Check, fgpanels@rockfish.net
|
||||||
<beacon type="bool">false</beacon>
|
<beacon type="bool">false</beacon>
|
||||||
<nav-lights type="bool">false</nav-lights>
|
<nav-lights type="bool">false</nav-lights>
|
||||||
</lighting>
|
</lighting>
|
||||||
|
<switches>
|
||||||
|
<master-avionics type="bool">true</master-avionics>
|
||||||
|
<starter type="bool">false</starter>
|
||||||
|
</switches>
|
||||||
|
<engines>
|
||||||
|
<engine>
|
||||||
|
<master-bat type="bool">true</master-bat>
|
||||||
|
<master-alt type="bool">true</master-alt>
|
||||||
|
</engine>
|
||||||
|
</engines>
|
||||||
</controls>
|
</controls>
|
||||||
|
|
||||||
<autopilot>
|
<autopilot>
|
||||||
|
@ -183,6 +195,16 @@ Started October 23 2001 by John Check, fgpanels@rockfish.net
|
||||||
<encoder>
|
<encoder>
|
||||||
<serviceable type="bool">true</serviceable>
|
<serviceable type="bool">true</serviceable>
|
||||||
</encoder>
|
</encoder>
|
||||||
|
<adf n="0">
|
||||||
|
<ident-audible type="bool">false</ident-audible>
|
||||||
|
<volume type="double">0.7</volume>
|
||||||
|
</adf>
|
||||||
|
<nav n="0">
|
||||||
|
<volume type="double">0.7</volume>
|
||||||
|
</nav>
|
||||||
|
<nav n="1">
|
||||||
|
<volume type="double">0.7</volume>
|
||||||
|
</nav>
|
||||||
</instrumentation>
|
</instrumentation>
|
||||||
|
|
||||||
<engines>
|
<engines>
|
||||||
|
@ -202,6 +224,7 @@ Started October 23 2001 by John Check, fgpanels@rockfish.net
|
||||||
<file>Aircraft/c172p/Nasal/doors.nas</file>
|
<file>Aircraft/c172p/Nasal/doors.nas</file>
|
||||||
<file>Aircraft/c172p/Nasal/light.nas</file>
|
<file>Aircraft/c172p/Nasal/light.nas</file>
|
||||||
<file>Aircraft/c172p/Nasal/tanks.nas</file>
|
<file>Aircraft/c172p/Nasal/tanks.nas</file>
|
||||||
|
<file>Aircraft/c172p/Nasal/kma20.nas</file>
|
||||||
<file>Aircraft/c172p/Nasal/ki266.nas</file>
|
<file>Aircraft/c172p/Nasal/ki266.nas</file>
|
||||||
<script><![CDATA[
|
<script><![CDATA[
|
||||||
ki266.new(0);
|
ki266.new(0);
|
||||||
|
|
0
Aircraft/ufo/Models/ufo.xml
Executable file → Normal file
0
Aircraft/ufo/Models/ufo.xml
Executable file → Normal file
|
@ -66,7 +66,7 @@
|
||||||
<diffuse type="vec4d">1.0 1.0 1.0 1.0</diffuse>
|
<diffuse type="vec4d">1.0 1.0 1.0 1.0</diffuse>
|
||||||
<specular type="vec4d">0.0 0.0 0.0 1.0</specular>
|
<specular type="vec4d">0.0 0.0 0.0 1.0</specular>
|
||||||
<emissive type="vec4d">0.02 0.02 0.02 1.0</emissive>
|
<emissive type="vec4d">0.02 0.02 0.02 1.0</emissive>
|
||||||
<shininess>0.0</shininess>
|
<shininess>0.1</shininess>
|
||||||
<color-mode>ambient-and-diffuse</color-mode>
|
<color-mode>ambient-and-diffuse</color-mode>
|
||||||
<color-mode-uniform>ambient-and-diffuse</color-mode-uniform>
|
<color-mode-uniform>ambient-and-diffuse</color-mode-uniform>
|
||||||
<!-- DIFFUSE -->
|
<!-- DIFFUSE -->
|
||||||
|
|
|
@ -50,12 +50,14 @@ void main (void)
|
||||||
if (normalmap_dds > 0)
|
if (normalmap_dds > 0)
|
||||||
N = -N;
|
N = -N;
|
||||||
|
|
||||||
|
float nFactor = 1.0 - N.z;
|
||||||
float lightness = dot(texel.rgb, vec3( 0.3, 0.59, 0.11 ));
|
float lightness = dot(texel.rgb, vec3( 0.3, 0.59, 0.11 ));
|
||||||
// calculate the specular light
|
// calculate the specular light
|
||||||
float refl_correction = spec_adjust * 2.5 - 1.0;
|
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);
|
vec4 color = vec4(1.0);
|
||||||
|
|
||||||
|
@ -65,7 +67,7 @@ void main (void)
|
||||||
vec3 viewVec = normalize(vViewVec);
|
vec3 viewVec = normalize(vViewVec);
|
||||||
|
|
||||||
// Map a rainbowish color
|
// 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));
|
vec4 rainbow = texture2D(Rainbow, vec2(v, 0.0));
|
||||||
|
|
||||||
// Map a fresnel effect
|
// Map a fresnel effect
|
||||||
|
@ -83,7 +85,7 @@ void main (void)
|
||||||
|
|
||||||
MixFactor = 0.75 * smoothstep(0.0, 1.0, MixFactor);
|
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);
|
reflFactor =0.75 * smoothstep(0.05, 1.0, reflFactor);
|
||||||
|
|
||||||
// set ambient adjustment to remove bluiness with user input
|
// set ambient adjustment to remove bluiness with user input
|
||||||
|
@ -96,12 +98,12 @@ void main (void)
|
||||||
|
|
||||||
vec4 reflfrescolor = mix(reflcolor, fresnel, fresneliness * v);
|
vec4 reflfrescolor = mix(reflcolor, fresnel, fresneliness * v);
|
||||||
vec4 noisecolor = mix(reflfrescolor, noisevec, noisiness);
|
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);
|
vec4 mixedcolor = mix(texel, raincolor * (1.0 - refl_correction * (1.0 - lightness)), reflFactor);
|
||||||
|
|
||||||
// the final reflection
|
// 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);
|
encode_gbuffer(N, fragColor.rgb, 1, specular, shininess, emission, gl_FragCoord.z);
|
||||||
}
|
}
|
|
@ -79,14 +79,15 @@ void main (void)
|
||||||
|
|
||||||
vec4 color = gl_Color + Diffuse * gl_FrontMaterial.diffuse;
|
vec4 color = gl_Color + Diffuse * gl_FrontMaterial.diffuse;
|
||||||
//color += Specular * vec4(vec3(0.5*shininess), 1.0) * nmap.a;
|
//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.a = texel.a * alpha;
|
||||||
color = clamp(color, 0.0, 1.0);
|
color = clamp(color, 0.0, 1.0);
|
||||||
|
|
||||||
vec3 viewVec = normalize(vViewVec);
|
vec3 viewVec = normalize(vViewVec);
|
||||||
|
|
||||||
// Map a rainbowish color
|
// 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));
|
vec4 rainbow = texture2D(Rainbow, vec2(v, 0.0));
|
||||||
|
|
||||||
// Map a fresnel effect
|
// Map a fresnel effect
|
||||||
|
@ -115,18 +116,18 @@ void main (void)
|
||||||
|
|
||||||
// add fringing fresnel and rainbow effects and modulate by reflection
|
// add fringing fresnel and rainbow effects and modulate by reflection
|
||||||
vec4 reflcolor = mix(reflection, rainbow, rainbowiness * v);
|
vec4 reflcolor = mix(reflection, rainbow, rainbowiness * v);
|
||||||
reflcolor += Specular * nmap.a;
|
reflcolor += Specular * nmap.a * nFactor;
|
||||||
vec4 reflfrescolor = mix(reflcolor, fresnel, fresneliness * v);
|
vec4 reflfrescolor = mix(reflcolor, fresnel, fresneliness * v);
|
||||||
vec4 noisecolor = mix(reflfrescolor, noisevec, noisiness);
|
vec4 noisecolor = mix(reflfrescolor, noisevec, noisiness);
|
||||||
vec4 raincolor = vec4(noisecolor.rgb * reflFactor, 1.0);
|
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 )
|
vec4 mixedcolor = mix(texel, raincolor * (1.0 - refl_correction * (1.0 - lightness)), reflFactor); //* (1.0 - 0.5 * transparency_offset )
|
||||||
|
|
||||||
// the final reflection
|
// the final reflection
|
||||||
vec4 fragColor = vec4(color.rgb * mixedcolor.rgb + ambient_Correction.rgb * (1.0 - refl_correction * (1.0 - 0.8 * lightness)), color.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;
|
fragColor += Specular * nmap.a * nFactor;
|
||||||
|
|
||||||
fragColor.rgb = fog_Func(fragColor.rgb, fogType);
|
fragColor.rgb = fog_Func(fragColor.rgb, fogType);
|
||||||
gl_FragColor = fragColor;
|
gl_FragColor = fragColor;
|
||||||
|
|
|
@ -92,7 +92,7 @@ void main (void)
|
||||||
///END bump
|
///END bump
|
||||||
vec4 reflection = textureCube(Environment, reflVec * N);
|
vec4 reflection = textureCube(Environment, reflVec * N);
|
||||||
vec3 viewVec = normalize(vViewVec);
|
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 fresnel = texture2D(ReflFresnelTex, vec2(v, 0.0));
|
||||||
vec4 rainbow = texture2D(ReflRainbowTex, vec2(v, 0.0));
|
vec4 rainbow = texture2D(ReflRainbowTex, vec2(v, 0.0));
|
||||||
vec4 color = gl_Color * gl_FrontMaterial.diffuse;
|
vec4 color = gl_Color * gl_FrontMaterial.diffuse;
|
||||||
|
|
|
@ -85,7 +85,7 @@ void main (void)
|
||||||
///END bump
|
///END bump
|
||||||
vec4 reflection = textureCube(Environment, reflVec * dot(N,VNormal));
|
vec4 reflection = textureCube(Environment, reflVec * dot(N,VNormal));
|
||||||
vec3 viewVec = normalize(vViewVec);
|
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 fresnel = texture2D(ReflFresnelTex, vec2(v, 0.0));
|
||||||
vec4 rainbow = texture2D(ReflRainbowTex, vec2(v, 0.0));
|
vec4 rainbow = texture2D(ReflRainbowTex, vec2(v, 0.0));
|
||||||
|
|
||||||
|
|
|
@ -104,7 +104,7 @@
|
||||||
<reload-panel>Reiniciar panel</reload-panel> <!-- English: "Reload Panel" -->
|
<reload-panel>Reiniciar panel</reload-panel> <!-- English: "Reload Panel" -->
|
||||||
<reload-autopilot>Reiniciar autopiloto</reload-autopilot> <!-- English: "Reload Autopilot" -->
|
<reload-autopilot>Reiniciar autopiloto</reload-autopilot> <!-- English: "Reload Autopilot" -->
|
||||||
<reload-network>Reiniciar conexión de red</reload-network> <!-- English: "Reload Network" -->
|
<reload-network>Reiniciar conexión de red</reload-network> <!-- English: "Reload Network" -->
|
||||||
<!-- <reload-model>???</reload-model> --> <!-- English: "Reload Aircraft Model" -->
|
<reload-model>Recargar modelo de la aeronave</reload-model> <!-- English: "Reload Aircraft Model" -->
|
||||||
<nasal-console>Consola nasal</nasal-console> <!-- English: "Nasal Console" -->
|
<nasal-console>Consola nasal</nasal-console> <!-- English: "Nasal Console" -->
|
||||||
<development-keys>Teclas de desarrollo</development-keys> <!-- English: "Development Keys" -->
|
<development-keys>Teclas de desarrollo</development-keys> <!-- English: "Development Keys" -->
|
||||||
<configure-dev-extension>Configurar extensiones de desarrollo</configure-dev-extension> <!-- English: "Configure Development Extensions" -->
|
<configure-dev-extension>Configurar extensiones de desarrollo</configure-dev-extension> <!-- English: "Configure Development Extensions" -->
|
||||||
|
|
|
@ -38,7 +38,7 @@
|
||||||
<enable-game-mode-desc>Activa el modo de pantalla completa</enable-game-mode-desc> <!-- English: "Enable full-screen game mode" -->
|
<enable-game-mode-desc>Activa el modo de pantalla completa</enable-game-mode-desc> <!-- English: "Enable full-screen game mode" -->
|
||||||
<disable-splash-screen-desc>Desactiva splash screen</disable-splash-screen-desc> <!-- English: "Disable splash screen" -->
|
<disable-splash-screen-desc>Desactiva splash screen</disable-splash-screen-desc> <!-- English: "Disable splash screen" -->
|
||||||
<enable-splash-screen-desc>Activa splash screen</enable-splash-screen-desc> <!-- English: "Enable splash screen" -->
|
<enable-splash-screen-desc>Activa splash screen</enable-splash-screen-desc> <!-- English: "Enable splash screen" -->
|
||||||
<!-- <restore-defaults-desc>???</restore-defaults-desc> --> <!-- English: "Reset all user settings to their defaults (rendering options etc)" -->
|
<restore-defaults-desc>Restaurar todas las configuraciones a las iniciales (opciones de renderizado, etc)</restore-defaults-desc> <!-- English: "Reset all user settings to their defaults (rendering options etc)" -->
|
||||||
<disable-save-on-exit>No guardar las preferencias al salir del programa</disable-save-on-exit> <!-- English: "Don't save preferences upon program exit" -->
|
<disable-save-on-exit>No guardar las preferencias al salir del programa</disable-save-on-exit> <!-- English: "Don't save preferences upon program exit" -->
|
||||||
<enable-save-on-exit>Permitir guardar las preferencias al salir del programa</enable-save-on-exit> <!-- English: "Allow saving preferences at program exit" -->
|
<enable-save-on-exit>Permitir guardar las preferencias al salir del programa</enable-save-on-exit> <!-- English: "Allow saving preferences at program exit" -->
|
||||||
<disable-intro-music-desc>Desactiva la introducción musical</disable-intro-music-desc> <!-- English: "Disable introduction music" -->
|
<disable-intro-music-desc>Desactiva la introducción musical</disable-intro-music-desc> <!-- English: "Disable introduction music" -->
|
||||||
|
@ -48,10 +48,10 @@
|
||||||
<enable-mouse-pointer-desc n="1">(p.ej. para tarjetas tipo Voodoo a pantalla completa)</enable-mouse-pointer-desc> <!-- English: "(i.e. for full screen Voodoo based cards)" -->
|
<enable-mouse-pointer-desc n="1">(p.ej. para tarjetas tipo Voodoo a pantalla completa)</enable-mouse-pointer-desc> <!-- English: "(i.e. for full screen Voodoo based cards)" -->
|
||||||
<disable-random-objects-desc>Excluir objetos aleatorios de escenografía</disable-random-objects-desc> <!-- English: "Exclude random scenery objects" -->
|
<disable-random-objects-desc>Excluir objetos aleatorios de escenografía</disable-random-objects-desc> <!-- English: "Exclude random scenery objects" -->
|
||||||
<enable-random-objects-desc>Incluir objetos aleatorios de escenografía</enable-random-objects-desc> <!-- English: "Include random scenery objects" -->
|
<enable-random-objects-desc>Incluir objetos aleatorios de escenografía</enable-random-objects-desc> <!-- English: "Include random scenery objects" -->
|
||||||
<!-- <disable-random-vegetation-desc>???</disable-random-vegetation-desc> --> <!-- English: "Exclude random vegetation objects" -->
|
<disable-random-vegetation-desc>Excluir objetos aleatorios de vegetación</disable-random-vegetation-desc> <!-- English: "Exclude random vegetation objects" -->
|
||||||
<!-- <enable-random-vegetation-desc>???</enable-random-vegetation-desc> --> <!-- English: "Include random vegetation objects" -->
|
<enable-random-vegetation-desc>Incluir objetos aleatorios de vegetación</enable-random-vegetation-desc> <!-- English: "Include random vegetation objects" -->
|
||||||
<!-- <disable-random-buildings-desc>???</disable-random-buildings-desc> --> <!-- English: "Exclude random buildings objects" -->
|
<disable-random-buildings-desc>Excluir edificios aleatorios</disable-random-buildings-desc> <!-- English: "Exclude random buildings objects" -->
|
||||||
<!-- <enable-random-buildings-desc>???</enable-random-buildings-desc> --> <!-- English: "Include random buildings objects" -->
|
<enable-random-buildings-desc>Incluir edificios aleatorios</enable-random-buildings-desc> --> <!-- English: "Include random buildings objects" -->
|
||||||
<disable-real-weather-fetch-desc>Desactiva la recogida de meteo real basada en METAR</disable-real-weather-fetch-desc> <!-- English: "Disable METAR based real weather fetching" -->
|
<disable-real-weather-fetch-desc>Desactiva la recogida de meteo real basada en METAR</disable-real-weather-fetch-desc> <!-- English: "Disable METAR based real weather fetching" -->
|
||||||
<enable-real-weather-fetch-desc>Activa la recogida de meteo real basada en METAR (esto requiere una conexión a Internet)</enable-real-weather-fetch-desc> <!-- English: "Enable METAR based real weather fetching (this requires an open internet connection)" -->
|
<enable-real-weather-fetch-desc>Activa la recogida de meteo real basada en METAR (esto requiere una conexión a Internet)</enable-real-weather-fetch-desc> <!-- English: "Enable METAR based real weather fetching (this requires an open internet connection)" -->
|
||||||
<metar-desc>Pasar una METAR para establecer una meteo estática</metar-desc> <!-- English: "Pass a METAR to set up static weather" -->
|
<metar-desc>Pasar una METAR para establecer una meteo estática</metar-desc> <!-- English: "Pass a METAR to set up static weather" -->
|
||||||
|
|
|
@ -699,14 +699,9 @@ Started September 2000 by David Megginson, david@megginson.com
|
||||||
<atc>
|
<atc>
|
||||||
<enabled type="bool">true</enabled>
|
<enabled type="bool">true</enabled>
|
||||||
<runway type="string" preserve="y"/>
|
<runway type="string" preserve="y"/>
|
||||||
|
<use-millibars type="bool" preserve="y">false</use-millibars>
|
||||||
</atc>
|
</atc>
|
||||||
|
|
||||||
<ai-traffic>
|
|
||||||
<!-- Obsolete and unused - to be removed -->
|
|
||||||
<enabled type="bool" userarchive="y">false</enabled>
|
|
||||||
<level type="int" userarchive="y">1</level>
|
|
||||||
</ai-traffic>
|
|
||||||
|
|
||||||
<traffic-manager>
|
<traffic-manager>
|
||||||
<enabled type="bool" userarchive="y">true</enabled>
|
<enabled type="bool" userarchive="y">true</enabled>
|
||||||
<heuristics type="bool">true</heuristics>
|
<heuristics type="bool">true</heuristics>
|
||||||
|
|
2
version
2
version
|
@ -1 +1 @@
|
||||||
2.8.0
|
2.9.0
|
||||||
|
|
Loading…
Add table
Reference in a new issue