1
0
Fork 0

Merge branch 'master' of \New Git\fgdata

This commit is contained in:
Vivian Meazza 2010-09-23 23:57:50 +01:00
commit 2fed0ebefb
12 changed files with 1732 additions and 306 deletions

Binary file not shown.

After

Width:  |  Height:  |  Size: 178 B

View file

@ -0,0 +1,316 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- Reflections + Bumpmapping + specular
PARAMETERS: There are two forms of cube map texture:- vertical cross and 6 images.
Either can be used - alternative forms are shown in <parameters> and in <texture-unit>
The reflection is set proportional to the shininess of the material. Thus by
varying the material shininess value over or between objects the amount of
refection can be controlled. The overall amount of reflection may be
adjusted by the use of <refl_correction> -1.0 (fully transparent)- 1.0 (fully opaque).
The overall values of the noisiness, coloured fringing or fresnel effect may be adjusted
by the use of <noisiness>, <rainbowiness> and <fresneliness>.
If your result is too dark/too light the overall ambient light value can be adjusted
by the use of <ambient_correction>. This correction also takes out some of the blueness
added as default to compensate for the lack of reflection.
To use a reflection map set <reflect_map> to 1,and the path to the map texture in
<texture n="8">
A default, null, bumpspec is specified as texture unit 4. To provide a custom bumpspec map,
define <texture n="4"> in the derived effect file
USE: To use the default reflection effect (controlled by material shininess values) use
<effect>
<inherits-from>Effects/reflect-bump-spec</inherits-from>
<object-name>Fuselage</object-name>
</effect>
To use your own reflection effect, use
<effect>
<inherits-from>Aircraft/Lightning/Models/Effects/lightningreflect</inherits-from>
<object-name>Fuselage</object-name>
</effect>
in your model file.
To use your own effect place your efffect file containing something like this:
<name>Effects/lightningreflect</name>
<inherits-from>Effects/reflect-bump-spec</inherits-from>
and the the modified tags in the path as above
EXAMPLES: You can find examples of both usages in the Hunter and Lightning models.
-->
<PropertyList>
<name>Effects/reflect-bump-spec</name>
<inherits-from>Effects/model-default</inherits-from>
<parameters>
<texture n="4">
<image>Aircraft/Generic/Effects/null_bumpspec.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="5">
<type>cubemap</type>
<!-- use this form for a cube cross -->
<!--<image>Aircraft/Generic/Effects/CubeCrosses/blue_sky_big.jpg</image>-->
<!-- use this form for a 6 image cube map -->
<images>
<positive-x>Aircraft/Generic/Effects/CubeMaps/fair-sky/fair-sky_px.png</positive-x>
<negative-x>Aircraft/Generic/Effects/CubeMaps/fair-sky/fair-sky_nx.png</negative-x>
<positive-y>Aircraft/Generic/Effects/CubeMaps/fair-sky/fair-sky_py.png</positive-y>
<negative-y>Aircraft/Generic/Effects/CubeMaps/fair-sky/fair-sky_ny.png</negative-y>
<positive-z>Aircraft/Generic/Effects/CubeMaps/fair-sky/fair-sky_pz.png</positive-z>
<negative-z>Aircraft/Generic/Effects/CubeMaps/fair-sky/fair-sky_nz.png</negative-z>
</images>
</texture>
<texture n="6">
<image>Aircraft/Generic/Effects/Rainbow.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="7">
<image>Aircraft/Generic/Effects/FresnelLookUp.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="8">
<image>Aircraft/737-300/Models/Effects/733LH.ReflectionMap3.png</image>
<filter>linear-mipmap-linear</filter>
<wrap-s>repeat</wrap-s>
<wrap-t>repeat</wrap-t>
<internal-format>normalized</internal-format>
</texture>
<rendering-hint>transparent</rendering-hint>
<shade-model>smooth</shade-model>
<rainbowiness type="float">0.01</rainbowiness>
<fresneliness>0.1</fresneliness>
<noisiness>0.25</noisiness>
<refl_correction>0.0</refl_correction>
<ambient_correction>0.05</ambient_correction>
<reflect_map>0</reflect_map>
</parameters>
<generate>
<tangent type="int">6</tangent>
<binormal type="int">7</binormal>
</generate>
<technique n="9">
<predicate>
<and>
<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>
<active><use>material/active</use></active>
<ambient><use>material/ambient</use></ambient>
<diffuse><use>material/diffuse</use></diffuse>
<specular><use>material/specular</use></specular>
<emissive><use>material/emissive</use></emissive>
<shininess><use>material/shininess</use></shininess>
<color-mode><use>material/color-mode</use></color-mode>
</material>
<blend>
<active><use>blend/active</use></active>
<source><use>blend/source</use></source>
<destination><use>blend/destination</use></destination>
</blend>
<shade-model><use>shade-model</use></shade-model>
<cull-face><use>cull-face</use></cull-face>
<rendering-hint><use>rendering-hint</use></rendering-hint>
<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>4</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>5</unit>
<type><use>texture[5]/type</use></type>
<!-- use this form for a cube cross -->
<!--<image><use>texture[5]/image</use></image>-->
<!-- use this form for a 6 image cube map -->
<images><use>texture[5]/images</use></images>
</texture-unit>
<texture-unit>
<unit>6</unit>
<type><use>texture[6]/type</use></type>
<image><use>texture[6]/image</use></image>
<filter><use>texture[6]/filter</use></filter>
<wrap-s><use>texture[6]/wrap-s</use></wrap-s>
<wrap-t><use>texture[6]/wrap-t</use></wrap-t>
</texture-unit>
<texture-unit>
<unit>7</unit>
<type><use>texture[7]/type</use></type>
<image><use>texture[7]/image</use></image>
<filter><use>texture[7]/filter</use></filter>
<wrap-s><use>texture[7]/wrap-s</use></wrap-s>
<wrap-t><use>texture[7]/wrap-t</use></wrap-t>
</texture-unit>
<texture-unit>
<unit>8</unit>
<image><use>texture[8]/image</use></image>
<filter><use>texture[8]/filter</use></filter>
<wrap-s><use>texture[8]/wrap-s</use></wrap-s>
<wrap-t><use>texture[8]/wrap-t</use></wrap-t>
<internal-format><use>texture[0]/internal-format</use></internal-format>
</texture-unit>
<texture-unit>
<unit>9</unit>
<type>noise</type>
</texture-unit>
<program>
<vertex-shader>Shaders/reflect-bump-spec.vert</vertex-shader>
<fragment-shader>Shaders/reflect-bump-spec.frag</fragment-shader>
<attribute>
<name>tangent</name>
<index>6</index>
</attribute>
<attribute>
<name>binormal</name>
<index>7</index>
</attribute>
</program>
<uniform>
<name>BaseTex</name>
<type>sampler-2d</type>
<value type="int">0</value>
</uniform>
<uniform>
<name>NormalTex</name>
<type>sampler-2d</type>
<value type="int">4</value>
</uniform>
<uniform>
<name>Environment</name>
<type>sampler-cube</type>
<value type="int">5</value>
</uniform>
<uniform>
<name>Rainbow</name>
<type>sampler-2d</type>
<value type="int">6</value>
</uniform>
<uniform>
<name>Fresnel</name>
<type>sampler-2d</type>
<value type="int">7</value>
</uniform>
<uniform>
<name>Map</name>
<type>sampler-2d</type>
<value type="int">8</value>
</uniform>
<uniform>
<name>Noise</name>
<type>sampler-3d</type>
<value type="int">9</value>
</uniform>
<!-- set the amount of fringing colour 0.0 - 1.0 -->
<uniform>
<name>rainbowiness</name>
<type>float</type>
<value><use>rainbowiness</use></value>
</uniform>
<!-- set the amount of fresnel effect colour 0.0 - 1.0 -->
<uniform>
<name>fresneliness</name>
<type>float</type>
<value><use>fresneliness</use></value>
</uniform>
<!-- set the amount of noisiness 0.0 - 1.0 -->
<uniform>
<name>noisiness</name>
<type>float</type>
<value><use>noisiness</use></value>
</uniform>
<!-- The reflection is set proportional to the shininess of the material.
The amount of reflection may be adjusted by the use of this correction
-1.0 (fully transparent)- 1.0 (fully opaque) -->
<uniform>
<name>refl_correction</name>
<type>float</type>
<value><use>refl_correction</use></value>
</uniform>
<!-- set the amount of ambient light correction 0.0 - 1.0 -->
<uniform>
<name>ambient_correction</name>
<type>float</type>
<value><use>ambient_correction</use></value>
</uniform>
<!-- use a reflection map-->
<uniform>
<name>reflect_map</name>
<type>float</type>
<value><use>reflect_map</use></value>
</uniform>
</pass>
</technique>
</PropertyList>

View file

@ -0,0 +1,123 @@
// -*- mode: C; -*-
// Licence: GPL v2
// Author: Vivian Meazza.
#version 120
varying vec4 rawpos;
varying vec4 ecPosition;
varying vec3 VNormal;
varying vec3 VTangent;
varying vec3 VBinormal;
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 sampler2D NormalTex;
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 halfV;
float NdotL, NdotHV;
vec4 color = constantColor;
vec4 specular = vec4(0.0);
vec4 ns = texture2D(NormalTex, gl_TexCoord[0].st);
vec3 n = ns.rgb * 2.0 - 1.0;
n = normalize(n.x * VTangent + n.y * VBinormal + n.z * 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 * ns.a
* 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 * ns.a, 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 * reflFactor, 1.0);
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);
}

View file

@ -0,0 +1,69 @@
// -*- mode: C; -*-
// Licence: GPL v2
// Author: Vivian Meazza.
varying vec4 rawpos;
varying vec4 ecPosition;
varying vec3 VNormal;
varying vec3 VTangent;
varying vec3 VBinormal;
varying vec3 Normal;
varying vec4 constantColor;
varying vec3 vViewVec;
varying vec3 reflVec;
varying vec4 Diffuse;
varying vec3 normal, lightDir, halfVector;
varying float alpha, fogCoord;
uniform mat4 osg_ViewMatrixInverse;
attribute vec3 tangent;
attribute vec3 binormal;
void main(void)
{
rawpos = gl_Vertex;
ecPosition = gl_ModelViewMatrix * gl_Vertex;
vec3 ecPosition3 = vec3(gl_ModelViewMatrix * gl_Vertex) / ecPosition.w;
vec3 t = normalize(cross(gl_Normal, vec3(1.0,0.0,0.0)));
vec3 b = normalize(cross(gl_Normal,t));
vec3 n = normalize(gl_Normal);
VNormal = normalize(gl_NormalMatrix * gl_Normal);
VTangent = normalize(gl_NormalMatrix * tangent);
VBinormal = normalize(gl_NormalMatrix * binormal);
Normal = normalize(gl_Normal);
lightDir = normalize(vec3(gl_LightSource[0].position));
halfVector = normalize(gl_LightSource[0].halfVector.xyz);
Diffuse = gl_Color * gl_LightSource[0].diffuse;
//Diffuse= gl_Color.rgb * max(0.0, dot(normalize(VNormal), gl_LightSource[0].position.xyz));
// Super hack: if diffuse material alpha is less than 1, assume a
// transparency animation is at work
if (gl_FrontMaterial.diffuse.a < 1.0)
alpha = gl_FrontMaterial.diffuse.a;
else
alpha = gl_Color.a;
fogCoord = abs(ecPosition3.z);
// Vertex in eye coordinates
vec3 vertVec = ecPosition.xyz;
vViewVec.x = dot(t, vertVec);
vViewVec.y = dot(b, vertVec);
vViewVec.z = dot(n, vertVec);
// calculate the reflection vector
vec4 reflect_eye = vec4(reflect(vertVec, VNormal), 0.0);
reflVec = normalize(gl_ModelViewMatrixInverse * reflect_eye).xyz;
gl_FrontColor = gl_Color;
constantColor = gl_FrontMaterial.emission
+ gl_Color * (gl_LightModel.ambient + gl_LightSource[0].ambient);
gl_Position = ftransform();
gl_TexCoord[0] = gl_TextureMatrix[0] * gl_MultiTexCoord0;
}

221
gui/dialogs/AIcarrier.xml Normal file
View file

@ -0,0 +1,221 @@
<?xml version="1.0"?>
<PropertyList>
<name>AIcarrier</name>
<modal>false</modal>
<layout>vbox</layout>
<!-- AI Carrier options -->
<text>
<halign>left</halign>
<label>AI Carrier</label>
<color>
<red>0.9</red>
<green>0.9</green>
<blue>0.9</blue>
<alpha>1</alpha>
</color>
</text>
<group>
<layout>hbox</layout>
<empty>
<pref-width>10</pref-width>
</empty>
<group>
<layout>vbox</layout>
<radio>
<halign>left</halign>
<label>Turn to launch course</label>
<property>/ai/models/carrier/controls/turn-to-launch-hdg</property>
<live>true</live>
<binding>
<command>dialog-apply</command>
</binding>
<binding>
<command>nasal</command>
<script>
var v = getprop("/ai/models/carrier/controls/turn-to-launch-hdg");
foreach (var c; props.globals.getNode("/ai/models").getChildren("carrier")){
c.getNode("controls/turn-to-launch-hdg").setBoolValue(v);
c.getNode("controls/turn-to-recovery-hdg").setBoolValue(0);
c.getNode("controls/turn-to-base-course").setBoolValue(0);
}
</script>
</binding>
</radio>
<radio>
<halign>left</halign>
<label>Turn to recovery course</label>
<property>/ai/models/carrier/controls/turn-to-recovery-hdg</property>
<live>true</live>
<binding>
<command>dialog-apply</command>
</binding>
<binding>
<command>nasal</command>
<script>
var v = getprop("/ai/models/carrier/controls/turn-to-recovery-hdg");
foreach (var c; props.globals.getNode("/ai/models").getChildren("carrier")){
c.getNode("controls/turn-to-recovery-hdg").setBoolValue(v);
c.getNode("controls/turn-to-launch-hdg").setBoolValue(0);
c.getNode("controls/turn-to-base-course").setBoolValue(0);
}
</script>
</binding>
</radio>
<radio>
<halign>left</halign>
<label>Turn to base course</label>
<property>/ai/models/carrier/controls/turn-to-base-course</property>
<live>true</live>
<binding>
<command>dialog-apply</command>
</binding>
<binding>
<command>nasal</command>
<script>
var v = getprop("/ai/models/carrier/controls/turn-to-base-course");
foreach (var c; props.globals.getNode("/ai/models").getChildren("carrier")){
c.getNode("controls/turn-to-base-course").setBoolValue(v);
c.getNode("controls/turn-to-recovery-hdg").setBoolValue(0);
c.getNode("controls/turn-to-launch-hdg").setBoolValue(0);
}
</script>
</binding>
</radio>
<checkbox>
<halign>left</halign>
<label>Operate Deck Elevators</label>
<property>/ai/models/carrier/controls/elevators</property>
<binding>
<command>dialog-apply</command>
</binding>
<binding>
<command>nasal</command>
<script>
var v = getprop("/ai/models/carrier/controls/elevators");
foreach (var c; props.globals.getNode("/ai/models").getChildren("carrier"))
c.getNode("controls/elevators").setBoolValue(v);
</script>
</binding>
</checkbox>
<checkbox>
<halign>left</halign>
<label>Enable LSO Communications</label>
<property>/sim/current-view/lso-commentary</property>
<binding>
<command>dialog-apply</command>
</binding>
</checkbox>
<checkbox>
<halign>left</halign>
<label>Enable Deck Park</label>
<property>/sim/current-view/deck-park</property>
<binding>
<command>dialog-apply</command>
</binding>
</checkbox>
<checkbox>
<halign>left</halign>
<label>Deck Lights</label>
<property>/ai/models/carrier/controls/lighting/deck-lights</property>
<binding>
<command>dialog-apply</command>
</binding>
<binding>
<command>nasal</command>
<script>
var v = getprop("/ai/models/carrier/controls/lighting/deck-lights");
foreach (var c; props.globals.getNode("/ai/models").getChildren("carrier"))
c.getNode("controls/lighting/deck-lights",1).setBoolValue(v);
</script>
</binding>
</checkbox>
<text>
<halign>left</halign>
<label>Discrete Flightdeck Floodlights (Red)</label>
</text>
<slider>
<halign>left</halign>
<width>75</width>
<height>25</height>
<property>/ai/models/carrier/controls/lighting/flood-lights-red-norm</property>
<binding>
<command>nasal</command>
<script>
var v = getprop("/ai/models/carrier/controls/lighting/flood-lights-red-norm");
foreach (var c; props.globals.getNode("/ai/models").getChildren("carrier"))
c.getNode("controls/lighting/flood-lights-red-norm",1).setDoubleValue(v);
</script>
</binding>
</slider>
</group>
<empty>
<stretch>true</stretch>
</empty>
</group>
<group>
<layout>hbox</layout>
<default-padding>6</default-padding>
<empty>
<stretch>true</stretch>
</empty>
<button>
<legend>OK</legend>
<default>true</default>
<equal>true</equal>
<binding>
<command>dialog-apply</command>
</binding>
<binding>
<command>dialog-close</command>
</binding>
</button>
<button>
<legend>Apply</legend>
<equal>true</equal>
<binding>
<command>dialog-apply</command>
</binding>
</button>
<button>
<legend>Reset</legend>
<equal>true</equal>
<binding>
<command>dialog-update</command>
</binding>
</button>
<button>
<legend>Cancel</legend>
<equal>true</equal>
<key>Esc</key>
<binding>
<command>dialog-close</command>
</binding>
</button>
<empty>
<stretch>true</stretch>
</empty>
</group>
</PropertyList>

74
gui/dialogs/ai.xml Normal file
View file

@ -0,0 +1,74 @@
<?xml version="1.0"?>
<!-- General ATC/AI options -->
<PropertyList>
<name>ai</name>
<modal>false</modal>
<layout>vbox</layout>
<button>
<legend>-</legend>
<pref-width>16</pref-width>
<pref-height>16</pref-height>
<halign>right</halign>
<border>2</border>
<binding>
<command>dialog-close</command>
</binding>
</button>
<text>
<!-- <label>ATC/AI Options</label> -->
<label>AI Options</label>
</text>
<hrule/>
<group>
<layout>hbox</layout>
<empty>
<pref-width>10</pref-width>
</empty>
<group>
<layout>vbox</layout>
<!-- <checkbox>
<halign>left</halign>
<label>Enable ATC</label>
<property>/sim/atc/enabled</property>
</checkbox> -->
<checkbox>
<halign>left</halign>
<label>Enable AI traffic</label>
<property>/sim/ai-traffic/enabled</property>
</checkbox>
<group>
<layout>hbox</layout>
<text>
<halign>left</halign>
<label>AI traffic density:</label>
</text>
<combo>
<halign>left</halign>
<property>/sim/ai-traffic/level</property>
<value>1</value>
<value>2</value>
<value>3</value>
</combo>
</group>
</group>
<empty>
<stretch>true</stretch>
</empty>
</group>
</PropertyList>

View file

@ -4,7 +4,7 @@
<name>radios</name> <name>radios</name>
<width>600</width> <width>600</width>
<height>330</height> <height>370</height>
<modal>false</modal> <modal>false</modal>
<text> <text>
@ -505,5 +505,15 @@
</button> </button>
</group> </group>
<group>
<x>400</x>
<y>60</y>
<button>
<legend>ATC Services in range</legend>
<binding>
<command>ATC-freq-search</command>
</binding>
</button>
</group>
</PropertyList> </PropertyList>

View file

@ -2,8 +2,7 @@
<PropertyList> <PropertyList>
<!-- Control the weather --> <name>stereoscopic-view-options</name>
<name>osg-display-settings</name>
<modal>false</modal> <modal>false</modal>
<resizable>false</resizable> <resizable>false</resizable>
<layout>vbox</layout> <layout>vbox</layout>
@ -18,7 +17,7 @@
</empty> </empty>
<text> <text>
<label>OSG Display Settings (experimental)</label> <label>Stereoscopic View Options</label>
</text> </text>
<empty> <empty>
@ -71,7 +70,7 @@
<empty><stretch>true</stretch></empty> <empty><stretch>true</stretch></empty>
<slider> <slider>
<min>0</min> <min>0</min>
<max>1.0</max> <max>10.0</max>
<property>/sim/rendering/osg-displaysettings/screen-distance</property> <property>/sim/rendering/osg-displaysettings/screen-distance</property>
<binding> <binding>
<command>dialog-apply</command> <command>dialog-apply</command>
@ -106,77 +105,4 @@
</text> </text>
</group> </group>
<group>
<layout>hbox</layout>
<default-padding>1</default-padding>
<text><label>Double Buffer</label></text>
<empty><stretch>true</stretch></empty>
<checkbox>
<live>true</live>
<property>/sim/rendering/osg-displaysettings/double-buffer</property>
<binding>
<command>dialog-apply</command>
</binding>
</checkbox>
</group>
<group>
<layout>hbox</layout>
<default-padding>1</default-padding>
<text><label>Depth Buffer</label></text>
<empty><stretch>true</stretch></empty>
<checkbox>
<live>true</live>
<property>/sim/rendering/osg-displaysettings/depth-buffer</property>
<binding>
<command>dialog-apply</command>
</binding>
</checkbox>
</group>
<group>
<layout>hbox</layout>
<default-padding>1</default-padding>
<text><label>RGB</label></text>
<empty><stretch>true</stretch></empty>
<checkbox>
<live>true</live>
<property>/sim/rendering/osg-displaysettings/rgb</property>
<binding>
<command>dialog-apply</command>
</binding>
</checkbox>
</group>
<group>
<layout>hbox</layout>
<default-padding>1</default-padding>
<text><label>Screen Width</label></text>
<empty><stretch>true</stretch></empty>
<input>
<width>100</width>
<height>25</height>
<live>true</live>
<property>/sim/rendering/osg-displaysettings/screen-width</property>
<binding>
<command>dialog-apply</command>
</binding>
</input>
</group>
<group>
<layout>hbox</layout>
<default-padding>1</default-padding>
<text><label>Screen Height</label></text>
<empty><stretch>true</stretch></empty>
<input>
<width>100</width>
<height>25</height>
<live>true</live>
<property>/sim/rendering/osg-displaysettings/screen-height</property>
<binding>
<command>dialog-apply</command>
</binding>
</input>
</group>
</PropertyList> </PropertyList>

View file

@ -6,7 +6,7 @@
<layout>vbox</layout> <layout>vbox</layout>
<text> <text>
<label>Configure Active Views</label> <label>Choose Active Views</label>
</text> </text>
<hrule/> <hrule/>

File diff suppressed because it is too large Load diff

View file

@ -1,10 +1,11 @@
<?xml version="1.0"?>
<PropertyList> <PropertyList>
<menu> <menu>
<label>File</label> <label>File</label>
<!--
<item> <item>
<label>Load</label> <label>Load Flight (Shift-F1)</label>
<binding> <binding>
<command>nasal</command> <command>nasal</command>
<script>gui.load_flight()</script> <script>gui.load_flight()</script>
@ -12,33 +13,51 @@
</item> </item>
<item> <item>
<label>Save</label> <label>Save Flight (Shift-F2)</label>
<binding> <binding>
<command>nasal</command> <command>nasal</command>
<script>gui.save_flight()</script> <script>gui.save_flight()</script>
</binding> </binding>
</item> </item>
<item> <item>
<label>Reset</label> <label>Scenario</label>
<binding>
<command>dialog-show</command>
<dialog-name>scenario</dialog-name>
</binding>
</item>
-->
<item>
<label>Reset (Shift-Esc)</label>
<binding> <binding>
<command>reset</command> <command>reset</command>
</binding> </binding>
</item> </item>
<item> <!-- <item>
<label>Set Lat/Lon Format</label>
<binding>
<command>nasal</command>
<script>
var f = getprop(var d = "/sim/lon-lat-format") + 1;
setprop(d, f &lt; 0 ? 0 : f > 2 ? 0 : f);
</script>
</binding>
</item>
<label>High-Res Snapshot</label> <label>High-Res Snapshot</label>
<enabled>false</enabled> <enabled>false</enabled>
<binding> <binding>
<command>hires-screen-capture</command> <command>hires-screen-capture</command>
</binding> </binding>
</item> </item>
-->
<item> <item>
<label>Snapshot</label> <label>Screenshot (F3)</label>
<binding> <binding>
<command>nasal</command> <command>nasal</command>
<script> <script>
gui.popdown();
var success = fgcommand("screen-capture"); var success = fgcommand("screen-capture");
var path = getprop("/sim/paths/screenshot-last"); var path = getprop("/sim/paths/screenshot-last");
if (success) if (success)
@ -48,14 +67,27 @@
</script> </script>
</binding> </binding>
</item> </item>
<!--
<item>
<label>Last snapshot</label>
<binding>
<command>nasal</command>
<script>
var path = getprop("/sim/paths/screenshot-last");
if (path != nil) gui.popupTip(...) else gui.popupTip("no screenshots yet in this session")
gui.popupTip("Screenshot written to '" ~ path ~ "'");
</script>
</binding>
</item>
<item> <item>
<label>Print Screen</label> <label>Print Screen (F3)</label>
<binding> <binding>
<command>old-print-dialog</command> <command>old-print-dialog</command>
</binding> </binding>
</item> </item>
-->
<item> <item>
<label>Sound Configuration</label> <label>Sound Configuration</label>
<binding> <binding>
@ -65,23 +97,7 @@
</item> </item>
<item> <item>
<label>Browse Internal Properties</label> <label>Quit (Esc)</label>
<binding>
<command>nasal</command>
<script>gui.property_browser()</script>
</binding>
</item>
<item>
<label>Logging</label>
<binding>
<command>dialog-show</command>
<dialog-name>logging</dialog-name>
</binding>
</item>
<item>
<label>Quit</label>
<binding> <binding>
<command>dialog-show</command> <command>dialog-show</command>
<dialog-name>exit</dialog-name> <dialog-name>exit</dialog-name>
@ -109,6 +125,16 @@
</item> </item>
<item> <item>
<!-- <item>
<label>Set Lat/Lon Format</label>
<binding>
<command>nasal</command>
<script>
var f = getprop(var d = "/sim/lon-lat-format") + 1;
setprop(d, f &lt; 0 ? 0 : f > 2 ? 0 : f);
</script>
</binding>
</item> -->
<label>View Options</label> <label>View Options</label>
<binding> <binding>
<command>dialog-show</command> <command>dialog-show</command>
@ -124,6 +150,14 @@
</binding> </binding>
</item> </item>
<item>
<label>Adjust LOD Ranges</label>
<binding>
<command>dialog-show</command>
<dialog-name>static-lod</dialog-name>
</binding>
</item>
<item> <item>
<label>Adjust View Position</label> <label>Adjust View Position</label>
<binding> <binding>
@ -141,7 +175,19 @@
</item> </item>
<item> <item>
<label>Instant Replay</label> <label>Toggle Glide Slope Tunnel</label>
<binding>
<command>nasal</command>
<script>
var p = "/sim/rendering/glide-slope-tunnel";
setprop(p, var i = !getprop(p));
gui.popupTip("Glide slope tunnel " ~ (i ? "enabled" : "disabled"));
</script>
</binding>
</item>
<item>
<label>Instant Replay (Ctrl-R)</label>
<binding> <binding>
<command>dialog-show</command> <command>dialog-show</command>
<dialog-name>replay</dialog-name> <dialog-name>replay</dialog-name>
@ -149,18 +195,10 @@
</item> </item>
<item> <item>
<label>Adjust LOD Ranges</label> <label>Stereoscopic View Options</label>
<binding> <binding>
<command>dialog-show</command> <command>dialog-show</command>
<dialog-name>static-lod</dialog-name> <dialog-name>stereoscopic-view-options</dialog-name>
</binding>
</item>
<item>
<label>OSG Display Settings</label>
<binding>
<command>dialog-show</command>
<dialog-name>osg-display-settings</dialog-name>
</binding> </binding>
</item> </item>
</menu> </menu>
@ -193,7 +231,7 @@
</item> </item>
<item> <item>
<label>Random Attitude</label> <label>Random Attitude</label>H
<binding> <binding>
<command>property-assign</command> <command>property-assign</command>
<property>/sim/presets/trim</property> <property>/sim/presets/trim</property>
@ -234,7 +272,7 @@
<name>autopilot</name> <name>autopilot</name>
<item> <item>
<label>Autopilot Settings</label> <label>Autopilot Settings (F11)</label>
<binding> <binding>
<command>dialog-show</command> <command>dialog-show</command>
<dialog-name>autopilot</dialog-name> <dialog-name>autopilot</dialog-name>
@ -249,45 +287,42 @@
</binding> </binding>
</item> </item>
<item> <item>
<label>Previous Waypoint</label> <label>Previous Waypoint</label>
<binding> <binding>
<command>nasal</command> <command>nasal</command>
<script>setprop("/autopilot/route-manager/input", "@previous")</script> <script>setprop("/autopilot/route-manager/input", "@previous")</script>
</binding> </binding>
</item> </item>
<item> <item>
<label>Next Waypoint</label> <label>Next Waypoint</label>
<binding> <binding>
<command>nasal</command> <command>nasal</command>
<script>setprop("/autopilot/route-manager/input", "@next")</script> <script>setprop("/autopilot/route-manager/input", "@next")</script>
</binding> </binding>
</item> </item>
<item>
<label>Set Lat/Lon Format</label>
<binding>
<command>nasal</command>
<script>
var f = getprop(var d = "/sim/lon-lat-format") + 1;
setprop(d, f &lt; 0 ? 0 : f > 2 ? 0 : f);
</script>
</binding>
</item>
<item>
<label>Map</label>
<binding>
<command>dialog-show</command>
<dialog-name>map</dialog-name>
</binding>
</item>
</menu> </menu>
<menu> <menu>
<label>Environment</label> <label>Environment</label>
<!--<item>
<label>Weather Scenario</label>
<binding>
<command>dialog-show</command>
<dialog-name>weather_scenario</dialog-name>
</binding>
</item>
<item>
<label>Weather Conditions</label>
<binding>
<command>dialog-show</command>
<dialog-name>weather</dialog-name>
</binding>
</item>-->
<item> <item>
<label>Global Weather</label> <label>Global Weather</label>
<binding> <binding>
@ -296,23 +331,23 @@
</binding> </binding>
</item> </item>
<item> <item>
<label>Local Weather</label> <label>Local Weather</label>
<binding> <binding>
<command>dialog-show</command> <command>dialog-show</command>
<dialog-name>local_weather</dialog-name> <dialog-name>local_weather</dialog-name>
</binding> </binding>
</item> </item>
<item> <item>
<label>Local Weather Tiles</label> <label>Local Weather Tiles</label>
<binding> <binding>
<command>dialog-show</command> <command>dialog-show</command>
<dialog-name>local_weather_tiles</dialog-name> <dialog-name>local_weather_tiles</dialog-name>
</binding> </binding>
</item> </item>
<item> <item>
<label>Time Settings</label> <label>Time Settings</label>
<binding> <binding>
<command>dialog-show</command> <command>dialog-show</command>
@ -333,6 +368,22 @@
<menu> <menu>
<label>Equipment</label> <label>Equipment</label>
<item>
<label>Map</label>
<binding>
<command>dialog-show</command>
<dialog-name>map</dialog-name>
</binding>
</item>
<item>
<label>Stopwatch</label>
<binding>
<command>dialog-show</command>
<dialog-name>stopwatch-dialog</dialog-name>
</binding>
</item>
<item> <item>
<label>Fuel and Payload</label> <label>Fuel and Payload</label>
<name>fuel-and-payload</name> <name>fuel-and-payload</name>
@ -343,7 +394,7 @@
</item> </item>
<item> <item>
<label>Radio Settings</label> <label>Radio Settings (F12)</label>
<binding> <binding>
<command>dialog-show</command> <command>dialog-show</command>
<dialog-name>radios</dialog-name> <dialog-name>radios</dialog-name>
@ -366,12 +417,10 @@
</binding> </binding>
</item> </item>
<item> <item>
<label>Stopwatch</label> <label> --- Failures ---</label>
<binding>
<command>dialog-show</command>
<dialog-name>stopwatch-dialog</dialog-name>
</binding>
</item> </item>
<item> <item>
@ -401,24 +450,25 @@
<menu> <menu>
<label>ATC/AI</label> <label>ATC/AI</label>
<item> <item>
<label>Frequencies</label> <label>ATC Options</label>
<binding>
<command>dialog-show</command>
<dialog-name>ai</dialog-name>
</binding>
</item>
<!-- Not working at present
<item>
<label>ATC Services in range</label>
<binding> <binding>
<command>ATC-freq-search</command> <command>ATC-freq-search</command>
</binding> </binding>
</item> </item>
<item> -->
<label>Options</label>
<binding>
<command>dialog-show</command>
<dialog-name>atc-ai</dialog-name>
</binding>
</item>
<item> <item>
<label>Tanker</label> <label>AI Tanker</label>
<name>tanker</name> <name>tanker</name>
<enabled>false</enabled> <enabled>false</enabled>
<binding> <binding>
@ -428,20 +478,31 @@
</item> </item>
<item> <item>
<label>Scenario</label> <label>AI Carrier Options</label>
<binding>
<command>dialog-show</command>
<dialog-name>AIcarrier</dialog-name>
</binding>
</item>
<item>
<label>AI Scenario Select - takes effect on next run </label>
<binding> <binding>
<command>dialog-show</command> <command>dialog-show</command>
<dialog-name>scenario</dialog-name> <dialog-name>scenario</dialog-name>
</binding> </binding>
</item> </item>
</menu> </menu>
<menu> <menu>
<label>Network</label> <label>Multiplayer</label>
<name>multiplayer</name> <name>multiplayer</name>
<item> <item>
<label>Chat</label> <label>Chat Dialog</label>
<binding> <binding>
<command>dialog-show</command> <command>dialog-show</command>
<dialog-name>chat-full</dialog-name> <dialog-name>chat-full</dialog-name>
@ -470,13 +531,15 @@
<command>nasal</command> <command>nasal</command>
<script> <script>
if (contains(globals, "MPCarriers")) { if (contains(globals, "MPCarriers")) {
MPCarriers.carrier_dialog.show(); MPCarriers.carrier_dialog.show();
} else { } else {
gui.popupTip("No MPCarriers around at the moment."); gui.popupTip("No MPCarriers around at the moment.");
} }
</script> </script>
</binding> </binding>
</item> </item>
</menu> </menu>
<menu> <menu>
@ -513,13 +576,13 @@
</binding> </binding>
</item> </item>
<item> <item>
<label>Reload Network</label> <label>Reload Network</label>
<binding> <binding>
<command>reinit</command> <command>reinit</command>
<subsystem>io</subsystem> <subsystem>io</subsystem>
</binding> </binding>
</item> </item>
<item> <item>
<label>Nasal Console</label> <label>Nasal Console</label>
@ -577,20 +640,32 @@
<step type="int">1</step> <step type="int">1</step>
</binding> </binding>
</item> </item>
<item>
<label>Browse Internal Properties</label>
<binding>
<command>nasal</command>
<script>gui.property_browser()</script>
</binding>
</item>
<item>
<label>Logging</label>
<binding>
<command>dialog-show</command>
<dialog-name>logging</dialog-name>
</binding>
</item>
</menu> </menu>
<menu> <menu>
<label>Help</label> <label>Help</label>
<item> <item>
<label>About</label> <label>Help (opens in browser)</label>
<binding>
<command>dialog-show</command>
<dialog-name>about</dialog-name>
</binding>
</item>
<item>
<label>Help</label>
<binding> <binding>
<command>old-help-dialog</command> <command>old-help-dialog</command>
</binding> </binding>
@ -606,7 +681,11 @@
</item> </item>
<item> <item>
<label>Basic Keys</label> <label> --- Key Reference ---</label>
</item>
<item>
<label>Basic Simulator Keys</label>
<binding> <binding>
<command>nasal</command> <command>nasal</command>
<script>gui.showHelpDialog("/sim/help/basic")</script> <script>gui.showHelpDialog("/sim/help/basic")</script>
@ -622,7 +701,7 @@
</item> </item>
<item> <item>
<label>Aircraft Help</label> <label> Current Aircraft Keys (?)</label>
<binding> <binding>
<command>nasal</command> <command>nasal</command>
<script>gui.showHelpDialog("/sim/help")</script> <script>gui.showHelpDialog("/sim/help")</script>
@ -630,15 +709,7 @@
</item> </item>
<item> <item>
<label>Toggle Glide Slope Tunnel</label> <label> ---------------------</label>
<binding>
<command>nasal</command>
<script>
var p = "/sim/rendering/glide-slope-tunnel";
setprop(p, var i = !getprop(p));
gui.popupTip("Glide slope tunnel " ~ (i ? "enabled" : "disabled"));
</script>
</binding>
</item> </item>
<item> <item>
@ -659,6 +730,14 @@
<script>tutorial.stopTutorial()</script> <script>tutorial.stopTutorial()</script>
</binding> </binding>
</item> </item>
<item>
<label>About</label>
<binding>
<command>dialog-show</command>
<dialog-name>about</dialog-name>
</binding>
</item>
</menu> </menu>
</PropertyList> </PropertyList>

View file

@ -272,7 +272,7 @@ top down before the key bindings are parsed.
<key n="32"> <key n="32">
<name>SPACE</name> <name>SPACE</name>
<desc>PTT - Push To Talk (via VoIP)</desc> <desc>PTT - Push To Talk (via FGCom)</desc>
<binding> <binding>
<command>nasal</command> <command>nasal</command>
<script>space(1, modifiers.getValue())</script> <script>space(1, modifiers.getValue())</script>