Air Manager- Aiguilles vibrantes

Bonjour à tous.
Suite à une question posée sur le forum anglais d'Air Manager, j'ai regardé rapidement comment on pouvait faire vibrer les aiguilles d'une jauge AM, pour les avions anciens par exemple.
Avec un timer c'est faisable, et il faut aussi le coupler avec les RPM pour plus de réalisme, mais le RPM n'est pas fiable.
J'ai donc, après quelques essais de différentes variables Simconnect, utilisé "engine percent sound", ça marche bien.
Avec 3 amplitudes de vibrations différentes en fonction du régime, c'est assez réaliste.
Ci joint le code, à remplacer dans une copie de la jauge "Baron 58 airspeed indicator" à télécharger sur le store, si vous voulez essayer, mais bien évidemment le principe marche sur n'importe quelle jauge.
Jacques
Suite à une question posée sur le forum anglais d'Air Manager, j'ai regardé rapidement comment on pouvait faire vibrer les aiguilles d'une jauge AM, pour les avions anciens par exemple.
Avec un timer c'est faisable, et il faut aussi le coupler avec les RPM pour plus de réalisme, mais le RPM n'est pas fiable.
J'ai donc, après quelques essais de différentes variables Simconnect, utilisé "engine percent sound", ça marche bien.
Avec 3 amplitudes de vibrations différentes en fonction du régime, c'est assez réaliste.
Ci joint le code, à remplacer dans une copie de la jauge "Baron 58 airspeed indicator" à télécharger sur le store, si vous voulez essayer, mais bien évidemment le principe marche sur n'importe quelle jauge.
- Code: Tout sélectionner
-- Airpeed indicator with vibrating needle
-------------------------------------------
img_add_fullscreen("airspeed_backdrop2.png")
img_neddle = img_add_fullscreen("neddle.png")
img_rotate(img_neddle, -38)
local needleairspeed=0
local rpmlevel=0
local rand=1
local maxrnd=2
local rpmlvl=0
local val=0
function vibrate(soundrpm)
if soundrpm<0.1 then
vibrationlvl=0
else vibrationlvl=soundrpm
end
end
function timer_callback() -- function called every 40 mseconds,
rand=-rand -- offset value of the needle, alternatively to the left or to the right
--setting up of the amplitude of vibrations depending of the % of sound produced, since engine vibration variable is not reliable (Change val values to taste!)
if vibrationlvl>90 then -- high rpm, small amplitude
val=0.2
elseif vibrationlvl>30 then -- medium range rpm, larger amplitude of needle movements
val=1
elseif vibrationlvl>0.5 then --slow rpm, smaller amplitude of needle movements
val=3
else -- engine stopped, no needle movements
val=0
end
needlepos=needleairspeed+(rand*val) -- calculation of the needle movement
img_rotate(img_neddle, needlepos*320/220 - 38)
end
function PT_airspeed(airspeed)
-- rotate the needle only if airspeed is above 25kts
needleairspeed = var_cap(airspeed, 25, 260)
end
xpl_dataref_subscribe("sim/cockpit2/gauges/indicators/airspeed_kts_pilot", "FLOAT", PT_airspeed)
fsx_variable_subscribe("AIRSPEED INDICATED", "knots", PT_airspeed)
-- init the needle
fsx_variable_subscribe("GENERAL ENG COMBUSTION SOUND PERCENT:1","percent",vibrate)
-- init the needle
PT_airspeed(0)
timer_start(0,40,timer_callback) -- increase the 40 value to slow down the overall vibrations for "slow running" engines (up to 100 max)
Jacques