Hallo,
wenn es die Zeit zulässt, arbeite ich derzeit im Hintergrund an einer Neuimplementierung des 3D-Objektsystems. Zum einen will ich einen ersten/nächsten Schritt für einen Austausch von DirectX7 machen, zum anderen sollen einige Einschränkungen des derzeitigen Systems wegfallen (zB Gruppenobjekte in Gruppenobjekten oder Unterstützung externer 3D-Formate). Grundsätzlich funktioniert das schon, es gibt jedoch noch viel zu tun und die Änderungen werden sicherlich nicht mehr für die 2.8.3er Version relevant (auch weil sie nicht mit Win XP kompatibel sind).
Als nächstes steht für mich im Rahmen dieser Überarbeitung die Einbindung der Sichtbarkeitssteuerungen an. Derzeit haben wir ja mehr oder weniger drei davon:
[li]nur sichtbar bei[/li]
[li]nur unsichtbar bei[/li]
[li]Dynamische Sichtbarkeitssteuerung[/li]
Ich denke in Wirklichkeit bräuchten wir aber nur eine einzige solche Sichtbarkeitssteuerung:
[li]"Nur unsichtbar bei" kann man mit "nur sichtbar bei" genauso umsetzen. Beispielsweise ist unsichtbar bei "Hp1 or Hp2" nichts anderes als sichtbar bei "not (Hp1 or Hp2)"). Sichtbar bei und unsichtbar bei muss dann mit einem "and" verknüpft werden: zB sichtbar bei Hp1, unsichtbar bei Hp0 => sichtbar bei "Hp1 and not Hp0"[/li]
[li]Die Dynamische Sichtbarkeitssteuerung ist praktisch das gleiche wie "nur sichtbar bei": Ich habe sie damals aus technischen Gründen als weitere Eigenschaft angelegt, diese technischen Schwierigkeite kann ich jedoch mit meiner Überarbeitung des Objektsystems relativ problemlos umgehen[/li]
Bestehende Objekte würden automatisch an die vereinheitlichte Sichtbarkeitssteuerung angepasst werden.
Einziges kleines Problem ist die Option "Objekt in Sichtweite ändert Sichtbarkeit nicht": Diese Option kann problemlos bestehen bleiben, jedoch würde die Option dann generell für die vereinheitlichte Sichtbarkeitsformel gelten. Derzeit hat man ja die Möglichkeit, diese Option zu setzen und trotzdem zB nur sichtbar bei Hp1 einzutragen. Die Sichtbarkeit des Objekts kann sich dann trotzdem in Sichtweite ändern, wenn das Signal auf Hp1 springt. Mit der vereinheitlichten Variante, wäre dies nicht mehr möglich.
Bedeutet dies für irgendjemand tatsächlich ein Problem? Oder kann sich jemand eine Situation vorstellen, wo das oben beschriebene Verhalten sinnvoll genutzt werden kann? Ich kann mir nämlich nicht vorstellen, dass soetwas tatsächlich Sinn macht.
In der dynamischen Sichtbarkeitssteuerung sind alle Variablen in Namensräume eingeordnet (zB FahrplanVars::abc). In den "nur (un)sichtbar bei" Eigenschaften hat man solche Namensräume nicht. Es sind für mich nun folgende Varianten denkbar:
[li]a) Die Variablen aus den "nur (un)sichtbar bei" Ausdrücken bleiben wie bisher ohne Namensraum[/li]
[li]b) Alle Signalvariablen bleiben ohne Namensraum, alle benutzerdefinierten Variablen kommen in einen eigenen Namensraum (zB Str, weil diese Variablen in der Strecke mit tatsächlichen Werten gefüllt werden)[/li]
[li]c) Alle Signalvariablen kommen in einen Namensraum (zb Sig), alle benutzerdefinierten Variablen bleiben ohne Namensraum[/li]
[li]d) Signalvariablen kommen in einen Namensraum (zb Sig) und benutzerdefinierte Variablen in einen anderen (zb Str)[/li]
Ich persönlich würde Variante d) bevorzugen. Welche Variante haltet Ihr für die beste?
(Auch hier gibt es dann natürlich eine automatische Anpassung alter Objekte)
lg
Lukas