1
0
Fork 0

Merge branch 'master' of git://gitorious.org/fg/fgdata

This commit is contained in:
unknown 2010-06-04 19:17:21 +02:00
commit 0b496c3708
140 changed files with 86209 additions and 120 deletions

51
Nasal/casdisable.nas Normal file
View file

@ -0,0 +1,51 @@
#disable cas when engines running- otherwise we are overflooded with error messages in the console
call_casdisable = func {
if ( getprop("/rotors/main/rpm")> 80.0)
{
setprop("/controls/flight/fcs/cas-enabled", 0);
} else {
setprop("/controls/flight/fcs/cas-enabled", 1.0);
}
#if (RUN2 ==1) {
# setprop("/controls/flight/fcs/cas-enabled", 0);
# } else {
# setprop("/controls/flight/fcs/cas-enabled", 1.0);
# }
settimer(call_casdisable, 0.2);
}
init = func {
settimer(call_casdisable, 0.0);
}
init();

571
Nasal/fcs.nas Normal file
View file

@ -0,0 +1,571 @@
#
# Flight Control System by Tatsuhiro Nishioka
# $Id: fcs.nas,v 1.11 2008/08/28 02:41:04 tat Exp $
#
#This one simulates a jaw SAS
var FCSFilter = {
new : func(input_path, output_path) {
var obj = { parents : [FCSFilter],
input_path : input_path,
output_path : output_path };
obj.axis_conv = {'roll' : 'aileron', 'pitch' : 'elevator', 'yaw' : 'rudder' };
obj.body_conv = {'roll' : 'v', 'pitch' : 'u' };
obj.last_body_fps = {'roll' : 0.0, 'pitch' : 0.0 };
obj.last_pos = {'roll' : 0.0, 'pitch' : 0.0, 'yaw' : 0.0};
return obj;
},
# read input command for a given axis
read : func(axis) {
if (me.input_path == nil or me.input_path == "") {
return getprop("/controls/flight/" ~ me.axis_conv[axis]);
} else {
var value = getprop(me.input_path ~ "/" ~ axis);
value = int(value * 1000) / 1000.0;
}
},
# write output command for a given axis
# this will be the output of an next command filter (like SAS)
write : func(axis, value) {
if (me.output_path == nil or me.output_path == '') {
setprop("/controls/flight/fcs/" ~ axis, me.limit(value, 1.0));
} else {
setprop(me.output_path ~ "/" ~ axis, me.limit(value, 1.0));
}
},
toggleFilterStatus : func(name) {
var messages = ["disengaged", "engaged"];
var path = "/controls/flight/fcs/" ~ name ~ "-enabled";
var status = getprop(path);
setprop(path, 1 - status);
screen.log.write(name ~ " " ~ messages[1 - status]);
},
getStatus : func(name) {
var path = "/controls/flight/fcs/" ~ name ~ "-enabled";
return getprop(path);
},
limit : func(value, range) {
if (value > range) {
return range;
} elsif (value < -range) {
return - range;
}
return value;
},
max : func(val1, val2) {
return (val1 > val2) ? val1 : val2;
},
min : func(val1, val2) {
return (val1 > val2) ? val2 : val1;
},
calcCounterBodyFPS : func(axis, input, offset_deg) {
var position = getprop("/orientation/" ~ axis ~ "-deg");
var body_fps = 0;
var last_body_fps = me.last_body_fps[axis];
var reaction_gain = 0;
var heading = getprop("/orientation/heading-deg");
var wind_speed_fps = getprop("/environment/wind-speed-kt") * 1.6878099;
var wind_direction = getprop("/environment/wind-from-heading-deg");
var wind_direction -= heading;
var rate = getprop("/orientation/" ~ axis ~ "-rate-degps");
var gear_pos = getprop("/gear/gear[0]/compression-norm") + getprop("/gear/gear[1]/compression-norm");
var counter_fps = 0;
var fps_axis = me.body_conv[axis]; # convert from {roll, pitch} to {u, v}
var target_pos = offset_deg;
var brake_deg = 0;
body_fps = getprop("/velocities/" ~ fps_axis ~ "Body-fps");
if (axis == 'roll') {
var wind_fps = math.sin(wind_direction / 180 * math.pi) * wind_speed_fps;
} else {
var wind_fps = math.cos(wind_direction / 180 * math.pi) * wind_speed_fps;
}
var brake_freq = getprop("/controls/flight/fcs/gains/afcs/fps-" ~ axis ~ "-brake-freq");
var brake_gain = getprop("/controls/flight/fcs/gains/afcs/fps-brake-gain-" ~ axis);
body_fps -= wind_fps;
var dfps = body_fps - me.last_body_fps[axis];
var fps_coeff = getprop("/controls/flight/fcs/gains/afcs/fps-" ~ axis ~ "-coeff");
target_pos -= int(body_fps * 100) / 100 * fps_coeff;
if (axis == 'roll' and gear_pos > 0.0 and position > 0) {
target_pos -= position * gear_pos / 5;
}
reaction_gain = getprop("/controls/flight/fcs/gains/afcs/fps-reaction-gain-" ~ axis);
var brake_sensitivity = (axis == 'roll') ? 1 : 1;
if (math.abs(position + rate / brake_freq * brake_sensitivity) > math.abs(target_pos)) {
if (math.abs(dfps) > 1) {
dfps = 1;
}
var error_deg = target_pos - position;
brake_deg = (error_deg - rate / brake_freq) * math.abs(dfps * 10) * brake_gain;
if (target_pos > 0) {
brake_deg = me.min(brake_deg, 0);
} else {
brake_deg = me.max(brake_deg, 0);
}
}
counter_fps = me.limit((target_pos + brake_deg) * reaction_gain, 1.0);
setprop("/controls/flight/fcs/afcs/ah-" ~ fps_axis ~ "body-fps", body_fps);
setprop("/controls/flight/fcs/afcs/ah-" ~ fps_axis ~ "body-wind-fps", wind_fps);
setprop("/controls/flight/fcs/afcs/ah-" ~ axis ~ "-target-deg", target_pos);
setprop("/controls/flight/fcs/afcs/ah-" ~ axis ~ "-rate", rate);
setprop("/controls/flight/fcs/afcs/ah-delta-" ~ fps_axis ~ "body-fps", dfps);
setprop("/controls/flight/fcs/afcs/ah-" ~ axis ~ "-brake-deg", brake_deg);
setprop("/controls/flight/fcs/afcs/counter-fps-" ~ axis, counter_fps);
me.last_pos[axis] = position;
me.last_body_fps[axis] = body_fps;
return me.limit(counter_fps + input * 0.2, 1.0);
},
};
#
# AFCS : Automatic Flight Control System
#
var AFCS = {
new : func(input_path, output_path) {
var obj = FCSFilter.new(input_path, output_path);
obj.parents = [FCSFilter, AFCS];
setprop("/controls/flight/fcs/auto-hover-enabled", 0);
setprop("/controls/flight/fcs/gains/afcs/fps-brake-gain-pitch", 1.8);
setprop("/controls/flight/fcs/gains/afcs/fps-brake-gain-roll", 0.8);
setprop("/controls/flight/fcs/gains/afcs/fps-pitch-brake-freq", 3);
setprop("/controls/flight/fcs/gains/afcs/fps-pitch-coeff", -0.95);
setprop("/controls/flight/fcs/gains/afcs/fps-pitch-offset-deg", 0.9);
setprop("/controls/flight/fcs/gains/afcs/fps-reaction-gain-pitch", -0.8);
setprop("/controls/flight/fcs/gains/afcs/fps-reaction-gain-roll", 0.3436);
setprop("/controls/flight/fcs/gains/afcs/fps-roll-brake-freq", 8);
setprop("/controls/flight/fcs/gains/afcs/fps-roll-coeff", 0.8);
setprop("/controls/flight/fcs/gains/afcs/fps-roll-offset-deg", -0.8);
return obj;
},
toggleAutoHover : func() {
me.toggleFilterStatus("auto-hover");
},
toggleAirSpeedLock : func() {
me.toggleFilterStatus("air-speed-lock");
},
toggleHeadingLock : func() {
me.toggleFilterStatus("heading-lock");
},
toggleAltitudeLock : func() {
me.toggleFilterStatus("altitude-lock");
},
#
# auto hover : locks vBody_fps and uBody_fps regardless of wind speed/direction
#
autoHover : func(axis, input) {
if (axis == 'yaw') {
return input;
} else {
var offset_deg = getprop("/controls/flight/fcs/gains/afcs/fps-" ~ axis ~ "-offset-deg");
return me.calcCounterBodyFPS(axis, input, offset_deg);
}
},
altitudeLock : func(axis, input) {
# not implemented yet
return input;
},
headingLock : func(axis, input) {
# not implementet yet
return input;
},
apply : func(axis) {
var input = me.read(axis);
var hover_status = me.getStatus("auto-hover");
if (hover_status == 0) {
me.write(axis, input);
return;
}
me.write(axis, me.autoHover(axis, input));
}
};
#
# SAS : Stability Augmentation System - a rate damper
#
var SAS = {
#
# new
# initial_gains: hash of initial gains for rate damping
# sensitivities: hash of minimum rates (deg/sec) that enables rate damper
# authority_limit: shows how much SAS can take over control
# 0 means no stability control, 1.0 means SAS fully takes over pilot control
# input_path: is a base path to input axis; nil for using raw input from KB/JS
# output_path: is a base path to output axis; nis for using /controls/flight/fcs
#
# with input_path / output_path, you can connect SAS, CAS, and more control filters
#
new : func(initial_gains, sensitivities, authority_limit, input_path, output_path) {
var obj = FCSFilter.new(input_path, output_path);
obj.parents = [FCSFilter, SAS];
obj.authority_limit = authority_limit;
obj.sensitivities = sensitivities;
obj.initial_gains = initial_gains;
props.globals.getNode("/controls/flight/fcs/gains/sas", 1).setValues(obj.initial_gains);
setprop("/controls/flight/fcs/sas-enabled", 1);
return obj;
},
toggleEnable : func() {
me.toggleFilterStatus("sas");
},
#
# calcGain - get gain for each axis based on air speed and dynamic pressure
# axis: one of 'roll', 'pitch', or 'yaw'
#
calcGain : func(axis) {
var mach = getprop("/velocities/mach");
var initial_gain = getprop("/controls/flight/fcs/gains/sas/" ~ axis);
var gain = initial_gain - 0.1 * mach * mach;
if (math.abs(gain) < math.abs(initial_gain) * 0.01 or gain * initial_gain < 0) {
gain = initial_gain * 0.01;
}
return gain;
},
calcAuthorityLimit : func() {
var mach = getprop("/velocities/mach");
var min_mach = 0.038;
var limit = me.authority_limit;
if (math.abs(mach < min_mach)) {
limit += (min_mach - math.abs(mach)) / min_mach * (1 - me.authority_limit) * 0.95;
}
setprop("/controls/flight/fcs/gains/sas/authority-limit", limit);
return limit;
},
#
# apply - apply SAS damper to a given input axis
# axis: one of 'roll', 'pitch', or 'yaw'
#
apply : func(axis) {
var status = me.getStatus("sas");
var input = me.read(axis);
if (status == 0) {
me.write(axis, input);
return;
}
var mach = getprop("/velocities/mach");
var value = 0;
var rate = getprop("/orientation/" ~ axis ~ "-rate-degps");
var gain = me.calcGain(axis);
var limit = me.calcAuthorityLimit();
if (math.abs(rate) >= me.sensitivities[axis]) {
value = - gain * rate;
if (value > limit) {
value = limit;
} elsif (value < - limit) {
value = - limit;
}
}
me.write(axis, value + input);
}
};
#
# CAS : Control Augmentation System - makes your aircraft more meneuverable
#
var CAS = {
new : func(input_gains, output_gains, sensitivities, input_path, output_path) {
var obj = FCSFilter.new(input_path, output_path);
obj.parents = [FCSFilter, CAS];
obj.sensitivities = sensitivities;
obj.input_gains = input_gains;
obj.output_gains = output_gains;
props.globals.getNode("/controls/flight/fcs/gains/cas/input", 1).setValues(obj.input_gains);
props.globals.getNode("/controls/flight/fcs/gains/cas/output", 1).setValues(obj.output_gains);
setprop("/autopilot/locks/altitude", '');
setprop("/autopilot/locks/heading", '');
setprop("/controls/flight/fcs/cas-enabled", 1);
return obj;
},
calcRollRateAdjustment : func {
var position = getprop("/orientation/roll-deg");
return math.abs(math.sin(position / 180 * math.pi)) / 6;
},
calcSideSlipAdjustment : func {
var mach = getprop("/velocities/mach");
var slip = getprop("/orientation/side-slip-deg");
if (mach < 0.015) { # works only if air speed > 10kt
slip = 0;
}
var anti_slip_gain = getprop("/controls/flight/fcs/gains/cas/output/anti-side-slip-gain");
var roll_deg = getprop("/orientation/roll-deg");
var gain_adjuster = me.min(math.abs(mach) / 0.060, 1) * me.limit(0.2 + math.sqrt(math.abs(roll_deg)/10), 3);
anti_slip_gain *= gain_adjuster;
setprop("/controls/flight/fcs/cas/anti-side-slip", slip * anti_slip_gain);
return slip * anti_slip_gain;
},
# FIXME: command for CAS is just a temporal one
calcCommand: func (axis, input) {
var output = 0;
var mach = getprop("/velocities/mach");
var input_gain = me.calcGain(axis);
var output_gain = getprop("/controls/flight/fcs/gains/cas/output/" ~ axis);
var target_rate = input * input_gain;
var rate = getprop("/orientation/" ~ axis ~ "-rate-degps");
var drate = target_rate - rate;
var locks = {'pitch' : getprop("/autopilot/locks/altitude"),
'roll' : getprop("/autopilot/locks/heading")};
setprop("/controls/flight/fcs/cas/target_" ~ axis ~ "rate", target_rate);
setprop("/controls/flight/fcs/cas/delta_" ~ axis, drate);
if (axis == 'roll' or axis == 'pitch') {
if (math.abs(input > 0.7) or locks[axis] != '') {
output = drate * output_gain;
} else {
output = me.calcAttitudeCommand(axis);
}
if (axis == 'roll' and math.abs(mach) < 0.035) {
# FIXME: I don't know if OH-1 has this one
output += me.calcCounterBodyFPS(axis, input, -0.8);
}
} elsif (axis == 'yaw') {
output = drate * output_gain + me.calcSideSlipAdjustment();
} else {
output = drate * output_gain;
}
return output;
},
toggleEnable : func() {
me.toggleFilterStatus("cas");
},
calcAttitudeCommand : func(axis) {
var input_gain = getprop("/controls/flight/fcs/gains/cas/input/attitude-" ~ axis);
var output_gain = getprop("/controls/flight/fcs/gains/cas/output/" ~ axis);
var brake_freq = getprop("/controls/flight/fcs/gains/cas/output/" ~ axis ~ "-brake-freq");
var brake_gain = getprop("/controls/flight/fcs/gains/cas/output/" ~ axis ~ "-brake");
var trim = getprop("/controls/flight/" ~ me.axis_conv[axis] ~ "-trim");
var current_deg = getprop("/orientation/" ~ axis ~ "-deg");
var rate = getprop("/orientation/" ~ axis ~ "-rate-degps");
var target_deg = (me.read(axis) + trim) * input_gain;
var command_deg = 0;
if (target_deg != 0) {
command_deg = (0.094 * math.ln(math.abs(target_deg)) + 0.53) * target_deg;
}
var error_deg = command_deg - current_deg;
var brake_deg = (error_deg - rate / brake_freq) * math.abs(error_deg) * brake_gain;
if (command_deg > 0) {
brake_deg = me.min(brake_deg, 0);
} else {
brake_deg = me.max(brake_deg, 0);
}
var monitor_prefix = me.output_path ~ "/" ~ axis;
setprop(monitor_prefix ~ "-target_deg", target_deg);
setprop(monitor_prefix ~ "-error_deg", error_deg);
setprop(monitor_prefix ~ "-brake_deg", brake_deg);
setprop(monitor_prefix ~ "-deg", current_deg);
setprop(monitor_prefix ~ "-rate", -rate);
return (error_deg + brake_deg) * output_gain;
},
# FixMe: gain should be calculated using both speed and dynamic pressure
calcGain : func(axis) {
var mach = getprop("/velocities/mach");
var input_gain = getprop("/controls/flight/fcs/gains/cas/input/" ~ axis);
var gain = input_gain;
if (axis == 'pitch') {
gain += 0.1 * mach * mach;
} elsif (axis== 'yaw') {
gain *= ((1 - mach) * (1 - mach));
}
if (gain * input_gain < 0.0 ) {
gain = 0;
}
return gain;
},
apply : func(axis) {
var input = me.read(axis);
var status = me.getStatus("cas");
var cas_command = 0;
# FIXME : hmm, a bit nasty. CAS should be enabled even with auto-hover....
if (status == 0 or (me.getStatus("auto-hover") == 1 and axis != 'yaw')) {
me.write(axis, input);
return;
}
cas_command = me.calcCommand(axis, input);
me.write(axis, cas_command);
}
};
#
# Tail hstab, "stabilator," for stabilize the nose
#
var Stabilator = {
new : func() {
var obj = { parents : [Stabilator] };
setprop("/controls/flight/fcs/gains/stabilator", -1.8);
setprop("/controls/flight/fcs/auto-stabilator", 1);
# 0 10 20 30 40 50 60 70 80 90 100 110 120 130 140 150 160, 170, 180, .....
me.gainTable = [-0.9, -0.8, 0.1, -0.5, 0.0, 0.7, 0.8, 0.9, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 0.9, 0.8, 0.6, 0.4, 0.2, -1.0];
return obj;
},
toggleManual : func {
var status = getprop("/controls/flight/fcs/auto-stabilator");
getprop("/controls/flight/fcs/auto-stabilator", 1 - status);
},
apply : func(delta) {
setprop("/controls/flight/fcs/auto-stabilator", 0);
var value = getprop("/controls/flight/fcs/stabilator");
getprop("/controls/flight/fcs/stabilator", value + delta);
},
calcPosition : func() {
var speed = getprop("/velocities/mach") / 0.001497219; # in knot
var index = int(math.abs(speed) / 10);
if (index >= size(me.gainTable) - 1) {
index = size(me.gainTable) - 2;
}
var mod = math.mod(int(math.abs(speed)), 10);
var position = me.gainTable[index] * ((10 - mod) / 10) + me.gainTable[index-1] * (mod) / 10;
if (speed < -20) {
position = - position;
}
return position;
},
update : func() {
var status = getprop("/controls/flight/fcs/auto-stabilator");
if (status == 0) {
return;
}
var gain = getprop("/controls/flight/fcs/gains/stabilator");
var mach = getprop("/velocities/mach");
var throttle = getprop("/controls/flight/throttle");
var stabilator_norm = 0;
stabilator_norm = me.calcPosition();
setprop("/controls/flight/fcs/stabilator", stabilator_norm);
}
};
var TailRotorCollective = {
new : func(minimum=0.10, maximum=1.0, low_limit=0.00011, high_limit=0.0035) {
var obj = FCSFilter.new("/controls/engines/engine[1]", "/controls/flight/fcs/tail-rotor");
obj.parents = [FCSFilter, TailRotorCollective];
obj.adjuster = 0.0;
setprop("/controls/flight/fcs/tail-rotor/src-minimum", minimum);
setprop("/controls/flight/fcs/tail-rotor/src-maximum", maximum);
setprop("/controls/flight/fcs/tail-rotor/low-limit", low_limit);
setprop("/controls/flight/fcs/tail-rotor/high-limit", high_limit);
setprop("/controls/flight/fcs/gains/tail-rotor/error-adjuster-gain", -0.5);
return obj;
},
update : func() {
var throttle = me.read("throttle");
var pedal_pos_deg = getprop("/controls/flight/fcs/yaw");
var cas_input = cas.read('yaw');
var cas_input_gain = cas.calcGain('yaw');
var target_rate = cas_input * cas_input_gain;
var rate = getprop("/orientation/yaw-rate-degps");
var error_rate = getprop("/controls/flight/fcs/cas/delta_yaw");
var error_adjuster_gain = getprop("/controls/flight/fcs/gains/tail-rotor/error-adjuster-gain");
var minimum = getprop("/controls/flight/fcs/tail-rotor/src-minimum");
var maximum = getprop("/controls/flight/fcs/tail-rotor/src-maximum");
var low_limit = getprop("/controls/flight/fcs/tail-rotor/low-limit");
var high_limit = getprop("/controls/flight/fcs/tail-rotor/high-limit");
var output = 0;
var range = maximum - minimum;
if (throttle < minimum) {
output = low_limit;
} elsif (throttle > maximum) {
output = high_limit;
} else {
output = low_limit + (throttle - minimum) / range * (high_limit - low_limit);
}
# CAS driven tail rotor thrust adjuster
me.adjuster = error_rate * error_adjuster_gain;
me.adjuster = me.limit(me.adjuster, 0.3);
output += me.adjuster;
setprop("/controls/flight/fcs/tail-rotor/error-rate", error_rate);
setprop("/controls/flight/fcs/tail-rotor/adjuster", me.adjuster);
me.write("throttle", output);
}
};
var sas = nil;
var cas = nil;
var afcs = nil;
var stabilator = nil;
var tail = nil;
var count = 0;
var sensitivities = {'roll' : 0.0, 'pitch' : 0.0, 'yaw' : 1.125 };
var sas_initial_gains = {'roll' : 0, 'pitch' : 0, 'yaw' : 0.004 };
var cas_input_gains = {'roll' : 30, 'pitch' : -60, 'yaw' : 30,
'attitude-roll' : 80, 'attitude-pitch' : -80 };
var cas_output_gains = {'roll' : 0.06, 'pitch' : -0.1, 'yaw' : 0.5,
'roll-brake-freq' : 10, 'pitch-brake-freq' : 3,
'roll-brake' : 0.4, 'pitch-brake' : 6,
'anti-side-slip-gain' : -4.5};
var update = func {
count += 1;
# AFCS, CAS, and SAS run at 60Hz
if (math.mod(count, 2) == 0) {
return;
}
cas.apply('roll');
cas.apply('pitch');
cas.apply('yaw');
afcs.apply('roll');
afcs.apply('pitch');
afcs.apply('yaw');
sas.apply('roll');
sas.apply('pitch');
sas.apply('yaw');
stabilator.update();
tail.update();
}
var initialize = func {
cas = CAS.new(cas_input_gains, cas_output_gains, sensitivities, nil, "/controls/flight/fcs/cas");
afcs = AFCS.new("/controls/flight/fcs/cas", "/controls/flight/fcs/afcs");
sas = SAS.new(sas_initial_gains, sensitivities, 3, "/controls/flight/fcs/afcs", "/controls/flight/fcs");
stabilator = Stabilator.new();
tail = TailRotorCollective.new();
setlistener("/rotors/main/cone-deg", update);
}
_setlistener("/sim/signals/fdm-initialized", initialize);

570
Nasal/fcs2.nas Normal file
View file

@ -0,0 +1,570 @@
#
# Flight Control System by Tatsuhiro Nishioka
# $Id: fcs.nas,v 1.11 2008/08/28 02:41:04 tat Exp $
#
#This one simulates a P/R and Jaw SAS
var FCSFilter = {
new : func(input_path, output_path) {
var obj = { parents : [FCSFilter],
input_path : input_path,
output_path : output_path };
obj.axis_conv = {'roll' : 'aileron', 'pitch' : 'elevator', 'yaw' : 'rudder' };
obj.body_conv = {'roll' : 'v', 'pitch' : 'u' };
obj.last_body_fps = {'roll' : 0.0, 'pitch' : 0.0 };
obj.last_pos = {'roll' : 0.0, 'pitch' : 0.0, 'yaw' : 0.0};
return obj;
},
# read input command for a given axis
read : func(axis) {
if (me.input_path == nil or me.input_path == "") {
return getprop("/controls/flight/" ~ me.axis_conv[axis]);
} else {
var value = getprop(me.input_path ~ "/" ~ axis);
value = int(value * 1000) / 1000.0;
}
},
# write output command for a given axis
# this will be the output of an next command filter (like SAS)
write : func(axis, value) {
if (me.output_path == nil or me.output_path == '') {
setprop("/controls/flight/fcs/" ~ axis, me.limit(value, 1.0));
} else {
setprop(me.output_path ~ "/" ~ axis, me.limit(value, 1.0));
}
},
toggleFilterStatus : func(name) {
var messages = ["disengaged", "engaged"];
var path = "/controls/flight/fcs/" ~ name ~ "-enabled";
var status = getprop(path);
setprop(path, 1 - status);
#screen.log.write(name ~ " " ~ messages[1 - status]);
},
getStatus : func(name) {
var path = "/controls/flight/fcs/" ~ name ~ "-enabled";
return getprop(path);
},
limit : func(value, range) {
if (value > range) {
return range;
} elsif (value < -range) {
return - range;
}
return value;
},
max : func(val1, val2) {
return (val1 > val2) ? val1 : val2;
},
min : func(val1, val2) {
return (val1 > val2) ? val2 : val1;
},
calcCounterBodyFPS : func(axis, input, offset_deg) {
var position = getprop("/orientation/" ~ axis ~ "-deg");
var body_fps = 0;
var last_body_fps = me.last_body_fps[axis];
var reaction_gain = 0;
var heading = getprop("/orientation/heading-deg");
var wind_speed_fps = getprop("/environment/wind-speed-kt") * 1.6878099;
var wind_direction = getprop("/environment/wind-from-heading-deg");
var wind_direction -= heading;
var rate = getprop("/orientation/" ~ axis ~ "-rate-degps");
var gear_pos = getprop("/gear/gear[0]/compression-norm") + getprop("/gear/gear[1]/compression-norm");
var counter_fps = 0;
var fps_axis = me.body_conv[axis]; # convert from {roll, pitch} to {u, v}
var target_pos = offset_deg;
var brake_deg = 0;
body_fps = getprop("/velocities/" ~ fps_axis ~ "Body-fps");
if (axis == 'roll') {
var wind_fps = math.sin(wind_direction / 180 * math.pi) * wind_speed_fps;
} else {
var wind_fps = math.cos(wind_direction / 180 * math.pi) * wind_speed_fps;
}
var brake_freq = getprop("/controls/flight/fcs/gains/afcs/fps-" ~ axis ~ "-brake-freq");
var brake_gain = getprop("/controls/flight/fcs/gains/afcs/fps-brake-gain-" ~ axis);
body_fps -= wind_fps;
var dfps = body_fps - me.last_body_fps[axis];
var fps_coeff = getprop("/controls/flight/fcs/gains/afcs/fps-" ~ axis ~ "-coeff");
target_pos -= int(body_fps * 100) / 100 * fps_coeff;
if (axis == 'roll' and gear_pos > 0.0 and position > 0) {
target_pos -= position * gear_pos / 5;
}
reaction_gain = getprop("/controls/flight/fcs/gains/afcs/fps-reaction-gain-" ~ axis);
var brake_sensitivity = (axis == 'roll') ? 1 : 1;
if (math.abs(position + rate / brake_freq * brake_sensitivity) > math.abs(target_pos)) {
if (math.abs(dfps) > 1) {
dfps = 1;
}
var error_deg = target_pos - position;
brake_deg = (error_deg - rate / brake_freq) * math.abs(dfps * 10) * brake_gain;
if (target_pos > 0) {
brake_deg = me.min(brake_deg, 0);
} else {
brake_deg = me.max(brake_deg, 0);
}
}
counter_fps = me.limit((target_pos + brake_deg) * reaction_gain, 1.0);
setprop("/controls/flight/fcs/afcs/ah-" ~ fps_axis ~ "body-fps", body_fps);
setprop("/controls/flight/fcs/afcs/ah-" ~ fps_axis ~ "body-wind-fps", wind_fps);
setprop("/controls/flight/fcs/afcs/ah-" ~ axis ~ "-target-deg", target_pos);
setprop("/controls/flight/fcs/afcs/ah-" ~ axis ~ "-rate", rate);
setprop("/controls/flight/fcs/afcs/ah-delta-" ~ fps_axis ~ "body-fps", dfps);
setprop("/controls/flight/fcs/afcs/ah-" ~ axis ~ "-brake-deg", brake_deg);
setprop("/controls/flight/fcs/afcs/counter-fps-" ~ axis, counter_fps);
me.last_pos[axis] = position;
me.last_body_fps[axis] = body_fps;
return me.limit(counter_fps + input * 0.2, 1.0);
},
};
#
# AFCS : Automatic Flight Control System
#
var AFCS = {
new : func(input_path, output_path) {
var obj = FCSFilter.new(input_path, output_path);
obj.parents = [FCSFilter, AFCS];
setprop("/controls/flight/fcs/auto-hover-enabled", 0);
setprop("/controls/flight/fcs/gains/afcs/fps-brake-gain-pitch", 1.8);
setprop("/controls/flight/fcs/gains/afcs/fps-brake-gain-roll", 0.8);
setprop("/controls/flight/fcs/gains/afcs/fps-pitch-brake-freq", 3);
setprop("/controls/flight/fcs/gains/afcs/fps-pitch-coeff", -0.95);
setprop("/controls/flight/fcs/gains/afcs/fps-pitch-offset-deg", 0.9);
setprop("/controls/flight/fcs/gains/afcs/fps-reaction-gain-pitch", -0.8);
setprop("/controls/flight/fcs/gains/afcs/fps-reaction-gain-roll", 0.3436);
setprop("/controls/flight/fcs/gains/afcs/fps-roll-brake-freq", 8);
setprop("/controls/flight/fcs/gains/afcs/fps-roll-coeff", 0.8);
setprop("/controls/flight/fcs/gains/afcs/fps-roll-offset-deg", -0.8);
return obj;
},
toggleAutoHover : func() {
me.toggleFilterStatus("auto-hover");
},
toggleAirSpeedLock : func() {
me.toggleFilterStatus("air-speed-lock");
},
toggleHeadingLock : func() {
me.toggleFilterStatus("heading-lock");
},
toggleAltitudeLock : func() {
me.toggleFilterStatus("altitude-lock");
},
#
# auto hover : locks vBody_fps and uBody_fps regardless of wind speed/direction
#
autoHover : func(axis, input) {
if (axis == 'yaw') {
return input;
} else {
var offset_deg = getprop("/controls/flight/fcs/gains/afcs/fps-" ~ axis ~ "-offset-deg");
return me.calcCounterBodyFPS(axis, input, offset_deg);
}
},
altitudeLock : func(axis, input) {
# not implemented yet
return input;
},
headingLock : func(axis, input) {
# not implementet yet
return input;
},
apply : func(axis) {
var input = me.read(axis);
var hover_status = me.getStatus("auto-hover");
if (hover_status == 0) {
me.write(axis, input);
return;
}
me.write(axis, me.autoHover(axis, input));
}
};
#
# SAS : Stability Augmentation System - a rate damper
#
var SAS = {
#
# new
# initial_gains: hash of initial gains for rate damping
# sensitivities: hash of minimum rates (deg/sec) that enables rate damper
# authority_limit: shows how much SAS can take over control
# 0 means no stability control, 1.0 means SAS fully takes over pilot control
# input_path: is a base path to input axis; nil for using raw input from KB/JS
# output_path: is a base path to output axis; nis for using /controls/flight/fcs
#
# with input_path / output_path, you can connect SAS, CAS, and more control filters
#
new : func(initial_gains, sensitivities, authority_limit, input_path, output_path) {
var obj = FCSFilter.new(input_path, output_path);
obj.parents = [FCSFilter, SAS];
obj.authority_limit = authority_limit;
obj.sensitivities = sensitivities;
obj.initial_gains = initial_gains;
props.globals.getNode("/controls/flight/fcs/gains/sas", 1).setValues(obj.initial_gains);
setprop("/controls/flight/fcs/sas-enabled", 1);
return obj;
},
toggleEnable : func() {
me.toggleFilterStatus("sas");
},
#
# calcGain - get gain for each axis based on air speed and dynamic pressure
# axis: one of 'roll', 'pitch', or 'yaw'
#
calcGain : func(axis) {
var mach = getprop("/velocities/mach");
var initial_gain = getprop("/controls/flight/fcs/gains/sas/" ~ axis);
var gain = initial_gain - 0.1 * mach * mach;
if (math.abs(gain) < math.abs(initial_gain) * 0.01 or gain * initial_gain < 0) {
gain = initial_gain * 0.01;
}
return gain;
},
calcAuthorityLimit : func() {
var mach = getprop("/velocities/mach");
var min_mach = 0.038;
var limit = me.authority_limit;
if (math.abs(mach < min_mach)) {
limit += (min_mach - math.abs(mach)) / min_mach * (1 - me.authority_limit) * 0.95;
}
setprop("/controls/flight/fcs/gains/sas/authority-limit", limit);
return limit;
},
#
# apply - apply SAS damper to a given input axis
# axis: one of 'roll', 'pitch', or 'yaw'
#
apply : func(axis) {
var status = me.getStatus("sas");
var input = me.read(axis);
if (status == 0) {
me.write(axis, input);
return;
}
var mach = getprop("/velocities/mach");
var value = 0;
var rate = getprop("/orientation/" ~ axis ~ "-rate-degps");
var gain = me.calcGain(axis);
var limit = me.calcAuthorityLimit();
if (math.abs(rate) >= me.sensitivities[axis]) {
value = - gain * rate;
if (value > limit) {
value = limit;
} elsif (value < - limit) {
value = - limit;
}
}
me.write(axis, value + input);
}
};
#
# CAS : Control Augmentation System - makes your aircraft more meneuverable
#
var CAS = {
new : func(input_gains, output_gains, sensitivities, input_path, output_path) {
var obj = FCSFilter.new(input_path, output_path);
obj.parents = [FCSFilter, CAS];
obj.sensitivities = sensitivities;
obj.input_gains = input_gains;
obj.output_gains = output_gains;
props.globals.getNode("/controls/flight/fcs/gains/cas/input", 1).setValues(obj.input_gains);
props.globals.getNode("/controls/flight/fcs/gains/cas/output", 1).setValues(obj.output_gains);
setprop("/autopilot/locks/altitude", '');
setprop("/autopilot/locks/heading", '');
setprop("/controls/flight/fcs/cas-enabled", 1);
return obj;
},
calcRollRateAdjustment : func {
var position = getprop("/orientation/roll-deg");
return math.abs(math.sin(position / 180 * math.pi)) / 6;
},
calcSideSlipAdjustment : func {
var mach = getprop("/velocities/mach");
var slip = getprop("/orientation/side-slip-deg");
if (mach < 0.015) { # works only if air speed > 10kt
slip = 0;
}
var anti_slip_gain = getprop("/controls/flight/fcs/gains/cas/output/anti-side-slip-gain");
var roll_deg = getprop("/orientation/roll-deg");
var gain_adjuster = me.min(math.abs(mach) / 0.060, 1) * me.limit(0.2 + math.sqrt(math.abs(roll_deg)/10), 3);
anti_slip_gain *= gain_adjuster;
setprop("/controls/flight/fcs/cas/anti-side-slip", slip * anti_slip_gain);
return slip * anti_slip_gain;
},
# FIXME: command for CAS is just a temporal one
calcCommand: func (axis, input) {
var output = 0;
var mach = getprop("/velocities/mach");
var input_gain = me.calcGain(axis);
var output_gain = getprop("/controls/flight/fcs/gains/cas/output/" ~ axis);
var target_rate = input * input_gain;
var rate = getprop("/orientation/" ~ axis ~ "-rate-degps");
var drate = target_rate - rate;
var locks = {'pitch' : getprop("/autopilot/locks/altitude"),
'roll' : getprop("/autopilot/locks/heading")};
setprop("/controls/flight/fcs/cas/target_" ~ axis ~ "rate", target_rate);
setprop("/controls/flight/fcs/cas/delta_" ~ axis, drate);
if (axis == 'roll' or axis == 'pitch') {
if (math.abs(input > 0.7) or locks[axis] != '') {
output = drate * output_gain;
} else {
output = me.calcAttitudeCommand(axis);
}
if (axis == 'roll' and math.abs(mach) < 0.035) {
# FIXME: I don't know if OH-1 has this one
output += me.calcCounterBodyFPS(axis, input, -0.8);
}
} elsif (axis == 'yaw') {
output = drate * output_gain + me.calcSideSlipAdjustment();
} else {
output = drate * output_gain;
}
return output;
},
toggleEnable : func() {
me.toggleFilterStatus("cas");
},
calcAttitudeCommand : func(axis) {
var input_gain = getprop("/controls/flight/fcs/gains/cas/input/attitude-" ~ axis);
var output_gain = getprop("/controls/flight/fcs/gains/cas/output/" ~ axis);
var brake_freq = getprop("/controls/flight/fcs/gains/cas/output/" ~ axis ~ "-brake-freq");
var brake_gain = getprop("/controls/flight/fcs/gains/cas/output/" ~ axis ~ "-brake");
var trim = getprop("/controls/flight/" ~ me.axis_conv[axis] ~ "-trim");
var current_deg = getprop("/orientation/" ~ axis ~ "-deg");
var rate = getprop("/orientation/" ~ axis ~ "-rate-degps");
var target_deg = (me.read(axis) + trim) * input_gain;
var command_deg = 0;
if (target_deg != 0) {
command_deg = (0.094 * math.ln(math.abs(target_deg)) + 0.53) * target_deg;
}
var error_deg = command_deg - current_deg;
var brake_deg = (error_deg - rate / brake_freq) * math.abs(error_deg) * brake_gain;
if (command_deg > 0) {
brake_deg = me.min(brake_deg, 0);
} else {
brake_deg = me.max(brake_deg, 0);
}
var monitor_prefix = me.output_path ~ "/" ~ axis;
setprop(monitor_prefix ~ "-target_deg", target_deg);
setprop(monitor_prefix ~ "-error_deg", error_deg);
setprop(monitor_prefix ~ "-brake_deg", brake_deg);
setprop(monitor_prefix ~ "-deg", current_deg);
setprop(monitor_prefix ~ "-rate", -rate);
return (error_deg + brake_deg) * output_gain;
},
# FixMe: gain should be calculated using both speed and dynamic pressure
calcGain : func(axis) {
var mach = getprop("/velocities/mach");
var input_gain = getprop("/controls/flight/fcs/gains/cas/input/" ~ axis);
var gain = input_gain;
if (axis == 'pitch') {
gain += 0.1 * mach * mach;
} elsif (axis== 'yaw') {
gain *= ((1 - mach) * (1 - mach));
}
if (gain * input_gain < 0.0 ) {
gain = 0;
}
return gain;
},
apply : func(axis) {
var input = me.read(axis);
var status = me.getStatus("cas");
var cas_command = 0;
# FIXME : hmm, a bit nasty. CAS should be enabled even with auto-hover....
if (status == 0 or (me.getStatus("auto-hover") == 1 and axis != 'yaw')) {
me.write(axis, input);
return;
}
cas_command = me.calcCommand(axis, input);
me.write(axis, cas_command);
}
};
#
# Tail hstab, "stabilator," for stabilize the nose
#
var Stabilator = {
new : func() {
var obj = { parents : [Stabilator] };
setprop("/controls/flight/fcs/gains/stabilator", -1.8);
setprop("/controls/flight/fcs/auto-stabilator", 1);
# 0 10 20 30 40 50 60 70 80 90 100 110 120 130 140 150 160, 170, 180, .....
me.gainTable = [-0.9, -0.8, 0.1, -0.5, 0.0, 0.7, 0.8, 0.9, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 0.9, 0.8, 0.6, 0.4, 0.2, -1.0];
return obj;
},
toggleManual : func {
var status = getprop("/controls/flight/fcs/auto-stabilator");
getprop("/controls/flight/fcs/auto-stabilator", 1 - status);
},
apply : func(delta) {
setprop("/controls/flight/fcs/auto-stabilator", 0);
var value = getprop("/controls/flight/fcs/stabilator");
getprop("/controls/flight/fcs/stabilator", value + delta);
},
calcPosition : func() {
var speed = getprop("/velocities/mach") / 0.001497219; # in knot
var index = int(math.abs(speed) / 10);
if (index >= size(me.gainTable) - 1) {
index = size(me.gainTable) - 2;
}
var mod = math.mod(int(math.abs(speed)), 10);
var position = me.gainTable[index] * ((10 - mod) / 10) + me.gainTable[index-1] * (mod) / 10;
if (speed < -20) {
position = - position;
}
return position;
},
update : func() {
var status = getprop("/controls/flight/fcs/auto-stabilator");
if (status == 0) {
return;
}
var gain = getprop("/controls/flight/fcs/gains/stabilator");
var mach = getprop("/velocities/mach");
var throttle = getprop("/controls/flight/throttle");
var stabilator_norm = 0;
stabilator_norm = me.calcPosition();
setprop("/controls/flight/fcs/stabilator", stabilator_norm);
}
};
var TailRotorCollective = {
new : func(minimum=0.10, maximum=1.0, low_limit=0.00011, high_limit=0.0035) {
var obj = FCSFilter.new("/controls/engines/engine[1]", "/controls/flight/fcs/tail-rotor");
obj.parents = [FCSFilter, TailRotorCollective];
obj.adjuster = 0.0;
setprop("/controls/flight/fcs/tail-rotor/src-minimum", minimum);
setprop("/controls/flight/fcs/tail-rotor/src-maximum", maximum);
setprop("/controls/flight/fcs/tail-rotor/low-limit", low_limit);
setprop("/controls/flight/fcs/tail-rotor/high-limit", high_limit);
setprop("/controls/flight/fcs/gains/tail-rotor/error-adjuster-gain", -0.5);
return obj;
},
update : func() {
var throttle = me.read("throttle");
var pedal_pos_deg = getprop("/controls/flight/fcs/yaw");
var cas_input = cas.read('yaw');
var cas_input_gain = cas.calcGain('yaw');
var target_rate = cas_input * cas_input_gain;
var rate = getprop("/orientation/yaw-rate-degps");
var error_rate = getprop("/controls/flight/fcs/cas/delta_yaw");
var error_adjuster_gain = getprop("/controls/flight/fcs/gains/tail-rotor/error-adjuster-gain");
var minimum = getprop("/controls/flight/fcs/tail-rotor/src-minimum");
var maximum = getprop("/controls/flight/fcs/tail-rotor/src-maximum");
var low_limit = getprop("/controls/flight/fcs/tail-rotor/low-limit");
var high_limit = getprop("/controls/flight/fcs/tail-rotor/high-limit");
var output = 0;
var range = maximum - minimum;
if (throttle < minimum) {
output = low_limit;
} elsif (throttle > maximum) {
output = high_limit;
} else {
output = low_limit + (throttle - minimum) / range * (high_limit - low_limit);
}
# CAS driven tail rotor thrust adjuster
me.adjuster = error_rate * error_adjuster_gain;
me.adjuster = me.limit(me.adjuster, 0.3);
output += me.adjuster;
setprop("/controls/flight/fcs/tail-rotor/error-rate", error_rate);
setprop("/controls/flight/fcs/tail-rotor/adjuster", me.adjuster);
me.write("throttle", output);
}
};
var sas = nil;
var cas = nil;
var afcs = nil;
var stabilator = nil;
var tail = nil;
var count = 0;
var sensitivities = {'roll' : 0.0, 'pitch' : 0.0, 'yaw' : 1.125 };
var sas_initial_gains = {'roll' : 0.0011, 'pitch' : -0.0042, 'yaw' : 0.004 };
var cas_input_gains = {'roll' : 30, 'pitch' : -60, 'yaw' : 30,
'attitude-roll' : 80, 'attitude-pitch' : -80 };
var cas_output_gains = {'roll' : 0.06, 'pitch' : -0.1, 'yaw' : 0.5,
'roll-brake-freq' : 10, 'pitch-brake-freq' : 3,
'roll-brake' : 0.4, 'pitch-brake' : 6,
'anti-side-slip-gain' : -4.5};
var update = func {
count += 1;
# AFCS, CAS, and SAS run at 60Hz
if (math.mod(count, 2) == 0) {
return;
}
cas.apply('roll');
cas.apply('pitch');
cas.apply('yaw');
afcs.apply('roll');
afcs.apply('pitch');
afcs.apply('yaw');
sas.apply('roll');
sas.apply('pitch');
sas.apply('yaw');
stabilator.update();
tail.update();
}
var initialize = func {
cas = CAS.new(cas_input_gains, cas_output_gains, sensitivities, nil, "/controls/flight/fcs/cas");
afcs = AFCS.new("/controls/flight/fcs/cas", "/controls/flight/fcs/afcs");
sas = SAS.new(sas_initial_gains, sensitivities, 3, "/controls/flight/fcs/afcs", "/controls/flight/fcs");
stabilator = Stabilator.new();
tail = TailRotorCollective.new();
setlistener("/rotors/main/cone-deg", update);
}
_setlistener("/sim/signals/fdm-initialized", initialize);

Binary file not shown.

After

Width:  |  Height:  |  Size: 797 KiB

BIN
Ressource/default.tail.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 515 KiB

View file

@ -1,120 +1,118 @@
// -*- mode: C; -*-
// Licence: GPL v2
// Author: Vivian Meazza.
#version 120
varying vec4 rawpos;
varying vec4 ecPosition;
varying vec3 VNormal;
varying vec3 Normal;
varying vec4 constantColor;
varying vec3 vViewVec;
varying vec3 reflVec;
varying vec4 Diffuse;
varying vec3 lightDir, halfVector;
varying float alpha, fogCoord;
uniform samplerCube Environment;
uniform sampler2D Rainbow;
uniform sampler2D BaseTex;
uniform sampler2D Fresnel;
uniform sampler2D Map;
uniform sampler3D Noise;
uniform float refl_correction;
uniform float rainbowiness;
uniform float fresneliness;
uniform float noisiness;
uniform float ambient_correction;
uniform float reflect_map;
void main (void)
{
if (!gl_FrontFacing) discard;
vec3 n, halfV;
float NdotL, NdotHV;
vec4 color = constantColor;
vec4 specular = vec4(0.0);
n = VNormal;
NdotL = max(0.0, dot(n, lightDir));
// calculate the specular light
if (NdotL > 0.0) {
color += Diffuse * NdotL;
halfV = normalize(halfVector);
NdotHV = max(dot(n, halfV), 0.0);
if (gl_FrontMaterial.shininess > 0.0)
specular.rgb = (gl_FrontMaterial.specular.rgb
* gl_LightSource[0].specular.rgb
* pow(NdotHV, gl_FrontMaterial.shininess));
}
color.a = alpha;
color = clamp(color, 0.0, 1.0);
vec4 texel = texture2D(BaseTex, gl_TexCoord[0].st);
vec4 texelcolor = color * texel + specular;
// calculate the fog factor
float fogCoord = ecPosition.z;
const float LOG2 = 1.442695;
float fogFactor = exp2(-gl_Fog.density * gl_Fog.density * fogCoord * fogCoord * LOG2);
fogFactor = clamp(fogFactor, 0.0, 1.0);
if(gl_Fog.density == 1.0)
fogFactor=1.0;
vec3 normal = normalize(VNormal);
vec3 viewVec = normalize(vViewVec);
// Map a rainbowish color
float v = dot(viewVec, normal);
vec4 rainbow = texture2D(Rainbow, vec2(v, 0.0));
// Map a fresnel effect
vec4 fresnel = texture2D(Fresnel, vec2(v, 0.0));
// map the refection of the environment
vec4 reflection = textureCube(Environment, reflVec);
// set the user shininess offse
float transparency_offset = clamp(refl_correction, -1.0, 1.0);
float reflFactor = 0.0;
if(reflect_map > 0){
// map the shininess of the object with user input
vec4 map = texture2D(Map, gl_TexCoord[0].st);
//float pam = (map.a * -2) + 1; //reverse map
reflFactor = map.a + transparency_offset;
} else {
// set the reflectivity proportional to shininess with user
// input
reflFactor = (gl_FrontMaterial.shininess / 128) + transparency_offset;
}
reflFactor = clamp(reflFactor, 0.0, 1.0);
// set ambient adjustment to remove bluiness with user input
float ambient_offset = clamp(ambient_correction, -1.0, 1.0);
vec4 ambient_Correction = vec4(gl_LightSource[0].ambient.rg, gl_LightSource[0].ambient.b * 0.6, 0.5) * ambient_offset ;
ambient_Correction = clamp(ambient_Correction, -1.0, 1.0);
// map noise vectore
vec4 noisevec = texture3D(Noise, rawpos.xyz);
// add fringing fresnel and rainbow effects and modulate by reflection
vec4 reflcolor = mix(reflection, rainbow, rainbowiness * v);
vec4 reflfrescolor = mix(reflcolor, fresnel, fresneliness * v);
vec4 noisecolor = mix(reflfrescolor, noisevec, noisiness);
vec4 raincolor = vec4(noisecolor.rgb, 1.0) * reflFactor;
vec4 mixedcolor = mix(texel, raincolor, reflFactor);
// the final reflection
vec4 reflColor = color * mixedcolor + specular + ambient_Correction ;
reflColor = clamp(reflColor, 0.0, 1.0);
gl_FragColor = mix(gl_Fog.color, reflColor, fogFactor);
}
// -*- mode: C; -*-
// Licence: GPL v2
// Author: Vivian Meazza.
#version 120
varying vec4 rawpos;
varying vec4 ecPosition;
varying vec3 VNormal;
varying vec3 Normal;
varying vec4 constantColor;
varying vec3 vViewVec;
varying vec3 reflVec;
varying vec4 Diffuse;
varying vec3 lightDir, halfVector;
varying float alpha, fogCoord;
uniform samplerCube Environment;
uniform sampler2D Rainbow;
uniform sampler2D BaseTex;
uniform sampler2D Fresnel;
uniform sampler2D Map;
uniform sampler3D Noise;
uniform float refl_correction;
uniform float rainbowiness;
uniform float fresneliness;
uniform float noisiness;
uniform float ambient_correction;
uniform float reflect_map;
void main (void)
{
vec3 n, halfV;
float NdotL, NdotHV;
vec4 color = constantColor;
vec4 specular = vec4(0.0);
n = VNormal;
NdotL = max(0.0, dot(n, lightDir));
// calculate the specular light
if (NdotL > 0.0) {
color += Diffuse * NdotL;
halfV = normalize(halfVector);
NdotHV = max(dot(n, halfV), 0.0);
if (gl_FrontMaterial.shininess > 0.0)
specular.rgb = (gl_FrontMaterial.specular.rgb
* gl_LightSource[0].specular.rgb
* pow(NdotHV, gl_FrontMaterial.shininess));
}
color.a = alpha;
color = clamp(color, 0.0, 1.0);
vec4 texel = texture2D(BaseTex, gl_TexCoord[0].st);
vec4 texelcolor = color * texel + specular;
// calculate the fog factor
float fogCoord = ecPosition.z;
const float LOG2 = 1.442695;
float fogFactor = exp2(-gl_Fog.density * gl_Fog.density * fogCoord * fogCoord * LOG2);
fogFactor = clamp(fogFactor, 0.0, 1.0);
if(gl_Fog.density == 1.0)
fogFactor=1.0;
vec3 normal = normalize(VNormal);
vec3 viewVec = normalize(vViewVec);
// Map a rainbowish color
float v = dot(viewVec, normal);
vec4 rainbow = texture2D(Rainbow, vec2(v, 0.0));
// Map a fresnel effect
vec4 fresnel = texture2D(Fresnel, vec2(v, 0.0));
// map the refection of the environment
vec4 reflection = textureCube(Environment, reflVec);
// set the user shininess offse
float transparency_offset = clamp(refl_correction, -1.0, 1.0);
float reflFactor = 0.0;
if(reflect_map > 0){
// map the shininess of the object with user input
vec4 map = texture2D(Map, gl_TexCoord[0].st);
//float pam = (map.a * -2) + 1; //reverse map
reflFactor = map.a + transparency_offset;
} else {
// set the reflectivity proportional to shininess with user
// input
reflFactor = (gl_FrontMaterial.shininess / 128) + transparency_offset;
}
reflFactor = clamp(reflFactor, 0.0, 1.0);
// set ambient adjustment to remove bluiness with user input
float ambient_offset = clamp(ambient_correction, -1.0, 1.0);
vec4 ambient_Correction = vec4(gl_LightSource[0].ambient.rg, gl_LightSource[0].ambient.b * 0.6, 0.5) * ambient_offset ;
ambient_Correction = clamp(ambient_Correction, -1.0, 1.0);
// map noise vectore
vec4 noisevec = texture3D(Noise, rawpos.xyz);
// add fringing fresnel and rainbow effects and modulate by reflection
vec4 reflcolor = mix(reflection, rainbow, rainbowiness * v);
vec4 reflfrescolor = mix(reflcolor, fresnel, fresneliness * v);
vec4 noisecolor = mix(reflfrescolor, noisevec, noisiness);
vec4 raincolor = vec4(noisecolor.rgb, 1.0) * reflFactor;
vec4 mixedcolor = mix(texel, raincolor, reflFactor);
// the final reflection
vec4 reflColor = color * mixedcolor + specular + ambient_Correction ;
reflColor = clamp(reflColor, 0.0, 1.0);
gl_FragColor = mix(gl_Fog.color, reflColor, fogFactor);
}

BIN
Sounds/GE-M134.wav Normal file

Binary file not shown.

BIN
Sounds/HOT.wav Normal file

Binary file not shown.

BIN
Sounds/R-1535Slow.wav Normal file

Binary file not shown.

BIN
Sounds/TC1.wav Normal file

Binary file not shown.

BIN
Sounds/blade_vortex.wav Normal file

Binary file not shown.

Binary file not shown.

BIN
Sounds/ec135_rotor.wav Normal file

Binary file not shown.

BIN
Sounds/ec135_rotor_in.wav Normal file

Binary file not shown.

BIN
Sounds/ec135_rotor_out.wav Normal file

Binary file not shown.

BIN
Sounds/ec135_shut_ec_in.wav Normal file

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

BIN
Sounds/ec_rotor_in.wav Normal file

Binary file not shown.

BIN
Sounds/ec_rotor_out2.wav Normal file

Binary file not shown.

BIN
Sounds/fenestron_ec135.wav Normal file

Binary file not shown.

BIN
Sounds/flight_ec135_out.wav Normal file

Binary file not shown.

BIN
Sounds/idle_ec135_out.wav Normal file

Binary file not shown.

BIN
Sounds/rotor_stall.wav Normal file

Binary file not shown.

813
Sounds/sound.xml Normal file
View file

@ -0,0 +1,813 @@
<?xml version="1.0"?>
<!--
thanks to the SAR simulation (GPL) for the helicopter sounds,
and the Urban game (LGPL) for the weapon sounds
+x = aft
+y = left
+z = up
-->
<PropertyList>
<fx>
<starter>
<name>starter0_start</name>
<mode>once</mode>
<path>Aircraft/ec135/Sounds/starter_start.wav</path>
<condition>
<property>controls/engines/engine[0]/starter</property>
</condition>
<volume>
<factor>0.1</factor>
</volume>
<position>
<x>-0.88</x>
<y>0.40</y>
<z>0.5</z>
</position>
<reference-dist>5</reference-dist>
<max-dist>10</max-dist>
</starter>
<starter>
<name>starter0_loop</name>
<mode>looped</mode>
<path>Aircraft/ec135/Sounds/starter_loop.wav</path>
<condition>
<property>controls/engines/engine[0]/starter</property>
</condition>
<delay-sec>11.6</delay-sec>
<volume>
<factor>0.1</factor>
</volume>
<position>
<x>-0.88</x>
<y>0.40</y>
<z>0.5</z>
</position>
<reference-dist>5</reference-dist>
<max-dist>10</max-dist>
</starter>
<starter>
<name>starter0_stop</name>
<mode>once</mode>
<path>Aircraft/ec135/Sounds/starter_stop.wav</path>
<condition>
<not>
<property>controls/engines/engine[0]/starter</property>
</not>
</condition>
<volume>
<factor>0.3</factor>
</volume>
<position>
<x>-0.88</x>
<y>0.40</y>
<z>0.5</z>
</position>
<reference-dist>5</reference-dist>
<max-dist>10</max-dist>
</starter>
<starter>
<name>starter1_start</name>
<mode>once</mode>
<path>Aircraft/ec135/Sounds/starter_start.wav</path>
<condition>
<property>controls/engines/engine[1]/starter</property>
</condition>
<volume>
<factor>0.3</factor>
</volume>
<position>
<x>-0.88</x>
<y>-0.40</y>
<z>0.5</z>
</position>
<reference-dist>5</reference-dist>
<max-dist>10</max-dist>
</starter>
<starter>
<name>starter1_loop</name>
<mode>looped</mode>
<path>Aircraft/ec135/Sounds/starter_loop.wav</path>
<condition>
<property>controls/engines/engine[1]/starter</property>
</condition>
<delay-sec>11.6</delay-sec>
<volume>
<factor>0.1</factor>
</volume>
<position>
<x>-0.88</x>
<y>-0.40</y>
<z>0.5</z>
</position>
<reference-dist>5</reference-dist>
<max-dist>10</max-dist>
</starter>
<starter>
<name>starter1_stop</name>
<mode>once</mode>
<path>Aircraft/ec135/Sounds/starter_stop.wav</path>
<condition>
<not>
<property>controls/engines/engine[1]/starter</property>
</not>
</condition>
<volume>
<factor>0.1</factor>
</volume>
<position>
<x>-0.88</x>
<y>-0.40</y>
<z>0.5</z>
</position>
<reference-dist>5</reference-dist>
<max-dist>10</max-dist>
</starter>
<engine>
<name>turbine0-start</name>
<mode>once</mode>
<path>Aircraft/ec135/Sounds/strt_ec135_out2.wav</path>
<condition>
<greater-than>
<property>engines/engine[0]/n1-pct</property>
<value>0.1</value>
</greater-than>
</condition>
<volume>
<factor>0.03</factor>
</volume>
<volume>
<property>sim/model/ec135/sound/volume</property>
<factor>5</factor>
</volume>
<reference-dist>50</reference-dist>
<max-dist>200</max-dist>
</engine>
<engine>
<name>turbine0-loop</name>
<mode>looped</mode>
<path>Aircraft/ec135/Sounds/idle_ec135_out.wav</path>
<condition>
<property>engines/engine[0]/running</property>
</condition>
<delay-sec>45</delay-sec>
<volume>
<factor>0.03</factor>
</volume>
<volume>
<property>sim/model/ec135/sound/volume</property>
<factor>5</factor>
</volume>
<reference-dist>50</reference-dist>
<max-dist>200</max-dist>
</engine>
<engine>
<name>turbine0-shutdown</name>
<mode>once</mode>
<path>Sounds/turbine_shutdown.wav</path>
<condition>
<not>
<property>engines/engine[0]/running</property>
</not>
</condition>
<volume>
<factor>0.03</factor>
</volume>
<volume>
<property>sim/model/ec135/sound/volume</property>
<factor>5</factor>
</volume>
<reference-dist>50</reference-dist>
<max-dist>200</max-dist>
</engine>
<engine>
<name>turbine1-start</name>
<mode>once</mode>
<path>Aircraft/ec135/Sounds/strt_ec135_out2.wav</path>
<condition>
<greater-than>
<property>engines/engine[1]/n1-pct</property>
<value>0.1</value>
</greater-than>
</condition>
<volume>
<factor>0.03</factor>
</volume>
<volume>
<property>sim/model/ec135/sound/volume</property>
<factor>5</factor>
</volume>
<reference-dist>50</reference-dist>
<max-dist>200</max-dist>
</engine>
<engine>
<name>turbine1-loop</name>
<mode>looped</mode>
<path>Aircraft/ec135/Sounds/idle_ec135_out.wav</path>
<condition>
<property>engines/engine[1]/running</property>
</condition>
<delay-sec>45</delay-sec>
<volume>
<factor>0.03</factor>
</volume>
<volume>
<property>sim/model/ec135/sound/volume</property>
<factor>5</factor>
</volume>
<reference-dist>50</reference-dist>
<max-dist>200</max-dist>
</engine>
<engine>
<name>turbine1-shutdown</name>
<mode>once</mode>
<path>Sounds/turbine_shutdown.wav</path>
<condition>
<not>
<property>engines/engine[1]/running</property>
</not>
</condition>
<volume>
<factor>0.03</factor>
</volume>
<volume>
<property>sim/model/ec135/sound/volume</property>
<factor>5</factor>
</volume>
<reference-dist>50</reference-dist>
<max-dist>200</max-dist>
</engine>
<rotor>
<name>rotor-outside</name>
<mode>looped</mode>
<path>Aircraft/ec135/Sounds/flight_ec135_out.wav</path>
<condition>
<and>
<not>
<property>sim/current-view/internal</property>
</not>
<greater-than>
<property>rotors/main/rpm</property>
<value>200</value>
</greater-than>
<not>
<property>sim/crashed</property>
</not>
</and>
</condition>
<volume>
<property>rotors/main/rpm</property>
<factor>0.002</factor>
</volume>
<pitch>
<property>rotors/main/rpm</property>
<factor>0.00252</factor>
<offset>0</offset>
<min>0</min>
<max>1.5</max>
</pitch>
<reference-dist>200</reference-dist>
<max-dist>1000</max-dist>
</rotor>
<rotor>
<name>rotor-inside</name>
<mode>looped</mode>
<path>Sounds/rotor.wav</path>
<path>Aircraft/ec135/Sounds/ec_rotor_in.wav</path>
<condition>
<and>
<property>sim/current-view/internal</property>
<greater-than>
<property>rotors/main/rpm</property>
<value>200</value>
</greater-than>
<not>
<property>sim/crashed</property>
</not>
</and>
</condition>
<volume>
<factor>0.5</factor>
</volume>
<volume>
<property>rotors/main/rpm</property>
<factor>0.002</factor>
</volume>
<pitch>
<property>rotors/main/rpm</property>
<factor>0.00252</factor>
<offset>0</offset>
<min>0</min>
<max>1.5</max>
</pitch>
<reference-dist>500</reference-dist>
<max-dist>1000</max-dist>
</rotor>
<rotor>
<name>stall</name>
<mode>looped</mode>
<path>Aircraft/ec135/Sounds/R-1535Slow.wav</path>
<condition>
<and>
<greater-than>
<property>rotors/main/rpm</property>
<value>50</value>
</greater-than>
<not>
<property>sim/crashed</property>
</not>
</and>
</condition>
<volume>
<property>sim/model/ec135/sound/volume</property>
<factor>0.8</factor>
</volume>
<volume>
<property>rotors/main/stall-filtered</property>
<factor>75</factor>
<max>1.0</max>
</volume>
<pitch>
<property>rotors/main/rpm</property>
<factor>0.00252</factor>
<offset>0</offset>
<max>1.75</max>
</pitch>
<reference-dist>500</reference-dist>
<max-dist>1500</max-dist>
</rotor>
<rotor>
<name>blade-vortex-interaction</name>
<mode>looped</mode>
<path>Aircraft/ec135/Sounds/R-1535Slow.wav</path>
<condition>
<greater-than>
<property>sim/sound/vibration</property>
<value>0.01</value>
</greater-than>
</condition>
<volume>
<property>sim/sound/vibration</property>
</volume>
<pitch>
<property>rotors/main/rpm</property>
<factor>0.00252</factor>
<offset>0</offset>
<min>0</min>
<max>1.5</max>
</pitch>
<reference-dist>500</reference-dist>
<max-dist>3000</max-dist>
</rotor>
<overspeed>
<name>overspeed</name>
<mode>looped</mode>
<path>Sounds/overspeed.wav</path>
<condition>
<greater-than>
<property>velocities/airspeed-kt</property>
<value>146</value>
</greater-than>
<equals>
<property>sim/current-view/view-number</property>
<value>0</value>
</equals>
</condition>
<volume>
<factor>1.0</factor>
</volume>
<pitch>
<factor>0.1</factor>
</pitch>
<reference-dist>1.0</reference-dist>
<max-dist>2.0</max-dist>
</overspeed>
<warning>
<name>650 Hz</name>
<mode>looped</mode>
<path>Aircraft/ec135/Sounds/warn650.wav</path>
<condition>
<property>sim/sound/warn650</property>
</condition>
<reference-dist>0.5</reference-dist>
<max-dist>1.0</max-dist>
</warning>
<warning>
<name>2600 Hz</name>
<mode>looped</mode>
<path>Aircraft/ec135/Sounds/warn2600.wav</path>
<condition>
<property>sim/sound/warn2600</property>
</condition>
<reference-dist>0.5</reference-dist>
<max-dist>1.0</max-dist>
</warning>
<contact>
<name>ground contact</name>
<mode>once</mode>
<path>Aircraft/ec135/Sounds/TC1.wav</path>
<condition>
<property>gear/gear[0]/wow</property>
</condition>
<volume>
<factor>1.0</factor>
</volume>
<pitch>
<factor>0.01</factor>
</pitch>
<reference-dist>5.0</reference-dist>
<max-dist>10.0</max-dist>
</contact>
<contact>
<name>ground contact</name>
<mode>once</mode>
<path>Aircraft/ec135/Sounds/TC1.wav</path>
<condition>
<property>gear/gear[1]/wow</property>
</condition>
<volume>
<factor>1.0</factor>
</volume>
<pitch>
<factor>0.01</factor>
</pitch>
<reference-dist>5.0</reference-dist>
<max-dist>10.0</max-dist>
</contact>
<contact>
<name>ground contact</name>
<mode>once</mode>
<path>Aircraft/ec135/Sounds/TC1.wav</path>
<condition>
<property>gear/gear[2]/wow</property>
</condition>
<volume>
<factor>1.0</factor>
</volume>
<pitch>
<factor>0.01</factor>
</pitch>
<reference-dist>5.0</reference-dist>
<max-dist>10.0</max-dist>
</contact>
<contact>
<name>ground contact</name>
<mode>once</mode>
<path>Aircraft/ec135/Sounds/TC1.wav</path>
<condition>
<property>gear/gear[3]/wow</property>
</condition>
<volume>
<factor>1.0</factor>
</volume>
<pitch>
<factor>0.01</factor>
</pitch>
<reference-dist>5.0</reference-dist>
<max-dist>10.0</max-dist>
</contact>
<contact>
<name>ground contact</name>
<mode>once</mode>
<path>Aircraft/ec135/Sounds/TC1.wav</path>
<condition>
<property>gear/gear[4]/wow</property>
</condition>
<volume>
<factor>1.0</factor>
</volume>
<pitch>
<factor>0.01</factor>
</pitch>
<reference-dist>5.0</reference-dist>
<max-dist>10.0</max-dist>
</contact>
<contact>
<name>ground contact</name>
<mode>once</mode>
<path>Aircraft/ec135/Sounds/TC1.wav</path>
<condition>
<property>gear/gear[5]/wow</property>
</condition>
<volume>
<factor>1.0</factor>
</volume>
<pitch>
<factor>0.01</factor>
</pitch>
<reference-dist>5.0</reference-dist>
<max-dist>10.0</max-dist>
</contact>
<slide>
<name>skid sliding1</name>
<mode>looped</mode>
<path>Sounds/rumble.wav</path>
<condition>
<and>
<property>gear/gear[0]/wow</property>
<not>
<property>sim/crashed</property>
</not>
</and>
</condition>
<volume>
<factor>0.5</factor>
</volume>
<volume>
<property>sim/model/ec135/sound/slide[0]/volume</property>
<max>1</max>
</volume>
<pitch>
<property>sim/model/ec135/sound/slide[0]/pitch</property>
</pitch>
</slide>
<slide>
<name>skid sliding2</name>
<mode>looped</mode>
<path>Sounds/rumble.wav</path>
<condition>
<and>
<property>gear/gear[1]/wow</property>
<not>
<property>sim/crashed</property>
</not>
</and>
</condition>
<volume>
<factor>0.5</factor>
</volume>
<volume>
<property>sim/model/ec135/sound/slide[1]/volume</property>
<max>1</max>
</volume>
<pitch>
<property>sim/model/ec135/sound/slide[1]/pitch</property>
</pitch>
</slide>
<slide>
<name>skid sliding3</name>
<mode>looped</mode>
<path>Sounds/rumble.wav</path>
<condition>
<and>
<property>gear/gear[2]/wow</property>
<not>
<property>sim/crashed</property>
</not>
</and>
</condition>
<volume>
<factor>0.5</factor>
</volume>
<volume>
<property>sim/model/ec135/sound/slide[2]/volume</property>
<max>1</max>
</volume>
<pitch>
<property>sim/model/ec135/sound/slide[2]/pitch</property>
</pitch>
</slide>
<slide>
<name>skid sliding4</name>
<mode>looped</mode>
<path>Sounds/rumble.wav</path>
<condition>
<and>
<property>gear/gear[3]/wow</property>
<not>
<property>sim/crashed</property>
</not>
</and>
</condition>
<volume>
<factor>0.5</factor>
</volume>
<volume>
<property>sim/model/ec135/sound/slide[3]/volume</property>
<max>1</max>
</volume>
<pitch>
<property>sim/model/ec135/sound/slide[3]/pitch</property>
</pitch>
</slide>
<wind>
<name>wind</name>
<mode>looped</mode>
<path>Sounds/wind.wav</path>
<condition>
<and>
<property>velocities/airspeed-kt</property>
<not>
<property>sim/crashed</property>
</not>
</and>
</condition>
<volume>
<property>position/altitude-ft</property>
<factor>-0.000015</factor>
<offset>1.0</offset>
<min>0.1</min>
<max>1.0</max>
</volume>
<volume>
<property>velocities/airspeed-kt</property>
<factor>0.0015</factor>
<min>0.03</min>
<max>0.25</max>
</volume>
<pitch>
<property>velocities/airspeed-kt</property>
<factor>0.01</factor>
<offset>1.25</offset>
</pitch>
<reference-dist>3</reference-dist>
<max-dist>4</max-dist>
</wind>
<crash>
<name>intense ground contact</name>
<mode>once</mode>
<path>Sounds/crash.wav</path>
<property>sim/crashed</property>
<volume>
<factor>1</factor>
</volume>
<pitch>
<factor>0.1</factor>
</pitch>
<reference-dist>100</reference-dist>
<max-dist>500</max-dist>
</crash>
<door>
<name>close right frontdoor</name>
<mode>once</mode>
<path>Sounds/door_close.wav</path>
<condition>
<equals>
<property>sim/model/ec135/doors/door[0]/position-norm</property>
<value>0</value>
</equals>
</condition>
<position>
<x>1.0</x>
<y>1.5</y>
<z>-1.5</z>
</position>
<volume>
<factor>0.3</factor>
</volume>
<reference-dist>15</reference-dist>
<max-dist>50</max-dist>
</door>
<door>
<name>close left frontdoor</name>
<mode>once</mode>
<path>Sounds/door_close.wav</path>
<condition>
<equals>
<property>sim/model/ec135/doors/door[1]/position-norm</property>
<value>0</value>
</equals>
</condition>
<position>
<x>-1.0</x>
<y>1.5</y>
<z>-1.5</z>
</position>
<volume>
<factor>0.3</factor>
</volume>
<reference-dist>15</reference-dist>
<max-dist>50</max-dist>
</door>
<door>
<name>close right backdoor</name>
<mode>once</mode>
<path>Sounds/door_close.wav</path>
<condition>
<equals>
<property>sim/model/ec135/doors/door[2]/position-norm</property>
<value>0</value>
</equals>
</condition>
<position>
<x>1.0</x>
<y>1.0</y>
<z>-1.5</z>
</position>
<volume>
<factor>0.3</factor>
</volume>
<reference-dist>15</reference-dist>
<max-dist>50</max-dist>
</door>
<door>
<name>close left backdoor</name>
<mode>once</mode>
<path>Sounds/door_close.wav</path>
<condition>
<equals>
<property>sim/model/ec135/doors/door[3]/position-norm</property>
<value>0</value>
</equals>
</condition>
<position>
<x>-1.0</x>
<y>1.0</y>
<z>-1.5</z>
</position>
<volume>
<factor>0.3</factor>
</volume>
<reference-dist>15</reference-dist>
<max-dist>50</max-dist>
</door>
<door>
<name>close right reardoor</name>
<mode>once</mode>
<path>Sounds/door_close.wav</path>
<condition>
<equals>
<property>sim/model/ec135/doors/door[4]/position-norm</property>
<value>0</value>
</equals>
</condition>
<position>
<x>0.0</x>
<y>-1.5</y>
<z>-1.0</z>
</position>
<volume>
<factor>0.3</factor>
</volume>
<reference-dist>15</reference-dist>
<max-dist>50</max-dist>
</door>
<door>
<name>close left reardoor</name>
<mode>once</mode>
<path>Sounds/door_close.wav</path>
<condition>
<equals>
<property>sim/model/ec135/doors/door[5]/position-norm</property>
<value>0</value>
</equals>
</condition>
<position>
<x>0.0</x>
<y>-1.5</y>
<z>-1.0</z>
</position>
<volume>
<factor>0.3</factor>
</volume>
<reference-dist>15</reference-dist>
<max-dist>50</max-dist>
</door>
</fx>
</PropertyList>

BIN
Sounds/starter_loop.wav Normal file

Binary file not shown.

BIN
Sounds/starter_start.wav Normal file

Binary file not shown.

BIN
Sounds/starter_stop.wav Normal file

Binary file not shown.

BIN
Sounds/strt_ec135_out2.wav Normal file

Binary file not shown.

BIN
Sounds/warn2600.wav Normal file

Binary file not shown.

BIN
Sounds/warn650.wav Normal file

Binary file not shown.

BIN
instrumentation/FDM1.rgb Normal file

Binary file not shown.

Binary file not shown.

After

Width:  |  Height:  |  Size: 5 KiB

View file

@ -0,0 +1,58 @@
<?xml version="1.0"?>
<PropertyList>
<path>gh14391.ac</path>
<animation>
<type>rotate</type>
<object-name>ball</object-name>
<property>/orientation/roll-deg</property>
<center>
<x-m>-0.075</x-m>
<y-m>0.00</y-m>
<z-m>0.002</z-m>
</center>
<axis>
<x>1</x>
<y>0</y>
<z>0</z>
</axis>
</animation>
<animation>
<type>rotate</type>
<object-name>Circle</object-name>
<property>/orientation/roll-deg</property>
<center>
<x-m>0.007</x-m>
<y-m>0.00</y-m>
<z-m>0.002</z-m>
</center>
<axis>
<x>1</x>
<y>0</y>
<z>0</z>
</axis>
</animation>
<animation>
<type>rotate</type>
<object-name>ball</object-name>
<property>/orientation/pitch-deg</property>
<factor>0.5</factor>
<center>
<x-m>-0.075</x-m>
<y-m>0.00</y-m>
<z-m>0.002</z-m>
</center>
<axis>
<x>0</x>
<y>1</y>
<z>0</z>
</axis>
</animation>
</PropertyList>

Binary file not shown.

After

Width:  |  Height:  |  Size: 618 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 85 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.5 KiB

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

Binary file not shown.

After

Width:  |  Height:  |  Size: 68 KiB

View file

@ -0,0 +1,68 @@
<?xml version="1.0"?>
<!--
Standby Gyro
Syd Adams
-->
<PropertyList>
<path>STBYai.ac</path>
<animation>
<type>texmultiple</type>
<object-name>STBYai.ball</object-name>
<transform>
<property>instrumentation/attitude-indicator/indicated-pitch-deg</property>
<subtype>textranslate</subtype>
<factor>0.003667</factor>
<axis>
<x>0</x>
<y>1</y>
<z>0</z>
</axis>
</transform>
<transform>
<property>instrumentation/attitude-indicator/indicated-roll-deg</property>
<subtype>texrotate</subtype>
<center>
<x>0.25</x>
<y>0.50</y>
</center>
<axis>
<x>0</x>
<y>0</y>
<z>-1</z>
</axis>
</transform>
</animation>
<animation>
<type>rotate</type>
<object-name>STBYai.rollneedle</object-name>
<property>instrumentation/attitude-indicator/indicated-roll-deg</property>
<axis>
<x>1</x>
<y>0</y>
<z>0</z>
</axis>
<center>
<x-m>0</x-m>
<y-m>0</y-m>
<z-m>0</z-m>
</center>
</animation>
<animation>
<type>pick</type>
<object-name>STBYai.cage</object-name>
<visible>true</visible>
<action>
<button>0</button>
<repeatable>false</repeatable>
<binding>
<command>property-toggle</command>
<property>instrumentation/attitude-indicator/caged</property>
</binding>
</action>
</animation>
</PropertyList>

Binary file not shown.

After

Width:  |  Height:  |  Size: 109 KiB

7247
instrumentation/alt/alt2.ac Normal file

File diff suppressed because it is too large Load diff

Binary file not shown.

After

Width:  |  Height:  |  Size: 151 KiB

Binary file not shown.

View file

@ -0,0 +1,159 @@
<?xml version="1.0"?>
<PropertyList>
<path>alt2.ac</path>
<animation>
<type>material</type>
<object-name>ALTface</object-name>
<object-name>needle100</object-name>
<object-name>needle1000</object-name>
<object-name>needle10000</object-name>
<object-name>inhg</object-name>
<object-name>InhgKnob</object-name>
<emission>
<red>0.028</red>
<green>0.014</green>
<blue>0.007</blue>
<factor-prop>systems/electrical/outputs/instrument-lights</factor-prop>
</emission>
</animation>
<animation>
<type>rotate</type>
<object-name>needle100</object-name>
<property>instrumentation/altimeter/indicated-altitude-ft</property>
<factor>0.36</factor>
<axis>
<x>-1</x>
<y>0</y>
<z>0</z>
</axis>
</animation>
<animation>
<type>rotate</type>
<object-name>needle1000</object-name>
<property>instrumentation/altimeter/indicated-altitude-ft</property>
<factor>0.036</factor>
<axis>
<x>-1</x>
<y>0</y>
<z>0</z>
</axis>
</animation>
<animation>
<type>rotate</type>
<object-name>needle10000</object-name>
<property>instrumentation/altimeter/indicated-altitude-ft</property>
<factor>0.0036</factor>
<axis>
<x>-1</x>
<y>0</y>
<z>0</z>
</axis>
</animation>
<animation>
<type>texrotate</type>
<object-name>inhg</object-name>
<property>instrumentation/altimeter/setting-inhg</property>
<interpolation>
<entry><ind>27.90</ind><dep>0.0</dep></entry>
<entry><ind>28.0</ind><dep>9.35</dep></entry>
<entry><ind>28.5</ind><dep>59.0</dep></entry>
<entry><ind>29.0</ind><dep>109.0</dep></entry>
<entry><ind>29.5</ind><dep>159.5</dep></entry>
<entry><ind>29.9</ind><dep>200.0</dep></entry>
<entry><ind>30.0</ind><dep>210.0</dep></entry>
<entry><ind>30.5</ind><dep>261.0</dep></entry>
<entry><ind>31.0</ind><dep>310.0</dep></entry>
<entry><ind>31.4</ind><dep>350.0</dep></entry>
</interpolation>
<center>
<x>0.25</x>
<y>0.25</y>
</center>
<axis>
<x>0</x>
<y>0</y>
<z>-1</z>
</axis>
</animation>
<animation>
<type>pick</type>
<object-name>inhg.dn</object-name>
<visible>0</visible>
<action>
<button>0</button>
<repeatable>true</repeatable>
<binding>
<command>property-adjust</command>
<property>instrumentation/altimeter/setting-inhg</property>
<step>-0.01</step>
<min>27.90</min>
<max>31.40</max>
<wrap>0</wrap>
</binding>
</action>
</animation>
<animation>
<type>pick</type>
<object-name>inhg.dn</object-name>
<visible>0</visible>
<action>
<button>1</button>
<repeatable>true</repeatable>
<binding>
<command>property-adjust</command>
<property>instrumentation/altimeter/setting-inhg</property>
<step>-0.1</step>
<min>27.90</min>
<max>31.40</max>
<wrap>0</wrap>
</binding>
</action>
</animation>
<animation>
<type>pick</type>
<object-name>inhg.up</object-name>
<visible>0</visible>
<action>
<button>0</button>
<repeatable>true</repeatable>
<binding>
<command>property-adjust</command>
<property>instrumentation/altimeter/setting-inhg</property>
<step>0.01</step>
<min>27.90</min>
<max>31.40</max>
<wrap>0</wrap>
</binding>
</action>
</animation>
<animation>
<type>pick</type>
<object-name>inhg.up</object-name>
<visible>0</visible>
<action>
<button>1</button>
<repeatable>true</repeatable>
<binding>
<command>property-adjust</command>
<property>instrumentation/altimeter/setting-inhg</property>
<step>0.1</step>
<min>27.90</min>
<max>31.40</max>
<wrap>0</wrap>
</binding>
</action>
</animation>
</PropertyList>

BIN
instrumentation/alt/vsi.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 106 KiB

7247
instrumentation/alt2/alt2.ac Normal file

File diff suppressed because it is too large Load diff

Binary file not shown.

After

Width:  |  Height:  |  Size: 151 KiB

Binary file not shown.

View file

@ -0,0 +1,159 @@
<?xml version="1.0"?>
<PropertyList>
<path>alt2.ac</path>
<animation>
<type>material</type>
<object-name>ALTface</object-name>
<object-name>needle100</object-name>
<object-name>needle1000</object-name>
<object-name>needle10000</object-name>
<object-name>inhg</object-name>
<object-name>InhgKnob</object-name>
<emission>
<red>0.028</red>
<green>0.014</green>
<blue>0.007</blue>
<factor-prop>systems/electrical/outputs/instrument-lights</factor-prop>
</emission>
</animation>
<animation>
<type>rotate</type>
<object-name>needle100</object-name>
<property>instrumentation/altimeter/indicated-altitude-ft</property>
<factor>0.36</factor>
<axis>
<x>-1</x>
<y>0</y>
<z>0</z>
</axis>
</animation>
<animation>
<type>rotate</type>
<object-name>needle1000</object-name>
<property>instrumentation/altimeter/indicated-altitude-ft</property>
<factor>0.036</factor>
<axis>
<x>-1</x>
<y>0</y>
<z>0</z>
</axis>
</animation>
<animation>
<type>rotate</type>
<object-name>needle10000</object-name>
<property>instrumentation/altimeter/indicated-altitude-ft</property>
<factor>0.0036</factor>
<axis>
<x>-1</x>
<y>0</y>
<z>0</z>
</axis>
</animation>
<animation>
<type>texrotate</type>
<object-name>inhg</object-name>
<property>instrumentation/altimeter/setting-inhg</property>
<interpolation>
<entry><ind>27.90</ind><dep>0.0</dep></entry>
<entry><ind>28.0</ind><dep>9.35</dep></entry>
<entry><ind>28.5</ind><dep>59.0</dep></entry>
<entry><ind>29.0</ind><dep>109.0</dep></entry>
<entry><ind>29.5</ind><dep>159.5</dep></entry>
<entry><ind>29.9</ind><dep>200.0</dep></entry>
<entry><ind>30.0</ind><dep>210.0</dep></entry>
<entry><ind>30.5</ind><dep>261.0</dep></entry>
<entry><ind>31.0</ind><dep>310.0</dep></entry>
<entry><ind>31.4</ind><dep>350.0</dep></entry>
</interpolation>
<center>
<x>0.25</x>
<y>0.25</y>
</center>
<axis>
<x>0</x>
<y>0</y>
<z>-1</z>
</axis>
</animation>
<animation>
<type>pick</type>
<object-name>inhg.dn</object-name>
<visible>0</visible>
<action>
<button>0</button>
<repeatable>true</repeatable>
<binding>
<command>property-adjust</command>
<property>instrumentation/altimeter/setting-inhg</property>
<step>-0.01</step>
<min>27.90</min>
<max>31.40</max>
<wrap>0</wrap>
</binding>
</action>
</animation>
<animation>
<type>pick</type>
<object-name>inhg.dn</object-name>
<visible>0</visible>
<action>
<button>1</button>
<repeatable>true</repeatable>
<binding>
<command>property-adjust</command>
<property>instrumentation/altimeter/setting-inhg</property>
<step>-0.1</step>
<min>27.90</min>
<max>31.40</max>
<wrap>0</wrap>
</binding>
</action>
</animation>
<animation>
<type>pick</type>
<object-name>inhg.up</object-name>
<visible>0</visible>
<action>
<button>0</button>
<repeatable>true</repeatable>
<binding>
<command>property-adjust</command>
<property>instrumentation/altimeter/setting-inhg</property>
<step>0.01</step>
<min>27.90</min>
<max>31.40</max>
<wrap>0</wrap>
</binding>
</action>
</animation>
<animation>
<type>pick</type>
<object-name>inhg.up</object-name>
<visible>0</visible>
<action>
<button>1</button>
<repeatable>true</repeatable>
<binding>
<command>property-adjust</command>
<property>instrumentation/altimeter/setting-inhg</property>
<step>0.1</step>
<min>27.90</min>
<max>31.40</max>
<wrap>0</wrap>
</binding>
</action>
</animation>
</PropertyList>

Binary file not shown.

After

Width:  |  Height:  |  Size: 104 KiB

7276
instrumentation/asi/asi.ac Normal file

File diff suppressed because it is too large Load diff

BIN
instrumentation/asi/asi.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 78 KiB

117
instrumentation/asi/asi.xml Normal file
View file

@ -0,0 +1,117 @@
<?xml version="1.0"?>
<PropertyList>
<path>asi.ac</path>
<animation>
<type>material</type>
<object-name>face.006</object-name>
<object-name>asi-needle1</object-name>
<emission>
<red>0.028</red>
<green>0.014</green>
<blue>0.007</blue>
<factor-prop>systems/electrical/outputs/instrument-lights</factor-prop>
</emission>
</animation>
<animation>
<type>rotate</type>
<object-name>asi-needle1</object-name>
<property>/instrumentation/airspeed-indicator/indicated-speed-kt</property>
<interpolation>
<entry>
<ind>-999</ind>
<dep> 0</dep>
</entry>
<entry>
<ind> 0</ind>
<dep> -5</dep>
</entry>
<entry>
<ind> 10</ind>
<dep> 4</dep>
</entry>
<entry>
<ind> 20</ind>
<dep> 13</dep>
</entry>
<entry>
<ind> 30</ind>
<dep> 35</dep>
</entry>
<entry>
<ind> 40</ind>
<dep>65</dep>
</entry>
<entry>
<ind> 50</ind>
<dep>95</dep>
</entry>
<entry>
<ind> 60</ind>
<dep>125</dep>
</entry>
<entry>
<ind> 70</ind>
<dep>158</dep>
</entry>
<entry>
<ind> 80</ind>
<dep>188</dep>
</entry>
<entry>
<ind> 90</ind>
<dep>205</dep>
</entry>
<entry>
<ind> 100</ind>
<dep>219</dep>
</entry>
<entry>
<ind> 110</ind>
<dep>232</dep>
</entry>
<entry>
<ind> 120</ind>
<dep>246</dep>
</entry>
<entry>
<ind> 130</ind>
<dep>263</dep>
</entry>
<entry>
<ind> 140</ind>
<dep>274</dep>
</entry>
<entry>
<ind> 150</ind>
<dep>289</dep>
</entry>
<entry>
<ind> 160</ind>
<dep>302</dep>
</entry>
<entry>
<ind> 170</ind>
<dep>316</dep>
</entry>
<entry>
<ind> 180</ind>
<dep>330</dep>
</entry>
<entry>
<ind> 220</ind>
<dep>360</dep>
</entry>
</interpolation>
<axis>
<x>-1</x>
<y>0</y>
<z>0</z>
</axis>
</animation>
</PropertyList>

2645
instrumentation/cad/cad.ac Normal file

File diff suppressed because it is too large Load diff

BIN
instrumentation/cad/cad.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 231 KiB

View file

@ -0,0 +1,4 @@
<PropertyList>
<path>cad.ac</path>
</PropertyList>

View file

@ -0,0 +1,555 @@
AC3Db
MATERIAL "DefaultWhite" rgb 1 1 1 amb 1 1 1 emis 0 0 0 spec 0.5 0.5 0.5 shi 64 trans 0
MATERIAL "DefaultWhite" rgb 1 1 1 amb 1 1 1 emis 0 0 0 spec 0.5 0.5 0.5 shi 64 trans 0
OBJECT world
kids 1
OBJECT poly
name "buttons"
data 8
Cube.001
texture "cata_button.png"
texrep 1 1
crease 80.000000
numvert 80
0.010491 0.010305 -0.048625
0.010491 -0.010677 -0.048625
-0.010491 -0.010677 -0.048625
-0.010491 0.010305 -0.048625
0.010491 -0.010677 -0.025644
0.010491 0.010305 -0.025644
-0.010491 0.010305 -0.025644
-0.010491 -0.010677 -0.025644
0.011491 -0.010677 -0.047625
0.011491 0.010305 -0.047625
0.011491 0.010305 -0.026644
0.011491 -0.010677 -0.026644
0.010491 0.011305 -0.047625
-0.010491 0.011305 -0.047625
-0.010491 0.011305 -0.026644
0.010491 0.011305 -0.026644
0.010491 -0.011677 -0.047625
0.010491 -0.011677 -0.026644
-0.010491 -0.011677 -0.026644
-0.010491 -0.011677 -0.047625
0.010491 -0.011677 0.026529
0.010491 -0.011677 0.047511
-0.010491 -0.011677 0.047511
-0.010491 -0.011677 0.026529
0.010491 0.011305 0.026529
-0.010491 0.011305 0.026529
-0.010491 0.011305 0.047511
0.010491 0.011305 0.047511
0.011491 -0.010677 0.026529
0.011491 0.010305 0.026529
0.011491 0.010305 0.047511
0.011491 -0.010677 0.047511
0.010491 -0.010677 0.048511
0.010491 0.010305 0.048511
-0.010491 0.010305 0.048511
-0.010491 -0.010677 0.048511
0.010491 0.010305 0.025529
0.010491 -0.010677 0.025529
-0.010491 -0.010677 0.025529
-0.010491 0.010305 0.025529
0.010491 0.010305 0.000856
0.010491 -0.010677 0.000856
-0.010491 -0.010677 0.000856
-0.010491 0.010305 0.000856
0.010491 -0.010677 0.023838
0.010491 0.010305 0.023838
-0.010491 0.010305 0.023838
-0.010491 -0.010677 0.023838
0.011491 -0.010677 0.001856
0.011491 0.010305 0.001856
0.011491 0.010305 0.022838
0.011491 -0.010677 0.022838
0.010491 0.011305 0.001856
-0.010491 0.011305 0.001856
-0.010491 0.011305 0.022838
0.010491 0.011305 0.022838
0.010491 -0.011677 0.001856
0.010491 -0.011677 0.022838
-0.010491 -0.011677 0.022838
-0.010491 -0.011677 0.001856
0.010491 -0.011677 -0.022983
0.010491 -0.011677 -0.002001
-0.010491 -0.011677 -0.002001
-0.010491 -0.011677 -0.022983
0.010491 0.011305 -0.022983
-0.010491 0.011305 -0.022983
-0.010491 0.011305 -0.002001
0.010491 0.011305 -0.002001
0.011491 -0.010677 -0.022983
0.011491 0.010305 -0.022983
0.011491 0.010305 -0.002001
0.011491 -0.010677 -0.002001
0.010491 -0.010677 -0.001001
0.010491 0.010305 -0.001001
-0.010491 0.010305 -0.001001
-0.010491 -0.010677 -0.001001
0.010491 0.010305 -0.023983
0.010491 -0.010677 -0.023983
-0.010491 -0.010677 -0.023983
-0.010491 0.010305 -0.023983
numsurf 68
SURF 0x10
mat 1
refs 4
0 0.385183900595 0.577537238598
1 0.385183900595 0.536138296127
2 0.374834150076 0.536138355732
3 0.374834150076 0.577537238598
SURF 0x10
mat 1
refs 4
4 0.385183900595 0.536138355732
5 0.385183900595 0.577537238598
6 0.374834150076 0.577537238598
7 0.374834150076 0.536138355732
SURF 0x10
mat 1
refs 4
8 0.985666334629 0.0524915345013
9 0.985666334629 0.917184531689
10 0.803651750088 0.917184531689
11 0.803651750088 0.0524915345013
SURF 0x10
mat 1
refs 4
12 0.385183900595 0.579510390759
13 0.374834150076 0.579510390759
14 0.374834150076 0.579510450363
15 0.385183900595 0.579510450363
SURF 0x10
mat 1
refs 4
16 0.385183900595 0.534165143967
17 0.385183900595 0.534165143967
18 0.374834150076 0.534165143967
19 0.374834150076 0.534165143967
SURF 0x10
mat 1
refs 4
10 0.803651750088 0.917184531689
9 0.985666334629 0.917184531689
12 0.985666334629 0.958398044109
15 0.803651750088 0.958398044109
SURF 0x10
mat 1
refs 4
12 0.385183900595 0.579510390759
0 0.385183900595 0.577537238598
3 0.374834150076 0.577537238598
13 0.374834150076 0.579510390759
SURF 0x10
mat 1
refs 4
2 0.374834150076 0.536138355732
1 0.385183900595 0.536138296127
16 0.385183900595 0.534165143967
19 0.374834150076 0.534165143967
SURF 0x10
mat 1
refs 4
0 0.99586635828 0.917184531689
9 0.985666334629 0.917184531689
8 0.985666334629 0.0524915345013
1 0.99586635828 0.0524915345013
SURF 0x10
mat 1
refs 4
5 0.793451607227 0.917184531689
4 0.793451607227 0.0524915345013
11 0.803651750088 0.0524915345013
10 0.803651750088 0.917184531689
SURF 0x10
mat 1
refs 4
7 0.374834150076 0.536138355732
18 0.374834150076 0.534165143967
17 0.385183900595 0.534165143967
4 0.385183900595 0.536138355732
SURF 0x10
mat 1
refs 4
6 0.374834150076 0.577537238598
5 0.385183900595 0.577537238598
15 0.385183900595 0.579510450363
14 0.374834150076 0.579510450363
SURF 0x10
mat 1
refs 4
11 0.803651750088 0.0524915345013
17 0.803651750088 0.011277128011
16 0.985666334629 0.011277128011
8 0.985666334629 0.0524915345013
SURF 0x10
mat 1
refs 3
5 0.793451607227 0.917184531689
10 0.803651750088 0.917184531689
15 0.803651750088 0.958398044109
SURF 0x10
mat 1
refs 3
17 0.803651750088 0.011277128011
11 0.803651750088 0.0524915345013
4 0.793451607227 0.0524915345013
SURF 0x10
mat 1
refs 3
1 0.99586635828 0.0524915345013
8 0.985666334629 0.0524915345013
16 0.985666334629 0.011277128011
SURF 0x10
mat 1
refs 3
0 0.99586635828 0.917184531689
12 0.985666334629 0.958398044109
9 0.985666334629 0.917184531689
SURF 0x10
mat 1
refs 4
20 0.385183900595 0.534165203571
21 0.385183900595 0.534165263176
22 0.374834150076 0.534165263176
23 0.374834150076 0.534165203571
SURF 0x10
mat 1
refs 4
24 0.385183900595 0.579510509968
25 0.374834150076 0.579510509968
26 0.374834150076 0.579510509968
27 0.385183900595 0.579510509968
SURF 0x10
mat 1
refs 4
28 0.219279453158 0.0524915345013
29 0.219279453158 0.917184531689
30 0.0152650475502 0.917184531689
31 0.0152650475502 0.0524915345013
SURF 0x10
mat 1
refs 4
32 0.385183900595 0.536138415337
33 0.385183900595 0.577537357807
34 0.374834150076 0.577537357807
35 0.374834150076 0.536138415337
SURF 0x10
mat 1
refs 4
36 0.385183900595 0.577537298203
37 0.385183900595 0.536138415337
38 0.374834150076 0.536138415337
39 0.374834150076 0.577537298203
SURF 0x10
mat 1
refs 4
40 0.385183900595 0.577537238598
41 0.385183900595 0.536138415337
42 0.374834150076 0.536138415337
43 0.374834150076 0.577537238598
SURF 0x10
mat 1
refs 4
44 0.385183900595 0.536138415337
45 0.385183900595 0.577537298203
46 0.374834150076 0.577537298203
47 0.374834150076 0.536138415337
SURF 0x10
mat 1
refs 4
48 0.474948495626 0.0524915345013
49 0.474948495626 0.917184531689
50 0.266934156418 0.917184531689
51 0.266934156418 0.0524915345013
SURF 0x10
mat 1
refs 4
52 0.385183900595 0.579510509968
53 0.374834150076 0.579510509968
54 0.374834150076 0.579510509968
55 0.385183900595 0.579510509968
SURF 0x10
mat 1
refs 4
56 0.385183900595 0.534165143967
57 0.385183900595 0.534165203571
58 0.374834150076 0.534165203571
59 0.374834150076 0.534165143967
SURF 0x10
mat 1
refs 4
60 0.385183900595 0.534165143967
61 0.385183900595 0.534165143967
62 0.374834150076 0.534165143967
63 0.374834150076 0.534165143967
SURF 0x10
mat 1
refs 4
64 0.385183900595 0.579510450363
65 0.374834150076 0.579510450363
66 0.374834150076 0.579510509968
67 0.385183900595 0.579510450363
SURF 0x10
mat 1
refs 4
68 0.732308506966 0.0524915345013
69 0.732308506966 0.917184531689
70 0.536294043064 0.917184531689
71 0.536294043064 0.0524915345013
SURF 0x10
mat 1
refs 4
72 0.385183900595 0.536138415337
73 0.385183900595 0.577537238598
74 0.374834150076 0.577537238598
75 0.374834150076 0.536138415337
SURF 0x10
mat 1
refs 4
76 0.385183900595 0.577537238598
77 0.385183900595 0.536138355732
78 0.374834150076 0.536138355732
79 0.374834150076 0.577537238598
SURF 0x10
mat 1
refs 4
24 0.219279453158 0.958398044109
27 0.0152650475502 0.958398044109
30 0.0152650475502 0.917184531689
29 0.219279453158 0.917184531689
SURF 0x10
mat 1
refs 4
42 0.374834150076 0.536138415337
41 0.385183900595 0.536138415337
56 0.385183900595 0.534165143967
59 0.374834150076 0.534165143967
SURF 0x10
mat 1
refs 4
43 0.374834150076 0.577537238598
53 0.374834150076 0.579510509968
52 0.385183900595 0.579510509968
40 0.385183900595 0.577537238598
SURF 0x10
mat 1
refs 4
67 0.385183900595 0.579510450363
66 0.374834150076 0.579510509968
74 0.374834150076 0.577537238598
73 0.385183900595 0.577537238598
SURF 0x10
mat 1
refs 4
20 0.219279453158 0.011277128011
28 0.219279453158 0.0524915345013
31 0.0152650475502 0.0524915345013
21 0.0152650475502 0.011277128011
SURF 0x10
mat 1
refs 4
51 0.266934156418 0.0524915345013
57 0.266934156418 0.011277128011
56 0.474948495626 0.011277128011
48 0.474948495626 0.0524915345013
SURF 0x10
mat 1
refs 4
46 0.374834150076 0.577537298203
45 0.385183900595 0.577537298203
55 0.385183900595 0.579510509968
54 0.374834150076 0.579510509968
SURF 0x10
mat 1
refs 4
47 0.374834150076 0.536138415337
58 0.374834150076 0.534165203571
57 0.385183900595 0.534165203571
44 0.385183900595 0.536138415337
SURF 0x10
mat 1
refs 4
64 0.385183900595 0.579510450363
76 0.385183900595 0.577537238598
79 0.374834150076 0.577537238598
65 0.374834150076 0.579510450363
SURF 0x10
mat 1
refs 4
61 0.385183900595 0.534165143967
72 0.385183900595 0.536138415337
75 0.374834150076 0.536138415337
62 0.374834150076 0.534165143967
SURF 0x10
mat 1
refs 4
50 0.266934156418 0.917184531689
49 0.474948495626 0.917184531689
52 0.474948495626 0.958398044109
55 0.266934156418 0.958398044109
SURF 0x10
mat 1
refs 4
28 0.219279453158 0.0524915345013
37 0.229479774833 0.0524915345013
36 0.229479774833 0.917184531689
29 0.219279453158 0.917184531689
SURF 0x10
mat 1
refs 4
31 0.0152650475502 0.0524915345013
30 0.0152650475502 0.917184531689
33 0.00506484508514 0.917184531689
32 0.00506484508514 0.0524915345013
SURF 0x10
mat 1
refs 4
68 0.732308506966 0.0524915345013
77 0.742508530617 0.0524915345013
76 0.742508530617 0.917184531689
69 0.732308506966 0.917184531689
SURF 0x10
mat 1
refs 4
60 0.385183900595 0.534165143967
63 0.374834150076 0.534165143967
78 0.374834150076 0.536138355732
77 0.385183900595 0.536138355732
SURF 0x10
mat 1
refs 4
20 0.385183900595 0.534165203571
23 0.374834150076 0.534165203571
38 0.374834150076 0.536138415337
37 0.385183900595 0.536138415337
SURF 0x10
mat 1
refs 4
21 0.385183900595 0.534165263176
32 0.385183900595 0.536138415337
35 0.374834150076 0.536138415337
22 0.374834150076 0.534165263176
SURF 0x10
mat 1
refs 4
71 0.536294043064 0.0524915345013
70 0.536294043064 0.917184531689
73 0.526093959808 0.917184531689
72 0.526093959808 0.0524915345013
SURF 0x10
mat 1
refs 4
45 0.256733953953 0.917184531689
44 0.256733953953 0.0524915345013
51 0.266934156418 0.0524915345013
50 0.266934156418 0.917184531689
SURF 0x10
mat 1
refs 4
24 0.385183900595 0.579510509968
36 0.385183900595 0.577537298203
39 0.374834150076 0.577537298203
25 0.374834150076 0.579510509968
SURF 0x10
mat 1
refs 4
40 0.485148578882 0.917184531689
49 0.474948495626 0.917184531689
48 0.474948495626 0.0524915345013
41 0.485148578882 0.0524915345013
SURF 0x10
mat 1
refs 4
64 0.732308506966 0.958398044109
67 0.536294043064 0.958398044109
70 0.536294043064 0.917184531689
69 0.732308506966 0.917184531689
SURF 0x10
mat 1
refs 4
60 0.732308506966 0.011277128011
68 0.732308506966 0.0524915345013
71 0.536294043064 0.0524915345013
61 0.536294043064 0.011277128011
SURF 0x10
mat 1
refs 4
27 0.385183900595 0.579510509968
26 0.374834150076 0.579510509968
34 0.374834150076 0.577537357807
33 0.385183900595 0.577537357807
SURF 0x10
mat 1
refs 3
73 0.526093959808 0.917184531689
70 0.536294043064 0.917184531689
67 0.536294043064 0.958398044109
SURF 0x10
mat 1
refs 3
40 0.485148578882 0.917184531689
52 0.474948495626 0.958398044109
49 0.474948495626 0.917184531689
SURF 0x10
mat 1
refs 3
41 0.485148578882 0.0524915345013
48 0.474948495626 0.0524915345013
56 0.474948495626 0.011277128011
SURF 0x10
mat 1
refs 3
61 0.536294043064 0.011277128011
71 0.536294043064 0.0524915345013
72 0.526093959808 0.0524915345013
SURF 0x10
mat 1
refs 3
77 0.742508530617 0.0524915345013
68 0.732308506966 0.0524915345013
60 0.732308506966 0.011277128011
SURF 0x10
mat 1
refs 3
36 0.229479774833 0.917184531689
24 0.219279453158 0.958398044109
29 0.219279453158 0.917184531689
SURF 0x10
mat 1
refs 3
21 0.0152650475502 0.011277128011
31 0.0152650475502 0.0524915345013
32 0.00506484508514 0.0524915345013
SURF 0x10
mat 1
refs 3
76 0.742508530617 0.917184531689
64 0.732308506966 0.958398044109
69 0.732308506966 0.917184531689
SURF 0x10
mat 1
refs 3
28 0.219279453158 0.0524915345013
20 0.219279453158 0.011277128011
37 0.229479774833 0.0524915345013
SURF 0x10
mat 1
refs 3
33 0.00506484508514 0.917184531689
30 0.0152650475502 0.917184531689
27 0.0152650475502 0.958398044109
SURF 0x10
mat 1
refs 3
45 0.256733953953 0.917184531689
50 0.266934156418 0.917184531689
55 0.266934156418 0.958398044109
SURF 0x10
mat 1
refs 3
57 0.266934156418 0.011277128011
51 0.266934156418 0.0524915345013
44 0.256733953953 0.0524915345013
kids 0

Binary file not shown.

After

Width:  |  Height:  |  Size: 32 KiB

View file

@ -0,0 +1,9 @@
<?xml version="1.0"?>
<PropertyList>
<path>cata_button.ac</path>
</PropertyList>

File diff suppressed because it is too large Load diff

Binary file not shown.

After

Width:  |  Height:  |  Size: 109 KiB

Binary file not shown.

View file

@ -0,0 +1,45 @@
<?xml version="1.0"?>
<PropertyList>
<path>clock.ac</path>
<animation>
<type>rotate</type>
<object-name>SecondHand</object-name>
<property>/sim/time/utc/day-seconds</property>
<factor>6</factor>
<axis>
<x>-1</x>
<y>0</y>
<z>0</z>
</axis>
</animation>
<animation>
<type>rotate</type>
<object-name>MinuteHand</object-name>
<property>/sim/time/utc/day-seconds</property>
<factor>0.1</factor>
<axis>
<x>-1</x>
<y>0</y>
<z>0</z>
</axis>
</animation>
<animation>
<type>rotate</type>
<object-name>HourHand</object-name>
<property>/sim/time/utc/day-seconds</property>
<factor>0.008333</factor>
<axis>
<x>-1</x>
<y>0</y>
<z>0</z>
</axis>
</animation>
</PropertyList>

Binary file not shown.

After

Width:  |  Height:  |  Size: 129 KiB

File diff suppressed because it is too large Load diff

Binary file not shown.

After

Width:  |  Height:  |  Size: 131 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 15 KiB

View file

@ -0,0 +1,18 @@
<?xml version="1.0"?>
<PropertyList>
<path>compass.ac</path>
<animation>
<type>rotate</type>
<object-name>PIA.card</object-name>
<property>instrumentation/magnetic-compass/indicated-heading-deg</property>
<axis>
<x>1</x>
<y>0</y>
<z>0</z>
</axis>
</animation>
</PropertyList>

View file

@ -0,0 +1,65 @@
AC3Db
MATERIAL "DefaultWhite" rgb 1 1 1 amb 1 1 1 emis 0 0 0 spec 0.5 0.5 0.5 shi 64 trans 0
MATERIAL "DefaultWhite" rgb 1 1 1 amb 1 1 1 emis 0 0 0 spec 0.5 0.5 0.5 shi 64 trans 0
OBJECT world
kids 1
OBJECT poly
name "dmepanel"
data 8
Cube.001
texture "dme.png"
texrep 1 1
crease 30.000000
numvert 8
0.006582 -0.01827 -0.043379
0.006582 -0.01827 0.045083
0.000158 -0.01827 0.045083
0.000158 -0.01827 -0.043379
0.006582 0.020313 -0.043379
0.006581 0.020313 0.045083
0.000158 0.020313 0.045083
0.000158 0.020313 -0.043379
numsurf 6
SURF 0x00
mat 1
refs 4
0 0.999999463558 0.0
1 0.0 1.9310324717e-007
2 4.63229838488e-007 1.9310324717e-007
3 0.999999940395 0.0
SURF 0x00
mat 1
refs 4
4 0.999999463558 0.999999821186
7 0.999999940395 0.999999821186
6 4.63229838488e-007 1.0
5 0.0 1.0
SURF 0x00
mat 1
refs 4
0 0.999999463558 0.0
4 0.999999463558 0.999999821186
5 0.0 1.0
1 0.0 1.9310324717e-007
SURF 0x00
mat 1
refs 4
1 0.0 1.9310324717e-007
5 0.0 1.0
6 4.63229838488e-007 1.0
2 4.63229838488e-007 1.9310324717e-007
SURF 0x00
mat 1
refs 4
2 4.63229838488e-007 1.9310324717e-007
6 4.63229838488e-007 1.0
7 0.999999940395 0.999999821186
3 0.999999940395 0.0
SURF 0x00
mat 1
refs 4
4 0.999999463558 0.999999821186
0 0.999999463558 0.0
3 0.999999940395 0.0
7 0.999999940395 0.999999821186
kids 0

BIN
instrumentation/dme/dme.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 18 KiB

BIN
instrumentation/dme/dme.rgb Normal file

Binary file not shown.

216
instrumentation/dme/dme.xml Normal file
View file

@ -0,0 +1,216 @@
<?xml version="1.0" ?>
<!--
Maintainer: Torsten Dreyer
-->
<PropertyList>
<path>dme.ac</path>
<model>
<path>Aircraft/Instruments-3d/ki266/ki266.xml</path>
<name>ki266</name>
<offsets>
<x-m>0.007</x-m>
<y-m>0.00</y-m>
<z-m>0.0</z-m>
</offsets>
</model>
<!-- the power switch -->
<!--<animation>
<type>rotate</type>
<object-name>PowerSwitch.Lever</object-name>
<property alias="../../params/power-btn"/>
<factor>-60</factor>
<axis>
<x>0</x>
<y>1</y>
<z>0</z>
</axis>
<center>
<x-m>0.000862624</x-m>
<y-m>-0.0328855</y-m>
<z-m>0</z-m>
</center>
</animation>
<animation>
<type>pick</type>
<object-name>on</object-name>
<visible>true</visible>
<action>
<button>0</button>
<repeatable>false</repeatable>
<binding>
<command>property-assign</command>
<property alias="../../../../params/power-btn"/>
<value>1</value>
</binding>
</action>
</animation>
<animation>
<type>pick</type>
<object-name>off</object-name>
<visible>true</visible>
<action>
<button>0</button>
<repeatable>false</repeatable>
<binding>
<command>property-assign</command>
<property alias="../../../../params/power-btn"/>
<value>0</value>
</binding>
</action>
</animation>
<animation>
<type>pick</type>
<object-name>PowerSwitch</object-name>
<visible>true</visible>
<action>
<button>0</button>
<repeatable>false</repeatable>
<binding>
<command>property-toggle</command>
<property alias="../../../../params/power-btn"/>
</binding>
</action>
</animation>-->
<!-- the source switch
<animation>
<type>rotate</type>
<object-name>SourceSelectorKnob</object-name>
<property>instrumentation/dme/switch-position</property>
<factor>-30</factor>
<min-deg>-60</min-deg>
<max-deg>0</max-deg>
<offset-deg>30</offset-deg>
<axis>
<x>1</x>
<y>0</y>
<z>0</z>
</axis>
<center>
<x-m>0.005</x-m>
<y-m>-0.0589436</y-m>
<z-m>0</z-m>
</center>
</animation>
<animation>
<type>pick</type>
<object-name>SourceSelectorPick.R</object-name>
<visible>false</visible>
<action>
<button>0</button>
<repeatable>false</repeatable>
<binding>
<command>property-adjust</command>
<property>instrumentation/dme/switch-position</property>
<step>1</step>
<min>1</min>
<max>3</max>
<wrap>0</wrap>
</binding>
<binding>
<condition>
<equals>
<property>instrumentation/dme/switch-position</property>
<value type="int">1</value>
</equals>
</condition>
<command>property-assign</command>
<property>instrumentation/dme/frequencies/source</property>
<value>instrumentation/nav[0]/frequencies/selected-mhz</value>
</binding>
<binding>
<condition>
<equals>
<property>instrumentation/dme/switch-position</property>
<value type="int">2</value>
</equals>
</condition>
<command>property-assign</command>
<property>instrumentation/dme/frequencies/source</property>
<value>instrumentation/dme/frequencies/selected-mhz</value>
</binding>
<binding>
<condition>
<equals>
<property>instrumentation/dme/switch-position</property>
<value type="int">2</value>
</equals>
</condition>
<command>property-assign</command>
<property>instrumentation/dme/frequencies/selected-mhz</property>
<property>instrumentation/nav[0]/frequencies/selected-mhz</property>
</binding>
<binding>
<condition>
<equals>
<property>instrumentation/dme/switch-position</property>
<value type="int">3</value>
</equals>
</condition>
<command>property-assign</command>
<property>instrumentation/dme/frequencies/source</property>
<value>instrumentation/nav[1]/frequencies/selected-mhz</value>
</binding>
</action>
</animation>
<animation>
<type>pick</type>
<object-name>SourceSelectorPick.L</object-name>
<visible>false</visible>
<action>
<button>0</button>
<repeatable>false</repeatable>
<binding>
<command>property-adjust</command>
<property>instrumentation/dme/switch-position</property>
<step>-1</step>
<min>1</min>
<max>3</max>
<wrap>0</wrap>
</binding>
<binding>
<condition>
<equals>
<property>instrumentation/dme/switch-position</property>
<value type="int">1</value>
</equals>
</condition>
<command>property-assign</command>
<property>instrumentation/dme/frequencies/source</property>
<value>instrumentation/nav[0]/frequencies/selected-mhz</value>
</binding>
<binding>
<condition>
<equals>
<property>instrumentation/dme/switch-position</property>
<value type="int">2</value>
</equals>
</condition>
<command>property-assign</command>
<property>instrumentation/dme/frequencies/source</property>
<value>instrumentation/dme/frequencies/selected-mhz</value>
</binding>
<binding>
<condition>
<equals>
<property>instrumentation/dme/switch-position</property>
<value type="int">2</value>
</equals>
</condition>
<command>property-assign</command>
<property>instrumentation/dme/frequencies/selected-mhz</property>
<property>instrumentation/nav[1]/frequencies/selected-mhz</property>
</binding>
</action>
</animation>-->
</PropertyList>

File diff suppressed because it is too large Load diff

Binary file not shown.

After

Width:  |  Height:  |  Size: 401 KiB

View file

@ -0,0 +1,14 @@
<PropertyList>
<path>engine_panel.ac</path>
<animation>
<type>material</type>
<object-name>Plane</object-name>
<emission>
<red>0.028</red>
<green>0.014</green>
<blue>0.007</blue>
<factor-prop>systems/electrical/outputs/instrument-lights</factor-prop>
</emission>
</animation>
</PropertyList>

298
instrumentation/fdm1.ac Normal file
View file

@ -0,0 +1,298 @@
AC3Db
MATERIAL "DefaultWhite" rgb 1 1 1 amb 1 1 1 emis 0 0 0 spec 0.5 0.5 0.5 shi 64 trans 0
MATERIAL "DefaultWhite.001" rgb 1 1 1 amb 1 1 1 emis 0 0 0 spec 0.5 0.5 0.5 shi 64 trans 0
OBJECT world
kids 1
OBJECT poly
name "fdm1"
data 4
fdm1
texture "//FDM1.rgb"
texrep 1 1
crease 30
numvert 32
-0.001811 -0.032846 0.050174
-0.001811 -0.033248 -0.045208
-0.001811 0.038089 -0.044807
-0.001811 0.03809 0.050174
-0.001811 -0.038056 0.054182
-0.001811 -0.038057 -0.050418
-0.001811 0.041296 -0.050018
-0.001811 0.040895 0.054182
-0.001811 -0.041663 0.062999
-0.001811 -0.041263 -0.05683
-0.001811 0.046906 -0.05643
-0.001811 0.046907 0.062998
-0.001811 0.065371 -0.083923
-0.001811 -0.078896 -0.083345
-0.001811 -0.079473 0.067847
-0.001811 0.065948 0.068423
-0.001801 -0.033248 -0.045208
0.003016 -0.038057 -0.050418
-0.001801 0.038089 -0.044807
0.003016 0.041296 -0.050018
-0.001801 -0.032846 0.050174
0.003016 -0.038056 0.054182
-0.001801 0.03809 0.050174
0.003016 0.040895 0.054182
0.003016 -0.041663 0.062999
0.003016 0.046907 0.062998
0.003016 -0.041263 -0.05683
0.003016 0.046906 -0.05643
0.003016 0.065371 -0.083923
0.003016 -0.078896 -0.083345
0.003016 -0.079473 0.067847
0.003016 0.065948 0.068423
numsurf 37
SURF 0x00
mat 1
refs 4
5 0.748739600182 0.341627240181
1 0.717283964157 0.370664596558
16 0.717283964157 0.370664596558
17 0.748739600182 0.341627240181
SURF 0x00
mat 1
refs 4
6 0.746321499348 0.820767045021
2 0.714861094952 0.801407217979
18 0.714861094952 0.801407217979
19 0.746321499348 0.820767045021
SURF 0x00
mat 1
refs 4
4 0.117148905993 0.341627240181
0 0.141349762678 0.373087406158
20 0.141349762678 0.373087406158
21 0.117148905993 0.341627240181
SURF 0x00
mat 1
refs 4
3 0.141349762678 0.801407217979
0 0.141349762678 0.373087406158
20 0.141349762678 0.373087406158
22 0.141349762678 0.801407217979
SURF 0x00
mat 1
refs 4
1 0.717283964157 0.370664596558
0 0.141349762678 0.373087406158
20 0.141349762678 0.373087406158
16 0.717283964157 0.370664596558
SURF 0x00
mat 1
refs 4
2 0.714861094952 0.801407217979
1 0.717283964157 0.370664596558
16 0.717283964157 0.370664596558
18 0.714861094952 0.801407217979
SURF 0x00
mat 1
refs 4
3 0.141349762678 0.801407217979
2 0.714861094952 0.801407217979
18 0.714861094952 0.801407217979
22 0.141349762678 0.801407217979
SURF 0x00
mat 1
refs 4
7 0.117148905993 0.818344295025
3 0.141349762678 0.801407217979
22 0.141349762678 0.801407217979
23 0.117148905993 0.818344295025
SURF 0x00
mat 1
refs 4
7 0.117148905993 0.818344295025
4 0.117148905993 0.341627240181
21 0.117148905993 0.341627240181
23 0.117148905993 0.818344295025
SURF 0x00
mat 1
refs 4
5 0.748739600182 0.341627240181
4 0.117148905993 0.341627240181
21 0.117148905993 0.341627240181
17 0.748739600182 0.341627240181
SURF 0x00
mat 1
refs 4
6 0.746321499348 0.820767045021
5 0.748739600182 0.341627240181
17 0.748739600182 0.341627240181
19 0.746321499348 0.820767045021
SURF 0x00
mat 1
refs 4
7 0.117148905993 0.818344295025
6 0.746321499348 0.820767045021
19 0.746321499348 0.820767045021
23 0.117148905993 0.818344295025
SURF 0x00
mat 1
refs 4
11 0.0639152526855 0.854645371437
8 0.0639152526855 0.319849193096
24 0.0639152526855 0.319849193096
25 0.0639152526855 0.854645371437
SURF 0x00
mat 1
refs 4
9 0.787459135056 0.322267383337
8 0.0639152526855 0.319849193096
24 0.0639152526855 0.319849193096
26 0.787459135056 0.322267383337
SURF 0x00
mat 1
refs 4
10 0.785040915012 0.854645371437
9 0.787459135056 0.322267383337
26 0.787459135056 0.322267383337
27 0.785040915012 0.854645371437
SURF 0x00
mat 1
refs 4
11 0.0639152526855 0.854645371437
10 0.785040915012 0.854645371437
27 0.785040915012 0.854645371437
25 0.0639152526855 0.854645371437
SURF 0x00
mat 1
refs 4
13 0.947558999062 0.0950311720371
12 0.951045930386 0.966135144234
28 0.951045930386 0.966135144234
29 0.947558999062 0.0950311720371
SURF 0x00
mat 1
refs 4
14 0.0346422493458 0.0915486216545
13 0.947558999062 0.0950311720371
29 0.947558999062 0.0950311720371
30 0.0346422493458 0.0915486216545
SURF 0x00
mat 1
refs 4
15 0.0311596989632 0.969617724419
14 0.0346422493458 0.0915486216545
30 0.0346422493458 0.0915486216545
31 0.0311596989632 0.969617724419
SURF 0x00
mat 1
refs 4
15 0.0311596989632 0.969617724419
12 0.951045930386 0.966135144234
28 0.951045930386 0.966135144234
31 0.0311596989632 0.969617724419
SURF 0x00
mat 1
refs 4
20 0.141349762678 0.373087406158
16 0.717283964157 0.370664596558
18 0.714861094952 0.801407217979
22 0.141349762678 0.801407217979
SURF 0x00
mat 1
refs 3
18 0.714861094952 0.801407217979
19 0.746321499348 0.820767045021
23 0.117148905993 0.818344295025
SURF 0x00
mat 1
refs 3
17 0.748739600182 0.341627240181
19 0.746321499348 0.820767045021
18 0.714861094952 0.801407217979
SURF 0x00
mat 1
refs 3
22 0.141349762678 0.801407217979
23 0.117148905993 0.818344295025
21 0.117148905993 0.341627240181
SURF 0x00
mat 1
refs 3
18 0.714861094952 0.801407217979
23 0.117148905993 0.818344295025
22 0.141349762678 0.801407217979
SURF 0x00
mat 1
refs 3
20 0.141349762678 0.373087406158
22 0.141349762678 0.801407217979
21 0.117148905993 0.341627240181
SURF 0x00
mat 1
refs 3
17 0.748739600182 0.341627240181
18 0.714861094952 0.801407217979
16 0.717283964157 0.370664596558
SURF 0x00
mat 1
refs 3
16 0.717283964157 0.370664596558
20 0.141349762678 0.373087406158
21 0.117148905993 0.341627240181
SURF 0x00
mat 1
refs 3
17 0.748739600182 0.341627240181
16 0.717283964157 0.370664596558
21 0.117148905993 0.341627240181
SURF 0x00
mat 1
refs 4
21 0.117148905993 0.341627240181
23 0.117148905993 0.818344295025
25 0.0639152526855 0.854645371437
24 0.0639152526855 0.319849193096
SURF 0x00
mat 1
refs 4
17 0.748739600182 0.341627240181
21 0.117148905993 0.341627240181
24 0.0639152526855 0.319849193096
26 0.787459135056 0.322267383337
SURF 0x00
mat 1
refs 4
19 0.746321499348 0.820767045021
17 0.748739600182 0.341627240181
26 0.787459135056 0.322267383337
27 0.785040915012 0.854645371437
SURF 0x00
mat 1
refs 4
19 0.746321499348 0.820767045021
27 0.785040915012 0.854645371437
25 0.0639152526855 0.854645371437
23 0.117148905993 0.818344295025
SURF 0x00
mat 1
refs 4
24 0.0639152526855 0.319849193096
25 0.0639152526855 0.854645371437
31 0.0311596989632 0.969617724419
30 0.0346422493458 0.0915486216545
SURF 0x00
mat 1
refs 4
25 0.0639152526855 0.854645371437
27 0.785040915012 0.854645371437
28 0.951045930386 0.966135144234
31 0.0311596989632 0.969617724419
SURF 0x00
mat 1
refs 4
26 0.787459135056 0.322267383337
29 0.947558999062 0.0950311720371
28 0.951045930386 0.966135144234
27 0.785040915012 0.854645371437
SURF 0x00
mat 1
refs 4
24 0.0639152526855 0.319849193096
30 0.0346422493458 0.0915486216545
29 0.947558999062 0.0950311720371
26 0.787459135056 0.322267383337
kids 0

View file

@ -0,0 +1,494 @@
AC3Db
MATERIAL "DefaultWhite" rgb 1 1 1 amb 1 1 1 emis 0 0 0 spec 0.5 0.5 0.5 shi 64 trans 0
MATERIAL "material.001" rgb 1 1 1 amb 1 1 1 emis 0 0 0 spec 1 1 1 shi 72 trans 0
MATERIAL "DefaultWhite.002" rgb 1 1 1 amb 1 1 1 emis 0.15 0.15 0.15 spec 0.5 0.5 0.5 shi 64 trans 0
OBJECT world
kids 4
OBJECT poly
name "Face.002"
data 8
Mesh.003
texture "gsdi.rgb"
texrep 1 1
crease 30.000000
numvert 11
0.004225 0.03 0.03
0.004225 0.024153 -0.03
0.004225 0.03 -0.028081
0.004225 0.027077 -0.029041
0.004225 -0.022132 -0.03
0.004225 -0.026066 -0.028869
0.004225 -0.03 -0.025707
0.004225 -0.028583 -0.028146
0.004225 -0.029291 -0.026926
0.004225 -0.029566 0.029551
0.004225 -0.03 0.028858
numsurf 6
SURF 0x00
mat 1
refs 4
3 1.20101737976 1.15360808372
5 1.19686508179 -0.129203915596
4 1.22416615486 -0.0342413783073
1 1.22416567802 1.08302605152
SURF 0x00
mat 1
refs 4
3 1.20101737976 1.15360808372
8 1.14996361732 -0.207051694393
7 1.1794128418 -0.189961373806
5 1.19686508179 -0.129203915596
SURF 0x00
mat 1
refs 3
0 -0.224166154861 1.22416615486
9 -0.213327586651 -0.213689684868
2 1.17784380913 1.22416615486
SURF 0x00
mat 1
refs 3
2 1.17784380913 1.22416615486
9 -0.213327586651 -0.213689684868
3 1.20101737976 1.15360808372
SURF 0x00
mat 1
refs 4
3 1.20101737976 1.15360808372
9 -0.213327586651 -0.213689684868
10 -0.196599662304 -0.224166154861
8 1.14996361732 -0.207051694393
SURF 0x00
mat 1
refs 3
8 1.14996361732 -0.207051694393
10 -0.196599662304 -0.224166154861
6 1.12053775787 -0.224166154861
kids 0
OBJECT poly
name "Face.003"
data 8
Mesh.006
texture "tach.png"
texrep 1 1
crease 30.000000
numvert 56
0 0.029938 -0.028148
0 -0.028327 -0.028327
0 -0.028327 0.03137
0 0.030475 0.031191
0 0.02472 -0.029916
0 0.032444 -0.022318
0 -0.030833 -0.024497
0 -0.023146 -0.029781
0 -0.024215 0.033499
0 -0.030833 0.027764
0 0.032444 0.024965
0 0.025673 0.033358
0.008592 0.029938 -0.028148
0.008592 0.02472 -0.029916
0.008592 0.032444 -0.022318
0.008592 -0.028327 -0.028327
0.008592 -0.030833 -0.024497
0.008592 -0.023146 -0.029781
0.008592 -0.028327 0.03137
0.008592 -0.024215 0.033499
0.008592 -0.030833 0.027764
0.008592 0.030475 0.031191
0.008592 0.032444 0.024965
0.008592 0.025673 0.033358
0 -0.015932 0.015753
0 -0.008705 0.020582
0 -0.000179 0.022278
0 0.008347 0.020582
0 0.015574 0.015753
0 0.020404 0.008525
0 0.022099 0
0 0.020404 -0.008526
0 0.015574 -0.015753
0 0.008347 -0.020583
0 -0.000179 -0.022278
0 -0.008705 -0.020583
0 -0.015932 -0.015753
0 -0.020761 -0.008526
0 -0.022457 0
0 -0.020761 0.008525
0.008651 -0.015932 0.015753
0.008651 -0.008705 0.020582
0.008651 -0.000179 0.022278
0.008651 0.008347 0.020582
0.008651 0.015574 0.015753
0.008651 0.020404 0.008525
0.008651 0.022099 0
0.008651 0.020404 -0.008526
0.008651 0.015574 -0.015753
0.008651 0.008347 -0.020583
0.008651 -0.000179 -0.022278
0.008651 -0.008705 -0.020583
0.008651 -0.015932 -0.015753
0.008651 -0.020761 -0.008526
0.008651 -0.022457 0
0.008651 -0.020761 0.008525
numsurf 48
SURF 0x00
mat 2
refs 4
4 0.880161881447 0.819025874138
0 0.880161881447 0.821688055992
12 0.884545445442 0.821688055992
13 0.884545445442 0.819025874138
SURF 0x00
mat 2
refs 4
12 0.884545445442 0.821688055992
0 0.880161881447 0.821688055992
5 0.880161881447 0.822966694832
14 0.884545445442 0.822966694832
SURF 0x00
mat 2
refs 4
6 0.880161881447 0.790683269501
1 0.880161881447 0.791961789131
15 0.884545445442 0.791961789131
16 0.884545445442 0.790683269501
SURF 0x00
mat 2
refs 4
7 0.880161881447 0.794605135918
17 0.884545445442 0.794605135918
15 0.884545445442 0.791961789131
1 0.880161881447 0.791961789131
SURF 0x00
mat 2
refs 4
4 0.880161881447 0.819025874138
13 0.884545445442 0.819025874138
17 0.884545445442 0.794605135918
7 0.880161881447 0.794605135918
SURF 0x00
mat 2
refs 4
8 0.880161881447 0.794059753418
2 0.880161881447 0.791961789131
18 0.884545445442 0.791961789131
19 0.884545445442 0.794059753418
SURF 0x00
mat 2
refs 4
9 0.880161881447 0.790683269501
20 0.884545445442 0.790683269501
18 0.884545445442 0.791961789131
2 0.880161881447 0.791961789131
SURF 0x00
mat 2
refs 4
6 0.880161881447 0.790683269501
16 0.884545445442 0.790683269501
20 0.884545445442 0.790683269501
9 0.880161881447 0.790683269501
SURF 0x00
mat 2
refs 4
10 0.880161881447 0.822966694832
3 0.880161881447 0.821962118149
21 0.884545445442 0.821962118149
22 0.884545445442 0.822966694832
SURF 0x00
mat 2
refs 4
5 0.880161881447 0.822966694832
10 0.880161881447 0.822966694832
22 0.884545445442 0.822966694832
14 0.884545445442 0.822966694832
SURF 0x00
mat 2
refs 4
11 0.880161881447 0.81951212883
23 0.884545445442 0.81951212883
21 0.884545445442 0.821962118149
3 0.880161881447 0.821962118149
SURF 0x00
mat 2
refs 4
8 0.880161881447 0.794059753418
19 0.884545445442 0.794059753418
23 0.884545445442 0.81951212883
11 0.880161881447 0.81951212883
SURF 0x00
mat 2
refs 4
25 0.880161881447 0.801972746849
41 0.884575545788 0.801972746849
40 0.884575545788 0.798285603523
24 0.880161881447 0.798285603523
SURF 0x00
mat 2
refs 4
26 0.880161881447 0.806322693825
42 0.884575545788 0.806322693825
41 0.884575545788 0.801972746849
25 0.880161881447 0.801972746849
SURF 0x00
mat 2
refs 4
27 0.880161881447 0.810672521591
43 0.884575545788 0.810672521591
42 0.884575545788 0.806322693825
26 0.880161881447 0.806322693825
SURF 0x00
mat 2
refs 4
28 0.880161881447 0.814359664917
44 0.884575545788 0.814359664917
43 0.884575545788 0.810672521591
27 0.880161881447 0.810672521591
SURF 0x00
mat 2
refs 4
29 0.880161881447 0.816823959351
45 0.884575545788 0.816823959351
44 0.884575545788 0.814359664917
28 0.880161881447 0.814359664917
SURF 0x00
mat 2
refs 4
30 0.880161881447 0.817688703537
46 0.884575545788 0.817688703537
45 0.884575545788 0.816823959351
29 0.880161881447 0.816823959351
SURF 0x00
mat 2
refs 4
31 0.880161881447 0.816823959351
47 0.884575545788 0.816823959351
46 0.884575545788 0.817688703537
30 0.880161881447 0.817688703537
SURF 0x00
mat 2
refs 4
32 0.880161881447 0.814359664917
48 0.884575545788 0.814359664917
47 0.884575545788 0.816823959351
31 0.880161881447 0.816823959351
SURF 0x00
mat 2
refs 4
33 0.880161881447 0.810672521591
49 0.884575545788 0.810672521591
48 0.884575545788 0.814359664917
32 0.880161881447 0.814359664917
SURF 0x00
mat 2
refs 4
34 0.880161881447 0.806322693825
50 0.884575545788 0.806322693825
49 0.884575545788 0.810672521591
33 0.880161881447 0.810672521591
SURF 0x00
mat 2
refs 4
35 0.880161881447 0.801972746849
51 0.884575545788 0.801972746849
50 0.884575545788 0.806322693825
34 0.880161881447 0.806322693825
SURF 0x00
mat 2
refs 4
36 0.880161881447 0.798285603523
52 0.884575545788 0.798285603523
51 0.884575545788 0.801972746849
35 0.880161881447 0.801972746849
SURF 0x00
mat 2
refs 4
37 0.880161881447 0.795821905136
53 0.884575545788 0.795821905136
52 0.884575545788 0.798285603523
36 0.880161881447 0.798285603523
SURF 0x00
mat 2
refs 4
38 0.880161881447 0.794956624508
54 0.884575545788 0.794956624508
53 0.884575545788 0.795821905136
37 0.880161881447 0.795821905136
SURF 0x00
mat 2
refs 4
39 0.880161881447 0.795821905136
55 0.884575545788 0.795821905136
54 0.884575545788 0.794956624508
38 0.880161881447 0.794956624508
SURF 0x00
mat 2
refs 4
24 0.880161881447 0.798285603523
40 0.884575545788 0.798285603523
55 0.884575545788 0.795821905136
39 0.880161881447 0.795821905136
SURF 0x00
mat 2
refs 4
21 0.0363951735198 0.968882799149
44 0.191242232919 0.806504964828
45 0.334401935339 0.902377963066
22 0.134573861957 0.999999940395
SURF 0x00
mat 2
refs 4
21 0.0363951735198 0.968882799149
23 0.00222342531197 0.89299428463
43 0.0955977216363 0.663052916527
44 0.191242232919 0.806504964828
SURF 0x00
mat 2
refs 4
18 0.0335724949837 0.0396037176251
40 0.191242232919 0.181127816439
41 0.0955977216363 0.324579894543
19 0.0 0.104587823153
SURF 0x00
mat 2
refs 4
18 0.0335724949837 0.0396037176251
20 0.0904359668493 2.94363662334e-008
55 0.334401905537 0.0852746888995
40 0.191242232919 0.181127816439
SURF 0x00
mat 2
refs 4
15 0.974942803383 0.0396036580205
52 0.815258562565 0.181127756834
53 0.672118604183 0.0852746888995
16 0.914547026157 0.0
SURF 0x00
mat 2
refs 4
15 0.974942803383 0.0396036580205
17 0.997871160507 0.121481738985
51 0.910922825336 0.32457986474
52 0.815258562565 0.181127756834
SURF 0x00
mat 2
refs 4
12 0.972120165825 0.960396230221
14 0.880186080933 0.999999940395
47 0.672118604183 0.902377963066
48 0.815258562565 0.806504964828
SURF 0x00
mat 2
refs 4
12 0.972120165825 0.960396230221
48 0.815258562565 0.806504964828
49 0.910922825336 0.663052916527
13 1.0 0.877933442593
SURF 0x00
mat 2
refs 3
22 0.134573861957 0.999999940395
45 0.334401935339 0.902377963066
46 0.503250360489 0.936022758484
SURF 0x00
mat 2
refs 3
14 0.880186080933 0.999999940395
46 0.503250360489 0.936022758484
47 0.672118604183 0.902377963066
SURF 0x00
mat 2
refs 3
14 0.880186080933 0.999999940395
22 0.134573861957 0.999999940395
46 0.503250360489 0.936022758484
SURF 0x00
mat 2
refs 3
13 1.0 0.877933442593
49 0.910922825336 0.663052916527
50 0.94449442625 0.493816375732
SURF 0x00
mat 2
refs 3
17 0.997871160507 0.121481738985
50 0.94449442625 0.493816375732
51 0.910922825336 0.32457986474
SURF 0x00
mat 2
refs 3
13 1.0 0.877933442593
50 0.94449442625 0.493816375732
17 0.997871160507 0.121481738985
SURF 0x00
mat 2
refs 3
16 0.914547026157 0.0
53 0.672118604183 0.0852746888995
54 0.503250360489 0.0516100153327
SURF 0x00
mat 2
refs 3
20 0.0904359668493 2.94363662334e-008
54 0.503250360489 0.0516100153327
55 0.334401905537 0.0852746888995
SURF 0x00
mat 2
refs 3
16 0.914547026157 0.0
54 0.503250360489 0.0516100153327
20 0.0904359668493 2.94363662334e-008
SURF 0x00
mat 2
refs 3
19 0.0 0.104587823153
41 0.0955977216363 0.324579894543
42 0.0620063021779 0.493816435337
SURF 0x00
mat 2
refs 3
23 0.00222342531197 0.89299428463
42 0.0620063021779 0.493816435337
43 0.0955977216363 0.663052916527
SURF 0x00
mat 2
refs 3
19 0.0 0.104587823153
42 0.0620063021779 0.493816435337
23 0.00222342531197 0.89299428463
kids 0
OBJECT poly
name "uneedle"
data 8
Mesh.005
crease 30.000000
numvert 4
0.005456 0.000885 0.029961
0.005456 0.000887 -0.029989
0.005456 -0.000915 -0.029981
0.005456 -0.000917 0.029968
numsurf 1
SURF 0x00
mat 1
refs 4
0 0.0 0.0
3 0.0 0.0
2 0.0 0.0
1 0.0 0.0
kids 0
OBJECT poly
name "vneedle"
data 8
Mesh.004
crease 30.000000
numvert 4
0.005921 0.02996 -0.000892
0.005921 -0.029989 -0.00088
0.005921 -0.029981 0.000922
0.005921 0.029968 0.00091
numsurf 1
SURF 0x00
mat 1
refs 4
0 0.0 0.0
3 0.0 0.0
2 0.0 0.0
1 0.0 0.0
kids 0

Binary file not shown.

View file

@ -0,0 +1,47 @@
<?xml version="1.0"?>
<PropertyList>
<path>gsdi.ac</path>
<animation>
<type>select</type>
<object>face</object>
<object>face.001</object>
<object>vneedle</object>
<object>uneedle</object>
<condition>
<not>
<property>/sim/model/hide-gsdi</property>
</not>
</condition>
</animation>
<animation>
<type>translate</type>
<object-name>uneedle</object-name>
<property>instrumentation/gsdi/drift-u-kt</property>
<factor>0.005</factor>
<min-m>-0.03</min-m>
<max-m>0.03</max-m>
<axis>
<x>0</x>
<y>0</y>
<z>1</z>
</axis>
</animation>
<animation>
<type>translate</type>
<object-name>vneedle</object-name>
<property>instrumentation/gsdi/drift-v-kt</property>
<factor>0.005</factor>
<min-m>-0.03</min-m>
<max-m>0.03</max-m>
<axis>
<x>0</x>
<y>1</y>
<z>0</z>
</axis>
</animation>
</PropertyList>

Binary file not shown.

After

Width:  |  Height:  |  Size: 104 KiB

View file

@ -0,0 +1,236 @@
<?xml version="1.0" ?>
<!--
$Id: hsi-bk-hi.xml,v 1.1 2007/06/03 14:58:44 mfranz Exp $
This is the Bendix/King KI252 HSI 3d instrument.
Maintainer: Torsten Dreyer
$Log: hsi-bk-hi.xml,v $
Revision 1.1 2007/06/03 14:58:44 mfranz
Heiko SCHULZ: EC135 v0.2
Revision 1.2 2006-11-23 14:27:03 mfranz
Torsten DREYER:
"""
- Added instruments lights for night flights
- Addes flashing strobe effect in clouds at night
- OBS knob on vor2 clickable
- subscale knob on altimeter clickable
- changes on aircraft 3d-model
- Fixed bug in HSI, wrong deflection of glideslope indicator and
transparency issue
- Added Roberto Inzerillo's nice nose gear and animations, new main gear
"""
Revision 1.1 2006-06-01 12:58:33 mfranz
Torsten Dreyer: version 0.3 of the PA34-200T Seneca II (2006.05.30)
-->
<PropertyList>
<path>hsi-bk-hi.ac</path>
<animation>
<type>noshadow</type>
<object-name>hsi</object-name>
</animation>
<animation>
<type>material</type>
<object-name>hsi.Rotary</object-name>
<object-name>hsi.CompassRose</object-name>
<object-name>hsi.HeadingBug</object-name>
<object-name>hsi.NAVFlag</object-name>
<object-name>hsi.HDGFlag</object-name>
<emission>
<red-prop>/sim/model/instrument-lighting/emission/red</red-prop>
<green-prop>/sim/model/instrument-lighting/emission/green</green-prop>
<blue-prop>/sim/model/instrument-lighting/emission/blue</blue-prop>
<factor-prop>/controls/lighting/instruments-norm</factor-prop>
</emission>
</animation>
<animation>
<type>material</type>
<object-name>hsi.OuterMask</object-name>
<object-name>hsi.Glass</object-name>
<emission>
<red-prop>/sim/model/instrument-lighting/emission/red</red-prop>
<green-prop>/sim/model/instrument-lighting/emission/green</green-prop>
<blue-prop>/sim/model/instrument-lighting/emission/blue</blue-prop>
<factor-prop>/controls/lighting/instruments-norm</factor-prop>
</emission>
</animation>
<animation>
<type>rotate</type>
<object-name>hsi.CompassRose</object-name>
<property>/instrumentation/heading-indicator/indicated-heading-deg</property>
<factor>1.0</factor>
<axis>
<x>1.0</x>
<y>0.0</y>
<z>0.0</z>
</axis>
<center>
<x-m>-0.001</x-m>
<y-m>0</y-m>
<z-m>0</z-m>
</center>
</animation>
<animation>
<type>rotate</type>
<object-name>hsi.HeadingBug</object-name>
<property>/instrumentation/hsi/heading-bug-rotation-deg</property>
<factor>1.0</factor>
<axis>
<x>1.0</x>
<y>0.0</y>
<z>0.0</z>
</axis>
<center>
<x-m>0</x-m>
<y-m>0</y-m>
<z-m>0</z-m>
</center>
</animation>
<animation>
<type>rotate</type>
<object-name>hsi.Rotary</object-name>
<object-name>hsi.cursor</object-name>
<property>/instrumentation/hsi/cursor-rotation-deg</property>
<factor>1.0</factor>
<axis>
<x>1.0</x>
<y>0.0</y>
<z>0.0</z>
</axis>
<center>
<x-m>0</x-m>
<y-m>0</y-m>
<z-m>0</z-m>
</center>
</animation>
<animation>
<type>rotate</type>
<object-name>hsi.HeadingSelector</object-name>
<property>/autopilot/settings/heading-bug-deg</property>
<factor>4.0</factor>
<axis>
<x>1.0</x>
<y>0.0</y>
<z>0.0</z>
</axis>
<center>
<x-m>0</x-m>
<y-m>0.0331529</y-m>
<z-m>-0.0242478</z-m>
</center>
</animation>
<animation>
<type>rotate</type>
<object-name>hsi.CursorSelector</object-name>
<property>/instrumentation/hsi/cursor-rotation-deg</property>
<factor>-4.0</factor>
<axis>
<x>1.0</x>
<y>0.0</y>
<z>0.0</z>
</axis>
<center>
<x-m>0</x-m>
<y-m>-0.0331529</y-m>
<z-m>-0.0242478</z-m>
</center>
</animation>
<animation>
<type>translate</type>
<object-name>hsi.cursor.deflection</object-name>
<property>/instrumentation/nav[0]/heading-needle-deflection</property>
<factor>0.00152675</factor>
<axis>
<x>0</x>
<y>1</y>
<z>0</z>
</axis>
</animation>
<animation>
<type>translate</type>
<object-name>hsi.gs</object-name>
<property>/instrumentation/nav[0]/gs-needle-deflection</property>
<!--
<factor>0.022420</factor>
-->
<factor>0.004484</factor>
<axis>
<x>0</x>
<y>0</y>
<z>1</z>
</axis>
</animation>
<animation>
<type>select</type>
<object-name>hsi.gs</object-name>
<condition>
<property>/instrumentation/nav[0]/has-gs</property>
<greater-than>
<property>/instrumentation/nav[0]/gs-needle-deflection</property>
<value>-3.6</value>
</greater-than>
<less-than>
<property>/instrumentation/nav[0]/gs-needle-deflection</property>
<value>3.6</value>
</less-than>
</condition>
</animation>
<animation>
<type>select</type>
<object-name>hsi.NAVFlag</object-name>
<condition>
<not>
<property>/instrumentation/nav[0]/in-range</property>
</not>
</condition>
</animation>
<!-- fixme: whould be nicer to have a rotation bound to spin -->
<animation>
<type>select</type>
<object-name>hsi.HDGFlag</object-name>
<condition>
<or>
<not>
<property>/instrumentation/heading-indicator/serviceable</property>
</not>
<less-than>
<property>/instrumentation/heading-indicator/spin</property>
<value type="double">0.9</value>
</less-than>
</or>
</condition>
</animation>
<animation>
<type>select</type>
<object-name>hsi.TOFlag</object-name>
<condition>
<property>/instrumentation/nav[0]/to-flag</property>
</condition>
</animation>
<animation>
<type>select</type>
<object-name>hsi.FROMFlag</object-name>
<condition>
<property>/instrumentation/nav[0]/from-flag</property>
</condition>
</animation>
</PropertyList>

View file

@ -0,0 +1,116 @@
<?xml version="1.0"?>
<PropertyList>
<adf>
<name>adf</name>
<number>0</number>
</adf>
<adf>
<name>adf-radio</name>
<number>0</number>
</adf>
<airspeed-indicator>
<name>airspeed-indicator</name>
<number>0</number>
<pitot-port>/systems/pitot</pitot-port>
<static-port>/systems/static</static-port>
</airspeed-indicator>
<altimeter>
<name>altimeter</name>
<number>0</number>
<static-port>/systems/static</static-port>
</altimeter>
<attitude-indicator>
<name>attitude-indicator</name>
<number>0</number>
<vacuum-system>/systems/vacuum</vacuum-system>
</attitude-indicator>
<clock>
<name>clock</name>
<number>0</number>
</clock>
<dme>
<name>dme</name>
<number>0</number>
</dme>
<encoder>
<name>encoder</name>
<number>0</number>
<static-port>/systems/static</static-port>
</encoder>
<gsdi>
<name>gsdi</name>
<number>0</number>
</gsdi>
<marker-beacon>
<name>marker-beacon</name>
<number>0</number>
</marker-beacon>
<heading-indicator>
<name>heading-indicator</name>
<number>0</number>
<vacuum-system>/systems/vacuum</vacuum-system>
</heading-indicator>
<KT-70>
<name>kt-70</name>
<number>0</number>
</KT-70>
<magnetic-compass>
<name>magnetic-compass</name>
<number>0</number>
</magnetic-compass>
<nav-radio>
<name>nav</name>
<number>0</number>
</nav-radio>
<nav-radio>
<name>nav</name>
<number>1</number>
</nav-radio>
<slip-skid-ball>
<name>slip-skid-ball</name>
<number>0</number>
</slip-skid-ball>
<transponder>
<name>transponder</name>
<number>0</number>
<encoder>/instrumentation/encoder</encoder>
</transponder>
<turn-indicator>
<name>turn-indicator</name>
<number>0</number>
</turn-indicator>
<vertical-speed-indicator>
<name>vertical-speed-indicator</name>
<number>0</number>
<static-port>/systems/static</static-port>
</vertical-speed-indicator>
<gps>
<name>gps</name>
<number>0</number>
</gps>
<tacan>
<name>tacan</name>
<number>0</number>
</tacan>
</PropertyList>

Binary file not shown.

After

Width:  |  Height:  |  Size: 96 KiB

View file

@ -0,0 +1,467 @@
AC3Db
MATERIAL "led" rgb 1 1 1 amb 0.2 0.2 0.2 emis 0.9 0.9 0.9 spec 0 0 0 shi 32 trans 0
MATERIAL "metal" rgb 1 1 1 amb 0.2 0.2 0.2 emis 0 0 0 spec 0.755939 0.755939 0.755939 shi 32 trans 0
OBJECT world
kids 17
OBJECT poly
name "A-ON"
texture "kfc200.rgb"
texrep 1 1
crease 30.000000
numvert 4
0.004285 -0.005548 0.007149
0.004285 -0.013097 0.007149
0.004285 -0.013097 0.019403
0.004285 -0.005548 0.019403
numsurf 1
SURF 0x00
mat 0
refs 4
0 0.623522162437 0.890665233135
3 0.570849359035 0.890665233135
2 0.570849359035 0.858213663101
1 0.623522162437 0.858213663101
kids 0
OBJECT poly
name "O-ON"
texture "kfc200.rgb"
texrep 1 1
crease 30.000000
numvert 4
0.004285 -0.005548 0.006299
0.004285 -0.013097 0.006299
0.004285 -0.013097 -0.005955
0.004285 -0.005548 -0.005955
numsurf 1
SURF 0x00
mat 0
refs 4
3 0.679851472378 0.890665233135
0 0.627178609371 0.890665233135
1 0.627178609371 0.858213663101
2 0.679851472378 0.858213663101
kids 0
OBJECT poly
name "HDG-ON"
texture "kfc200.rgb"
texrep 1 1
crease 30.000000
numvert 4
0.004285 0.002148 0.027166
0.004285 -0.003118 0.027166
0.004285 -0.003118 0.038873
0.004285 0.002148 0.038873
numsurf 1
SURF 0x00
mat 0
refs 4
0 0.537476122379 0.923746824265
3 0.487153828144 0.923746824265
2 0.487153828144 0.901113212109
1 0.537476122379 0.901113212109
kids 0
OBJECT poly
name "FDannunciator"
texture "kfc200.rgb"
texrep 1 1
crease 30.000000
numvert 24
0.003999 0.013033 0.039363
0.003999 0.013033 -0.039363
0.003999 -0.013033 -0.039363
0.003999 -0.013033 0.039363
0 -0.015254 0.050654
0 0.015254 0.050654
0 0.017494 0.0488
0 0.017494 -0.0488
0 0.015254 -0.050654
0 -0.015254 -0.050654
0 -0.017494 0.0488
0 -0.017494 -0.0488
0.00543 0.013033 0.039363
0.00543 0.013033 -0.039363
0.00543 -0.013033 -0.039363
0.00543 -0.013033 0.039363
0.00543 0.015254 0.050654
0.00543 -0.015254 0.050654
0.00543 0.015254 -0.050654
0.00543 -0.015254 -0.050654
0.00543 0.017494 -0.0488
0.00543 0.017494 0.0488
0.00543 -0.017494 -0.0488
0.00543 -0.017494 0.0488
numsurf 18
SURF 0x00
mat 1
refs 4
0 0.057136900723 0.971186041832
1 0.398693561554 0.971186041832
13 0.398693561554 0.971186041832
12 0.057136900723 0.971186041832
SURF 0x00
mat 1
refs 4
3 0.057136900723 0.85809648037
0 0.057136900723 0.971186041832
12 0.057136900723 0.971186041832
15 0.057136900723 0.85809648037
SURF 0x00
mat 1
refs 4
14 0.398693561554 0.85809648037
13 0.398693561554 0.971186041832
1 0.398693561554 0.971186041832
2 0.398693561554 0.85809648037
SURF 0x00
mat 1
refs 4
15 0.057136900723 0.85809648037
14 0.398693561554 0.85809648037
2 0.398693561554 0.85809648037
3 0.057136900723 0.85809648037
SURF 0x00
mat 1
refs 4
21 0.0161940678954 0.990538716316
20 0.439636409283 0.990538716316
7 0.439636409283 0.990538716316
6 0.0161940678954 0.990538716316
SURF 0x00
mat 1
refs 4
23 0.0161940678954 0.838744044304
17 0.00815110746771 0.848460614681
4 0.00815110746771 0.848460614681
10 0.0161940678954 0.838744044304
SURF 0x00
mat 1
refs 4
17 0.00815110746771 0.848460614681
16 0.00815110746771 0.980821847916
5 0.00815110746771 0.980821847916
4 0.00815110746771 0.848460614681
SURF 0x00
mat 1
refs 4
16 0.00815110746771 0.980821847916
21 0.0161940678954 0.990538716316
6 0.0161940678954 0.990538716316
5 0.00815110746771 0.980821847916
SURF 0x00
mat 1
refs 4
20 0.439636409283 0.990538716316
18 0.447679311037 0.980821847916
8 0.447679311037 0.980821847916
7 0.439636409283 0.990538716316
SURF 0x00
mat 1
refs 4
18 0.447679311037 0.980821847916
19 0.447679311037 0.848460614681
9 0.447679311037 0.848460614681
8 0.447679311037 0.980821847916
SURF 0x00
mat 1
refs 4
19 0.447679311037 0.848460614681
22 0.439636409283 0.838744044304
11 0.439636409283 0.838744044304
9 0.447679311037 0.848460614681
SURF 0x00
mat 1
refs 4
20 0.439636409283 0.990538716316
21 0.0161940678954 0.990538716316
12 0.057136900723 0.971186041832
13 0.398693561554 0.971186041832
SURF 0x00
mat 1
refs 4
21 0.0161940678954 0.990538716316
23 0.0161940678954 0.838744044304
15 0.057136900723 0.85809648037
12 0.057136900723 0.971186041832
SURF 0x00
mat 1
refs 4
22 0.439636409283 0.838744044304
20 0.439636409283 0.990538716316
13 0.398693561554 0.971186041832
14 0.398693561554 0.85809648037
SURF 0x00
mat 1
refs 4
23 0.0161940678954 0.838744044304
22 0.439636409283 0.838744044304
14 0.398693561554 0.85809648037
15 0.057136900723 0.85809648037
SURF 0x00
mat 1
refs 4
23 0.0161940678954 0.838744044304
21 0.0161940678954 0.990538716316
16 0.00815110746771 0.980821847916
17 0.00815110746771 0.848460614681
SURF 0x00
mat 1
refs 4
20 0.439636409283 0.990538716316
22 0.439636409283 0.838744044304
19 0.447679311037 0.848460614681
18 0.447679311037 0.980821847916
SURF 0x00
mat 1
refs 4
22 0.0161940678954 0.838744044304
23 0.439636409283 0.838744044304
10 0.398693561554 0.85809648037
11 0.057136900723 0.85809648037
kids 0
OBJECT poly
name "AP-ON"
texture "kfc200.rgb"
texrep 1 1
crease 30.000000
numvert 4
0.004285 0.011733 -0.03787
0.004285 0.006468 -0.03787
0.004285 0.006468 -0.026163
0.004285 0.011733 -0.026163
numsurf 1
SURF 0x00
mat 0
refs 4
0 0.817042410374 0.964951455593
3 0.766719996929 0.964951455593
2 0.766719996929 0.942317962646
1 0.817042410374 0.942317962646
kids 0
OBJECT poly
name "ALT-ON"
texture "kfc200.rgb"
texrep 1 1
crease 30.000000
numvert 4
0.004285 0.011733 -0.010268
0.004285 0.006468 -0.010268
0.004285 0.006468 -0.021975
0.004285 0.011733 -0.021975
numsurf 1
SURF 0x00
mat 0
refs 4
3 0.748715698719 0.964951455593
0 0.698393285275 0.964951455593
1 0.698393285275 0.942317962646
2 0.748715698719 0.942317962646
kids 0
OBJECT poly
name "FD-ON"
texture "kfc200.rgb"
texrep 1 1
crease 30.000000
numvert 4
0.004285 0.011733 0.025225
0.004285 0.006468 0.025225
0.004285 0.006468 0.036931
0.004285 0.011733 0.036931
numsurf 1
SURF 0x00
mat 0
refs 4
0 0.545821964741 0.964951455593
3 0.495499670506 0.964951455593
2 0.495499670506 0.942317962646
1 0.545821964741 0.942317962646
kids 0
OBJECT poly
name "TRIM-ON"
texture "kfc200.rgb"
texrep 1 1
crease 30.000000
numvert 4
0.004285 -0.005548 -0.038512
0.004285 -0.013097 -0.038512
0.004285 -0.013097 -0.026259
0.004285 -0.005548 -0.026259
numsurf 1
SURF 0x00
mat 0
refs 4
0 0.819803655148 0.890665233135
3 0.767130792141 0.890665233135
2 0.767130792141 0.858213663101
1 0.819803655148 0.858213663101
kids 0
OBJECT poly
name "APPR-ON"
texture "kfc200.rgb"
texrep 1 1
crease 30.000000
numvert 4
0.004285 0.002148 0.022492
0.004285 -0.003118 0.022492
0.004285 -0.003118 0.010786
0.004285 0.002148 0.010786
numsurf 1
SURF 0x00
mat 0
refs 4
3 0.607889473438 0.923746824265
0 0.557567059994 0.923746824265
1 0.557567059994 0.901113212109
2 0.607889473438 0.901113212109
kids 0
OBJECT poly
name "M-ON"
texture "kfc200.rgb"
texrep 1 1
crease 30.000000
numvert 4
0.004285 -0.005548 -0.0192
0.004285 -0.013097 -0.0192
0.004285 -0.013097 -0.006947
0.004285 -0.005548 -0.006947
numsurf 1
SURF 0x00
mat 0
refs 4
0 0.736788570881 0.890665233135
3 0.684115707874 0.890665233135
2 0.684115707874 0.858213663101
1 0.736788570881 0.858213663101
kids 0
OBJECT poly
name "FD-annun"
texture "kfc200.rgb"
texrep 1 1
crease 30.000000
numvert 4
0.003674 0.014177 -0.040221
0.003674 -0.014177 -0.040221
0.003674 -0.014177 0.040221
0.003674 0.014177 0.040221
numsurf 1
SURF 0x00
mat 0
refs 4
0 0.400960415602 0.975200414658
3 0.055883333087 0.975200414658
2 0.0558832138777 0.853564143181
1 0.400960415602 0.853564083576
kids 0
OBJECT poly
name "ARM-ON"
texture "kfc200.rgb"
texrep 1 1
crease 30.000000
numvert 4
0.004285 0.011733 -0.006323
0.004285 0.006468 -0.006323
0.004285 0.006468 0.005384
0.004285 0.011733 0.005384
numsurf 1
SURF 0x00
mat 0
refs 4
0 0.681432187557 0.964951455593
3 0.631109774113 0.964951455593
2 0.631109774113 0.942317962646
1 0.681432187557 0.942317962646
kids 0
OBJECT poly
name "NAV-ON"
texture "kfc200.rgb"
texrep 1 1
crease 30.000000
numvert 4
0.004285 0.011733 0.02225
0.004285 0.006468 0.02225
0.004285 0.006468 0.010543
0.004285 0.011733 0.010543
numsurf 1
SURF 0x00
mat 0
refs 4
3 0.60893291235 0.964951455593
0 0.558610498905 0.964951455593
1 0.558610498905 0.942317962646
2 0.60893291235 0.942317962646
kids 0
OBJECT poly
name "BC-ON"
texture "kfc200.rgb"
texrep 1 1
crease 30.000000
numvert 4
0.004285 -0.00671 0.038873
0.004285 -0.011975 0.038873
0.004285 -0.011975 0.027166
0.004285 -0.00671 0.027166
numsurf 1
SURF 0x00
mat 0
refs 4
3 0.537476122379 0.885671675205
0 0.487153828144 0.885671675205
1 0.487153828144 0.863038122654
2 0.537476122379 0.863038122654
kids 0
OBJECT poly
name "GA-ON"
texture "kfc200.rgb"
texrep 1 1
crease 30.000000
numvert 4
0.004285 0.002148 -0.026163
0.004285 -0.003118 -0.026163
0.004285 -0.003118 -0.03787
0.004285 0.002148 -0.03787
numsurf 1
SURF 0x00
mat 0
refs 4
3 0.817042410374 0.923746824265
0 0.766719996929 0.923746824265
1 0.766719996929 0.901113212109
2 0.817042410374 0.901113212109
kids 0
OBJECT poly
name "CPLD-ON"
texture "kfc200.rgb"
texrep 1 1
crease 30.000000
numvert 4
0.004285 0.002148 0.005991
0.004285 -0.003118 0.005991
0.004285 -0.003118 -0.005716
0.004285 0.002148 -0.005716
numsurf 1
SURF 0x00
mat 0
refs 4
3 0.67882424593 0.923746824265
0 0.628501951694 0.923746824265
1 0.628501951694 0.901113212109
2 0.67882424593 0.901113212109
kids 0
OBJECT poly
name "GS-ON"
texture "kfc200.rgb"
texrep 1 1
crease 30.000000
numvert 4
0.004285 0.002148 -0.021732
0.004285 -0.003118 -0.021732
0.004285 -0.003118 -0.010026
0.004285 0.002148 -0.010026
numsurf 1
SURF 0x00
mat 0
refs 4
0 0.747672617435 0.923746824265
3 0.697350203991 0.923746824265
2 0.697350203991 0.901113212109
1 0.747672617435 0.901113212109
kids 0

View file

@ -0,0 +1,175 @@
<?xml version="1.0"?>
<!--
KA 285 Mode Annunciator Panel
Syd Adams
-->
<PropertyList>
<path>fd-annun.ac</path>
<animation>
<type>material</type>
<object-name>FD-annun</object-name>
<emission>
<red>0.7</red>
<green>0.5</green>
<blue>0.3</blue>
<factor-prop>/systems/electrical/outputs/instrument-lights</factor-prop>
</emission>
</animation>
<animation>
<type>select</type>
<object-name>FD-ON</object-name>
<condition>
<property>/instrumentation/kfc200/fd-on</property>
</condition>
</animation>
<animation>
<type>select</type>
<object-name>NAV-ON</object-name>
<condition>
<or>
<equals>
<property>/instrumentation/kfc200/lnav</property>
<value>2</value>
</equals>
<equals>
<property>/instrumentation/kfc200/lnav</property>
<value>3</value>
</equals>
</or>
</condition>
</animation>
<animation>
<type>select</type>
<object-name>ARM-ON</object-name>
<condition>
<property>/instrumentation/kfc200/armed</property>
</condition>
</animation>
<animation>
<type>select</type>
<object-name>CPLD-ON</object-name>
<condition>
<property>/instrumentation/kfc200/cpld</property>
</condition>
</animation>
<animation>
<type>select</type>
<object-name>HDG-ON</object-name>
<condition>
<equals>
<property>autopilot/locks/heading</property>
<value>dg-heading-hold</value>
</equals>
</condition>
</animation>
<animation>
<type>select</type>
<object-name>APPR-ON</object-name>
<condition>
<or>
<equals>
<property>/instrumentation/kfc200/lnav</property>
<value>4</value>
</equals>
<equals>
<property>/instrumentation/kfc200/lnav</property>
<value>5</value>
</equals>
</or>
</condition>
</animation>
<animation>
<type>select</type>
<object-name>GS-ON</object-name>
<condition>
<equals>
<property>autopilot/locks/altitude</property>
<value>gs1-hold</value>
</equals>
</condition>
</animation>
<animation>
<type>select</type>
<object-name>GA-ON</object-name>
<condition>
<equals>
<property>/instrumentation/kfc200/lnav</property>
<value>10</value>
</equals>
</condition>
</animation>
<animation>
<type>select</type>
<object-name>ALT-ON</object-name>
<condition>
<equals>
<property>autopilot/locks/altitude</property>
<value>altitude-hold</value>
</equals>
</condition>
</animation>
<animation>
<type>select</type>
<object-name>AP-ON</object-name>
<condition>
<not>
<property>/autopilot/locks/passive-mode</property>
</not>
</condition>
</animation>
<animation>
<type>select</type>
<object-name>BC-ON</object-name>
<condition>
<property>/instrumentation/nav/back-course-btn</property>
</condition>
</animation>
<animation>
<type>select</type>
<object-name>O-ON</object-name>
<condition>
<property>/instrumentation/marker-beacon/outer</property>
</condition>
</animation>
<animation>
<type>select</type>
<object-name>M-ON</object-name>
<condition>
<property>/instrumentation/marker-beacon/middle</property>
</condition>
</animation>
<animation>
<type>select</type>
<object-name>A-ON</object-name>
<condition>
<property>/instrumentation/kfc200/alert</property>
</condition>
</animation>
<animation>
<type>select</type>
<object-name>TRIM-ON</object-name>
<condition>
<property>/instrumentation/kfc200/trim-fail</property>
</condition>
</animation>
</PropertyList>

View file

@ -0,0 +1,714 @@
AC3Db
MATERIAL "metal" rgb 1 1 1 amb 0.2 0.2 0.2 emis 0 0 0 spec 1 1 1 shi 32 trans 0
OBJECT world
kids 12
OBJECT poly
name "PitchToggle"
texture "kfc200.rgb"
texrep 1 1
crease 30.000000
numvert 12
0.005447 -0.000516 0.054266
0.005447 -0.000516 0.039118
0.004439 -0.000516 0.054266
0.004439 -0.000516 0.039118
0.010363 0.015024 0.054266
0.010363 -0.016056 0.054266
0.010363 -0.016056 0.039118
0.010363 0.015024 0.039118
0.004439 0.017662 0.054266
0.004439 -0.018694 0.054266
0.004439 -0.018694 0.039118
0.004439 0.017662 0.039118
numsurf 8
SURF 0x00
mat 0
refs 4
0 0.517946064472 0.762528419495
4 0.517946064472 0.73246049881
8 0.548013985157 0.73246049881
2 0.548013985157 0.762528419495
SURF 0x00
mat 0
refs 4
5 0.517946064472 0.762528419495
0 0.517946064472 0.73246049881
2 0.548013985157 0.73246049881
9 0.548013985157 0.762528419495
SURF 0x00
mat 0
refs 4
1 0.517946064472 0.762528419495
6 0.517946064472 0.73246049881
10 0.548013985157 0.73246049881
3 0.548013985157 0.762528419495
SURF 0x00
mat 0
refs 4
7 0.517946064472 0.762528419495
1 0.517946064472 0.73246049881
3 0.548013985157 0.73246049881
11 0.548013985157 0.762528419495
SURF 0x00
mat 0
refs 4
0 0.517946064472 0.762528419495
5 0.517946064472 0.73246049881
6 0.548013985157 0.73246049881
1 0.548013985157 0.762528419495
SURF 0x00
mat 0
refs 4
4 0.517946064472 0.762528419495
0 0.517946064472 0.73246049881
1 0.548013985157 0.73246049881
7 0.548013985157 0.762528419495
SURF 0x00
mat 0
refs 4
7 0.517946064472 0.762528419495
11 0.517946064472 0.73246049881
8 0.548013985157 0.73246049881
4 0.548013985157 0.762528419495
SURF 0x00
mat 0
refs 4
10 0.517946064472 0.762528419495
6 0.517946064472 0.73246049881
5 0.548013985157 0.73246049881
9 0.548013985157 0.762528419495
kids 0
OBJECT poly
name "APPR.btn"
texture "kfc200.rgb"
texrep 1 1
crease 30.000000
numvert 8
0.006368 -0.01082 -0.013205
0.006368 -0.021694 -0.013205
0.006368 -0.021694 -0.02684
0.006368 -0.01082 -0.02684
0.004439 -0.010216 -0.012448
0.004439 -0.022298 -0.012448
0.004439 -0.022298 -0.027597
0.004439 -0.010216 -0.027597
numsurf 5
SURF 0x00
mat 0
refs 4
4 0.542991161346 0.749106705189
0 0.542991161346 0.782164275646
3 0.509610176086 0.782164275646
7 0.509610176086 0.749106705189
SURF 0x00
mat 0
refs 4
0 0.542991161346 0.749106705189
4 0.542991161346 0.782164275646
5 0.509610176086 0.782164275646
1 0.509610176086 0.749106705189
SURF 0x00
mat 0
refs 4
6 0.509610176086 0.782164275646
2 0.509610176086 0.749106705189
1 0.542991161346 0.749106705189
5 0.542991161346 0.782164275646
SURF 0x00
mat 0
refs 4
7 0.509610176086 0.782164275646
3 0.509610176086 0.749106705189
2 0.542991161346 0.749106705189
6 0.542991161346 0.782164275646
SURF 0x00
mat 0
refs 4
3 0.509610176086 0.782164275646
0 0.509610176086 0.749106705189
1 0.542991161346 0.749106705189
2 0.542991161346 0.782164275646
kids 0
OBJECT poly
name "HDG.btn"
texture "kfc200.rgb"
texrep 1 1
crease 30.000000
numvert 8
0.006368 0.017165 0.026773
0.006368 0.006291 0.026773
0.006368 0.006291 0.013139
0.006368 0.017165 0.013139
0.004439 0.017769 0.02753
0.004439 0.005687 0.02753
0.004439 0.005687 0.012382
0.004439 0.017769 0.012382
numsurf 5
SURF 0x00
mat 0
refs 4
4 0.542991161346 0.749106705189
0 0.542991161346 0.782164275646
3 0.509610176086 0.782164275646
7 0.509610176086 0.749106705189
SURF 0x00
mat 0
refs 4
0 0.542991161346 0.749106705189
4 0.542991161346 0.782164275646
5 0.509610176086 0.782164275646
1 0.509610176086 0.749106705189
SURF 0x00
mat 0
refs 4
6 0.509610176086 0.782164275646
2 0.509610176086 0.749106705189
1 0.542991161346 0.749106705189
5 0.542991161346 0.782164275646
SURF 0x00
mat 0
refs 4
7 0.509610176086 0.782164275646
3 0.509610176086 0.749106705189
2 0.542991161346 0.749106705189
6 0.542991161346 0.782164275646
SURF 0x00
mat 0
refs 4
3 0.509610176086 0.782164275646
0 0.509610176086 0.749106705189
1 0.542991161346 0.749106705189
2 0.542991161346 0.782164275646
kids 0
OBJECT poly
name "BC.btn"
texture "kfc200.rgb"
texrep 1 1
crease 30.000000
numvert 8
0.006368 -0.01082 0.007034
0.006368 -0.021694 0.007034
0.006368 -0.021694 -0.0066
0.006368 -0.01082 -0.0066
0.004439 -0.010216 0.007791
0.004439 -0.022298 0.007791
0.004439 -0.022298 -0.007357
0.004439 -0.010216 -0.007357
numsurf 5
SURF 0x00
mat 0
refs 4
4 0.542991161346 0.749106705189
0 0.542991161346 0.782164275646
3 0.509610176086 0.782164275646
7 0.509610176086 0.749106705189
SURF 0x00
mat 0
refs 4
0 0.542991161346 0.749106705189
4 0.542991161346 0.782164275646
5 0.509610176086 0.782164275646
1 0.509610176086 0.749106705189
SURF 0x00
mat 0
refs 4
6 0.509610176086 0.782164275646
2 0.509610176086 0.749106705189
1 0.542991161346 0.749106705189
5 0.542991161346 0.782164275646
SURF 0x00
mat 0
refs 4
7 0.509610176086 0.782164275646
3 0.509610176086 0.749106705189
2 0.542991161346 0.749106705189
6 0.542991161346 0.782164275646
SURF 0x00
mat 0
refs 4
3 0.509610176086 0.782164275646
0 0.509610176086 0.749106705189
1 0.542991161346 0.749106705189
2 0.542991161346 0.782164275646
kids 0
OBJECT poly
name "Pitch.down"
texture "kfc200.rgb"
texrep 1 1
crease 30.000000
numvert 4
0.004439 -0.000516 0.054247
0.004439 -0.000516 0.039137
0.004439 0.01762 0.054247
0.004439 0.01762 0.039137
numsurf 1
SURF 0x00
mat 0
refs 4
2 0.503951311111 0.726048648357
0 0.503951311111 0.686451256275
1 0.543548703194 0.686451256275
3 0.543548703194 0.726048648357
kids 0
OBJECT poly
name "Plane"
crease 30.000000
numvert 0
numsurf 0
kids 0
OBJECT poly
name "FD.btn"
texture "kfc200.rgb"
texrep 1 1
crease 30.000000
numvert 8
0.006368 0.017165 0.006784
0.006368 0.006291 0.006784
0.006368 0.006291 -0.00685
0.006368 0.017165 -0.00685
0.004439 0.017769 0.007541
0.004439 0.005687 0.007541
0.004439 0.005687 -0.007607
0.004439 0.017769 -0.007607
numsurf 5
SURF 0x00
mat 0
refs 4
4 0.542991161346 0.749106705189
0 0.542991161346 0.782164275646
3 0.509610176086 0.782164275646
7 0.509610176086 0.749106705189
SURF 0x00
mat 0
refs 4
0 0.542991161346 0.749106705189
4 0.542991161346 0.782164275646
5 0.509610176086 0.782164275646
1 0.509610176086 0.749106705189
SURF 0x00
mat 0
refs 4
6 0.509610176086 0.782164275646
2 0.509610176086 0.749106705189
1 0.542991161346 0.749106705189
5 0.542991161346 0.782164275646
SURF 0x00
mat 0
refs 4
7 0.509610176086 0.782164275646
3 0.509610176086 0.749106705189
2 0.542991161346 0.749106705189
6 0.542991161346 0.782164275646
SURF 0x00
mat 0
refs 4
3 0.509610176086 0.782164275646
0 0.509610176086 0.749106705189
1 0.542991161346 0.749106705189
2 0.542991161346 0.782164275646
kids 0
OBJECT poly
name "FDbase"
texture "kfc200.rgb"
texrep 1 1
crease 30.000000
numvert 8
9.5e-05 0.029311 -0.059503
9.5e-05 -0.029344 -0.059503
9.5e-05 -0.029344 0.059532
9.5e-05 0.029311 0.059532
0.004367 0.029311 -0.059503
0.004367 -0.029344 -0.059503
0.004367 -0.029344 0.059532
0.004367 0.029311 0.059532
numsurf 5
SURF 0x00
mat 0
refs 4
4 0.904559373856 0.84440433979
7 0.477707833052 0.844404459
6 0.477707713842 0.634072244167
5 0.904559135437 0.634072005749
SURF 0x00
mat 0
refs 4
0 0.407198339701 0.838163256645
4 0.407198339701 0.81044459343
5 0.434916943312 0.81044459343
1 0.434916943312 0.838163256645
SURF 0x00
mat 0
refs 4
1 0.407198339701 0.838163256645
5 0.407198339701 0.81044459343
6 0.434916943312 0.81044459343
2 0.434916943312 0.838163256645
SURF 0x00
mat 0
refs 4
2 0.407198339701 0.838163256645
6 0.407198339701 0.81044459343
7 0.434916943312 0.81044459343
3 0.434916943312 0.838163256645
SURF 0x00
mat 0
refs 4
4 0.407198339701 0.838163256645
0 0.407198339701 0.81044459343
3 0.434916943312 0.81044459343
7 0.434916943312 0.838163256645
kids 0
OBJECT poly
name "Pitch.up"
texture "kfc200.rgb"
texrep 1 1
crease 30.000000
numvert 4
0.004439 -0.000516 0.054247
0.004439 -0.000516 0.039137
0.004439 -0.018652 0.054247
0.004439 -0.018652 0.039137
numsurf 1
SURF 0x00
mat 0
refs 4
0 0.503767073154 0.729045391083
2 0.503767073154 0.689704537392
3 0.543107926846 0.689704537392
1 0.543107926846 0.729045391083
kids 0
OBJECT poly
name "NAV.btn"
texture "kfc200.rgb"
texrep 1 1
crease 30.000000
numvert 8
0.004439 -0.010216 0.012382
0.004439 -0.022298 0.012382
0.004439 -0.022298 0.02753
0.004439 -0.010216 0.02753
0.006368 -0.01082 0.013139
0.006368 -0.021694 0.013139
0.006368 -0.021694 0.026773
0.006368 -0.01082 0.026773
numsurf 5
SURF 0x00
mat 0
refs 4
4 0.509610176086 0.782164275646
7 0.509610176086 0.749106705189
6 0.542991161346 0.749106705189
5 0.542991161346 0.782164275646
SURF 0x00
mat 0
refs 4
0 0.509610176086 0.782164275646
4 0.509610176086 0.749106705189
5 0.542991161346 0.749106705189
1 0.542991161346 0.782164275646
SURF 0x00
mat 0
refs 4
1 0.509610176086 0.782164275646
5 0.509610176086 0.749106705189
6 0.542991161346 0.749106705189
2 0.542991161346 0.782164275646
SURF 0x00
mat 0
refs 4
2 0.509610176086 0.782164275646
6 0.509610176086 0.749106705189
7 0.542991161346 0.749106705189
3 0.542991161346 0.782164275646
SURF 0x00
mat 0
refs 4
4 0.509610176086 0.782164275646
0 0.509610176086 0.749106705189
3 0.542991161346 0.749106705189
7 0.542991161346 0.782164275646
kids 0
OBJECT poly
name "ALT.btn"
texture "kfc200.rgb"
texrep 1 1
crease 30.000000
numvert 8
0.004439 0.017769 -0.028096
0.004439 0.005687 -0.028096
0.004439 0.005687 -0.012948
0.004439 0.017769 -0.012948
0.006368 0.017165 -0.027339
0.006368 0.006291 -0.027339
0.006368 0.006291 -0.013705
0.006368 0.017165 -0.013705
numsurf 5
SURF 0x00
mat 0
refs 4
4 0.509610176086 0.782164275646
7 0.509610176086 0.749106705189
6 0.542991161346 0.749106705189
5 0.542991161346 0.782164275646
SURF 0x00
mat 0
refs 4
0 0.509610176086 0.782164275646
4 0.509610176086 0.749106705189
5 0.542991161346 0.749106705189
1 0.542991161346 0.782164275646
SURF 0x00
mat 0
refs 4
1 0.509610176086 0.782164275646
5 0.509610176086 0.749106705189
6 0.542991161346 0.749106705189
2 0.542991161346 0.782164275646
SURF 0x00
mat 0
refs 4
2 0.509610176086 0.782164275646
6 0.509610176086 0.749106705189
7 0.542991161346 0.749106705189
3 0.542991161346 0.782164275646
SURF 0x00
mat 0
refs 4
4 0.509610176086 0.782164275646
0 0.509610176086 0.749106705189
3 0.542991161346 0.749106705189
7 0.542991161346 0.782164275646
kids 0
OBJECT poly
name "APtoggle"
texture "kfc200.rgb"
texrep 1 1
crease 30.000000
numvert 26
0.005934 0.007089 -0.052557
0.007697 0.005245 -0.052557
0.008622 0.002868 -0.052557
0.008566 0.000318 -0.052557
0.007539 -0.002018 -0.052557
0.005696 -0.003781 -0.052557
0.003318 -0.004706 -0.052557
-0.001329 0.007247 -0.052557
0.001048 0.008172 -0.052557
0.003598 0.008116 -0.052557
0.005934 0.007089 -0.039439
0.007697 0.005245 -0.039439
0.008622 0.002868 -0.039439
0.008566 0.000318 -0.039439
0.007539 -0.002018 -0.039439
0.005696 -0.003781 -0.039439
0.003318 -0.004706 -0.039439
-0.001329 0.007247 -0.039439
0.001048 0.008172 -0.039439
0.003598 0.008116 -0.039439
0.002183 0.001733 -0.052557
0.002183 0.001733 -0.039439
0.017077 0.006153 -0.052557
0.017077 0.006153 -0.039439
0.016208 0.008379 -0.052557
0.016208 0.008379 -0.039439
numsurf 31
SURF 0x10
mat 0
refs 3
20 0.507779479027 0.760139346123
0 0.507779479027 0.725842237473
1 0.542076587677 0.725842237473
SURF 0x10
mat 0
refs 3
21 0.507779479027 0.760139346123
11 0.507779479027 0.725842237473
10 0.542076587677 0.725842237473
SURF 0x10
mat 0
refs 3
20 0.507779479027 0.760139346123
1 0.507779479027 0.725842237473
2 0.542076587677 0.725842237473
SURF 0x10
mat 0
refs 3
21 0.507779479027 0.760139346123
12 0.507779479027 0.725842237473
11 0.542076587677 0.725842237473
SURF 0x10
mat 0
refs 3
20 0.507779479027 0.760139346123
2 0.507779479027 0.725842237473
3 0.542076587677 0.725842237473
SURF 0x10
mat 0
refs 3
21 0.507779479027 0.760139346123
13 0.507779479027 0.725842237473
12 0.542076587677 0.725842237473
SURF 0x10
mat 0
refs 3
20 0.507779479027 0.760139346123
3 0.507779479027 0.725842237473
4 0.542076587677 0.725842237473
SURF 0x10
mat 0
refs 3
21 0.507779479027 0.760139346123
14 0.507779479027 0.725842237473
13 0.542076587677 0.725842237473
SURF 0x10
mat 0
refs 3
20 0.507779479027 0.760139346123
4 0.507779479027 0.725842237473
5 0.542076587677 0.725842237473
SURF 0x10
mat 0
refs 3
21 0.507779479027 0.760139346123
15 0.507779479027 0.725842237473
14 0.542076587677 0.725842237473
SURF 0x10
mat 0
refs 3
20 0.507779479027 0.760139346123
5 0.507779479027 0.725842237473
6 0.542076587677 0.725842237473
SURF 0x10
mat 0
refs 3
21 0.507779479027 0.760139346123
16 0.507779479027 0.725842237473
15 0.542076587677 0.725842237473
SURF 0x10
mat 0
refs 3
20 0.507779479027 0.760139346123
7 0.507779479027 0.725842237473
8 0.542076587677 0.725842237473
SURF 0x10
mat 0
refs 3
21 0.507779479027 0.760139346123
18 0.507779479027 0.725842237473
17 0.542076587677 0.725842237473
SURF 0x10
mat 0
refs 3
20 0.507779479027 0.760139346123
8 0.507779479027 0.725842237473
9 0.542076587677 0.725842237473
SURF 0x10
mat 0
refs 3
21 0.507779479027 0.760139346123
19 0.507779479027 0.725842237473
18 0.542076587677 0.725842237473
SURF 0x10
mat 0
refs 3
9 0.507779479027 0.760139346123
0 0.507779479027 0.725842237473
20 0.542076587677 0.725842237473
SURF 0x10
mat 0
refs 3
21 0.507779479027 0.760139346123
10 0.507779479027 0.725842237473
19 0.542076587677 0.725842237473
SURF 0x10
mat 0
refs 4
0 0.507779479027 0.760139346123
10 0.507779479027 0.725842237473
11 0.542076587677 0.725842237473
1 0.542076587677 0.760139346123
SURF 0x10
mat 0
refs 4
2 0.507779479027 0.760139346123
12 0.507779479027 0.725842237473
13 0.542076587677 0.725842237473
3 0.542076587677 0.760139346123
SURF 0x10
mat 0
refs 4
3 0.507779479027 0.760139346123
13 0.507779479027 0.725842237473
14 0.542076587677 0.725842237473
4 0.542076587677 0.760139346123
SURF 0x10
mat 0
refs 4
4 0.507779479027 0.760139346123
14 0.507779479027 0.725842237473
15 0.542076587677 0.725842237473
5 0.542076587677 0.760139346123
SURF 0x10
mat 0
refs 4
5 0.507779479027 0.760139346123
15 0.507779479027 0.725842237473
16 0.542076587677 0.725842237473
6 0.542076587677 0.760139346123
SURF 0x10
mat 0
refs 4
7 0.507779479027 0.760139346123
17 0.507779479027 0.725842237473
18 0.542076587677 0.725842237473
8 0.542076587677 0.760139346123
SURF 0x10
mat 0
refs 4
8 0.507779479027 0.760139346123
18 0.507779479027 0.725842237473
19 0.542076587677 0.725842237473
9 0.542076587677 0.760139346123
SURF 0x10
mat 0
refs 4
10 0.507779479027 0.760139346123
0 0.507779479027 0.725842237473
9 0.542076587677 0.725842237473
19 0.542076587677 0.760139346123
SURF 0x10
mat 0
refs 4
12 0.507779479027 0.760139346123
2 0.507779479027 0.725842237473
22 0.542076587677 0.725842237473
23 0.542076587677 0.760139346123
SURF 0x10
mat 0
refs 4
1 0.507779479027 0.760139346123
11 0.507779479027 0.725842237473
25 0.542076587677 0.725842237473
24 0.542076587677 0.760139346123
SURF 0x10
mat 0
refs 4
11 0.507779479027 0.760139346123
12 0.507779479027 0.725842237473
23 0.542076587677 0.725842237473
25 0.542076587677 0.760139346123
SURF 0x10
mat 0
refs 4
2 0.507779479027 0.760139346123
1 0.507779479027 0.725842237473
24 0.542076587677 0.725842237473
22 0.542076587677 0.760139346123
SURF 0x10
mat 0
refs 4
22 0.642654716969 0.748234629631
24 0.642654716969 0.728802919388
25 0.666600644588 0.728802919388
23 0.666600644588 0.748234629631
kids 0

View file

@ -0,0 +1,198 @@
<?xml version="1.0"?>
<!--
KFC-200 FlightDirector / Autopilot Controller
Syd Adams
-->
<PropertyList>
<path>fd-control.ac</path>
<animation>
<type>material</type>
<object-name>FDbase</object-name>
<emission>
<red>0.028</red>
<green>0.014</green>
<blue>0.007</blue>
<factor-prop>systems/electrical/outputs/instrument-lights</factor-prop>
</emission>
</animation>
<!--
<animation>
<type>pick</type>
<object-name>Pitch.down</object-name>
<condition>
<not-equals>
<property>/autopilot/locks/altitude</property>
<value></value>
</not-equals>
</condition>
<action>
<button>0</button>
<repeatable>true</repeatable>
<interval-sec>0.1</interval-sec>
<binding>
<command>property-adjust</command>
<property>/autopilot/settings/target-pitch-deg</property>
<step>-0.05</step>
<min>-15.0</min>
<max>15.0</max>
<wrap>false</wrap>
</binding>
</action>
</animation>
<animation>
<type>pick</type>
<object-name>Pitch.up</object-name>
<condition>
<not-equals>
<property>/autopilot/locks/altitude</property>
<value></value>
</not-equals>
</condition>
<action>
<button>0</button>
<repeatable>true</repeatable>
<interval-sec>0.1</interval-sec>
<binding>
<command>property-adjust</command>
<property>/autopilot/settings/target-pitch-deg</property>
<step>0.05</step>
<min>-15.0</min>
<max>15.0</max>
<wrap>false</wrap>
</binding>
</action>
</animation>
<animation>
<type>pick</type>
<object-name>HDG.btn</object-name>
<action>
<button>0</button>
<repeatable>false</repeatable>
<binding>
<command>nasal</command>
<script>
if(getprop("/instrumentation/kfc200/fdmode") != "hdg"){
setprop("/instrumentation/kfc200/fdmode","hdg");}
else{setprop("/instrumentation/kfc200/fdmode","off");}
</script>
</binding>
</action>
</animation>
<animation>
<type>pick</type>
<object-name>FD.btn</object-name>
<action>
<button>0</button>
<repeatable>false</repeatable>
<binding>
<command>property-toggle</command>
<property>/instrumentation/kfc200/fd-on</property>
</binding>
</action>
</animation>
<animation>
<type>pick</type>
<object-name>ALT.btn</object-name>
<action>
<button>0</button>
<repeatable>false</repeatable>
<binding>
<command>nasal</command>
<script>
if(getprop("/instrumentation/kfc200/fdmodeV") != "alt-arm"){
setprop("/instrumentation/kfc200/fdmodeV","alt-arm");}
else{setprop("/instrumentation/kfc200/fdmodeV","off");}
</script>
</binding>
</action>
</animation>
<animation>
<type>pick</type>
<object-name>NAV.btn</object-name>
<action>
<button>0</button>
<repeatable>false</repeatable>
<binding>
<command>nasal</command>
<script>
if(getprop("/instrumentation/kfc200/fdmode") != "nav-arm"){
setprop("/instrumentation/kfc200/fdmode","nav-arm");}
else{setprop("/instrumentation/kfc200/fdmode","off");}
</script>
</binding>
</action>
</animation>
<animation>
<type>pick</type>
<object-name>BC.btn</object-name>
<action>
<button>0</button>
<repeatable>false</repeatable>
<binding>
<command>nasal</command>
<script>
if(getprop("/instrumentation/kfc200/fdmode") != "bc"){
setprop("/instrumentation/kfc200/fdmode","bc");}
else{setprop("/instrumentation/kfc200/fdmode","off");}
</script>
</binding>
</action>
</animation>
<animation>
<type>pick</type>
<object-name>APPR.btn</object-name>
<action>
<button>0</button>
<repeatable>false</repeatable>
<binding>
<command>nasal</command>
<script>
if(getprop("/instrumentation/kfc200/fdmode") != "appr"){
setprop("/instrumentation/kfc200/fdmode","appr");}
else{setprop("/instrumentation/kfc200/fdmode","off");}
</script>
</binding>
</action>
</animation>
<animation>
<type>pick</type>
<object-name>APtoggle</object-name>
<action>
<button>0</button>
<repeatable>false</repeatable>
<binding>
<command>property-toggle</command>
<property>/autopilot/locks/passive-mode</property>
</binding>
</action>
</animation>
-->
<animation>
<type>rotate</type>
<object-name>APtoggle</object-name>
<property>/autopilot/locks/passive-mode</property>
<factor>40</factor>
<axis>
<x>0.0</x>
<y>1.0</y>
<z>0.0</z>
</axis>
<center>
<x-m>0.002</x-m>
<y-m>0.046</y-m>
<z-m>0.002</z-m>
</center>
</animation>
</PropertyList>

Binary file not shown.

View file

@ -0,0 +1,649 @@
AC3Db
MATERIAL "DefaultWhite" rgb 1 1 1 amb 1 1 1 emis 0 0 0 spec 0.5 0.5 0.5 shi 64 trans 0
MATERIAL "metal" rgb 1 1 1 amb 0 0 0 emis 0 0 0 spec 0.755939 0.755939 0.755939 shi 32 trans 0
MATERIAL "illum" rgb 1 1 1 amb 0 0 0 emis 0.4 0.4 0.4 spec 0.5 0.5 0.5 shi 32 trans 0
MATERIAL "led" rgb 1 1 1 amb 0 0 0 emis 0.9 0.9 0.9 spec 0 0 0 shi 32 trans 0
OBJECT world
kids 13
OBJECT poly
name "Alt.increase"
data 6
Circle
texture "kas297.rgb"
texrep 1 1
crease 30.000000
numvert 4
0.001909 0.003508 -0.027819
0.001909 -0.004004 -0.027819
0.001909 -0.007759 -0.021314
0.001909 0.007263 -0.021314
numsurf 1
SURF 0x10
mat 1
refs 4
0 0.191024214029 0.863663256168
3 0.254288256168 0.863663256168
2 0.254288256168 0.800399184227
1 0.191024214029 0.800399184227
kids 0
OBJECT poly
name "Alt.decrease"
data 10
Circle.001
texture "kas297.rgb"
texrep 1 1
crease 30.000000
numvert 4
0.001909 0.007263 -0.021314
0.001909 0.003508 -0.014809
0.001909 -0.004004 -0.014809
0.001909 -0.007759 -0.021314
numsurf 1
SURF 0x10
mat 1
refs 4
3 0.223378121853 0.796153068542
0 0.128184348345 0.796153068542
1 0.128184348345 0.891346871853
2 0.223378121853 0.891346871853
kids 0
OBJECT poly
name "Display"
data 4
Mesh
texture "kas297.rgb"
texrep 1 1
crease 30.000000
numvert 4
0.001347 0.01115 0.017398
0.001347 -0.004529 0.017398
0.001347 -0.004529 -0.014807
0.001347 0.01115 -0.014807
numsurf 1
SURF 0x00
mat 2
refs 4
3 0.259085595608 0.683385789394
0 0.131304383278 0.683385848999
1 0.131304353476 0.621174097061
2 0.259085536003 0.621174037457
kids 0
OBJECT poly
name "altmsg.004"
data 8
Mesh.001
texture "kas297.rgb"
texrep 1 1
crease 30.000000
numvert 4
0.001514 0.008404 -0.008098
0.001514 0.000694 -0.006926
0.001514 0.000694 -0.011749
0.001514 0.008404 -0.012921
numsurf 1
SURF 0x00
mat 3
refs 4
3 0.978541493416 0.101732596755
0 0.921992182732 0.10173265636
1 0.922260224819 0.011345628649
2 0.978809595108 0.0113455690444
kids 0
OBJECT poly
name "altmsg.003"
data 8
Mesh.002
texture "kas297.rgb"
texrep 1 1
crease 30.000000
numvert 4
0.001514 0.008404 -0.002857
0.001514 0.000694 -0.001685
0.001514 0.000694 -0.006508
0.001514 0.008404 -0.00768
numsurf 1
SURF 0x00
mat 3
refs 4
3 0.978541493416 0.101732596755
0 0.921992182732 0.10173265636
1 0.922260224819 0.011345628649
2 0.978809595108 0.0113455690444
kids 0
OBJECT poly
name "altmsg.002"
data 8
Mesh.003
texture "kas297.rgb"
texrep 1 1
crease 30.000000
numvert 4
0.001514 0.008404 0.002384
0.001514 0.000694 0.003556
0.001514 0.000694 -0.001267
0.001514 0.008404 -0.002439
numsurf 1
SURF 0x00
mat 3
refs 4
3 0.978541493416 0.101732596755
0 0.921992182732 0.10173265636
1 0.922260224819 0.011345628649
2 0.978809595108 0.0113455690444
kids 0
OBJECT poly
name "altmsg.001"
data 8
Mesh.004
texture "kas297.rgb"
texrep 1 1
crease 30.000000
numvert 4
0.001514 0.008404 0.008429
0.001514 0.000694 0.009602
0.001514 0.000694 0.004778
0.001514 0.008404 0.003606
numsurf 1
SURF 0x00
mat 3
refs 4
3 0.978541493416 0.101732596755
0 0.921992182732 0.10173265636
1 0.922260224819 0.011345628649
2 0.978809595108 0.0113455690444
kids 0
OBJECT poly
name "Set.knob"
data 8
Mesh.010
texture "kas297.rgb"
texrep 1 1
crease 30.000000
numvert 33
0.007698 -0.000248 -0.021314
0.007698 0.004631 -0.023335
0.007698 0.005033 -0.021315
0.007698 0.004631 -0.019294
0.007698 0.003486 -0.01758
0.007698 0.001773 -0.016436
0.007698 -0.000248 -0.016034
0.007698 -0.002269 -0.016436
0.007698 -0.003982 -0.01758
0.007698 -0.005127 -0.019294
0.007698 -0.005529 -0.021314
0.007698 -0.005127 -0.023335
0.007698 -0.003982 -0.025049
0.007698 -0.002269 -0.026193
0.007698 -0.000248 -0.026595
0.007698 0.001773 -0.026193
0.007698 0.003486 -0.025049
0.001909 0.004631 -0.023335
0.001909 0.005033 -0.021314
0.001909 0.004631 -0.019294
0.001909 0.003486 -0.01758
0.001909 0.001773 -0.016436
0.001909 -0.000248 -0.016034
0.001909 -0.002269 -0.016436
0.001909 -0.003982 -0.01758
0.001909 -0.005127 -0.019294
0.001909 -0.005529 -0.021314
0.001909 -0.005127 -0.023335
0.001909 -0.003982 -0.025049
0.001909 -0.002269 -0.026193
0.001909 -0.000248 -0.026595
0.001909 0.001773 -0.026193
0.001909 0.003486 -0.025049
numsurf 32
SURF 0x00
mat 1
refs 4
16 0.434804230928 0.0668970048428
32 0.434804230928 0.019956022501
17 0.48174521327 0.019956022501
1 0.48174521327 0.0668970048428
SURF 0x00
mat 1
refs 4
18 0.434804230928 0.0668970048428
2 0.434804230928 0.019956022501
1 0.48174521327 0.019956022501
17 0.48174521327 0.0668970048428
SURF 0x00
mat 1
refs 4
19 0.434804230928 0.0668970048428
3 0.434804230928 0.019956022501
2 0.48174521327 0.019956022501
18 0.48174521327 0.0668970048428
SURF 0x00
mat 1
refs 4
20 0.434804230928 0.0668970048428
4 0.434804230928 0.019956022501
3 0.48174521327 0.019956022501
19 0.48174521327 0.0668970048428
SURF 0x00
mat 1
refs 4
21 0.434804230928 0.0668970048428
5 0.434804230928 0.019956022501
4 0.48174521327 0.019956022501
20 0.48174521327 0.0668970048428
SURF 0x00
mat 1
refs 4
22 0.434804230928 0.0668970048428
6 0.434804230928 0.019956022501
5 0.48174521327 0.019956022501
21 0.48174521327 0.0668970048428
SURF 0x00
mat 1
refs 4
23 0.434804230928 0.0668970048428
7 0.434804230928 0.019956022501
6 0.48174521327 0.019956022501
22 0.48174521327 0.0668970048428
SURF 0x00
mat 1
refs 4
24 0.434804230928 0.0668970048428
8 0.434804230928 0.019956022501
7 0.48174521327 0.019956022501
23 0.48174521327 0.0668970048428
SURF 0x00
mat 1
refs 4
25 0.434804230928 0.0668970048428
9 0.434804230928 0.019956022501
8 0.48174521327 0.019956022501
24 0.48174521327 0.0668970048428
SURF 0x00
mat 1
refs 4
26 0.434804230928 0.0668970048428
10 0.434804230928 0.019956022501
9 0.48174521327 0.019956022501
25 0.48174521327 0.0668970048428
SURF 0x00
mat 1
refs 4
27 0.434804230928 0.0668970048428
11 0.434804230928 0.019956022501
10 0.48174521327 0.019956022501
26 0.48174521327 0.0668970048428
SURF 0x00
mat 1
refs 4
28 0.434804230928 0.0668970048428
12 0.434804230928 0.019956022501
11 0.48174521327 0.019956022501
27 0.48174521327 0.0668970048428
SURF 0x00
mat 1
refs 4
29 0.434804230928 0.0668970048428
13 0.434804230928 0.019956022501
12 0.48174521327 0.019956022501
28 0.48174521327 0.0668970048428
SURF 0x00
mat 1
refs 4
30 0.434804230928 0.0668970048428
14 0.434804230928 0.019956022501
13 0.48174521327 0.019956022501
29 0.48174521327 0.0668970048428
SURF 0x00
mat 1
refs 4
31 0.434804230928 0.0668970048428
15 0.434804230928 0.019956022501
14 0.48174521327 0.019956022501
30 0.48174521327 0.0668970048428
SURF 0x00
mat 1
refs 4
32 0.434804230928 0.0668970048428
16 0.434804230928 0.019956022501
15 0.48174521327 0.019956022501
31 0.48174521327 0.0668970048428
SURF 0x00
mat 1
refs 3
0 0.58484518528 0.117530435324
16 0.648551821709 0.181237071753
1 0.619323253632 0.20076712966
SURF 0x00
mat 1
refs 3
0 0.58484518528 0.117530435324
1 0.619323253632 0.20076712966
2 0.584845423698 0.207625299692
SURF 0x00
mat 1
refs 3
0 0.58484518528 0.117530435324
2 0.584845423698 0.207625299692
3 0.550367593765 0.200767368078
SURF 0x00
mat 1
refs 3
0 0.58484518528 0.117530435324
3 0.550367593765 0.200767368078
4 0.52113866806 0.181237310171
SURF 0x00
mat 1
refs 3
0 0.58484518528 0.117530435324
4 0.52113866806 0.181237310171
5 0.501608431339 0.152008503675
SURF 0x00
mat 1
refs 3
0 0.58484518528 0.117530435324
5 0.501608431339 0.152008503675
6 0.494750291109 0.117530703545
SURF 0x00
mat 1
refs 3
0 0.58484518528 0.117530435324
6 0.494750291109 0.117530703545
7 0.50160831213 0.0830528438091
SURF 0x00
mat 1
refs 3
0 0.58484518528 0.117530435324
7 0.50160831213 0.0830528438091
8 0.521138370037 0.0538239479065
SURF 0x00
mat 1
refs 3
0 0.58484518528 0.117530435324
8 0.521138370037 0.0538239479065
9 0.550367176533 0.0342937111855
SURF 0x00
mat 1
refs 3
0 0.58484518528 0.117530435324
9 0.550367176533 0.0342937111855
10 0.584844946861 0.0274356007576
SURF 0x00
mat 1
refs 3
0 0.58484518528 0.117530435324
10 0.584844946861 0.0274356007576
11 0.619322836399 0.0342935919762
SURF 0x00
mat 1
refs 3
0 0.58484518528 0.117530435324
11 0.619322836399 0.0342935919762
12 0.648551702499 0.0538237094879
SURF 0x00
mat 1
refs 3
0 0.58484518528 0.117530435324
12 0.648551702499 0.0538237094879
13 0.668081879616 0.0830525457859
SURF 0x00
mat 1
refs 3
0 0.58484518528 0.117530435324
13 0.668081879616 0.0830525457859
14 0.674939990044 0.117530345917
SURF 0x00
mat 1
refs 3
0 0.58484518528 0.117530435324
14 0.674939990044 0.117530345917
15 0.66808193922 0.152008146048
SURF 0x00
mat 1
refs 3
0 0.58484518528 0.117530435324
15 0.66808193922 0.152008146048
16 0.648551821709 0.181237071753
kids 0
OBJECT poly
name "Arm.btn"
data 8
Mesh.009
texture "kas297.rgb"
texrep 1 1
crease 30.000000
numvert 8
0.003493 9.8e-05 0.026987
0.003493 -0.003792 0.026987
0.003493 -0.003792 0.019984
0.003493 9.8e-05 0.019984
0.001722 9.8e-05 0.026987
0.001722 -0.003792 0.026987
0.001722 -0.003792 0.019984
0.001722 9.8e-05 0.019984
numsurf 5
SURF 0x00
mat 1
refs 4
4 0.0582099035382 0.00707477238029
0 0.0582099035382 0.0574415288866
3 0.007843144238 0.0574415288866
7 0.007843144238 0.00707477238029
SURF 0x00
mat 1
refs 4
0 0.0582099035382 0.00707477238029
4 0.0582099035382 0.0574415288866
5 0.007843144238 0.0574415288866
1 0.007843144238 0.00707477238029
SURF 0x00
mat 1
refs 4
6 0.007843144238 0.0574415288866
2 0.007843144238 0.00707477238029
1 0.0582099035382 0.00707477238029
5 0.0582099035382 0.0574415288866
SURF 0x00
mat 1
refs 4
7 0.007843144238 0.0574415288866
3 0.007843144238 0.00707477238029
2 0.0582099035382 0.00707477238029
6 0.0582099035382 0.0574415288866
SURF 0x00
mat 1
refs 4
3 0.007843144238 0.0574415288866
0 0.007843144238 0.00707477238029
1 0.0582099035382 0.00707477238029
2 0.0582099035382 0.0574415288866
kids 0
OBJECT poly
name "altmsg"
data 8
Mesh.006
texture "kas297.rgb"
texrep 1 1
crease 30.000000
numvert 4
0.001514 0.008404 0.01367
0.001514 0.000694 0.014843
0.001514 0.000694 0.010019
0.001514 0.008404 0.008847
numsurf 1
SURF 0x00
mat 3
refs 4
3 0.978541493416 0.101732596755
0 0.921992182732 0.10173265636
1 0.922260224819 0.011345628649
2 0.978809595108 0.0113455690444
kids 0
OBJECT poly
name "Arm.msg"
data 8
Mesh.007
texture "kas297.rgb"
texrep 1 1
crease 30.000000
numvert 4
0.001514 0.000233 0.016068
0.001514 -0.003128 0.016068
0.001514 -0.003128 0.00581
0.001514 0.000233 0.00581
numsurf 1
SURF 0x00
mat 3
refs 4
3 0.618501126766 0.957134366035
0 0.496961891651 0.957134366035
1 0.496961891651 0.917311787605
2 0.618501007557 0.917311787605
kids 0
OBJECT poly
name "Alert.msg"
data 8
Mesh.008
texture "kas297.rgb"
texrep 1 1
crease 30.000000
numvert 4
0.001514 0.000233 0.003243
0.001514 -0.003128 0.003243
0.001514 -0.003128 -0.012595
0.001514 0.000233 -0.012595
numsurf 1
SURF 0x00
mat 3
refs 4
3 0.664733886719 0.870237469673
0 0.477083057165 0.870237469673
1 0.477083057165 0.830414891243
2 0.664733827114 0.830414891243
kids 0
OBJECT poly
name "KAS297"
data 8
Mesh.005
texture "kas297.rgb"
texrep 1 1
crease 30.000000
numvert 20
0.000162 0.013777 -0.022431
0.000162 -0.013777 -0.022431
0.000162 -0.013777 0.022431
0.000162 0.013777 0.022431
0.00167 0.013777 -0.022431
0.00167 -0.013777 -0.022431
0.00167 -0.013777 0.022431
0.00167 0.013777 0.022431
0.000162 0.006275 0.030102
0.00167 0.006275 0.030102
0.000162 -0.006275 0.030102
0.00167 -0.006275 0.030102
0.000162 0.006275 -0.030102
0.00167 0.006275 -0.030102
0.000162 -0.006275 -0.030102
0.00167 -0.006275 -0.030102
0.00167 0.009957 -0.013718
0.00167 -0.003336 -0.013718
0.00167 -0.003336 0.016309
0.00167 0.009957 0.016309
numsurf 14
SURF 0x00
mat 1
refs 4
1 0.457330584526 0.851326823235
5 0.45733076334 0.851326525211
6 0.457330405712 0.145992904902
2 0.457330524921 0.145992904902
SURF 0x00
mat 1
refs 4
4 0.020636677742 0.851326942444
0 0.020636677742 0.851326823235
3 0.0206364393234 0.145993202925
7 0.0206365585327 0.145992994308
SURF 0x00
mat 1
refs 4
7 0.0206365585327 0.145992994308
3 0.0206364393234 0.145993202925
8 0.139534652233 0.0253909472376
9 0.139534652233 0.0253906790167
SURF 0x00
mat 1
refs 4
2 0.457330524921 0.145992904902
6 0.457330405712 0.145992904902
11 0.338432312012 0.0253906194121
10 0.338432431221 0.0253906790167
SURF 0x00
mat 1
refs 4
0 0.020636677742 0.851326823235
4 0.020636677742 0.851326942444
13 0.139534711838 0.971929192543
12 0.139534711838 0.971929192543
SURF 0x00
mat 1
refs 4
5 0.45733076334 0.851326525211
1 0.457330584526 0.851326823235
14 0.338432490826 0.971929192543
15 0.338432490826 0.971928715706
SURF 0x00
mat 1
refs 4
6 0.457330405712 0.145992904902
7 0.0206365585327 0.145992994308
9 0.139534652233 0.0253906790167
11 0.338432312012 0.0253906194121
SURF 0x00
mat 1
refs 4
4 0.020636677742 0.851326942444
5 0.45733076334 0.851326525211
15 0.338432490826 0.971928715706
13 0.139534711838 0.971929192543
SURF 0x00
mat 1
refs 4
10 0.338432431221 0.0253906790167
11 0.338432312012 0.0253906194121
9 0.139534652233 0.0253906790167
8 0.139534652233 0.0253909472376
SURF 0x00
mat 1
refs 4
12 0.139534711838 0.971929192543
13 0.139534711838 0.971929192543
15 0.338432490826 0.971928715706
14 0.338432490826 0.971929192543
SURF 0x00
mat 1
refs 4
5 0.45733076334 0.851326525211
4 0.020636677742 0.851326942444
16 0.0811778306961 0.71433955431
17 0.291848778725 0.714339256287
SURF 0x00
mat 1
refs 4
6 0.457330405712 0.145992904902
5 0.45733076334 0.851326525211
17 0.291848778725 0.714339256287
18 0.291848599911 0.242245286703
SURF 0x00
mat 1
refs 4
7 0.0206365585327 0.145992994308
6 0.457330405712 0.145992904902
18 0.291848599911 0.242245286703
19 0.0811777710915 0.242245346308
SURF 0x00
mat 1
refs 4
4 0.020636677742 0.851326942444
7 0.0206365585327 0.145992994308
19 0.0811777710915 0.242245346308
16 0.0811778306961 0.71433955431
kids 0

Binary file not shown.

View file

@ -0,0 +1,229 @@
<?xml version="1.0"?>
<!--
KAS 297 ALTITUDE SELECTOR
Syd Adams
*** requires kfc200.nas to run ***
-->
<PropertyList>
<path>kas297.ac</path>
<animation>
<type>material</type>
<object-name>Arm.btn</object-name>
<object-name>Set.knob</object-name>
<emission>
<red>0.028</red>
<green>0.014</green>
<blue>0.007</blue>
<factor-prop>systems/electrical/outputs/instrument-lights</factor-prop>
</emission>
</animation>
<animation>
<type>select</type>
<object-name>altmsg</object-name>
<object-name>altmsg.001</object-name>
<object-name>altmsg.002</object-name>
<object-name>altmsg.003</object-name>
<object-name>altmsg.004</object-name>
<condition>
<greater-than>
<property>systems/electrical/volts</property>
<value>1</value>
</greater-than>
</condition>
</animation>
<animation>
<type>select</type>
<object-name>Alert.msg</object-name>
<condition>
<and>
<property>/instrumentation/kfc200/alt-alert</property>
<greater-than>
<property>systems/electrical/volts</property>
<value>1</value>
</greater-than>
</and>
</condition>
</animation>
<animation>
<type>select</type>
<object-name>Arm.msg</object-name>
<condition>
<and>
<equals>
<property>/instrumentation/kfc200/vnav</property>
<value>1</value>
</equals>
<greater-than>
<property>systems/electrical/volts</property>
<value>1</value>
</greater-than>
</and>
</condition>
</animation>
<!-- Altitude Select -->
<animation>
<type>textranslate</type>
<object-name>altmsg</object-name>
<property>instrumentation/kfc200/alt-preset</property>
<factor>0.00001</factor>
<step>10000</step>
<axis>
<x>0</x>
<y>1</y>
<z>0</z>
</axis>
</animation>
<animation>
<type>textranslate</type>
<object-name>altmsg.001</object-name>
<property>instrumentation/kfc200/alt-preset</property>
<factor>0.0001</factor>
<step>1000</step>
<axis>
<x>0</x>
<y>1</y>
<z>0</z>
</axis>
</animation>
<animation>
<type>textranslate</type>
<object-name>altmsg.002</object-name>
<property>instrumentation/kfc200/alt-preset</property>
<factor>0.001</factor>
<step>100</step>
<axis>
<x>0</x>
<y>1</y>
<z>0</z>
</axis>
</animation>
<animation>
<type>textranslate</type>
<object-name>altmsg.003</object-name>
<property>instrumentation/kfc200/alt-preset</property>
<factor>0.01</factor>
<step>10</step>
<axis>
<x>0</x>
<y>1</y>
<z>0</z>
</axis>
</animation>
<animation>
<type>textranslate</type>
<object-name>altmsg.004</object-name>
<property>instrumentation/kfc200/alt-preset</property>
<factor>0.1</factor>
<step>1</step>
<axis>
<x>0</x>
<y>1</y>
<z>0</z>
</axis>
</animation>
<!-- OSG animations
<animation>
<type>pick</type>
<object-name>Alt.decrease</object-name>
<action>
<button>0</button>
<repeatable>true</repeatable>
<binding>
<command>property-adjust</command>
<property>instrumentation/kfc200/alt-preset</property>
<step>-100</step>
<min>0.0</min>
<max>99999.0</max>
<wrap>false</wrap>
</binding>
</action>
</animation>
<animation>
<type>pick</type>
<object-name>Alt.decrease</object-name>
<action>
<button>1</button>
<repeatable>true</repeatable>
<binding>
<command>property-adjust</command>
<property>instrumentation/kfc200/alt-preset</property>
<step>-1000</step>
<min>0.0</min>
<max>99999.0</max>
<wrap>false</wrap>
</binding>
</action>
</animation>
<animation>
<type>pick</type>
<object-name>Alt.increase</object-name>
<action>
<button>0</button>
<repeatable>true</repeatable>
<binding>
<command>property-adjust</command>
<property>instrumentation/kfc200/alt-preset</property>
<step>100</step>
<min>0.0</min>
<max>99999.0</max>
<wrap>false</wrap>
</binding>
</action>
</animation>
<animation>
<type>pick</type>
<object-name>Alt.increase</object-name>
<action>
<button>1</button>
<repeatable>true</repeatable>
<binding>
<command>property-adjust</command>
<property>instrumentation/kfc200/alt-preset</property>
<step>1000</step>
<min>0.0</min>
<max>99999.0</max>
<wrap>false</wrap>
</binding>
</action>
</animation>
<animation>
<type>pick</type>
<object-name>Alt.arm</object-name>
<action>
<button>0</button>
<repeatable>false</repeatable>
<binding>
<command>nasal</command>
<script>
if(getprop("instrumentation/kfc200/vnav")!= 1){
setprop("instrumentation/kfc200/vnav",1);
setprop("autopilot/settings/target-altitude-ft",getprop("instrumentation/kfc200/alt-preset"));
}else{
setprop("instrumentation/kfc200/vnav",0);
}
</script>
</binding>
</action>
</animation>
-->
</PropertyList>

View file

@ -0,0 +1,219 @@
#### Bendix-King KFC-200 Flight Director ####
#Buttons
# HDG ...heading hold
# FD ..... flightdirector on/off
# ALT ....altitude arm
# NAV ...VOR / LOC arm
# BC ....LOC back course
# APPR ... LOC / GS arm
#### lnav ####
# 0 = wingleveler
# 1 = heading hold
# 2 = NAV arm
# 3 = NAV cap
# 4 = APPR arm
# 5 = APPR cap
#### vnav ####
# 0 = pitch hold
# 1 = ALT arm
# 2 = ALT cap
# 3 = GS arm
# 4 = GS cap
var L_list=["wing-leveler","dg-heading-hold","dg-heading-hold","nav1-hold","dg-heading-hold","nav1-hold","dg-heading-hold","nav1-hold"];
var V_list=["pitch-hold","pitch-hold","altitude-hold","pitch-hold","gs1-hold"];
var fdprop = props.globals.getNode("/instrumentation/kfc200",1);
var lnav = 0;
var vnav = 0;
var current_alt=0.0;
var alt_select = 0.0;
var DH = 0;
var HASGS = "/instrumentation/nav/has-gs";
var NAVLOC = "/instrumentation/nav/nav-loc";
var NAVDST = "/instrumentation/nav/nav-dist";
var NAVRNG = "/instrumentation/nav/in-range";
var HDEFL = "/instrumentation/nav/heading-needle-deflection";
var GSDEFL = "/instrumentation/nav/gs-needle-deflection";
var BC = "/instrumentation/nav/back-course-btn";
var HDG = props.globals.getNode("/autopilot/locks/heading",1);
var ALT = props.globals.getNode("/autopilot/locks/altitude",1);
var SPD = props.globals.getNode("/autopilot/locks/speed",1);
var SRVC = 0;
setlistener("/sim/signals/fdm-initialized", func {
fdprop.getNode("serviceable",1).setBoolValue(1);
fdprop.getNode("armed",1).setBoolValue(0);
fdprop.getNode("cpld",1).setBoolValue(0);
fdprop.getNode("pitch-trim",1).setIntValue(0);
fdprop.getNode("alt-trim",1).setIntValue(0);
fdprop.getNode("fd-on",1).setBoolValue(0);
fdprop.getNode("gs-arm",1).setBoolValue(0);
fdprop.getNode("lnav",1).setValue(0);
fdprop.getNode("vnav",1).setValue(0);
fdprop.getNode("alt-preset",1).setDoubleValue(0.0);
fdprop.getNode("alt-alert",1).setBoolValue(0);
fdprop.getNode("dh-alert",1).setBoolValue(0);
DH = getprop("/autopilot/route-manager/min-lock-altitude-agl-ft");
alt_select = 0;
ALT.setValue(V_list[vnav]);
HDG.setValue(L_list[lnav]);
settimer(update,5);
print("KFC-200 ... Check");
});
setlistener("/instrumentation/kfc200/fd-on", func(fd){
var fdON = fd.getBoolValue();
clear_ap();
},0,0);
setlistener("/autopilot/locks/passive-mode", func(ap){
if(!ap.getBoolValue()){
setprop("autopilot/settings/target-pitch-deg",getprop("/orientation/pitch-deg"));
}
},0,0);
setlistener("/instrumentation/kfc200/serviceable", func(srv){
if(srv.getBoolValue()){SRVC=1;
}else{
SRVC=0;
}
},0,0);
setlistener("/autopilot/settings/target-altitude-ft",func(at){
alt_select = at.getValue();
},0,0);
setlistener("/autopilot/route-manager/min-lock-altitude-agl-ft",func(dh){
DH = dh.getValue();
},0,0);
setlistener("/instrumentation/kfc200/lnav",func(ln){
if(SRVC == 0)return;
lnav = ln.getValue();
if(lnav == 4){
if(!getprop(NAVLOC)){
lnav=2;
setprop("/instrumentation/kfc200/lnav",lnav);
}else{
if(getprop(HASGS)){
if(!getprop(BC)){
setprop("/instrumentation/kfc200/gs-arm",1);
}
}
}
}
HDG.setValue(L_list[lnav]);
},0,0);
setlistener("/instrumentation/kfc200/vnav", func(vn){
if(SRVC == 0)return;
vnav = vn.getValue();
ALT.setValue(V_list[vnav]);
},0,0);
var clear_ap = func {
setprop("/autopilot/settings/target-pitch-deg",getprop("/orientation/pitch-deg"));
vnav = 0;
lnav=0;
setprop("/instrumentation/kfc200/lnav",lnav);
setprop("/instrumentation/kfc200/vnav",vnav);
HDG.setValue(L_list[lnav]);
ALT.setValue(V_list[vnav]);
}
#### PITCH TRIM = 1 degree per second ####
var pitch_trim = func {
var temp_pitch = getprop("autopilot/settings/target-pitch-deg");
var FR =getprop("sim/frame-rate");
if(FR > 0){
var trim = (1/FR) * arg[0];
setprop("autopilot/settings/target-pitch-deg",temp_pitch + trim);
}
}
#### ALTITUDE TRIM = 600 fpm ####
var alt_trim = func {
var temp_alt = getprop("autopilot/settings/target-altitude-ft");
var FR =getprop("sim/frame-rate");
if(FR > 0){
var trim = (10/FR) * arg[0];
setprop("autopilot/settings/target-altitude-ft",temp_alt + trim);
}
}
var update_nav = func {
if(SRVC == 1){
var inrange= getprop(NAVRNG);
if(inrange){
if(lnav == 2 or lnav == 4){
setprop("instrumentation/kfc200/armed",1);
setprop("instrumentation/kfc200/cpld",0);
var DF = getprop(HDEFL);
if(DF > -9 and DF < 9){
setprop("/instrumentation/kfc200/lnav",lnav + 1);
setprop("instrumentation/kfc200/armed",0);
setprop("instrumentation/kfc200/cpld",1);
}
}
if(lnav ==5){
if(getprop("instrumentation/kfc200/gs-arm")){
if(getprop("instrumentation/nav/gs-distance") < 25000){
var GS1 = getprop(GSDEFL);
if( GS1< 1.0 and GS1 > -1.0){vnav = 4;
setprop("/instrumentation/kfc200/vnav",vnav);
}
}
}
}
}
if(vnav == 1){
var offset = get_altoffset();
if(offset > -990 and offset < 990){
setprop("/instrumentation/kfc200/vnav",vnav + 1);
}
}
}
}
var get_altoffset = func(){
current_alt = getprop("/instrumentation/altimeter/pressure-alt-ft");
var offset = (current_alt - alt_select);
var alert =0;
if(offset > -1000 and offset < -1000){
if(offset < -300 and offset > 300)alert = 1;
}
fdprop.getNode("alt-alert").setBoolValue(alert);
return(offset);
}
var update = func {
var PT = getprop("instrumentation/kfc200/pitch-trim");
var AT = getprop("instrumentation/kfc200/alt-trim");
if(PT !=0)pitch_trim(PT);
if(AT!=0)alt_trim(AT);
if(getprop("/position/altitude-agl-ft") < DH){
props.globals.getNode("/autopilot/locks/passive-mode").setBoolValue(1);
setprop("instrumentation/kfc200/dh-alert",1);
}else{
setprop("instrumentation/kfc200/dh-alert",0);
}
update_nav();
settimer(update, 0);
}

File diff suppressed because it is too large Load diff

Binary file not shown.

Some files were not shown because too many files have changed in this diff Show more