1
0
Fork 0

Add generic redout.

This commit is contained in:
stuart 2008-04-23 20:44:57 +00:00
parent efaeff5180
commit 01d21c928a
3 changed files with 67 additions and 19 deletions

View file

@ -1,12 +1,15 @@
# Damped G value - starts at 1.
var GDamped = 1.0;
var running = 0;
var previousG = 1.0;
var running_redout = 0;
var running_compression = 0;
var fdm = "jsb";
var blackout_start = nil;
var blackout_end = nil;
var redout_start = nil;
var redout_end = nil;
var compression_rate = nil;
var internal = nil;
var lp_black = nil;
@ -14,7 +17,7 @@ var lp_red = nil;
var run = func {
if (running)
if (running_redout or running_compression)
{
var GCurrent = 1.0;
@ -28,7 +31,10 @@ var run = func {
GCurrent = getprop("/accelerations/pilot-g[0]");
}
if (GCurrent == nil) { GCurrent = 1.0; }
if (GCurrent == nil)
{
GCurrent = 1.0;
}
# Updated the GDamped using a filter.
if (GDamped < 0)
@ -45,23 +51,37 @@ var run = func {
if (internal)
{
if (GDamped > blackout_start)
if (running_redout)
{
if (GDamped > blackout_start)
{
# Blackout
setprop("/sim/rendering/redout/red",0);
setprop("/sim/rendering/redout/alpha",
(GDamped - blackout_start) / (blackout_end - blackout_start));
}
elsif (GDamped < redout_start)
{
}
elsif (GDamped < redout_start)
{
# Redout
setprop("/sim/rendering/redout/red",1);
setprop("/sim/rendering/redout/alpha",
abs((GDamped - redout_start) / (redout_end - redout_start)));
}
else
{
}
else
{
setprop("/sim/rendering/redout/alpha",0);
}
}
if (running_compression)
{
# Apply any compression due to G-forces
if (GDamped != previousG)
{
var current_y_offset = getprop("/sim/current-view/y-offset-m");
setprop("/sim/current-view/y-offset-m", current_y_offset - (GDamped - previousG) * compression_rate);
previousG = GDamped;
}
}
}
else
@ -84,14 +104,13 @@ var check_params = func() {
blackout_end = getprop("/sim/rendering/redout/parameters/blackout-complete-g");
redout_start = getprop("/sim/rendering/redout/parameters/redout-onset-g");
redout_end = getprop("/sim/rendering/redout/parameters/redout-complete-g");
if ((blackout_start == nil) or
(blackout_end == nil) or
(redout_start == nil) or
(redout_end == nil) )
{
# No valid properties - no point running
running = 0;
running_redout = 0;
}
}
@ -99,23 +118,23 @@ _setlistener("/sim/signals/nasal-dir-initialized",
func {
fdm = getprop("/sim/flight-model");
check_params();
running = getprop("/sim/rendering/redout/enabled");
running_redout = getprop("/sim/rendering/redout/enabled");
internal = getprop("/sim/current-view/internal");
lp_black = aircraft.lowpass.new(0.2);
lp_red = aircraft.lowpass.new(0.25);
run();
setlistener("/sim/rendering/redout/enabled", func(n) {
if ((running == 0) and n.getBoolValue())
if ((running_redout == 0) and n.getBoolValue())
{
running = 1;
running_redout = 1;
run();
}
else
{
running = n.getBoolValue();
running_redout = n.getBoolValue();
}
});
}, 1);
setlistener("/sim/rendering/redout/parameters", func {
# one parameter has changed, read them all in again
@ -125,5 +144,21 @@ _setlistener("/sim/signals/nasal-dir-initialized",
setlistener("/sim/current-view/internal", func(n) {
internal = n.getBoolValue();
});
setlistener("/sim/rendering/headshake/enabled", func(n) {
if ((running_compression == 0) and n.getBoolValue())
{
running_compression = 1;
run();
}
else
{
running_compression = n.getBoolValue();
}
}, 1);
setlistener("/sim/rendering/headshake/rate-m-g", func(n) {
compression_rate = n.getValue();
}, 1);
}
);

View file

@ -7,11 +7,20 @@
<modal>false</modal>
<text>
<label>G-Force Blackout Settings</label>
<label>G-Force Blackout and Movement Settings</label>
</text>
<hrule/>
<checkbox>
<halign>left</halign>
<label>Enable view movement due to G-force.</label>
<property>/sim/rendering/headshake/enabled</property>
<binding>
<command>dialog-apply</command>
</binding>
</checkbox>
<checkbox>
<halign>left</halign>
<label>Enable Blackout and Redout due to G-force.</label>
@ -21,7 +30,7 @@
</binding>
</checkbox>
<hrule/>
<hrule/>
<text>
<halign>center</halign>

View file

@ -112,6 +112,10 @@ Started September 2000 by David Megginson, david@megginson.com
<redout-complete-g>-4</redout-complete-g>
</parameters>
</redout>
<headshake>
<enabled type="bool" userarchive="y">true</enabled>
<rate-m-g>0.005</rate-m-g>
</headshake>
</rendering>
<model-hz type="int">120</model-hz>
<navdb>