OE3GSU 100 Posted March 19, 2015 Share Posted March 19, 2015 Hallo Freunde! Ich suche eine DataRef, die mir anzeigt, ob ein XP-Menu geöffnet ist. Damit könnte ich die LOD-Berechnung aussetzen, während das Menu offen ist. Leider finde ich keine passende. Hat wer einen Tip für mich? gerhard Link to comment Share on other sites More sharing options...
X-Friese 34 Posted March 19, 2015 Share Posted March 19, 2015 Wenn ein Menü angezeigt wird ist die Ausführung von Plugins unterbrochen. Selbst wenn es ein solches DataRef gäbe, du könntest es nicht sehen bzw. es würde immer "kein Menü" anzeigen. Link to comment Share on other sites More sharing options...
OE3GSU 100 Posted March 20, 2015 Author Share Posted March 20, 2015 Hallo Carsten! Ich danke für die Bestätigung meiner Befürchtung. na da muss ich halt damit leben, dass das LOD-Script "in den Keller" fährt, wenn ich im Flug ein Menu öffne. vlG Gerhard Link to comment Share on other sites More sharing options...
X-Friese 34 Posted March 20, 2015 Share Posted March 20, 2015 Warum sollte ein Skript in den Keller fahren? Man kann doch die Zeit, die seit dem letzten Aufruf (Frame) vergangen ist in einem DataRef ablesen. Wenn die länger als eine Sekunde ist würde ich einfach die Ausführung des Skripts für diesen Durchgang (Frame) aussetzen. Im Grunde ganz einfach. Um das LOD Skript zu beruhigen könnte man auch eine Tabelle aus den letzten fünf Werten für sim/operation/misc/frame_rate_period bilden und den Median bestimmen (nicht Mittelwert!). Möchtest du ein Codebeispiel? Ich habe gerade nicht die Zeit es zu testen, denn morgen referiere ich auf der Flugsimulatorkonferenz in Paderborn und muss noch packen. Es könnte vermutlich auf sowas hinauslaufen (ungetestet): dataref("FRP", "sim/operation/misc/frame_rate_period") --Tabelle fuer Framezeiten local FRAMETABLE = {0.05, 0.05, 0.05, 0.05, 0.05} local ACTUAL_FRAME = 1 -- Die globale Variable zur Nutzung innerhalb do_every_frame() FRAMERATE = 20 -- Berechnung der Framerate function calculate_framerate() ACTUAL_FRAME = ACTUAL_FRAME + 1 if ACTUAL_FRAME > 5 then ACTUAL_FRAME = 1 end FRAMETABLE[ACTUAL_FRAME] = FRP local frametime_sorted = {} for k,v in pairs(FRAMETABLE) do table.insert( frametime_sorted, v ) end table.sort(frametime_sorted) FRAMERATE = 1 / frametime_sorted[3] end -- das muss zuerst angemeldet werden! do_every_frame("calculate_framerate()") -- dann kann das "normale" Skript folgen function hier_legt_die_Henne_das_Ei() -- der individuelle Code, der -- die als Median berechnete Framerate -- verwendet. end -- danach kann man seinen eigentlichen Code anmelden do_every_frame("hier_legt_die_Henne_das_Ei()") Jetzt müsste es der Nutzer schaffen innerhalb von fünf aufeinander folgenden Frames mehr als zweimal ein Menü aufzurufen. Das halte ich für so unwahrscheinlich, dass der Beispielcode vermutlich funktionieren wird. Bitte berichte ob meine Idee dein Problem lösen kann. LG Carsten Link to comment Share on other sites More sharing options...
Recommended Posts
Archived
This topic is now archived and is closed to further replies.