Liebe Community!
Um mich mit Lua vertraut zu machen, arbeite ich gerade an einem Skriptupdate für den RSSLO-4010er. Dabei bin ich bei den Tastatureingaben auf eine Verwirrung gestoßen. Im Skript selber kann man ja nicht nach Tastatureingaben direkt suchen, sondern nur auf die veränderten Werte der Controls, die durch den InputMapper verbunden sind, warten. Nun frage ich mich aber, wie man jetzt genau mit dem Setzen von Werten aus dem Skript umgeht.
Nehmen wir das Beispiel „Fahrschalter“ Dieser hat bestimmte Positionen, genannt Nocken, in denen er einrastet. Ohne Skript ist das Virtual Throttle Control aber völlig frei setzbar, also muss ich im Skript den gesetzten Wert abfragen und dann auf die nächstgelegene Nocke setzen. Bis jetzt mache ich das direkt über die „OnControlValueChange“-Methode, das ist aber suboptimal, weil die natürlich bei jeder kleinen Änderung triggert und bei Tastatureingaben sind die Änderungen dann so klein, dass der Fahrschalter direkt wieder auf seinen Ausgangswert gesetzt wird. Jetzt gibt es noch die Update-Methode, da hätte ich 2 Gedanken. Einerseits könnte ich eine starre Zeit warten, bevor das jeweilige Control auf die richtige Position gesetzt wird, das macht alles aber sehr unresponsive. Mein 2. Gedanke wäre, in jedem Updateschritt die aktuelle Position abzufragen und mit der letzten gespeicherten Position zu vergleichen. Hat sie sich geändert, tut man erstmal nichts. Ist sie jedoch gleich, ruft man die Methode auf, die die Position korrigiert. Dabei muss ich aber in jedem Updateschritt einen Call an die GetValue-Methode machen und das kommt mir sehr kostspielig vor, vor allem, wenn man mehrere Controls abfragen muss.
Zusätzlich verwirrt mich das Tastatursystem aufgrund folgender Tatsache: Ich habe am 4010er zum Debuggen eine Alertbox anzeigen lassen, wenn ich H drücke, um die Headlights einzuschalten. Dabei ist mir dann aufgefallen, dass einmaliges Drücken den aktuellen Wert erhöht, aber längeres Gedrückthalten den Wert nicht weiter verändert Im Originalskript hat längeres Gedrückthalten jedoch durchaus den Wert stetig erhöht, zumindest beim Fahrschalter. Daher meine Frage, ob das ein gewolltes Verhalten ist, da es sich bei den Headlights nur um einen An/Ausschalter handelt, oder ob man hier im Skript noch mehr berücksichtigen muss?
Gibt es da wirklich keinen besseren Weg Was sind die Meinungen der erfahrenen Entwickler dazu? Habt ihr da noch Tipps für mich?