gleistracker Posted April 23 Posted April 23 Hallo, ich bin erst seit kurzem hier. Einen schönen Gruß an alle Eisenbahnenthusiasten! Zu meinem Problem: Ich habe 6 Züge auf meiner Hauptstrecke, die alle darauf überprüft werden müssen, ob ihre Cockpit-Ansicht aktiviert ist. Sollte das der Fall sein, so soll auf eine andere Kamera umgeschaltet werden. Der nachstehende Code funktioniert, aber leider bei jedem Fahrzeug auf der Anlage, das die Cockpit-Ansicht aktiviert hat. Das Umschalten der Kameras soll aber nur für Züge mit dem Schlagwort "Zug Hauptstrecke" erfolgen. Fahrzeuge_Hauptstrecke = layout:getEntitiesByKeyword("Zug Hauptstrecke") for idx, zug in ipairs(Fahrzeuge_Hauptstrecke) do -- $("Textfeld für Debugging").text = zug if not (zug.name.activeCameras == layout.activeCameras[0]) then layout.activeCameras[0] = $("Kamera Panorama") end end
Goetz Posted April 24 Posted April 24 vor 10 Stunden schrieb w.rost1: zug.name.activeCameras Hallo @w.rost1, die Ursache steckt eventuell in der Eigenschaft name. In der Variablen zug, die in ipairs() erzeugt, steckt ja schon der Zug. Seinen Namen benötigst du nicht. Da es die Eigenschaft zug.name.activeCameras nicht gibt, ist der Vergleich nie wahr. Und mit der Negierung am Anfang ist die Bedingung somit immer wahr. Also "funktioniert" dein Code, weil immer umgeschaltet wird. Der Vergleich muss auch etwas anders lauten, denn wenn eine Cockpitkamera aktiv ist, dann ist der Zug die Kamera. Dieser Code funktioniert so, wie du es dir vorstellst: local Fahrzeuge_Hauptstrecke = layout:getEntitiesByKeyword("Zug Hauptstrecke") for idx, zug in ipairs(Fahrzeuge_Hauptstrecke) do if layout.activeCameras[0] == zug then layout.activeCameras[0] = $("Kamera Panorama") end end Viele Grüße Götz
gleistracker Posted April 24 Author Posted April 24 Hallo Goetz, ein großes Danke an Dich! Funktioniert einwandfrei! Zum Hintergrund: Ich habe auf meiner Anlage einen "Gebirgsteil" mit 4 Tunneln, von denen 2 durchaus in der Cockpit-Ansicht befahren werden können/sollen. Zwei aber nicht, diese dienen nur dem Kaschieren des plötzlichen Verschwindens der Züge, kurz bevor sie im Depot landen. Ein Befahren der Tunnel wäre also nicht wirklich sehenswert. Deswegen wird in diesen Tunneln das Befahren in der Cockpit-Ansicht durch ein Umschalten auf eine andere Kamera verhindert. Ich habe mal "auf die Schnelle" ein "Rundflug-Video" erstellt. Die Tunnel links und rechts auf dem Gebirgsteil der Anlage, enden blind, mit jeweils einem Depot am Ende. Hier der Link: https://www.worotec.de/3d_modellbahn_studio/Anlage.mp4 Gruß vom gleistracker ;-)
Goetz Posted April 24 Posted April 24 (edited) Hallo @gleistracker, es freut mich, dass ich dir helfen konnte. vor 20 Minuten schrieb gleistracker: Ein Befahren der Tunnel wäre also nicht wirklich sehenswert. Deswegen wird in diesen Tunneln das Befahren in der Cockpit-Ansicht durch ein Umschalten auf eine andere Kamera verhindert. Dann gäbe es noch eine bessere Alternative. Statt in einer Schleife alle Loks abzufragen würde es genügen, diejenige Lok zu untersuchen, welche den Tunnel (bzw. vermutlich einen Kontakt am Tunneleingang) betritt. if vehicle.variables["Zug Hauptstrecke"] == keyword and layout.activeCameras[0] == vehicle then layout.activeCameras[0] = $("Kamera Panorama") end Viele Grüße Götz Edited April 24 by Goetz Ergänzungen
gleistracker Posted April 24 Author Posted April 24 Hallo Goetz, danke für die effiziente Lösung! Der PC ist ja "auch nur ein Mensch" und freut sich über weniger Arbeit ;-) Ganz davon abgesehen, daß - je mehr "Getummel" auf der Anlage ist - Effizienz immer wichtiger wird! Gruß vom gleistracker
Leslie Posted May 2 Posted May 2 Greetings, I have similar question: how to display any readable property of layout.activeCameras[0] ? I think name, text, etc. I have a label but failed: $("GBS label").labels["Beschriftung"].text = layout.activeCameras[0] or $("GBS label").labels["Beschriftung"].text = layout.activeCameras[0].name displays nothing.
Goetz Posted May 2 Posted May 2 Hello @Leslie, your code vor 17 Minuten schrieb Leslie: $("GBS label").labels["Beschriftung"].text = layout.activeCameras[0].name will work when the active camera is a camera object from the Online Catalog -> Extra Kind regards Goetz
Phrontistes Posted May 2 Posted May 2 (edited) vor 11 Stunden schrieb Leslie: displays nothing. Press F12 and you will see the error you most likely made. To avoid an error do this: if layout.activeCameras[0] ~= nil then $("GBS label").labels["Beschriftung"].text = layout.activeCameras[0].name else $("GBS label").labels["Beschriftung"].text = "No active camera" end It will also work when the active camara is a vehicle with bulitin camera. Edited May 3 by Phrontistes addendum
Recommended Posts
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 accountSign in
Already have an account? Sign in here.
Sign In Now