Nasal Problem

Neu- und Weiterentwicklung von Flugzeugen.

Nasal Problem

Beitragvon dg-505 » Fr Sep 25, 2015 12:46 pm

Hallo Leute,

für die Twin Otter versuche ich gerade hinzubekommen, dass ein Popup erscheint, wenn die Schubumkehr aktiviert ist.

Zur Zeit habe ich das mit folgendem Code zusammengebastelt:
Code: Alles auswählen
var reverse_active = func {
    gui.popupTip("Thrust reverse active", 30, nil, {x: 1, y: 1});
}
setlistener("/controls/engines/engine/reverser", reverse_active);
setlistener("/controls/engines/engine[1]/reverser", reverse_active);

Das Popup "Thrust reverse active" erscheint aber jedes mal, wenn die Schubumkehr aus- oder eingeschaltet wird, d.h. jedes mal wenn sich der Wert der Properties "/controls/engines/engine/reverser" und "/controls/engines/engine[1]/reverser" ändert.

Gibt es irgendeine Mölichkeit, es so hinzukriegen, dass bei Aktivierung der Schubumkehr die Nachricht "Thrust reverse active" erscheint und bei Deaktivierung "Thrust reverse not active" ?
Womöglich über ein conditional mit if und else? Hab damit schonmal rumprobiert, aber kam nichts bei raus. Bin gerade ein wenig am verzweifeln.

Danke im Voraus
Joni
If flying was the language of men, soaring would be it's poetry
DHC-6 Twin Otter
Benutzeravatar
dg-505
 
Beiträge: 177
Registriert: Mo Mär 17, 2014 4:12 pm
Wohnort: Mittelhessen
Callsign:

Re: Nasal Problem

Beitragvon rollershutter » So Nov 22, 2015 6:56 pm

Hallo Joni,
ich weiß nicht, ob das jetzt noch hilfreich ist:
habe mich daran versucht, nachdem ich im Wiki an mehreren Stellen was gefunden hatte.

Zunächst wollte ich die Überwachung der Property 'reverser' für beide Motoren getrennt haben, wegen der Throttle-GUI.
soetwas:
Code: Alles auswählen
var reverse_chg1 = func {
   if (getprop("controls/engines/engine[1]/reverser")) {
      gui.popupTip("Thrust reverse active (engine[1])", 30, nil, {x: 1, y: 1});
   } else {
      gui.popupTip("Thrust reverse inactive (engine[1])", 30, nil, {x: 1, y: 1});
   }
}
setlistener("/controls/engines/engine[1]/reverser", reverse_chg1); ## test: (komisch, das wird bei allen engines getriggert...)

funktioniert, allerdings habe ich da beobachtet, dass allein die einzelne Zeile:
Code: Alles auswählen
setlistener("/controls/engines/engine[1]/reverser", reverse_chg1);

dazu führt, das bei jeder Änderung des Umkehrschubs mit dem Throttle-GUI-Widget, ob rechts oder links, die Funktion getriggert wird,

evtl wird da schon bei einem anderen Listener bei jeder Änderung in die (beide) Properties geschrieben?
oder kann man nicht getrennt je einen unabhängigen Listener haben (liegt das daran, dass es im Property-Tree statt .../engine[0]/ die Verzweigung .../engine/ gibt?)
Also, da ist mir einiges nicht klar, evtl kann mir jmd damit auf die Sprünge helfen?

Dann hab ich halt mal wie folgt beide Property-Abfragen in eine Funktion gepackt:
Code: Alles auswählen
var reverse_chg = func {
   if (getprop("controls/engines/engine[0]/reverser")) {
      mess_e0="active (engine[0])"
   } else {
      mess_e0="inactive (engine[0])"
   }
   if (getprop("controls/engines/engine[1]/reverser")) {
      mess_e1="active (engine[1])"
   } else {
      mess_e1="inactive (engine[1])"
   }
   gui.popupTip(sprintf("Thrust reverse:\n%s\n%s", mess_e0, mess_e1), 30, nil, {x: 1, y: 1});
}
setlistener("/controls/engines/engine[1]/reverser", reverse_chg); ## test: (komisch, das wird bei allen engines getriggert...)

es ist momentan anscheinend egal, welche Engine-Property dann überwacht wird...

Bei Tests mit der svn-Version der Twin Otter ist mir auch aufgefallen, dass die GUI-Slider, nachdem man die Motoren gestartet hat nur noch auf den ersten Motor 'hören', also der Schub des zweiten Mortors und die Animation der Schubhebel im Cockpit sich nur noch nach der 'reverser'-Property des linken Motors richten.

_______________
edit: nach dem separaten Testen des Umkehrschubs auf beiden Motoren mittels Tastenkombination (auf die Schnelle in die -base.xml eingefügt) hat sich gezeigt, dass hier nur der Listener der entsprechenden Engine-Property reagiert, ich vermute deshalb, dass mit dem GUI-Regler-Fensterchen irgendwie immer beide Properties geschrieben werden und deshalb immer ein evtl. vorhandener Listener, egal auf welcher Engine getriggert wird.

edit1: erstmal die Bitte um Verzeihung für den langen Post!
...ich habe da noch ein bischen dran gesessen und meine herausgefunden zu haben, wie man das mit den Listenern schöner machen kann, generell finde ich hier eine getrennte Benachrichtigung für die Motoren besser, allerdings weiß ich gerade noch nicht, wie man dann abfängt, dass beide Properties umgeschaltet wurden, da die Tooltips sich ersetzen,sieht man dann nur die letzte Benachrichtigung...

Code: Alles auswählen
var reverse_chg = func (c_node, c_name) {
   if (c_node.getValue())
      var c_status = "active";
   else
      var c_status = "inactive";
   print("Thrust reverse " ~ c_status ~ ": " ~ c_name);
   gui.popupTip(sprintf("Thrust reverse %s: %s", c_status, c_name), 30, nil, {x: 1, y: 1});
};
setlistener("/controls/engines/engine[0]/reverser", func(c_node) { reverse_chg(c_node, c_name="engine 1"); });
setlistener("/controls/engines/engine[1]/reverser", func(c_node) { reverse_chg(c_node, c_name="engine 2"); });


Gruß, Sebastian
i5-2400 - 8GB DDR3 - integrated Graphics - Ubuntu 14.04.5 64bit lubuntu-desktop - FG: stable | next (wiki.flightgear.org/Scripted_Compilation_on_Linux_Debian/Ubuntu)
rollershutter
 
Beiträge: 107
Registriert: Mi Okt 21, 2015 8:40 pm
Callsign:

Re: Nasal Problem

Beitragvon dg-505 » Mo Nov 23, 2015 9:29 pm

N'abend Sebastian,

erstmal Danke für die ausführliche Antwort! Hilfreich ist es auf alle Fälle :)
Obwohl das Gesummsel doch etwas über meinen Nasal-Fähigkeiten liegt.

rollershutter hat geschrieben:Bei Tests mit der svn-Version der Twin Otter ist mir auch aufgefallen, dass die GUI-Slider, nachdem man die Motoren gestartet hat nur noch auf den ersten Motor 'hören', also der Schub des zweiten Mortors und die Animation der Schubhebel im Cockpit sich nur noch nach der 'reverser'-Property des linken Motors richten.

Tja, das hab ich jetzt gefixt. Was ein verwechselter Buchstabe doch für Auswirkungen haben kann...

rollershutter hat geschrieben:da die Tooltips sich ersetzen,sieht man dann nur die letzte Benachrichtigung

Jo, im Moment kann immer nur ein PopUp-Fenster sur selben Zeit angezeigt werden, was manchmal ein wenig nervt. Ich weiß aber auch nicht, ob das Absicht ist, oder da noch was in Entwicklung ist.

rollershutter hat geschrieben:
Code: Alles auswählen
var reverse_chg = func {
   if (getprop("controls/engines/engine[0]/reverser")) {
      mess_e0="active (engine[0])"
   } else {
      mess_e0="inactive (engine[0])"
   }
   if (getprop("controls/engines/engine[1]/reverser")) {
      mess_e1="active (engine[1])"
   } else {
      mess_e1="inactive (engine[1])"
   }
   gui.popupTip(sprintf("Thrust reverse:\n%s\n%s", mess_e0, mess_e1), 30, nil, {x: 1, y: 1});
}
setlistener("/controls/engines/engine[1]/reverser", reverse_chg); ## test: (komisch, das wird bei allen engines getriggert...)


Da man immer nur ein popup sehen kann, finde ich diesen Code z.Zt. am besten, obwohl ich auch lieber getrennte Benachrichtigungen hätte. Hab ich so mit leichten Änderungen übernommen.

Vielen Dank für die Hilfe!
Joni
If flying was the language of men, soaring would be it's poetry
DHC-6 Twin Otter
Benutzeravatar
dg-505
 
Beiträge: 177
Registriert: Mo Mär 17, 2014 4:12 pm
Wohnort: Mittelhessen
Callsign:

Re: Nasal Problem

Beitragvon dg-505 » Di Nov 24, 2015 4:33 pm

rollershutter hat geschrieben:Bei Tests mit der svn-Version der Twin Otter

Kurz nebenbei bemerkt: Im svn-repo (FGAddon) ist nicht die aktuellste Version enthalten, die ist schon ein paar Monate alt. Die aktuellste liegt (leider) bei FGMembers in Github: https://github.com/bolan/dhc6
If flying was the language of men, soaring would be it's poetry
DHC-6 Twin Otter
Benutzeravatar
dg-505
 
Beiträge: 177
Registriert: Mo Mär 17, 2014 4:12 pm
Wohnort: Mittelhessen
Callsign:

Re: Nasal Problem

Beitragvon rollershutter » Fr Dez 11, 2015 6:16 pm

Hi Joni,
tut mir leid, dass ich mich erst jetzt wieder melde...

Ich würde dann der Vollständigkeit halber noch einen Listener auf der "reverse"-Property des linken Motors lauschen lassen, denn:

-so wie es jetzt mit dem Regler-Fenster funktioniert, werden zwar immer beide Properties getriggert, aber wenn jmd. - wie ich testweise mittels eingefügter Tastenkombi - wirklich nur jeweils für die Motoren getrennt den Umkehrschub aktiviert, wird beim linken Motor kein Popup erscheinen.
-Beim Hantieren mit dem Regler-Fensterchen oder mit Taste "ENTF" würden mit beiden Listenern zwar immer zwei Popups kommen, aber man sieht ja nur das Letzte... ;)

Also einfach das Gleiche noch für engine[0] hinzufügen:
Code: Alles auswählen
setlistener("/controls/engines/engine[0]/reverser", reverse_chg);


Ich kann gerne erklären, was ich außerdem in meinen Vorschlägen zusammengebastelt und gepostet habe.

Auch habe ich versucht eine Timer-gesteuerte Verzögerung bei mehreren (zu) schnell hintereinander ausgelösten Popups zu basteln, die funktioniert aber noch nicht wie ich denke dass sie soll... :(
(da könnte ich nasal-Hilfe gebrauchen)
...d.h. es funktioniert für zwei Motoren, aber ich wollte das generalisieren für beliebige Anzahl und das funzt nur manchmal... :o

dg-505 hat geschrieben:Tja, das hab ich jetzt gefixt. Was ein verwechselter Buchstabe doch für Auswirkungen haben kann...

Super :)

dg-505 hat geschrieben:Hab ich so mit leichten Änderungen übernommen.

Freut mich dass ich helfen konnte! :)

dg-505 hat geschrieben:Im svn-repo (FGAddon) ist nicht die aktuellste Version enthalten, die ist schon ein paar Monate alt.

Ja danke, habe ich mal geladen. Ich nutze zur Zeit noch FG3.4, da ist leider das Cockpit der aktuellen Version nicht so zu sehen wie es sein sollte...

Gruß, Sebastian
i5-2400 - 8GB DDR3 - integrated Graphics - Ubuntu 14.04.5 64bit lubuntu-desktop - FG: stable | next (wiki.flightgear.org/Scripted_Compilation_on_Linux_Debian/Ubuntu)
rollershutter
 
Beiträge: 107
Registriert: Mi Okt 21, 2015 8:40 pm
Callsign:


Zurück zu Flugzeuge

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 1 Gast