Zusammenlegung Sichtbarkeitssteuerungen

  • 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

  • Hallo Lukas,


    ....
    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,
    ....


    da hast du dir ja ein sehr komplexes Ziel gestellt.


    Zwei Fragen:
    1. Welches DirectX willst du verwenden? DX11.2 geht ja wohl bloß mit WIN 8. Aufgrund von Empfehlungen hier im Forum möchte ich für einen neuen Rechner jedoch WIN 7 nutzen.
    2. Wenn die Konvertierung der Sichtbarkeiten aus alten Strecken, Objekten etc. automatisch im "neuen" Loksim gehen soll, frisst das nicht Rechnerkapazität? Wäre da eine Anpassung für Leute, die ihre Sachen pflegen, nicht über den Editor möglich?
    Gruß
    Rainer

  • Hallo Rainer,


    die Arbeiten von Lukas haben das Ziel, die verwendete Engine mehr zu kapseln. Wir werden keinesfalls zum jetzigen Zeitpunkt sämtliche User ausschließen, die Windows 8 nicht verwenden.


    Die Rechnerkapazität für die Konvertierung hält sich in Grenzen. Das ist konstanter Aufwand und de facto nicht spürbar.


    Viele Grüße
    Martin

  • Hallo,
    noch als kleine Anmerkung zu Martins Antwort: Meine Änderungen laufen derzeit ab Windows Vista und wenn es nach mir geht, wird das auch so bleiben. Jedoch ist es mein Ziel plattformspezifische Dinge möglichst einfach austauschbar zu machen, es ist also nicht gesagt, dass meine Änderungen später vielleicht nicht doch auch unter XP laufen können.
    Welche DirectX-Version oder ob überhaupt DirectX haben wir noch nicht entschieden. Aus persönlichen Gründen wäre mein Favorit im Moment DirectX 11 (ab Windows Vista verfügbar). Aber wie Martin geschrieben hat, geht es derzeit nur um die Kapselung. Mein persönlicher Plan für die Ersetzung von DirectX 7 sieht folgende Punkte vor:


      [li]Erneuerung Objektsystem[/li]
      [li]Erneuerung Landschaftsdarstellung[/li]
      [li]Erneuerung Gleisdarstellung[/li]
      [li]Anpassung 2D-System (habe ich ja vor ein paar Jahren praktisch neu geschrieben, ich hoffe, dass sich der Aufwand hier in Grenzen hält)[/li]
      [li]Erneuerung Soundsystem (kann jedoch auch komplett getrennt von Graphik erfolgen)[/li]


    Mit Landschafts- und Gleisdarstellung gibt es zwei große Broken die überhaupt noch nicht angefasst wurden. Erst danach kann man die Graphikengine austauschen. Mein Traum wäre, dass sich das im Laufe des Jahres 2014 ausgeht, aber da sind noch viele unberechenbare Faktoren dabei ;)


    lg
    Lukas