Jump to content
Sign in to follow this  
fzonk

Animationszustandsabfrage

Recommended Posts

Hallo @Neo

Ich weiß das Thema ist nicht ganz neu für dich, aber ich würde es gern mal wieder auf den Tisch bringen. Bei den Animationen kann man aktuell abfragen ob diese gestartet oder gestoppt sind und daraus weiter Aktionen erstellen. Nun habe ich den Fall, dass ich aber nur an einer bestimmten Stelle eine Aktion auslösen will. Ich habe ein Beispiel erstellt, in diesem sind auch mehrere Ansätze wie es aussehen könnte (beide deaktiviert).

Animationszustand.mbp

Ziel ist es bei der Klappbrücke, dass wenn die Animation endet (bis hierhin funktioniert es) und nur wenn die Brücke geschlossen ist (Animationszustand 0) eine Aktion (in dem Fall das Umschalten der Lampe) aufgeführt wird. Wäre es da nicht sinnvoll, wenn ich auch direkt die Stellung der Animation abfragen könnte. Sinngemäß:

if animations == 0 then

oder

if $("Kleine Klappbrücke").animations["Global"] == 0 then

oder

if animations.state == 0 then

Mir geht es dabei noch nicht mal um Stufen in der Animation (auch wenn ich da ebenfalls bedarf für hätte, um Animationen gezielt an einer Stelle zu stoppen), in dem Konkreten Beispiel geht es „einfach“ nur um die Abfrage 0 oder 1 (Anfang oder Ende). Ich könnte auch mit Hilfsmitteln (Variablen oder sogar der Lampe) zum gewünschten Ziel kommen, finde es aber umständlich. Vielleicht wird es ja doch noch die Möglichkeit der direkten Abfrage noch geben (oder ich finde mal wieder nicht die richtige Lösung).

Vielen Dank

Frank

Share this post


Link to post
Share on other sites

Hallo Frank,

das Abfragen der Animationsposition ist für die nächste Version vorgesehen.

Viele Grüße,

Neo

Share this post


Link to post
Share on other sites

Hallo @Neo,

vor einer Stunde schrieb Neo:

das Abfragen der Animationsposition ist für die nächste Version vorgesehen.

Auch das Positionieren an eine bestimmte Stelle in der Anilmation (als Wert zwischen 0 und 1)?

Viele Grüße
BahnLand

Share this post


Link to post
Share on other sites
Posted (edited)
vor 30 Minuten schrieb BahnLand:

das Positionieren an eine bestimmte Stelle in der Animation

kannst du meines Wissens jetzt schon haben. Und zwar mit dem Stop-Befehl. Der nimmt ein Argument an für die Position, an der gestoppt werden soll.
Das Resultat ist ein Sprung an diese angegebene Stelle. Wie von dir gewünscht.

Beispiel: Animation positionieren.mbp

Mit der grafischen EV kommt man nur zum Start oder Ende. Schaltet man auf Lua um, dann kann man auch andere Werte benutzen.

Edited by Goetz
Beispielanlage hinzugefügt

Share this post


Link to post
Share on other sites

Hey, das gibt noch 'ne Tüte Waffeleier!

Gruß
  Andy

Share this post


Link to post
Share on other sites
Posted (edited)

Hallo @Goetz,

Danke für Deinen Hinweis.

Das ist zwar erst die "halbe Miete" zu dem, was ich mir gewünscht habe. Denn ich möchte die Animation von einer beliebigen Position, an der die Animation steht, schlagartig auf eine andere fixe Position umschalten können. Ein konkretes Anwendungsbeispiel wäre das Umschalten zwischen den verschiedenen Stirnlicht-Varianten beim schweizerischen RAe TEE II Triebzug.

857378646_Licht-VariantenRAeTEEII.thumb.jpg.b21a58f7b863e111457dfda5e497bff5.jpg

Dort gibt es nämlich folgende Stirnllicht-Zustände, die heute alle jeweils als getrennte Animationen reaisiert sind und damit bei einer "falschen" Bedienung sich gegenseitig negativ beinflussen können:

  1. Stirnbeleuchtung aus
  2. 1 weiße Lampe an (Rangierlicht)
  3. 2 weiße Lampen an (2-Licht-Spitzensignal in Frankreich und Italien)
  4. 3 weiße Lampen an (3-Licht-Spitzensignal in der Schweiz, Deutschland und Österreich)
  5. 1 rote Lampe an (Standlicht am abgestellten Zug)
  6. 2 rote Lampen an (Schlusslicht)
  7. 3 rote Lampen an (Warsignal in der Schweiz zur Ankündigung einer Gefahr für den Gegenzug (Sofort Anhalten!))
  8. 2 gelbe Lampen unten, 1 weiße Lampe oben (ehemaliges 3-Licht-Spitzensignal in den Niederlanden)
  9. 1 weiße und 1 grüne Lampe unten (Ankündigungssignal für außerplanmäßigen Folgezug in Italien)

Diese 9 Stirn- und Schlusslicht-Variaten könnte man in eine einzige Variation stecken, indem man an den Positionen

0.000, 0.125, 0.25, 0.375, 0.5, 0.625, 0.75, 0.875 und 1.000

jeweils einen Licht-Zustand hinterlegt und dann in der EV entsprechend immer die "passende" Konstellation "ansteuert".

Mit Deinem Anstoß habe ich aber trotzdem eine funktionierende Lösung gefunden. In der grafischen EV lassen sich allerdings nur die Zusände 0 und 1 wie gewollt realisieren, indem man die Animation vorwärts mit Start am Ende (Zielposition 1.000) oder rückwärts mit Start am Anfang (Zielposition 0.000) startet.

Die Zwischenpositionen lassen sich jedoch nur mit Lua ansteuern, indem man das Starten der Animation und das Stoppen direkt hintereinander ausführt:

Unbenannt.JPG.f4c469489f333b05d5f6ce18fb4e1ce0.JPG

Mi dem Start der Animation wird der Startpunkt an die gewünschte Position gelegt. Mit dem unmittelbar nachfolgenden Stop der Animation wird verhindert, dass diese Position verlassen wird.

1594437753_AnmiationmitZwischenzielen.thumb.jpg.30a5704609cd53cbadc568e90d036dee.jpg

Als Demonstrationsbeispiel habe ich die Schiebetür einer meiner Straßenbahnen verwendet, weil man hier die Positionen 0 (Tür geschlossen), 0.25, 0.5, 0.75 (Zwischenpositionen) und 1 (Tür geöffnet) sehr schön erkennen kann, die mit den Buttons im Vordergrund eingestellt werden können. Wer selbst damit etwas herumspielen möchte, kann die beigefügte mbp-Datei starten und sich die ERreignissteueung genauer anschauen.

Animation mit Zwischenzielen.mbp

Viele Grüße
BahnLand

 

Edited by BahnLand

Share this post


Link to post
Share on other sites
Posted (edited)

Hallo @Goetz,

ich habe gerade gesehen, dass Du an Deinen besagten Beitrag noch was angehängt hast.

Du hast Recht:
Es funktioniert auch bei meinem Beispiel ohne den Animationsstart. Das Stoppen an einer bestimmten Stelle genügt vollauf.
Nochmals vielen Dank für diesen Hinweis! (y)

Viele Grüße
BahnLand

 

Edited by BahnLand

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this  

×