Przeglądając ostatnio forum natrafiłem na ten (dosyć dawno już opuszczony) wątek na temat wykolejnic. Z powodu chwilowego nadmiaru wolnego czasu postanowiłem przyjrzeć się bliżej problemowi modyfikowania właściwości DamageFlag torów. Doszedłem do wniosku, że nie jest możliwe edytowanie właściwości torów podczas uruchomienia symulatora (trzeba to zrobić przed, we właściwościach toru). Tory nie są obiektami aktywnymi, więc parametry takie jak DamageFlag, Quality czy Friction mogą być ustawiane tylko i wyłączne w momencie definiowania toru. Jedyną wartością jaką można sterować jest Velocity, ale do niej został stworzony specjalny rodzaj eventu (TrackVel). Tak czy inaczej udało mi się znaleźć ciekawe rozwiązanie problemu z wykolejnicą. Jest to połączenie sposobów zaproponowanych przez kolegów Żabka i piotpala.
Wygląda to mniej więcej tak:
Przed i za wykolejnicą wstawiamy dwie zwrotnice, o długości 3m i parametrze unvis. Jeśli zwrotnica jest skierowana prosto to wykolejnica jest wyłączona i pociąg wjeżdża na wprost, na zwykły, pięciometrowy kawałek toru (także tu warto ustawić unvis, aby był niewidzialny). Jeśli jednak zwrotnica jest skierowana w bok, to pociąg wjeżdża na niewidzialnego flexa (na obrazu zaznaczony na brązowo) z ustawionym DamageFlag na 128, co powoduje jego natychmiastowe wykolejenie. Flex ten łączy odgałęzienia zwrotnic.
Sposób ten umożliwia w każdym momencie cofnięcie wykolejnicy (wystarczy przestawić zwrotnice na wprost). Ponieważ zwrotnice i tory je łączące są niewidzialne należy podłożyć pod to wszystko kawałek zwykłych torów, trochę dłuższych od całego modułu wykolejającego (np. o 10 cm), ale nie połączonych z żadnymi torami(w tym wypadku będzie to prosty kawałek o długości 11,1m). Bardzo ważne jest, aby zwrotnice były niewidzialne oraz nie miały podsypki i latarni (po wygenerowaniu tego w 3ds max'ie należy ręcznie usunąć podsypkę z pliku scenerii).
Teraz wystarczy tylko napisać eventy do sterowania wszystkim (ponieważ nie dołączyliśmy podsypki i latarni zwrotnicami musimy sterować bezpośrednio za pomocą funkcji switch).
Dołączam przykładową scenerię z działającą wykolejnicą:
http://www.sendspace.com/file/ptj3lcShift+1 -> wykolejnica zdjęta
Shift+2 -> wykolejnica założona