1
0
Fork 0

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

This commit is contained in:
Erik Hofman 2011-09-11 11:09:24 +02:00
commit 976532e170
222 changed files with 6155 additions and 7 deletions

View file

@ -0,0 +1,16 @@
<?xml version="1.0" encoding="utf-8"?>
<PropertyList>
<name>Effects/transition-base-dirt</name>
<inherits-from>Effects/transition</inherits-from>
<parameters>
<texture n="3">
<image>Textures.high/Terrain/dirt3.dds</image>
<filter>linear-mipmap-linear</filter>
<wrap-s>repeat</wrap-s>
<wrap-t>repeat</wrap-t>
<internal-format>normalized</internal-format>
</texture>
<transitions type="float">1.0</transitions>
<inverse type="float">0.0</inverse>
</parameters>
</PropertyList>

View file

@ -0,0 +1,18 @@
<?xml version="1.0" encoding="utf-8"?>
<PropertyList>
<name>Effects/transition-base-rock</name>
<inherits-from>Effects/transition</inherits-from>
<parameters>
<texture n="3">
<image>Textures.high/Terrain/grass12.dds</image>
<filter>linear-mipmap-linear</filter>
<wrap-s>repeat</wrap-s>
<wrap-t>repeat</wrap-t>
<internal-format>normalized</internal-format>
</texture>
<transitions type="float">1.0</transitions>
<inverse type="float">1.0</inverse>
</parameters>
</PropertyList>

View file

@ -0,0 +1,30 @@
<?xml version="1.0" encoding="utf-8"?>
<PropertyList>
<name>Effects/transition-base-grass-rock</name>
<inherits-from>Effects/transition</inherits-from>
<parameters>
<texture n="2">
<image>Textures.high/Terrain/grass10c.dds</image>
<filter>linear-mipmap-linear</filter>
<wrap-s>repeat</wrap-s>
<wrap-t>repeat</wrap-t>
<internal-format>normalized</internal-format>
</texture>
<texture n="3">
<image>Textures.high/Terrain/rock7.dds</image>
<filter>linear-mipmap-linear</filter>
<wrap-s>repeat</wrap-s>
<wrap-t>repeat</wrap-t>
<internal-format>normalized</internal-format>
</texture>
<texture n="4">
<image>Textures.high/Terrain.winter/mixedforest1c.dds</image>
<filter>linear-mipmap-linear</filter>
<wrap-s>repeat</wrap-s>
<wrap-t>repeat</wrap-t>
<internal-format>normalized</internal-format>
</texture>
<transitions type="float">2.0</transitions>
<inverse type="float">0.0</inverse>
</parameters>
</PropertyList>

View file

@ -0,0 +1,18 @@
<?xml version="1.0" encoding="utf-8"?>
<PropertyList>
<name>Effects/transition-base-rock</name>
<inherits-from>Effects/transition</inherits-from>
<parameters>
<texture n="3">
<image>Textures.high/Terrain/rock7.dds</image>
<filter>linear-mipmap-linear</filter>
<wrap-s>repeat</wrap-s>
<wrap-t>repeat</wrap-t>
<internal-format>normalized</internal-format>
</texture>
<transitions type="float">1.0</transitions>
<inverse type="float">0.0</inverse>
</parameters>
</PropertyList>

262
Effects/transition.eff Normal file
View file

@ -0,0 +1,262 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Transition effect starting from the base texture of the scenery, and changing textures according to slope in one or two steps.
parameters :
texture[0] -> base texture from the scenery
texture[2] -> intermediate texture if transitions is set to 2
texture[3] -> texture you want to transition to
texture[4] -> snow texture you want applied above snow-limit (I recommend using the corespondent winter texture for the base texture that you can find in terrain.winter)
transitions -> transitions number can be set to 1 or 2 (if set to 2 will allow for an intermediate step)
inverse -> if this is se to 1 will keep the base texture on steep slopes and transition to the texture you want (useful to add some grass patches in rocky areas)
-->
<PropertyList>
<name>Effects/transition</name>
<inherits-from>Effects/terrain-default</inherits-from>
<parameters>
<texture n="2">
<image>Textures.high/Terrain/transition1.dds</image>
<filter>linear-mipmap-linear</filter>
<wrap-s>repeat</wrap-s>
<wrap-t>repeat</wrap-t>
<internal-format>normalized</internal-format>
</texture>
<texture n="3">
<image>Textures.high/Terrain/transition2.dds</image>
<filter>linear-mipmap-linear</filter>
<wrap-s>repeat</wrap-s>
<wrap-t>repeat</wrap-t>
<internal-format>normalized</internal-format>
</texture>
<texture n="4">
<image>Textures.high/Terrain/snow3.dds</image>
<filter>linear-mipmap-linear</filter>
<wrap-s>repeat</wrap-s>
<wrap-t>repeat</wrap-t>
<internal-format>normalized</internal-format>
</texture>
<rain-norm>
<use>/environment/rain-norm</use>
</rain-norm>
<snow-level>
<use>/sim/rendering/snow-level-m</use>
</snow-level>
<transitions type="float">2.0</transitions>
<inverse type="float">0.0</inverse>
</parameters>
<!--<generate>
<tangent type="int">6</tangent>
<binormal type="int">7</binormal>
</generate>-->
<technique n="9">
<predicate>
<and>
<property>/sim/rendering/transition-shader</property>
<property>/sim/rendering/shader-effects</property>
<or>
<less-equal>
<value type="float">2.0</value>
<glversion/>
</less-equal>
<and>
<extension-supported>GL_ARB_shader_objects</extension-supported>
<extension-supported>GL_ARB_shading_language_100</extension-supported>
<extension-supported>GL_ARB_vertex_shader</extension-supported>
<extension-supported>GL_ARB_fragment_shader</extension-supported>
</and>
</or>
</and>
</predicate>
<pass>
<lighting>true</lighting>
<!-- Use material values that are either inherited from the
terrain-default effect or supplied by an effect derived
from this one e.g., one created in the materials library. -->
<material>
<ambient>
<use>material/ambient</use>
</ambient>
<diffuse>
<use>material/diffuse</use>
</diffuse>
<specular>
<use>material/specular</use>
</specular>
<color-mode>ambient-and-diffuse</color-mode>
</material>
<blend>
<use>transparent</use>
</blend>
<alpha-test>
<use>transparent</use>
</alpha-test>
<shade-model>smooth</shade-model>
<cull-face>back</cull-face>
<render-bin>
<bin-number>
<use>render-bin/bin-number</use>
</bin-number>
<bin-name>
<use>render-bin/bin-name</use>
</bin-name>
</render-bin>
<texture-unit>
<unit>0</unit>
<image>
<use>texture[0]/image</use>
</image>
<filter>
<use>texture[0]/filter</use>
</filter>
<wrap-s>
<use>texture[0]/wrap-s</use>
</wrap-s>
<wrap-t>
<use>texture[0]/wrap-t</use>
</wrap-t>
<internal-format>
<use>texture[0]/internal-format</use>
</internal-format>
</texture-unit>
<texture-unit>
<unit>1</unit>
<image>
<use>texture[2]/image</use>
</image>
<filter>
<use>texture[2]/filter</use>
</filter>
<wrap-s>
<use>texture[2]/wrap-s</use>
</wrap-s>
<wrap-t>
<use>texture[2]/wrap-t</use>
</wrap-t>
<internal-format>
<use>texture[2]/internal-format</use>
</internal-format>
</texture-unit>
<texture-unit>
<unit>2</unit>
<image>
<use>texture[3]/image</use>
</image>
<filter>
<use>texture[3]/filter</use>
</filter>
<wrap-s>
<use>texture[3]/wrap-s</use>
</wrap-s>
<wrap-t>
<use>texture[3]/wrap-t</use>
</wrap-t>
<internal-format>
<use>texture[3]/internal-format</use>
</internal-format>
</texture-unit>
<texture-unit>
<unit>3</unit>
<image>
<use>texture[4]/image</use>
</image>
<filter>
<use>texture[4]/filter</use>
</filter>
<wrap-s>
<use>texture[4]/wrap-s</use>
</wrap-s>
<wrap-t>
<use>texture[4]/wrap-t</use>
</wrap-t>
<internal-format>
<use>texture[4]/internal-format</use>
</internal-format>
</texture-unit>
<texture-unit>
<unit>4</unit>
<type>noise</type>
</texture-unit>
<program>
<vertex-shader>Shaders/transition.vert</vertex-shader>
<fragment-shader>Shaders/transition.frag</fragment-shader>
</program>
<uniform>
<name>BaseTex</name>
<type>sampler-2d</type>
<value type="int">0</value>
</uniform>
<uniform>
<name>SecondTex</name>
<type>sampler-2d</type>
<value type="int">1</value>
</uniform>
<uniform>
<name>ThirdTex</name>
<type>sampler-2d</type>
<value type="int">2</value>
</uniform>
<uniform>
<name>SnowTex</name>
<type>sampler-2d</type>
<value type="int">3</value>
</uniform>
<uniform>
<name>NoiseTex</name>
<type>sampler-3d</type>
<value type="int">4</value>
</uniform>
<uniform>
<name>RainNorm</name>
<type>float</type>
<value>
<use>rain-norm</use>
</value>
</uniform>
<uniform>
<name>SnowLevel</name>
<type>float</type>
<value>
<use>snow-level</use>
</value>
</uniform>
<uniform>
<name>Transitions</name>
<type>float</type>
<value>
<use>transitions</use>
</value>
</uniform>
<uniform>
<name>InverseSlope</name>
<type>float</type>
<value>
<use>inverse</use>
</value>
</uniform>
</pass>
</technique>
</PropertyList>

246
Effects/water-inland.eff Normal file
View file

@ -0,0 +1,246 @@
<?xml version="1.0" encoding="utf-8"?>
<PropertyList>
<name>Effects/water-inland</name>
<inherits-from>Effects/terrain-default</inherits-from>
<parameters>
<texture n="0">
<image>Textures/Water/water-reflection-inland.dds</image>
<filter>linear-mipmap-linear</filter>
<wrap-s>repeat</wrap-s>
<wrap-t>repeat</wrap-t>
<internal-format>normalized</internal-format>
</texture>
<texture n="2">
<image>Textures/Water/water-normalmap.png</image>
<filter>linear-mipmap-linear</filter>
<wrap-s>repeat</wrap-s>
<wrap-t>repeat</wrap-t>
<internal-format>normalized</internal-format>
</texture>
<texture n="3">
<image>Textures/Water/water-dudv.png</image>
<filter>linear-mipmap-linear</filter>
<wrap-s>repeat</wrap-s>
<wrap-t>repeat</wrap-t>
<internal-format>normalized</internal-format>
</texture>
<saturation>
<use>/rendering/scene/saturation</use>
</saturation>
<rain-norm>
<use>/environment/rain-norm</use>
</rain-norm>
</parameters>
<technique n="8">
<predicate>
<and>
<property>/sim/rendering/water-shader</property>
<property>/sim/rendering/shader-effects</property>
<less-equal>
<value type="float">2.0</value>
<float-property>/sim/rendering/quality-level</float-property>
</less-equal>
<or>
<less-equal>
<value type="float">2.0</value>
<glversion/>
</less-equal>
<and>
<extension-supported>GL_ARB_shader_objects</extension-supported>
<extension-supported>GL_ARB_shading_language_100</extension-supported>
<extension-supported>GL_ARB_vertex_shader</extension-supported>
<extension-supported>GL_ARB_fragment_shader</extension-supported>
</and>
</or>
</and>
</predicate>
<pass>
<lighting>true</lighting>
<material>
<ambient>
<use>material/ambient</use>
</ambient>
<diffuse>
<use>material/diffuse</use>
</diffuse>
<specular>
<use>material/specular</use>
</specular>
<color-mode>ambient-and-diffuse</color-mode>
</material>
<blend>
<use>transparent</use>
</blend>
<alpha-test>
<use>transparent</use>
</alpha-test>
<shade-model>smooth</shade-model>
<cull-face>back</cull-face>
<render-bin>
<bin-number>
<use>render-bin/bin-number</use>
</bin-number>
<bin-name>
<use>render-bin/bin-name</use>
</bin-name>
</render-bin>
<texture-unit>
<unit>0</unit>
<image>
<use>texture[0]/image</use>
</image>
<filter>
<use>texture[0]/filter</use>
</filter>
<wrap-s>
<use>texture[0]/wrap-s</use>
</wrap-s>
<wrap-t>
<use>texture[0]/wrap-t</use>
</wrap-t>
<internal-format>
<use>texture[0]/internal-format</use>
</internal-format>
</texture-unit>
<texture-unit>
<unit>2</unit>
<image>
<use>texture[2]/image</use>
</image>
<filter>
<use>texture[2]/filter</use>
</filter>
<wrap-s>
<use>texture[2]/wrap-s</use>
</wrap-s>
<wrap-t>
<use>texture[2]/wrap-t</use>
</wrap-t>
<internal-format>
<use>texture[2]/internal-format</use>
</internal-format>
</texture-unit>
<texture-unit>
<unit>3</unit>
<image>
<use>texture[3]/image</use>
</image>
<filter>
<use>texture[3]/filter</use>
</filter>
<wrap-s>
<use>texture[3]/wrap-s</use>
</wrap-s>
<wrap-t>
<use>texture[3]/wrap-t</use>
</wrap-t>
<internal-format>
<use>texture[3]/internal-format</use>
</internal-format>
</texture-unit>
<program>
<vertex-shader>Shaders/water.vert</vertex-shader>
<fragment-shader>Shaders/water-inland.frag</fragment-shader>
</program>
<uniform>
<name>water_reflection</name>
<type>sampler-2d</type>
<value type="int">0</value>
</uniform>
<uniform>
<name>water_normalmap</name>
<type>sampler-2d</type>
<value type="int">2</value>
</uniform>
<uniform>
<name>water_dudvmap</name>
<type>sampler-2d</type>
<value type="int">3</value>
</uniform>
<uniform>
<name>saturation</name>
<type>float</type>
<!--<value>0.4</value>-->
<value>
<use>saturation</use>
</value>
</uniform>
<uniform>
<name>RainNorm</name>
<type>float</type>
<!--<value>0.0</value>-->
<value>
<use>rain-norm</use>
</value>
</uniform>
</pass>
</technique>
<technique n="9">
<predicate>
<and>
<property>/sim/rendering/water-shader</property>
<property>/sim/rendering/shader-effects</property>
<or>
<less-equal>
<value type="float">2.0</value>
<glversion/>
</less-equal>
<and>
<extension-supported>GL_ARB_shader_objects</extension-supported>
<extension-supported>GL_ARB_shading_language_100</extension-supported>
<extension-supported>GL_ARB_vertex_shader</extension-supported>
<extension-supported>GL_ARB_fragment_shader</extension-supported>
</and>
</or>
</and>
</predicate>
<pass>
<lighting>true</lighting>
<material>
<ambient>
<use>material/ambient</use>
</ambient>
<diffuse>
<use>material/diffuse</use>
</diffuse>
<specular>
<use>material/specular</use>
</specular>
<color-mode>ambient-and-diffuse</color-mode>
</material>
<blend>
<use>transparent</use>
</blend>
<alpha-test>
<use>transparent</use>
</alpha-test>
<shade-model>smooth</shade-model>
<cull-face>back</cull-face>
<render-bin>
<bin-number>
<use>render-bin/bin-number</use>
</bin-number>
<bin-name>
<use>render-bin/bin-name</use>
</bin-name>
</render-bin>
<texture-unit>
<unit>0</unit>
<type>noise</type>
</texture-unit>
<program>
<vertex-shader>Shaders/water-orig.vert</vertex-shader>
<fragment-shader>Shaders/water-orig.frag</fragment-shader>
</program>
<uniform>
<name>texture</name>
<type>sampler-3d</type>
<value type="int">0</value>
</uniform>
</pass>
</technique>
</PropertyList>

View file

@ -0,0 +1,239 @@
<?xml version="1.0"?>
<!--
Copyright (c) 2011 Melchior FRANZ mfranz # aon : at
Work In Progress
-->
<PropertyList>
<name>Thustmaster Joystick - HOTAS Warthog</name>
<nasal>
<command>nasal</command>
<script>
var this = cmdarg().getParent();
var popup = func gui.popupTip(call(sprintf, arg));
var is_helicopter = (var _ = props.globals.getNode("rotors", 0)) != nil and _.getAttribute("children");
var load_overlay = func(name) {
foreach (var dir; [getprop("/sim/fg-home"), getprop("/sim/fg-root")]) {
var file = dir ~ "/Input/Joysticks/ThrustMaster/Warthog/Joystick/" ~ name;
if (io.stat(file) != nil) {
printlog("info", "WARTHOG: loading overlay " ~ file);
cmdarg().getNode("script").setValue("");
io.read_properties(file, this);
props.runBinding(cmdarg());
break;
}
}
}
load_overlay("generic.xml");
if (is_helicopter)
load_overlay("helicopter.xml");
load_overlay(getprop("/sim/aircraft") ~ ".xml");
foreach (var b; this.getChildren("button")) {
if (b.getAttribute("children") == 1) {
var name = b.getNode("name", 1).getValue() or "??";
b.setValues({binding: {command: "nasal", script: 'popup("' ~ name ~ '")'}});
}
}
var mod = 0;
var _ = props.globals.initNode("/devices/status/joysticks/warthog/modifier", mod, "INT");
setlistener(_, func(n) mod = n.getValue());
var trimstep = 0.75;
</script>
</nasal>
<axis n="0">
<name>X-axis</name>
<desc>aileron</desc>
<tolerance>0.0001</tolerance>
<binding>
<command>property-scale</command>
<property>/controls/flight/aileron</property>
</binding>
</axis>
<axis n="1">
<name>Y-axis</name>
<desc>elevator</desc>
<tolerance>0.0001</tolerance>
<binding>
<command>property-scale</command>
<property>/controls/flight/elevator</property>
<factor type="double">-1.0</factor>
</binding>
</axis>
<axis n="2">
<name>Trim Coolie Left/Right</name>
<desc>adjust aileron trim, +mod: reset aileron trim</desc>
<low>
<repeatable>true</repeatable>
<binding>
<command>nasal</command>
<script>
if (mod)
controls.aileronTrim(-trimstep);
else
setprop("/controls/flight/aileron-trim", 0);
</script>
</binding>
</low>
<high>
<repeatable>true</repeatable>
<binding>
<command>nasal</command>
<script>
if (mod)
controls.aileronTrim(trimstep);
else
setprop("/controls/flight/aileron-trim", 0);
</script>
</binding>
</high>
</axis>
<axis n="3">
<name>Trim Coolie Down/Up</name>
<desc>adjust elevator trim, +mod: reset elevator trim</desc>
<low>
<repeatable>true</repeatable>
<binding>
<command>nasal</command>
<script>
if (mod)
controls.elevatorTrim(trimstep);
else
setprop("/controls/flight/elevator-trim", 0);
</script>
</binding>
</low>
<high>
<repeatable>true</repeatable>
<binding>
<command>nasal</command>
<script>
if (mod)
controls.elevatorTrim(-trimstep);
else
setprop("/controls/flight/elevator-trim", 0);
</script>
</binding>
</high>
</axis>
<button n="0">
<name>Trigger Button 1</name>
<desc>gun trigger stage 1</desc>
<binding>
<command>nasal</command>
<script>controls.trigger(1)</script>
</binding>
<mod-up>
<binding>
<command>nasal</command>
<script>controls.trigger(0)</script>
</binding>
</mod-up>
</button>
<button n="1">
<name>Weapons Release</name>
</button>
<button n="2">
<name>Nosewheel Steering Button</name>
</button>
<button n="3">
<name>Paddle Switch</name>
<desc>modifier button</desc>
<binding>
<command>property-assign</command>
<property>/devices/status/joysticks/warthog/modifier</property>
<value>1</value>
</binding>
<mod-up>
<binding>
<command>property-assign</command>
<property>/devices/status/joysticks/warthog/modifier</property>
<value>0</value>
</binding>
</mod-up>
</button>
<button n="4">
<name>Master Mode Control Button</name>
</button>
<button n="5">
<name>Trigger Button 2</name>
<desc>gun trigger stage 2</desc>
<binding>
<command>nasal</command>
<script>controls.trigger(2)</script>
</binding>
<mod-up>
<binding>
<command>nasal</command>
<script>controls.trigger(0)</script>
</binding>
</mod-up>
</button>
<button n="6">
<name>Target Management Switch (TMS) up</name>
</button>
<button n="7">
<name>Target Management Switch (TMS) right</name>
</button>
<button n="8">
<name>Target Management Switch (TMS) down</name>
</button>
<button n="9">
<name>Target Management Switch (TMS) left</name>
</button>
<button n="10">
<name>Data Management Switch (DMS) up</name>
</button>
<button n="11">
<name>Data Management Switch (DMS) right</name>
</button>
<button n="12">
<name>Data Management Switch (DMS) down</name>
</button>
<button n="13">
<name>Data Management Switch (DMS) left</name>
</button>
<button n="14">
<name>Countermeasures Management Switch (CMS) up</name>
</button>
<button n="15">
<name>Countermeasures Management Switch (CMS) right</name>
</button>
<button n="16">
<name>Countermeasures Management Switch (CMS) down</name>
</button>
<button n="17">
<name>Countermeasures Management Switch (CMS) left</name>
</button>
<button n="18">
<name>Countermeasures Management Switch (CMS) push</name>
</button>
</PropertyList>

View file

@ -0,0 +1,465 @@
<?xml version="1.0"?>
<!--
Copyright (c) 2011 Melchior FRANZ mfranz # aon : at
Work In Progress
-->
<PropertyList>
<name>Thrustmaster Throttle - HOTAS Warthog</name>
<nasal>
<command>nasal</command>
<script>
var this = cmdarg().getParent();
var popup = func gui.popupTip(call(sprintf, arg));
var is_helicopter = (var _ = props.globals.getNode("rotors", 0)) != nil and _.getAttribute("children");
var load_overlay = func(name) {
foreach (var dir; [getprop("/sim/fg-home"), getprop("/sim/fg-root")]) {
var file = dir ~ "/Input/Joysticks/ThrustMaster/Warthog/Throttle/" ~ name;
if (io.stat(file) != nil) {
printlog("info", "WARTHOG: loading overlay " ~ file);
cmdarg().getNode("script").setValue("");
io.read_properties(file, this);
props.runBinding(cmdarg());
break;
}
}
}
load_overlay("generic");
if (is_helicopter)
load_overlay("helicopter");
load_overlay(getprop("/sim/aircraft"));
foreach (var b; this.getChildren("button")) {
if (b.getAttribute("children") == 1) {
var name = b.getNode("name", 1).getValue() or "??";
b.setValues({binding: {command: "nasal", script: 'popup("' ~ name ~ '")'}});
}
}
var mod = 0;
var _ = props.globals.initNode("/devices/status/joysticks/warthog/modifier", mod, "INT");
setlistener(_, func(n) mod = n.getValue());
var left_engines = [0, 2, 4, 6, 8, 10];
var right_engines = [1, 3, 5, 7, 9, 11];
var viewstep = 0.5;
var viewdir = props.globals.getNode("/sim").getChildren("view");
forindex (var i; viewdir) {
var t = viewdir[i].getNode("type");
viewdir[i] = t != nil and t.getValue() == "lookat" ? 1 : -1;
}
</script>
</nasal>
<axis n="0">
<name>Mouse Horizontal</name>
<desc>mouse horizontal</desc>
<low>
<repeatable type="bool">true</repeatable>
<binding>
<command>nasal</command>
<script>view.panViewDir(-viewdir[view.index] * viewstep)</script>
</binding>
</low>
<high>
<repeatable type="bool">true</repeatable>
<binding>
<command>nasal</command>
<script>view.panViewDir(viewdir[view.index] * viewstep)</script>
</binding>
</high>
</axis>
<axis n="1">
<name>Mouse Vertical</name>
<desc>mouse vertical</desc>
<low>
<repeatable type="bool">true</repeatable>
<binding>
<command>nasal</command>
<script>view.panViewPitch(viewstep)</script>
</binding>
</low>
<high>
<repeatable type="bool">true</repeatable>
<binding>
<command>nasal</command>
<script>view.panViewPitch(-viewstep)</script>
</binding>
</high>
</axis>
<axis n="2">
<name>Right Throttle</name>
<desc>right throttle (odd engines)</desc>
<tolerance>0.0001</tolerance>
<binding>
<command>nasal</command>
<script>controls.perEngineSelectedAxisHandler(0)(right_engines)</script>
</binding>
</axis>
<axis n="3">
<name>Left Throttle</name>
<desc>left throttle (even engines)</desc>
<number>
<unix>3</unix>
<mac>3</mac>
<windows>5</windows>
</number>
<tolerance>0.0001</tolerance>
<binding>
<command>nasal</command>
<script>controls.perEngineSelectedAxisHandler(0)(left_engines)</script>
</binding>
</axis>
<axis n="4">
<name>Friction Wheel</name>
<desc>rudder trim</desc>
<number>
<unix>4</unix>
<mac>4</mac>
<windows>6</windows>
</number>
<binding>
<command>property-scale</command>
<property>/controls/flight/rudder-trim</property>
<factor type="double">-1</factor>
</binding>
</axis>
<axis n="5">
<name>Coolie Switch Horizontal</name>
<number>
<unix>5</unix>
<mac>5</mac>
<windows>3</windows>
</number>
<low>
<binding>
<command>nasal</command>
<script>popup("coolie switch left")</script>
</binding>
</low>
<high>
<binding>
<command>nasal</command>
<script>popup("coolie switch right")</script>
</binding>
</high>
</axis>
<axis n="6">
<name>Coolie Switch Vertical</name>
<number>
<unix>6</unix>
<mac>6</mac>
<windows>4</windows>
</number>
<low>
<binding>
<command>nasal</command>
<script>popup("coolie switch up")</script>
</binding>
</low>
<high>
<binding>
<command>nasal</command>
<script>popup("coolie switch down")</script>
</binding>
</high>
</axis>
<button n="0">
<name>Mouse Button</name>
<desc>reset view</desc>
<binding>
<command>nasal</command>
<script>view.resetView()</script>
</binding>
</button>
<button n="1">
<name>MIC Switch Push</name>
<desc>Push To Talk (PTT)</desc>
<binding>
<command>nasal</command>
<script>controls.ptt(1)</script>
</binding>
<mod-up>
<binding>
<command>nasal</command>
<script>controls.ptt(0)</script>
</binding>
</mod-up>
</button>
<button n="2">
<name>MIC Switch Up</name>
</button>
<button n="3">
<name>MIC Switch Forward</name>
</button>
<button n="4">
<name>MIC Switch Down</name>
</button>
<button n="5">
<name>MIC Switch Aft</name>
</button>
<button n="6">
<name>Speedbrake Forward</name>
</button>
<button n="7">
<name>Speedbrake Aft</name>
</button>
<button n="8">
<name>Boat Switch Forward</name>
</button>
<button n="9">
<name>Boat Switch Aft</name>
</button>
<button n="10">
<name>China Hat Forward</name>
</button>
<button n="11">
<name>China Hat Aft</name>
</button>
<button n="12">
<name>Pinky Switch Forward</name>
</button>
<button n="13">
<name>Pinky Switch Aft</name>
</button>
<button n="14">
<name>Left Throttle Button</name>
</button>
<button n="15">
<name>Engine Fuel Flow Left</name>
<desc>engine fuel flow left</desc>
<binding>
<command>nasal</command>
<script>
foreach (var i; left_engines)
setprop("/controls/engines/engine[" ~ i ~ "]/fuel-pump", 1);
</script>
</binding>
<mod-up>
<binding>
<command>nasal</command>
<script>
foreach (var i; left_engines)
setprop("/controls/engines/engine[" ~ i ~ "]/fuel-pump", 0);
</script>
</binding>
</mod-up>
</button>
<button n="16">
<name>Engine Fuel Flow Right</name>
<desc>engine fuel flow right</desc>
<binding>
<command>nasal</command>
<script>
foreach (var i; right_engines)
setprop("/controls/engines/engine[" ~ i ~ "]/fuel-pump", 1);
</script>
</binding>
<mod-up>
<binding>
<command>nasal</command>
<script>
foreach (var i; right_engines)
setprop("/controls/engines/engine[" ~ i ~ "]/fuel-pump", 0);
</script>
</binding>
</mod-up>
</button>
<button n="17">
<name>Engine Operate Left MOTOR</name>
<desc>engine operate left motor (magnetos)</desc>
<binding>
<command>nasal</command>
<script>
foreach (var i; left_engines)
setprop("/controls/engines/engine[" ~ i ~ "]/magnetos", 1);
</script>
</binding>
<mod-up>
<binding>
<command>nasal</command>
<script>
foreach (var i; left_engines)
setprop("/controls/engines/engine[" ~ i ~ "]/magnetos", 0);
</script>
</binding>
</mod-up>
</button>
<button n="18">
<name>Engine Operate Right MOTOR</name>
<desc>engine operate right motor (magnetos)</desc>
<binding>
<command>nasal</command>
<script>
foreach (var i; right_engines)
setprop("/controls/engines/engine[" ~ i ~ "]/magnetos", 1);
</script>
</binding>
<mod-up>
<binding>
<command>nasal</command>
<script>
foreach (var i; right_engines)
setprop("/controls/engines/engine[" ~ i ~ "]/magnetos", 0);
</script>
</binding>
</mod-up>
</button>
<button n="19">
<name>APU Start</name>
<desc>APU (auxiliary power unit) on/off</desc>
<binding>
<command>property-assign</command>
<property>/controls/electric/APU-generator</property>
<value>1</value>
</binding>
<mod-up>
<binding>
<command>property-assign</command>
<property>/controls/electric/APU-generator</property>
<value>0</value>
</binding>
</mod-up>
</button>
<button n="20">
<name>Landing Gear Horn Silence Button</name>
</button>
<button n="21">
<name>Flaps Up</name>
<desc>flaps up</desc>
<binding>
<command>nasal</command>
<script>controls.flapsDown(-1)</script>
</binding>
<mod-up>
<binding>
<command>nasal</command>
<script>controls.flapsDown(0)</script>
</binding>
</mod-up>
</button>
<button n="22">
<name>Flaps Down</name>
<desc>flaps down</desc>
<binding>
<command>nasal</command>
<script>controls.flapsDown(1)</script>
</binding>
<mod-up>
<binding>
<command>nasal</command>
<script>controls.flapsDown(0)</script>
</binding>
</mod-up>
</button>
<button n="23">
<name>EAC Switch</name>
</button>
<button n="24">
<name>RADAR ALT</name>
</button>
<button n="25">
<name>Autopilot (Dis)Engage</name>
</button>
<button n="26">
<name>Autopilot PATH</name>
<binding>
<command>nasal</command>
<script>popup("autopilot path")</script>
</binding>
<mod-up>
<binding>
<command>nasal</command>
<script>popup("autopilot alt/hdg")</script>
</binding>
</mod-up>
</button>
<button n="27">
<name>Autopilot ALT</name>
<binding>
<command>nasal</command>
<script>popup("autopilot alt")</script>
</binding>
<mod-up>
<binding>
<command>nasal</command>
<script>popup("autopilot alt/hdg")</script>
</binding>
</mod-up>
</button>
<button n="28">
<name>Right Throttle Idle Switch</name>
</button>
<button n="29">
<name>Left Throttle Idle Switch</name>
</button>
<button n="30">
<name>Engine Operate Left IGN</name>
<desc>start left engines</desc>
<binding>
<command>nasal</command>
<script>call(controls.startEngine, [1] ~ left_engines)</script>
</binding>
<mod-up>
<binding>
<command>nasal</command>
<script>call(controls.startEngine, [0] ~ left_engines)</script>
</binding>
</mod-up>
</button>
<button n="31">
<name>Engine Operate Right IGN</name>
<desc>start right engines</desc>
<binding>
<command>nasal</command>
<script>call(controls.startEngine, [1] ~ right_engines)</script>
</binding>
<mod-up>
<binding>
<command>nasal</command>
<script>call(controls.startEngine, [0] ~ right_engines)</script>
</binding>
</mod-up>
</button>
</PropertyList>

View file

@ -270,7 +270,7 @@ var lowpass = {
me.value = v;
},
_filter_: func(v) {
var dt = getprop("/sim/time/delta-sec");
var dt = getprop("/sim/time/delta-sec")*getprop("/sim/speed-up");
var c = dt / (me.coeff + dt);
me.value = v * c + me.value * (1 - c);
},
@ -788,12 +788,31 @@ var autotrim = {
# var tyresmoke_0 = aircraft.tyresmoke.new(0);
# tyresmoke_0.update();
#
# PARAMETERS:
#
# number: index of gear to be animated, i.e. "2" for /gear/gear[2]/...
#
# auto: 1 when tyresmoke should start on update loop. 0 when you're going
# to call the update method from one of your own loops.
#
# diff_norm: value adjusting the necessary percental change of roll-speed
# to trigger tyre smoke. Default value is 0.05. More realistic results can
# be achieved with significantly higher values (i.e. use 0.8).
#
# check_vspeed: 1 when tyre smoke should only be triggered when vspeed is negative
# (usually doesn't work for all gear, since vspeed=0.0 after the first gear touches
# ground). Use 0 to make tyre smoke independent of vspeed.
# Note: in reality, tyre smoke doesn't depend on vspeed, but only on acceleration
# and friction.
#
var tyresmoke = {
new: func(number, auto = 0) {
new: func(number, auto = 0, diff_norm = 0.05, check_vspeed=1) {
var m = { parents: [tyresmoke] };
me.vertical_speed = props.globals.initNode("velocities/vertical-speed-fps");
me.speed = props.globals.initNode("velocities/groundspeed-kt");
me.rain = props.globals.initNode("environment/metar/rain-norm");
m.vertical_speed = (!check_vspeed) ? nil : props.globals.initNode("velocities/vertical-speed-fps");
m.diff_norm = diff_norm;
m.speed = props.globals.initNode("velocities/groundspeed-kt");
m.rain = props.globals.initNode("environment/metar/rain-norm");
var gear = props.globals.getNode("gear/gear[" ~ number ~ "]/");
m.wow = gear.initNode("wow");
@ -827,7 +846,7 @@ var tyresmoke = {
},
update: func {
var rollspeed = me.get_rollspeed();
var vert_speed = me.vertical_speed.getValue();
var vert_speed = (me.vertical_speed) != nil ? me.vertical_speed.getValue() : -999;
var groundspeed = me.speed.getValue();
var friction_factor = me.friction_factor.getValue();
var wow = me.wow.getValue();
@ -837,7 +856,8 @@ var tyresmoke = {
var diff = math.abs(rollspeed - filtered_rollspeed);
var diff_norm = diff > 0 ? diff / rollspeed : 0;
if (wow and vert_speed < -1.2 and diff_norm > 0.05
if (wow and vert_speed < -1.2
and diff_norm > me.diff_norm
and friction_factor > 0.7 and groundspeed > 50
and rain < 0.20) {
me.tyresmoke.setValue(1);

21
README-textures-ng Normal file
View file

@ -0,0 +1,21 @@
* Several .dds files to improve ground appearance
* A new experimental transition effect.
You will find examples of its usage in the effects inheriting from it.
It's not recommended to use the effect directly, but create a new one that inherits from it and defines the number of transitions, and the textures you want to transition to.
* You will find more info in the transition.eff file itself.
Installation notes:
* There is an alternative materials file named materials-dds.xml included. You can activate this file by using
--prop:/sim/rendering/materials-file=materials-dds.xml
You can replace materials-dds.xml with your own version if you prefer:
--prop:/sim/rendering/materials-file=your-filename.xml

124
Shaders/transition.frag Normal file
View file

@ -0,0 +1,124 @@
// -*-C++-*-
// Texture switching based on face slope and snow level
// default.frag (c) 2010 ??
// (c)2011 - Emilian Huminiuc, with ideas from crop.frag, forest.frag
// Ambient term comes in gl_Color.rgb.
varying vec4 diffuse_term, RawPos;
varying vec3 Vnormal, normal;
varying float fogCoord;
uniform float SnowLevel, Transitions, InverseSlope, RainNorm;
uniform sampler2D BaseTex, SecondTex, ThirdTex, SnowTex;
uniform sampler3D NoiseTex;
void main()
{
float MixFactor, NdotL, NdotHV, fogFactor, slope, L1, L2, wetness;
vec3 n, lightDir, halfVector;
vec4 texel, fragColor, color, specular, Noise; // GNoise;
lightDir = gl_LightSource[0].position.xyz;
halfVector = gl_LightSource[0].halfVector.xyz;
color = gl_Color;
specular = vec4(0.0);
Noise = texture3D(NoiseTex, RawPos.xyz*0.0011);
//GNoise = texture3D(NoiseTex, RawPos.xyz*0.00011);
MixFactor = Noise.r * Noise.g * Noise.b; //Mixing Factor to create a more organic looking boundary
//AddedNoise = GNoise.r * GNoise.g * GNoise.b; //Some added Noise to break the evenness on some textures
MixFactor *= 50.0;
L1 = 0.88 - 0.04 * MixFactor; //first transition slope
L2 = 0.80 + 0.04 * MixFactor; //Second transition slope
// If gl_Color.a == 0, this is a back-facing polygon and the
// Vnormal should be reversed.
n = (2.0 * gl_Color.a - 1.0) * Vnormal;
n = normalize(n);
NdotL = dot(n, lightDir);
if (NdotL > 0.0) {
color += diffuse_term * NdotL;
NdotHV = max(dot(n, halfVector), 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 = diffuse_term.a;
// This shouldn't be necessary, but our lighting becomes very
// saturated. Clamping the color before modulating by the texture
// is closer to what the OpenGL fixed function pipeline does.
color = clamp(color, 0.0, 1.0);
//Select texture based on slope
slope = normalize(normal).z;
//Normal transition. For more abrupt faces apply another texture (or 2).
if (InverseSlope == 0.0) {
//Do we do an intermediate transition
if (Transitions >= 1.5) {
if (slope > L1) {
texel = mix(texture2D(SecondTex, gl_TexCoord[0].st), texture2D(BaseTex, gl_TexCoord[0].st), smoothstep(L1, L1 + 0.003*MixFactor, slope));
}
if (slope > L2 && slope <= L1){
texel = mix(texture2D(SecondTex, gl_TexCoord[0].st), texture2D(BaseTex, gl_TexCoord[0].st), smoothstep(L2 + 0.01 * MixFactor, L1, slope));
}
if (slope <= L2){
texel = mix(texture2D(ThirdTex, gl_TexCoord[0].st), texture2D(SecondTex, gl_TexCoord[0].st), smoothstep(L2 - 0.1 * MixFactor, L2, slope));
}
// Just one transition
} else if (Transitions < 1.5) {
if (slope > L1) {
texel = texture2D(BaseTex, gl_TexCoord[0].st);
}
if (slope <= L1) {
texel = mix(texture2D(ThirdTex, gl_TexCoord[0].st), texture2D(BaseTex, gl_TexCoord[0].st), smoothstep(L2 - 0.1 * MixFactor, L1, slope));
}
}
//Invert the transition: keep original texture on abrupt slopes and switch to another on flatter terrain
} else if (InverseSlope > 0.0) {
//Interemdiate transition ?
if (Transitions >= 1.5) {
if (slope > L1 + 0.16) {
texel = texture2D(ThirdTex, gl_TexCoord[0].st);
}
if (slope > L2 && slope <= L1 + 0.16){
texel = mix(texture2D(SecondTex, gl_TexCoord[0].st), texture2D(ThirdTex, gl_TexCoord[0].st), smoothstep(L2 + 0.01 * MixFactor, L1, slope));
}
if (slope <= L2){
texel = mix(texture2D(BaseTex, gl_TexCoord[0].st), texture2D(SecondTex, gl_TexCoord[0].st), smoothstep(L2 - 0.05 * MixFactor, L2, slope));
}
//just one
} else if (Transitions < 1.5) {
if (slope > L1 + 0.16) {
texel = texture2D(ThirdTex, gl_TexCoord[0].st);
}
if (slope <= L1 + 0.16){
texel = mix(texture2D(BaseTex, gl_TexCoord[0].st), texture2D(ThirdTex, gl_TexCoord[0].st), smoothstep(L2 - 0.05 * MixFactor, L1 + 0.16, slope));
}
}
}
//darken textures with wetness
wetness = 1.0 - 0.3 * RainNorm;
texel.rgb = texel.rgb * wetness;
//texel.r = texel.r * wetness;
//texel.g = texel.g * wetness;
//texel.b = texel.b * wetness;
//Snow texture for areas higher than SnowLevel
if (RawPos.z >= SnowLevel - 6000.0 * MixFactor && slope > L2 - 0.4) {
texel = mix(texel, mix(texel, texture2D(SnowTex, gl_TexCoord[0].st), smoothstep(L2 - 0.4 * MixFactor, L2, slope)), smoothstep(SnowLevel - 6000.0 * slope * MixFactor, SnowLevel - 1400.0 * slope * MixFactor, RawPos.z));
}
fragColor = color * texel + specular;
fogFactor = exp(-gl_Fog.density * gl_Fog.density * fogCoord * fogCoord);
gl_FragColor = mix(gl_Fog.color, fragColor, fogFactor);
}

57
Shaders/transition.vert Normal file
View file

@ -0,0 +1,57 @@
// -*-C++-*-
// Shader that uses OpenGL state values to do per-pixel lighting
//
// The only light used is gl_LightSource[0], which is assumed to be
// directional.
//
// Diffuse colors come from the gl_Color, ambient from the material. This is
// equivalent to osg::Material::DIFFUSE.
#define MODE_OFF 0
#define MODE_DIFFUSE 1
#define MODE_AMBIENT_AND_DIFFUSE 2
// The constant term of the lighting equation that doesn't depend on
// the surface normal is passed in gl_{Front,Back}Color. The alpha
// component is set to 1 for front, 0 for back in order to work around
// bugs with gl_FrontFacing in the fragment shader.
varying vec4 diffuse_term, RawPos;
varying vec3 normal, Vnormal;
varying float fogCoord;
uniform int colorMode;
void main()
{
RawPos = gl_Vertex;
vec4 ecPosition = gl_ModelViewMatrix * gl_Vertex;
gl_Position = ftransform();
gl_TexCoord[0] = gl_TextureMatrix[0] * gl_MultiTexCoord0;
normal = normalize(gl_Normal);
Vnormal = gl_NormalMatrix * gl_Normal;
vec4 ambient_color, diffuse_color;
if (colorMode == MODE_DIFFUSE) {
diffuse_color = gl_Color;
ambient_color = gl_FrontMaterial.ambient;
} else if (colorMode == MODE_AMBIENT_AND_DIFFUSE) {
diffuse_color = gl_Color;
ambient_color = gl_Color;
} else {
diffuse_color = gl_FrontMaterial.diffuse;
ambient_color = gl_FrontMaterial.ambient;
}
diffuse_term = diffuse_color * gl_LightSource[0].diffuse;
vec4 constant_term = gl_FrontMaterial.emission + ambient_color *
(gl_LightModel.ambient + gl_LightSource[0].ambient);
// Super hack: if diffuse material alpha is less than 1, assume a
// transparency animation is at work
if (gl_FrontMaterial.diffuse.a < 1.0)
diffuse_term.a = gl_FrontMaterial.diffuse.a;
else
diffuse_term.a = gl_Color.a;
// Another hack for supporting two-sided lighting without using
// gl_FrontFacing in the fragment shader.
gl_FrontColor.rgb = constant_term.rgb; gl_FrontColor.a = 1.0;
gl_BackColor.rgb = constant_term.rgb; gl_BackColor.a = 0.0;
fogCoord = abs(ecPosition.z / ecPosition.w);
}

99
Shaders/water-inland.frag Normal file
View file

@ -0,0 +1,99 @@
// This shader is mostly an adaptation of the shader found at
// http://www.bonzaisoftware.com/water_tut.html and its glsl conversion
// available at http://forum.bonzaisoftware.com/viewthread.php?tid=10
// © Michael Horsch - 2005
uniform sampler2D water_normalmap;
uniform sampler2D water_reflection;
uniform sampler2D water_dudvmap;
uniform float saturation;
uniform float RainNorm;
varying vec4 waterTex1; //moving texcoords
varying vec4 waterTex2; //moving texcoords
varying vec4 waterTex4; //viewts
varying vec4 ecPosition;
varying vec3 viewerdir;
varying vec3 lightdir;
varying vec3 normal;
void main(void)
{
const vec4 sca = vec4(0.005, 0.005, 0.005, 0.005);
const vec4 sca2 = vec4(0.02, 0.02, 0.02, 0.02);
const vec4 tscale = vec4(0.25, 0.25, 0.25, 0.25);
// compute direction to viewer
vec3 E = normalize(viewerdir);
// compute direction to light source
vec3 L = normalize(lightdir);
// half vector
vec3 H = normalize(L + E);
const float water_shininess = 240.0;
vec4 viewt = normalize(waterTex4);
vec4 disdis = texture2D(water_dudvmap, vec2(waterTex2 * tscale)) * 2.0 - 1.0;
vec4 dist = texture2D(water_dudvmap, vec2(waterTex1 + disdis*sca2)) * 2.0 - 1.0;
vec4 fdist = normalize(dist);
fdist *= sca;
//normalmap
vec4 nmap0 = texture2D(water_normalmap, vec2(waterTex1+ disdis*sca2)) * 2.0 - 1.0;
vec4 nmap2 = texture2D(water_normalmap, vec2(waterTex2 * tscale)) * 2.0 - 1.0;
vec4 vNorm = normalize(nmap0 + nmap2);
//load reflection
vec4 tmp = vec4(lightdir, 0.0);
vec4 refTex = texture2D(water_reflection, vec2(tmp));
vec4 refl = normalize(refTex);
vec3 N0 = vec3(texture2D(water_normalmap, vec2(waterTex1+ disdis*sca2)) * 2.0 - 1.0);
vec3 N1 = vec3(texture2D(water_normalmap, vec2(waterTex2 * tscale)) * 2.0 - 1.0);
vec3 N = normalize(normal+N0+N1);
vec3 specular_color = vec3(gl_LightSource[0].diffuse)
* pow(max(0.0, dot(N, H)), water_shininess) * 6.0;
vec4 specular = vec4(specular_color,0.5);
//calculate fresnel
vec4 invfres = vec4( dot(vNorm, viewt) );
vec4 fres = vec4(1.0) + invfres;
refl *= fres;
// take rain into account
float rain_factor = 0.7 - RainNorm;
rain_factor = clamp(rain_factor, 0, 1);
if (RainNorm > 0)
{
refl *= (0.9, 1.0, 0.6 * rain_factor, 1.0);
}
else
{
refl *= (0.9, 1.0, 0.6, 1.0);
}
specular = specular * 0.4 * rain_factor;
vec4 finalColor = refl + specular;
float fogFactor;
float fogCoord = ecPosition.z;
const float LOG2 = 1.442695;
fogFactor = exp2(-gl_Fog.density * gl_Fog.density * fogCoord * fogCoord * LOG2);
vec4 ambient_light = gl_LightSource[0].diffuse;
finalColor *= ambient_light;
if(gl_Fog.density == 1.0)
fogFactor=1.0;
gl_FragColor = mix(gl_Fog.color,finalColor, fogFactor);
}

Binary file not shown.

Binary file not shown.

Binary file not shown.

BIN
Textures/Runway/pa_0l.dds Normal file

Binary file not shown.

BIN
Textures/Runway/pa_0r.dds Normal file

Binary file not shown.

BIN
Textures/Runway/pa_11.dds Normal file

Binary file not shown.

BIN
Textures/Runway/pa_1c.dds Normal file

Binary file not shown.

BIN
Textures/Runway/pa_1l.dds Normal file

Binary file not shown.

BIN
Textures/Runway/pa_1r.dds Normal file

Binary file not shown.

BIN
Textures/Runway/pa_2c.dds Normal file

Binary file not shown.

BIN
Textures/Runway/pa_2l.dds Normal file

Binary file not shown.

BIN
Textures/Runway/pa_2r.dds Normal file

Binary file not shown.

BIN
Textures/Runway/pa_3c.dds Normal file

Binary file not shown.

BIN
Textures/Runway/pa_3l.dds Normal file

Binary file not shown.

BIN
Textures/Runway/pa_3r.dds Normal file

Binary file not shown.

BIN
Textures/Runway/pa_4c.dds Normal file

Binary file not shown.

BIN
Textures/Runway/pa_4r.dds Normal file

Binary file not shown.

BIN
Textures/Runway/pa_5c.dds Normal file

Binary file not shown.

BIN
Textures/Runway/pa_5r.dds Normal file

Binary file not shown.

BIN
Textures/Runway/pa_6c.dds Normal file

Binary file not shown.

BIN
Textures/Runway/pa_6r.dds Normal file

Binary file not shown.

BIN
Textures/Runway/pa_7c.dds Normal file

Binary file not shown.

BIN
Textures/Runway/pa_7r.dds Normal file

Binary file not shown.

BIN
Textures/Runway/pa_8c.dds Normal file

Binary file not shown.

BIN
Textures/Runway/pa_8r.dds Normal file

Binary file not shown.

BIN
Textures/Runway/pa_9c.dds Normal file

Binary file not shown.

BIN
Textures/Runway/pa_9r.dds Normal file

Binary file not shown.

BIN
Textures/Runway/pa_C.dds Normal file

Binary file not shown.

BIN
Textures/Runway/pa_L.dds Normal file

Binary file not shown.

BIN
Textures/Runway/pa_R.dds Normal file

Binary file not shown.

BIN
Textures/Runway/pa_aim.dds Normal file

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

BIN
Textures/Runway/pa_rest.dds 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.

Binary file not shown.

Binary file not shown.

Binary file not shown.

BIN
Textures/Runway/pc_0l.dds Normal file

Binary file not shown.

BIN
Textures/Runway/pc_0r.dds Normal file

Binary file not shown.

BIN
Textures/Runway/pc_11.dds Normal file

Binary file not shown.

BIN
Textures/Runway/pc_1c.dds Normal file

Binary file not shown.

BIN
Textures/Runway/pc_1l.dds Normal file

Binary file not shown.

BIN
Textures/Runway/pc_1r.dds Normal file

Binary file not shown.

BIN
Textures/Runway/pc_2c.dds Normal file

Binary file not shown.

BIN
Textures/Runway/pc_2l.dds Normal file

Binary file not shown.

BIN
Textures/Runway/pc_2r.dds Normal file

Binary file not shown.

BIN
Textures/Runway/pc_3c.dds Normal file

Binary file not shown.

BIN
Textures/Runway/pc_3l.dds Normal file

Binary file not shown.

BIN
Textures/Runway/pc_3r.dds Normal file

Binary file not shown.

BIN
Textures/Runway/pc_4c.dds Normal file

Binary file not shown.

BIN
Textures/Runway/pc_4r.dds Normal file

Binary file not shown.

BIN
Textures/Runway/pc_5c.dds Normal file

Binary file not shown.

BIN
Textures/Runway/pc_5r.dds Normal file

Binary file not shown.

BIN
Textures/Runway/pc_6c.dds Normal file

Binary file not shown.

BIN
Textures/Runway/pc_6r.dds Normal file

Binary file not shown.

BIN
Textures/Runway/pc_7c.dds Normal file

Binary file not shown.

BIN
Textures/Runway/pc_7r.dds Normal file

Binary file not shown.

BIN
Textures/Runway/pc_8c.dds Normal file

Binary file not shown.

BIN
Textures/Runway/pc_8r.dds Normal file

Binary file not shown.

BIN
Textures/Runway/pc_9c.dds Normal file

Binary file not shown.

BIN
Textures/Runway/pc_9r.dds Normal file

Binary file not shown.

BIN
Textures/Runway/pc_C.dds Normal file

Binary file not shown.

BIN
Textures/Runway/pc_L.dds Normal file

Binary file not shown.

BIN
Textures/Runway/pc_R.dds Normal file

Binary file not shown.

BIN
Textures/Runway/pc_aim.dds Normal file

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

BIN
Textures/Runway/pc_rest.dds 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.

Binary file not shown.

Binary file not shown.

Binary file not shown.

BIN
Textures/Terrain/Town.dds Normal file

Binary file not shown.

BIN
Textures/Terrain/Town1.dds Normal file

Binary file not shown.

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