aboutsummaryrefslogtreecommitdiff
path: root/advtrains/models/advtrains_retrosignal_on_60.b3d
blob: a51529ae9ee9be14c10d0bead4d62a6b4cabcf8e (plain)
ofshex dumpascii
0000 42 42 33 44 1d 33 00 00 01 00 00 00 54 45 58 53 36 00 00 00 61 64 76 74 72 61 69 6e 73 5f 72 65 BB3D.3......TEXS6...advtrains_re
0020 74 72 6f 73 69 67 6e 61 6c 2e 70 6e 67 00 01 00 00 00 02 00 00 00 00 00 00 00 00 00 00 00 00 00 trosignal.png...................
0040 80 3f 00 00 80 3f 00 00 00 00 42 52 55 53 2e 00 00 00 01 00 00 00 42 72 75 73 68 2e 30 30 31 00 .?...?....BRUS........Brush.001.
0060 00 00 80 3f 00 00 80 3f 00 00 80 3f 00 00 80 3f 00 00 00 00 01 00 00 00 00 00 00 00 00 00 00 00 ...?...?...?...?................
0080 4e 4f 44 45 9d 32 00 00 43 75 62 65 2e 30 30 30 00 00 00 80 b0 00 00 00 00 00 00 00 00 fe ff 7f NODE.2..Cube.000................
00a0 3f 00 00 80 3f 00 00 80 3f ea 40 6d 3e 2f b8 a5 bd bb 5b 66 bf 42 a6 b8 3e 4d 45 53 48 64 32 00 ?...?...?.@m>/....[f.B..>MESHd2.
00c0 00 ff ff ff ff 56 52 54 53 8c 2b 00 00 01 00 00 00 01 00 00 00 02 00 00 00 e3 35 af bd 39 fa ba .....VRTS.+...............5..9..
00e0 3f be 50 76 bf 28 cd 13 bf 28 cd 13 bf 28 cd 13 3f 98 e5 52 3f f6 af 5f 3f e3 35 af bd 39 fa ba ?.Pv.(...(...(..?..R?.._?.5..9..
0100 3f 0c c6 3b c0 6a 03 35 bf 6a 03 35 bf 00 00 00 00 36 c7 86 3e ff af 5f 3f e3 35 af bd c7 36 dd ?..;.j.5.j.5.....6..>.._?.5...6.
0120 3f 0c c6 3b c0 6a 03 35 bf 6a 03 35 3f 00 00 00 00 34 c7 86 3e 7d 38 4c 3f e3 35 af bd c7 36 dd ?..;.j.5.j.5?....4..>}8L?.5...6.
0140 3f be 50 76 bf 28 cd 13 bf 28 cd 13 3f 28 cd 13 3f 96 e5 52 3f 77 38 4c 3f e3 35 af bd c7 36 dd ?.Pv.(...(..?(..?..R?w8L?.5...6.
0160 3f be 50 76 bf 28 cd 13 bf 28 cd 13 3f 28 cd 13 3f 96 e5 52 3f 77 38 4c 3f 6a 5d a5 bc c7 36 dd ?.Pv.(...(..?(..?..R?w8L?j]...6.
0180 3f be 50 76 bf 28 cd 13 3f 28 cd 13 3f 28 cd 13 3f 96 e5 52 3f 95 76 47 3f 6a 5d a5 bc 39 fa ba ?.Pv.(..?(..?(..?..R?.vG?j]..9..
01a0 3f be 50 76 bf 28 cd 13 3f 28 cd 13 bf 28 cd 13 3f 18 5d 66 3f 94 76 47 3f e3 35 af bd 39 fa ba ?.Pv.(..?(...(..?.]f?.vG?.5..9..
01c0 3f be 50 76 bf 28 cd 13 bf 28 cd 13 bf 28 cd 13 3f 18 5d 66 3f 77 38 4c 3f 6a 5d a5 bc c7 36 dd ?.Pv.(...(...(..?.]f?w8L?j]...6.
01e0 3f be 50 76 bf 28 cd 13 3f 28 cd 13 3f 28 cd 13 3f 96 e5 52 3f 59 e9 77 3f 6a 5d a5 bc c7 36 dd ?.Pv.(..?(..?(..?..R?Y.w?j]...6.
0200 3f 0c c6 3b c0 6a 03 35 3f 6a 03 35 3f 00 00 00 00 34 c7 86 3e 4c e9 77 3f 6a 5d a5 bc 39 fa ba ?..;.j.5?j.5?....4..>L.w?j]..9..
0220 3f 0c c6 3b c0 6a 03 35 3f 6a 03 35 bf 00 00 00 00 3c c7 86 3e ce 71 64 3f 6a 5d a5 bc 39 fa ba ?..;.j.5?j.5.....<..>.qd?j]..9..
0240 3f be 50 76 bf 28 cd 13 3f 28 cd 13 bf 28 cd 13 3f 99 e5 52 3f d8 71 64 3f e3 35 af bd 39 fa ba ?.Pv.(..?(...(..?..R?.qd?.5..9..
0260 3f 0c c6 3b c0 6a 03 35 bf 6a 03 35 bf 00 00 00 00 36 c7 86 3e ff af 5f 3f e3 35 af bd 39 fa ba ?..;.j.5.j.5.....6..>.._?.5..9..
0280 3f be 50 76 bf 28 cd 13 bf 28 cd 13 bf 28 cd 13 3f 98 e5 52 3f f6 af 5f 3f 6a 5d a5 bc 39 fa ba ?.Pv.(...(...(..?..R?.._?j]..9..
02a0 3f be 50 76 bf 28 cd 13 3f 28 cd 13 bf 28 cd 13 3f 99 e5 52 3f d8 71 64 3f 6a 5d a5 bc 39 fa ba ?.Pv.(..?(...(..?..R?.qd?j]..9..
02c0 3f 0c c6 3b c0 6a 03 35 3f 6a 03 35 bf 00 00 00 00 3c c7 86 3e ce 71 64 3f 6a 5d a5 bc c7 36 dd ?..;.j.5?j.5.....<..>.qd?j]...6.
02e0 3f 0c c6 3b c0 6a 03 35 3f 6a 03 35 3f 00 00 00 00 34 c7 86 3e af 76 47 3f 6a 5d a5 bc c7 36 dd ?..;.j.5?j.5?....4..>.vG?j]...6.
0300 3f be 50 76 bf 28 cd 13 3f 28 cd 13 3f 28 cd 13 3f 96 e5 52 3f 95 76 47 3f e3 35 af bd c7 36 dd ?.Pv.(..?(..?(..?..R?.vG?.5...6.
0320 3f be 50 76 bf 28 cd 13 bf 28 cd 13 3f 28 cd 13 3f 96 e5 52 3f 77 38 4c 3f e3 35 af bd c7 36 dd ?.Pv.(...(..?(..?..R?w8L?.5...6.
0340 3f 0c c6 3b c0 6a 03 35 bf 6a 03 35 3f 00 00 00 00 34 c7 86 3e 7d 38 4c 3f e0 df d0 3a 5f e9 e4 ?..;.j.5.j.5?....4..>}8L?...:_..
0360 3f f8 41 3a c0 69 6d 34 3f 4e fb 26 3f 1e c5 8e be 89 fb 95 3e 14 47 2e 3f 40 c1 d2 bd f7 46 e5 ?.A:.im4?N.&?.......>.G.?@....F.
0380 3f f5 41 3a c0 55 7f 2a bf 62 2d 31 3f 1d 71 8e be fb c3 86 3e c4 46 2e 3f 30 e9 d3 bd c9 e5 e2 ?.A:.U.*.b-1?.q.....>.F.?0......
03a0 3f 0f 7c 3c c0 56 fd 2a bf 40 ff 1f 3f 9e d5 ce be a9 c1 86 3e e2 25 31 3f e0 e4 86 3a 31 88 e2 ?.|<.V.*.@..?.......>.%1?...:1..
03c0 3f 13 7c 3c c0 68 ed 33 3f 2b bb 15 3f 9e 3d cf be 2f f9 95 3e 34 26 31 3f e0 71 fe 3a 83 60 e6 ?.|<.h.3?+..?.=../..>4&1?.q.:.`.
03e0 3f 5f d7 37 c0 69 bb 34 3f 63 9b 31 3f 23 91 11 be 09 fd 95 3e f6 67 2b 3f f8 0a d2 bd 19 be e6 ?_.7.i.4?c.1?#......>.g+?.......
0400 3f 5b d7 37 c0 54 31 2a bf 77 bf 3b 3f 22 39 11 be 85 c5 86 3e a6 67 2b 3f 40 c1 d2 bd f7 46 e5 ?[.7.T1*.w.;?"9.....>.g+?@....F.
0420 3f f5 41 3a c0 55 7f 2a bf 62 2d 31 3f 1d 71 8e be fb c3 86 3e c4 46 2e 3f e0 df d0 3a 5f e9 e4 ?.A:.U.*.b-1?.q.....>.F.?...:_..
0440 3f f8 41 3a c0 69 6d 34 3f 4e fb 26 3f 1e c5 8e be 89 fb 95 3e 14 47 2e 3f 70 ed 06 3b 2f df e6 ?.A:.im4?N.&?.......>.G.?p..;/..
0460 3f 0c 54 35 c0 6a d5 34 3f 6a 31 35 3f 00 00 00 00 b5 fd 95 3e d8 88 28 3f 54 cd d1 bd c5 3c e7 ?.T5.j.4?j15?.......>..(?T....<.
0480 3f 09 54 35 c0 54 17 2a bf 7f 51 3f 3f 00 00 00 00 2f c6 86 3e 87 88 28 3f f8 0a d2 bd 19 be e6 ?.T5.T.*..Q??..../..>..(?.......
04a0 3f 5b d7 37 c0 54 31 2a bf 77 bf 3b 3f 22 39 11 be 85 c5 86 3e a6 67 2b 3f e0 71 fe 3a 83 60 e6 ?[.7.T1*.w.;?"9.....>.g+?.q.:.`.
04c0 3f 5f d7 37 c0 69 bb 34 3f 63 9b 31 3f 23 91 11 be 09 fd 95 3e f6 67 2b 3f e0 76 fe 3a 85 60 e6 ?_.7.i.4?c.1?#......>.g+?.v.:.`.
04e0 3f b9 d0 32 c0 69 bb 34 3f 63 9b 31 3f 23 91 11 3e 7f fd 95 3e b8 a9 25 3f e4 0a d2 bd 1b be e6 ?..2.i.4?c.1?#..>...>..%?.......
0500 3f b6 d0 32 c0 54 31 2a bf 77 bf 3b 3f 22 39 11 3e f7 c5 86 3e 68 a9 25 3f 54 cd d1 bd c5 3c e7 ?..2.T1*.w.;?"9.>...>h.%?T....<.
0520 3f 09 54 35 c0 54 17 2a bf 7f 51 3f 3f 00 00 00 00 2f c6 86 3e 87 88 28 3f 70 ed 06 3b 2f df e6 ?.T5.T.*..Q??..../..>..(?p..;/..
0540 3f 0c 54 35 c0 6a d5 34 3f 6a 31 35 3f 00 00 00 00 b5 fd 95 3e d8 88 28 3f e0 e9 d0 3a 67 e9 e4 ?.T5.j.4?j15?.......>..(?...:g..
0560 3f 1f 66 30 c0 69 6d 34 3f 4e fb 26 3f 1e c5 8e 3e 6f fc 95 3e 9a ca 22 3f 18 c1 d2 bd fd 46 e5 ?.f0.im4?N.&?...>o..>.."?.....F.
0580 3f 1c 66 30 c0 55 7f 2a bf 62 2d 31 3f 1d 71 8e 3e e9 c4 86 3e 49 ca 22 3f e4 0a d2 bd 1b be e6 ?.f0.U.*.b-1?.q.>...>I."?.......
05a0 3f b6 d0 32 c0 54 31 2a bf 77 bf 3b 3f 22 39 11 3e f7 c5 86 3e 68 a9 25 3f e0 76 fe 3a 85 60 e6 ?..2.T1*.w.;?"9.>...>h.%?.v.:.`.
05c0 3f b9 d0 32 c0 69 bb 34 3f 63 9b 31 3f 23 91 11 3e 7f fd 95 3e b8 a9 25 3f e0 f2 86 3a 3b 88 e2 ?..2.i.4?c.1?#..>...>..%?...:;..
05e0 3f 04 2c 2e c0 68 ed 33 3f 2b bb 15 3f 9e 3d cf 3e 91 fa 95 3e 7b eb 1f 3f f4 e8 d3 bd d1 e5 e2 ?.,..h.3?+..?.=.>...>{..?.......
0600 3f 01 2c 2e c0 56 fd 2a bf 40 ff 1f 3f 9e d5 ce 3e 09 c3 86 3e 2a eb 1f 3f 18 c1 d2 bd fd 46 e5 ?.,..V.*.@..?...>...>*..?.....F.
0620 3f 1c 66 30 c0 55 7f 2a bf 62 2d 31 3f 1d 71 8e 3e e9 c4 86 3e 49 ca 22 3f e0 e9 d0 3a 67 e9 e4 ?.f0.U.*.b-1?.q.>...>I."?...:g..
0640 3f 1f 66 30 c0 69 6d 34 3f 4e fb 26 3f 1e c5 8e 3e 6f fc 95 3e 9a ca 22 3f 80 83 8d 39 6d 54 df ?.f0.im4?N.&?...>o..>.."?...9mT.
0660 3f 4f 38 2c c0 66 3f 33 3f fa 0d fd 3e 08 df 03 3f f7 f7 95 3e 5c 0c 1d 3f 3c 77 d5 bd 03 b2 df ?O8,.f?3?...>...?...>\..?<w.....
0680 3f 4d 38 2c c0 57 a9 2b bf 12 e1 08 3f 07 a5 03 3f 73 c0 86 3e 0c 0c 1d 3f f4 e8 d3 bd d1 e5 e2 ?M8,.W.+....?...?s..>...?.......
06a0 3f 01 2c 2e c0 56 fd 2a bf 40 ff 1f 3f 9e d5 ce 3e 09 c3 86 3e 2a eb 1f 3f e0 f2 86 3a 3b 88 e2 ?.,..V.*.@..?...>...>*..?...:;..
06c0 3f 04 2c 2e c0 68 ed 33 3f 2b bb 15 3f 9e 3d cf 3e 91 fa 95 3e 7b eb 1f 3f 40 dc 2b ba 7b 6d db ?.,..h.3?+..?.=.>...>{..?@.+.{m.
06e0 3f 37 9e 2a c0 65 71 32 3f 89 81 c4 3e 36 09 1b 3f c1 f4 95 3e 3e 2d 1a 3f 78 5c d7 bd 11 cb db ?7.*.eq2?...>6..?...>>-.?x\.....
0700 3f 33 9e 2a c0 59 79 2c bf b3 65 d9 3e 36 d3 1a 3f 39 bd 86 3e ec 2c 1a 3f 3c 77 d5 bd 03 b2 df ?3.*.Yy,..e.>6..?9..>.,.?<w.....
0720 3f 4d 38 2c c0 57 a9 2b bf 12 e1 08 3f 07 a5 03 3f 73 c0 86 3e 0c 0c 1d 3f 80 83 8d 39 6d 54 df ?M8,.W.+....?...?s..>...?...9mT.
0740 3f 4f 38 2c c0 66 3f 33 3f fa 0d fd 3e 08 df 03 3f f7 f7 95 3e 5c 0c 1d 3f 20 55 e0 ba cd f9 d6 ?O8,.f?3?...>...?...>\..?.U.....
0760 3f 7c 6d 29 c0 63 83 31 3f 08 09 84 3e 58 3b 2c 3f 0f f1 95 3e 1f 4e 17 3f 18 86 d9 bd 63 57 d7 ?|m).c.1?...>X;,?...>.N.?....cW.
0780 3f 79 6d 29 c0 5b 65 2d bf 32 11 99 3e 58 11 2c 3f 87 b9 86 3e d0 4d 17 3f 78 5c d7 bd 11 cb db ?ym).[e-.2..>X.,?...>.M.?x\.....
07a0 3f 33 9e 2a c0 59 79 2c bf b3 65 d9 3e 36 d3 1a 3f 39 bd 86 3e ec 2c 1a 3f 40 dc 2b ba 7b 6d db ?3.*.Yy,..e.>6..?9..>.,.?@.+.{m.
07c0 3f 37 9e 2a c0 65 71 32 3f 89 81 c4 3e 36 09 1b 3f c1 f4 95 3e 3e 2d 1a 3f 10 41 3b bb 2b 25 d2 ?7.*.eq2?...>6..?...>>-.?.A;.+%.
07e0 3f d5 b1 28 c0 61 81 30 3f f1 61 f8 3d 6e cb 36 3f 09 ed 95 3e 02 6f 14 3f cc de db bd c1 82 d2 ?..(.a.0?.a.=n.6?...>.o.?.......
0800 3f d2 b1 28 c0 5d 67 2e bf 4d 79 26 3e 6d b5 36 3f 83 b5 86 3e b0 6e 14 3f 18 86 d9 bd 63 57 d7 ?..(.]g..My&>m.6?...>.n.?....cW.
0820 3f 79 6d 29 c0 5b 65 2d bf 32 11 99 3e 58 11 2c 3f 87 b9 86 3e d0 4d 17 3f 20 55 e0 ba cd f9 d6 ?ym).[e-.2..>X.,?...>.M.?.U.....
?..@.Yy,?.e..6...[..>.v.>H......
0ce0 3f d9 09 40 c0 59 79 2c 3f b3 65 d9 be 36 d3 1a bf 5b df 95 3e ae 76 d8 3e 24 43 e5 bd 45 2e bf ?..@.Yy,?.e..6...[..>.v.>$C..E..
0d00 3f d5 09 40 c0 65 71 32 bf 89 85 c4 be 36 09 1b bf d3 a7 86 3e 10 76 d8 3e 64 28 e7 bd 55 47 bb ?..@.eq2.....6......>.v.>d(..UG.
0d20 3f bd 6f 3e c0 66 3f 33 bf fa 0d fd be 08 df 03 bf 23 a4 86 3e 4a 34 de 3e 04 1d 09 bc bf e9 ba ?.o>.f?3.........#..>J4.>.......
0d40 3f bf 6f 3e c0 57 a9 2b 3f 12 e1 08 bf 07 a5 03 bf ad db 95 3e ea 34 de 3e 04 1d 09 bc bf e9 ba ?.o>.W.+?...........>.4.>.......
0d60 3f bf 6f 3e c0 57 a9 2b 3f 12 e1 08 bf 07 a5 03 bf ad db 95 3e ea 34 de 3e 64 28 e7 bd 55 47 bb ?.o>.W.+?...........>.4.>d(..UG.
0d80 3f bd 6f 3e c0 66 3f 33 bf fa 0d fd be 08 df 03 bf 23 a4 86 3e 4a 34 de 3e ac b6 e8 bd 87 13 b8 ?.o>.f?3.........#..>J4.>.......
0da0 3f 09 7c 3c c0 68 ed 33 bf 2b bb 15 bf 9e 3d cf be 13 a1 86 3e 86 f2 e3 3e 44 8f 15 bc ef b5 b7 ?.|<.h.3.+....=.....>...>D......
0dc0 3f 0b 7c 3c c0 56 fd 2a 3f 40 01 20 bf 9e d5 ce be 99 d8 95 3e 2a f3 e3 3e 44 8f 15 bc ef b5 b7 ?.|<.V.*?@..........>*..>D......
0de0 3f 0b 7c 3c c0 56 fd 2a 3f 40 01 20 bf 9e d5 ce be 99 d8 95 3e 2a f3 e3 3e ac b6 e8 bd 87 13 b8 ?.|<.V.*?@..........>*..>.......
0e00 3f 09 7c 3c c0 68 ed 33 bf 2b bb 15 bf 9e 3d cf be 13 a1 86 3e 86 f2 e3 3e 88 de e9 bd 5b b2 b5 ?.|<.h.3.+....=.....>...>....[..
0e20 3f ed 41 3a c0 69 6d 34 bf 4e fb 26 bf 1e c5 8e be bb 9e 86 3e c6 b0 e9 3e 24 ce 1e bc c5 54 b5 ?.A:.im4.N.&........>...>$....T.
0e40 3f f0 41 3a c0 55 7f 2a 3f 62 2d 31 bf 1d 71 8e be 41 d6 95 3e 68 b1 e9 3e 24 ce 1e bc c5 54 b5 ?.A:.U.*?b-1..q..A..>h..>$....T.
0e60 3f f0 41 3a c0 55 7f 2a 3f 62 2d 31 bf 1d 71 8e be 41 d6 95 3e 68 b1 e9 3e 88 de e9 bd 5b b2 b5 ?.A:.U.*?b-1..q..A..>h..>....[..
0e80 3f ed 41 3a c0 69 6d 34 bf 4e fb 26 bf 1e c5 8e be bb 9e 86 3e c6 b0 e9 3e bb 94 ea bd 3b 3b b4 ?.A:.im4.N.&........>...>....;;.
0ea0 3f 53 d7 37 c0 69 bb 34 bf 63 9b 31 bf 23 91 11 be 2f 9d 86 3e 04 6f ef 3e e4 7f 24 bc a5 dd b3 ?S.7.i.4.c.1.#.../..>.o.>..$....
0ec0 3f 55 d7 37 c0 54 31 2a 3f 77 bf 3b bf 22 39 11 be b9 d4 95 3e a8 6f ef 3e e4 7f 24 bc a5 dd b3 ?U.7.T1*?w.;."9.....>.o.>..$....
0ee0 3f 55 d7 37 c0 54 31 2a 3f 77 bf 3b bf 22 39 11 be b9 d4 95 3e a8 6f ef 3e bb 94 ea bd 3b 3b b4 ?U.7.T1*?w.;."9.....>.o.>....;;.
0f00 3f 53 d7 37 c0 69 bb 34 bf 63 9b 31 bf 23 91 11 be 2f 9d 86 3e 04 6f ef 3e 4b d2 ea bd 93 bc b3 ?S.7.i.4.c.1.#.../..>.o.>K......
0f20 3f 00 54 35 c0 6a d5 34 bf 6a 31 35 bf 00 00 00 00 83 9c 86 3e 42 2d f5 3e 44 6c 26 bc fd 5e b3 ?.T5.j.4.j15........>B-.>Dl&..^.
0f40 3f 03 54 35 c0 54 17 2a 3f 7f 51 3f bf 00 00 00 00 09 d4 95 3e e2 2d f5 3e 44 6c 26 bc fd 5e b3 ?.T5.T.*?.Q?........>.-.>Dl&..^.
0f60 3f 03 54 35 c0 54 17 2a 3f 7f 51 3f bf 00 00 00 00 09 d4 95 3e e2 2d f5 3e 4b d2 ea bd 93 bc b3 ?.T5.T.*?.Q?........>.-.>K......
0f80 3f 00 54 35 c0 6a d5 34 bf 6a 31 35 bf 00 00 00 00 83 9c 86 3e 42 2d f5 3e a7 94 ea bd 3f 3b b4 ?.T5.j.4.j15........>B-.>....?;.
0fa0 3f ad d0 32 c0 69 bb 34 bf 63 9b 31 bf 23 91 11 3e b5 9c 86 3e 82 eb fa 3e 24 7f 24 bc a9 dd b3 ?..2.i.4.c.1.#..>...>...>$.$....
0fc0 3f b1 d0 32 c0 54 31 2a 3f 77 bf 3b bf 22 39 11 3e 39 d4 95 3e 20 ec fa 3e 24 7f 24 bc a9 dd b3 ?..2.T1*?w.;."9.>9..>...>$.$....
0fe0 3f b1 d0 32 c0 54 31 2a 3f 77 bf 3b bf 22 39 11 3e 39 d4 95 3e 20 ec fa 3e a7 94 ea bd 3f 3b b4 ?..2.T1*?w.;."9.>9..>...>....?;.
1000 3f ad d0 32 c0 69 bb 34 bf 63 9b 31 bf 23 91 11 3e b5 9c 86 3e 82 eb fa 3e 5c de e9 bd 63 b2 b5 ?..2.i.4.c.1.#..>...>...>\...c..
1020 3f 13 66 30 c0 69 6d 34 bf 4e fb 26 bf 1e c5 8e 3e c5 9d 86 3e e0 54 00 3f e4 cc 1e bc cd 54 b5 ?.f0.im4.N.&....>...>.T.?.....T.
1040 3f 17 66 30 c0 55 7f 2a 3f 62 2d 31 bf 1d 71 8e 3e 47 d5 95 3e 30 55 00 3f e4 cc 1e bc cd 54 b5 ?.f0.U.*?b-1..q.>G..>0U.?.....T.
1060 3f 17 66 30 c0 55 7f 2a 3f 62 2d 31 bf 1d 71 8e 3e 47 d5 95 3e 30 55 00 3f 5c de e9 bd 63 b2 b5 ?.f0.U.*?b-1..q.>G..>0U.?\...c..
1080 3f 13 66 30 c0 69 6d 34 bf 4e fb 26 bf 1e c5 8e 3e c5 9d 86 3e e0 54 00 3f 70 b6 e8 bd 91 13 b8 ?.f0.im4.N.&....>...>.T.?p......
10a0 3f f9 2b 2e c0 68 ed 33 bf 2b bb 15 bf 9e 3d cf 3e 9d 9f 86 3e fe 33 03 3f 84 8d 15 bc fb b5 b7 ?.+..h.3.+....=.>...>.3.?.......
10c0 3f fc 2b 2e c0 56 fd 2a 3f 40 ff 1f bf 9e d5 ce 3e 23 d7 95 3e 4e 34 03 3f 84 8d 15 bc fb b5 b7 ?.+..V.*?@......>#..>N4.?.......
10e0 3f fc 2b 2e c0 56 fd 2a 3f 40 ff 1f bf 9e d5 ce 3e 23 d7 95 3e 4e 34 03 3f 70 b6 e8 bd 91 13 b8 ?.+..V.*?@......>#..>N4.?p......
1100 3f f9 2b 2e c0 68 ed 33 bf 2b bb 15 bf 9e 3d cf 3e 9d 9f 86 3e fe 33 03 3f 18 28 e7 bd 63 47 bb ?.+..h.3.+....=.>...>.3.?.(..cG.
1120 3f 46 38 2c c0 66 3f 33 bf fa 0d fd be 08 df 03 3f 39 a2 86 3e 1c 13 06 3f c4 1a 09 bc cd e9 ba ?F8,.f?3........?9..>...?.......
1140 3f 49 38 2c c0 57 a9 2b 3f 12 e1 08 bf 07 a5 03 3f bb d9 95 3e 6c 13 06 3f c4 1a 09 bc cd e9 ba ?I8,.W.+?.......?...>l..?.......
1160 3f 49 38 2c c0 57 a9 2b 3f 12 e1 08 bf 07 a5 03 3f bb d9 95 3e 6c 13 06 3f 18 28 e7 bd 63 47 bb ?I8,.W.+?.......?...>l..?.(..cG.
1180 3f 46 38 2c c0 66 3f 33 bf fa 0d fd be 08 df 03 3f 39 a if diff < min_diff then min_conn = conn min_diff = diff end end return min_conn end function advtrains.yawToClosestConn(yaw, conns) local min_connid, min_diff=1, 10 for connid, conn in ipairs(conns) do local yaw1 = advtrains.dir_to_angle(conn.c) local diff = math.abs(advtrains.minAngleDiffRad(yaw, yaw1)) if diff < min_diff then min_connid = connid min_diff = diff end end return min_connid end local pi, pi2 = math.pi, 2*math.pi function advtrains.minAngleDiffRad(r1, r2) while r1>pi2 do r1=r1-pi2 end while r1<0 do r1=r1+pi2 end while r2>pi2 do r2=r2-pi2 end while r1<0 do r2=r2+pi2 end local try1=r2-r1 local try2=r2+pi2-r1 local try3=r2-pi2-r1 local minabs = math.min(math.abs(try1), math.abs(try2), math.abs(try3)) if minabs==math.abs(try1) then return try1 end if minabs==math.abs(try2) then return try2 end if minabs==math.abs(try3) then return try3 end end -- Takes 2 connections (0...AT_CMAX) as argument -- Returns the angle median of those 2 positions from the pov -- of standing on the cdir1 side and looking towards cdir2 -- cdir1 - >NODE> - cdir2 function advtrains.conn_angle_median(cdir1, cdir2) local ang1 = advtrains.dir_to_angle(advtrains.oppd(cdir1)) local ang2 = advtrains.dir_to_angle(cdir2) return ang1 + advtrains.minAngleDiffRad(ang1, ang2)/2 end function advtrains.merge_tables(a, ...) local new={} for _,t in ipairs({a,...}) do for k,v in pairs(t) do new[k]=v end end return new end function advtrains.save_keys(tbl, keys) local new={} for _,key in ipairs(keys) do new[key] = tbl[key] end return new end function advtrains.get_real_index_position(path, index) if not path or not index then return end local first_pos=path[math.floor(index)] local second_pos=path[math.floor(index)+1] if not first_pos or not second_pos then return nil end local factor=index-math.floor(index) local actual_pos={x=first_pos.x-(first_pos.x-second_pos.x)*factor, y=first_pos.y-(first_pos.y-second_pos.y)*factor, z=first_pos.z-(first_pos.z-second_pos.z)*factor,} return actual_pos end function advtrains.pos_median(pos1, pos2) return {x=pos1.x-(pos1.x-pos2.x)*0.5, y=pos1.y-(pos1.y-pos2.y)*0.5, z=pos1.z-(pos1.z-pos2.z)*0.5} end function advtrains.abs_ceil(i) return math.ceil(math.abs(i))*math.sign(i) end function advtrains.serialize_inventory(inv) local ser={} local liszts=inv:get_lists() for lisztname, liszt in pairs(liszts) do ser[lisztname]={} for idx, item in ipairs(liszt) do local istring=item:to_string() if istring~="" then ser[lisztname][idx]=istring end end end return minetest.serialize(ser) end function advtrains.deserialize_inventory(sers, inv) local ser=minetest.deserialize(sers) if ser then inv:set_lists(ser) return true end return false end --is_protected wrapper that checks for protection_bypass privilege function advtrains.is_protected(pos, name) if not name then error("advtrains.is_protected() called without name parameter!") end if minetest.check_player_privs(name, {protection_bypass=true}) then --player can bypass protection return false end return minetest.is_protected(pos, name) end function advtrains.is_creative(name) if not name then error("advtrains.is_creative() called without name parameter!") end if minetest.check_player_privs(name, {creative=true}) then return true end return minetest.settings:get_bool("creative_mode") end function advtrains.is_damage_enabled(name) if not name then error("advtrains.is_damage_enabled() called without name parameter!") end if minetest.check_player_privs(name, "train_admin") then return false end return minetest.settings:get_bool("enable_damage") end function advtrains.ms_to_kmh(speed) return speed * 3.6 end -- 4 possible inputs: -- integer: just do that modulo calculation -- table with c set: rotate c -- table with tables: rotate each -- table with integers: rotate each (probably no use case) function advtrains.rotate_conn_by(conn, rotate) if tonumber(conn) then return (conn+rotate)%AT_CMAX elseif conn.c then return { c = (conn.c+rotate)%AT_CMAX, y = conn.y} end local tmp={} for connid, data in ipairs(conn) do tmp[connid]=advtrains.rotate_conn_by(data, rotate) end return tmp end function advtrains.oppd(dir) return advtrains.rotate_conn_by(dir, AT_CMAX/2) end --conn_to_match like rotate_conn_by --other_conns have to be a table of conn tables! function advtrains.conn_matches_to(conn, other_conns) if tonumber(conn) then for connid, data in ipairs(other_conns) do if advtrains.oppd(conn) == data.c then return connid end end return false elseif conn.c then for connid, data in ipairs(other_conns) do local cmp = advtrains.oppd(conn) if cmp.c == data.c and (cmp.y or 0) == (data.y or 0) then return connid end end return false end local tmp={} for connid, data in ipairs(conn) do local backmatch = advtrains.conn_matches_to(data, other_conns) if backmatch then return backmatch, connid end --returns <connid of other rail> <connid of this rail> end return false end -- Going from the rail at pos (does not need to be rounded) along connection with id conn_idx, if there is a matching rail, return it and the matching connid -- returns: <adjacent pos>, <conn index of adjacent>, <my conn index>, <railheight of adjacent> -- parameter this_conns_p is connection table of this rail and is optional, is determined by get_rail_info_at if not provided. function advtrains.get_adjacent_rail(this_posnr, this_conns_p, conn_idx, drives_on) local this_pos = advtrains.round_vector_floor_y(this_posnr) local this_conns = this_conns_p if not this_conns then _, this_conns = advtrains.get_rail_info_at(this_pos) end if not conn_idx then for coni, _ in ipairs(this_conns) do local adj_pos, adj_conn_idx, _, nry, nco = advtrains.get_adjacent_rail(this_pos, this_conns, coni) if adj_pos then return adj_pos,adj_conn_idx,coni,nry, nco end end return nil end local conn = this_conns[conn_idx] local conn_y = conn.y or 0 local adj_pos = advtrains.dirCoordSet(this_pos, conn.c); while conn_y>=1 do conn_y = conn_y - 1 adj_pos.y = adj_pos.y + 1 end local nextnode_ok, nextconns, nextrail_y=advtrains.get_rail_info_at(adj_pos, drives_on) if not nextnode_ok then adj_pos.y = adj_pos.y - 1 conn_y = conn_y + 1 nextnode_ok, nextconns, nextrail_y=advtrains.get_rail_info_at(adj_pos, drives_on) if not nextnode_ok then return nil end end local adj_connid = advtrains.conn_matches_to({c=conn.c, y=conn_y}, nextconns) if adj_connid then return adj_pos, adj_connid, conn_idx, nextrail_y, nextconns end return nil end -- when a train enters a rail on connid 'conn', which connid will it go out? -- nconns: number of connections in connection table: -- 2 = straight rail; 3 = turnout, 4 = crossing, 5 = three-way turnout (5th entry is a stub) -- returns: connid_out local connlku={[2]={2,1}, [3]={2,1,1}, [4]={2,1,4,3}, [5]={2,1,1,1}} function advtrains.get_matching_conn(conn, nconns) return connlku[nconns][conn] end function advtrains.random_id() local idst="" for i=0,5 do idst=idst..(math.random(0,9)) end return idst end -- Shorthand for pos_to_string and round_vector_floor_y function advtrains.roundfloorpts(pos) return minetest.pos_to_string(advtrains.round_vector_floor_y(pos)) end -- insert an element into a table if it does not yet exist there -- equalfunc is a function to compare equality, defaults to == -- returns true if the element was inserted function advtrains.insert_once(tab, elem, equalfunc) for _,e in pairs(tab) do if equalfunc and equalfunc(elem, e) or e==elem then return false end end tab[#tab+1] = elem return true end local hext = { [0]="0",[1]="1",[2]="2",[3]="3",[4]="4",[5]="5",[6]="6",[7]="7",[8]="8",[9]="9",[10]="A",[11]="B",[12]="C",[13]="D",[14]="E",[15]="F"} local dect = { ["0"]=0,["1"]=1,["2"]=2,["3"]=3,["4"]=4,["5"]=5,["6"]=6,["7"]=7,["8"]=8,["9"]=9,["A"]=10,["B"]=11,["C"]=12,["D"]=13,["E"]=14,["F"]=15} local f = atfloor local function hex(i) local x=i+32768 local c4 = x % 16 x = f(x / 16) local c3 = x % 16 x = f(x / 16) local c2 = x % 16 x = f(x / 16) local c1 = x % 16 return (hext[c1]) .. (hext[c2]) .. (hext[c3]) .. (hext[c4]) end local function c(s,i) return dect[string.sub(s,i,i)] end local function dec(s) return (c(s,1)*4096 + c(s,2)*256 + c(s,3)*16 + c(s,4))-32768 end -- Takes a position vector and outputs a encoded value suitable as table index -- This is essentially a hexadecimal representation of the position (+32768) -- Order (YYY)YXXXXZZZZ function advtrains.encode_pos(pos) return hex(pos.y) .. hex(pos.x) .. hex(pos.z) end -- decodes a position encoded with encode_pos function advtrains.decode_pos(pts) if not pts or not #pts==6 then return nil end local stry = string.sub(pts, 1,4) local strx = string.sub(pts, 5,8) local strz = string.sub(pts, 9,12) return vector.new(dec(strx), dec(stry), dec(strz)) end --[[ Benchmarking code local tdt = {} local tlt = {} local tet = {} for i=1,1000000 do tdt[i] = vector.new(math.random(-65536, 65535), math.random(-65536, 65535), math.random(-65536, 65535)) if i%1000 == 0 then tlt[#tlt+1] = tdt[i] end end local t1=os.clock() for i=1,1000000 do local pe = advtrains.encode_pos(tdt[i]) local pb = advtrains.decode_pos(pe) tet[pe] = i end for i,v in ipairs(tlt) do local lk = tet[advtrains.encode_pos(v)] end atdebug("endec",os.clock()-t1,"s") tet = {} t1=os.clock() for i=1,1000000 do local pe = minetest.pos_to_string(tdt[i]) local pb = minetest.string_to_pos(pe) tet[pe] = iright'>2c40 be 33 ca 94 3e 74 fd 39 bf d7 b1 eb 3e 05 95 02 3f 88 00 ec 3d 8f f3 75 3f 54 52 49 53 c4 06 00 .3..>t.9....>...?...=..u?TRIS...
2c60 00 00 00 00 00 02 00 00 00 01 00 00 00 00 00 00 00 03 00 00 00 02 00 00 00 00 00 00 00 06 00 00 ................................
2c80 00 05 00 00 00 04 00 00 00 07 00 00 00 06 00 00 00 04 00 00 00 0a 00 00 00 09 00 00 00 08 00 00 ................................
2ca0 00 0b 00 00 00 0a 00 00 00 08 00 00 00 0e 00 00 00 0d 00 00 00 0c 00 00 00 0f 00 00 00 0e 00 00 ................................
2cc0 00 0c 00 00 00 12 00 00 00 11 00 00 00 10 00 00 00 13 00 00 00 12 00 00 00 10 00 00 00 16 00 00 ................................
2ce0 00 15 00 00 00 14 00 00 00 17 00 00 00 16 00 00 00 14 00 00 00 1a 00 00 00 19 00 00 00 18 00 00 ................................
2d00 00 1b 00 00 00 1a 00 00 00 18 00 00 00 1e 00 00 00 1d 00 00 00 1c 00 00 00 1f 00 00 00 1e 00 00 ................................
2d20 00 1c 00 00 00 22 00 00 00 21 00 00 00 20 00 00 00 23 00 00 00 22 00 00 00 20 00 00 00 26 00 00 ....."...!.......#...".......&..
2d40 00 25 00 00 00 24 00 00 00 27 00 00 00 26 00 00 00 24 00 00 00 2a 00 00 00 29 00 00 00 28 00 00 .%...$...'...&...$...*...)...(..
2d60 00 2b 00 00 00 2a 00 00 00 28 00 00 00 2e 00 00 00 2d 00 00 00 2c 00 00 00 2f 00 00 00 2e 00 00 .+...*...(.......-...,.../......
2d80 00 2c 00 00 00 32 00 00 00 31 00 00 00 30 00 00 00 33 00 00 00 32 00 00 00 30 00 00 00 36 00 00 .,...2...1...0...3...2...0...6..
2da0 00 35 00 00 00 34 00 00 00 37 00 00 00 36 00 00 00 34 00 00 00 3a 00 00 00 39 00 00 00 38 00 00 .5...4...7...6...4...:...9...8..
2dc0 00 3b 00 00 00 3a 00 00 00 38 00 00 00 3e 00 00 00 3d 00 00 00 3c 00 00 00 3f 00 00 00 3e 00 00 .;...:...8...>...=...<...?...>..
2de0 00 3c 00 00 00 42 00 00 00 41 00 00 00 40 00 00 00 43 00 00 00 42 00 00 00 40 00 00 00 46 00 00 .<...B...A...@...C...B...@...F..
2e00 00 45 00 00 00 44 00 00 00 47 00 00 00 46 00 00 00 44 00 00 00 4a 00 00 00 49 00 00 00 48 00 00 .E...D...G...F...D...J...I...H..
2e20 00 4b 00 00 00 4a 00 00 00 48 00 00 00 4e 00 00 00 4d 00 00 00 4c 00 00 00 4f 00 00 00 4e 00 00 .K...J...H...N...M...L...O...N..
2e40 00 4c 00 00 00 52 00 00 00 51 00 00 00 50 00 00 00 53 00 00 00 52 00 00 00 50 00 00 00 56 00 00 .L...R...Q...P...S...R...P...V..
2e60 00 55 00 00 00 54 00 00 00 57 00 00 00 56 00 00 00 54 00 00 00 5a 00 00 00 59 00 00 00 58 00 00 .U...T...W...V...T...Z...Y...X..
2e80 00 5b 00 00 00 5a 00 00 00 58 00 00 00 5e 00 00 00 5d 00 00 00 5c 00 00 00 5f 00 00 00 5e 00 00 .[...Z...X...^...]...\..._...^..
2ea0 00 5c 00 00 00 62 00 00 00 61 00 00 00 60 00 00 00 63 00 00 00 62 00 00 00 60 00 00 00 66 00 00 .\...b...a...`...c...b...`...f..
2ec0 00 65 00 00 00 64 00 00 00 67 00 00 00 66 00 00 00 64 00 00 00 6a 00 00 00 69 00 00 00 68 00 00 .e...d...g...f...d...j...i...h..
2ee0 00 6b 00 00 00 6a 00 00 00 68 00 00 00 6e 00 00 00 6d 00 00 00 6c 00 00 00 6f 00 00 00 6e 00 00 .k...j...h...n...m...l...o...n..
2f00 00 6c 00 00 00 72 00 00 00 71 00 00 00 70 00 00 00 73 00 00 00 72 00 00 00 70 00 00 00 76 00 00 .l...r...q...p...s...r...p...v..
2f20 00 75 00 00 00 74 00 00 00 77 00 00 00 76 00 00 00 74 00 00 00 7a 00 00 00 79 00 00 00 78 00 00 .u...t...w...v...t...z...y...x..
2f40 00 7b 00 00 00 7a 00 00 00 78 00 00 00 7e 00 00 00 7d 00 00 00 7c 00 00 00 7f 00 00 00 7e 00 00 .{...z...x...~...}...|.......~..
2f60 00 7c 00 00 00 82 00 00 00 81 00 00 00 80 00 00 00 83 00 00 00 82 00 00 00 80 00 00 00 86 00 00 .|..............................
2f80 00 85 00 00 00 84 00 00 00 87 00 00 00 86 00 00 00 84 00 00 00 8a 00 00 00 89 00 00 00 88 00 00 ................................
2fa0 00 8b 00 00 00 8a 00 00 00 88 00 00 00 8e 00 00 00 8d 00 00 00 8c 00 00 00 91 00 00 00 90 00 00 ................................
2fc0 00 8f 00 00 00 94 00 00 00 93 00 00 00 92 00 00 00 97 00 00 00 96 00 00 00 95 00 00 00 9a 00 00 ................................
2fe0 00 99 00 00 00 98 00 00 00 9d 00 00 00 9c 00 00 00 9b 00 00 00 a0 00 00 00 9f 00 00 00 9e 00 00 ................................
3000 00 a3 00 00 00 a2 00 00 00 a1 00 00 00 a6 00 00 00 a5 00 00 00 a4 00 00 00 a9 00 00 00 a8 00 00 ................................
3020 00 a7 00 00 00 ac 00 00 00 ab 00 00 00 aa 00 00 00 af 00 00 00 ae 00 00 00 ad 00 00 00 b2 00 00 ................................
3040 00 b1 00 00 00 b0 00 00 00 b5 00 00 00 b4 00 00 00 b3 00 00 00 b8 00 00 00 b7 00 00 00 b6 00 00 ................................
3060 00 bb 00 00 00 ba 00 00 00 b9 00 00 00 be 00 00 00 bd 00 00 00 bc 00 00 00 c1 00 00 00 c0 00 00 ................................
3080 00 bf 00 00 00 c4 00 00 00 c3 00 00 00 c2 00 00 00 c7 00 00 00 c6 00 00 00 c5 00 00 00 ca 00 00 ................................
30a0 00 c9 00 00 00 c8 00 00 00 cd 00 00 00 cc 00 00 00 cb 00 00 00 d0 00 00 00 cf 00 00 00 ce 00 00 ................................
30c0 00 d3 00 00 00 d2 00 00 00 d1 00 00 00 d6 00 00 00 d5 00 00 00 d4 00 00 00 d9 00 00 00 d8 00 00 ................................
30e0 00 d7 00 00 00 dc 00 00 00 db 00 00 00 da 00 00 00 df 00 00 00 de 00 00 00 dd 00 00 00 e2 00 00 ................................
3100 00 e1 00 00 00 e0 00 00 00 e5 00 00 00 e4 00 00 00 e3 00 00 00 e8 00 00 00 e7 00 00 00 e6 00 00 ................................
3120 00 e9 00 00 00 e8 00 00 00 e6 00 00 00 ec 00 00 00 eb 00 00 00 ea 00 00 00 ed 00 00 00 ec 00 00 ................................
3140 00 ea 00 00 00 f0 00 00 00 ef 00 00 00 ee 00 00 00 f3 00 00 00 f2 00 00 00 f1 00 00 00 f6 00 00 ................................
3160 00 f5 00 00 00 f4 00 00 00 f9 00 00 00 f8 00 00 00 f7 00 00 00 fc 00 00 00 fb 00 00 00 fa 00 00 ................................
3180 00 ff 00 00 00 fe 00 00 00 fd 00 00 00 02 01 00 00 01 01 00 00 00 01 00 00 05 01 00 00 04 01 00 ................................
31a0 00 03 01 00 00 08 01 00 00 07 01 00 00 06 01 00 00 0b 01 00 00 0a 01 00 00 09 01 00 00 0e 01 00 ................................
31c0 00 0d 01 00 00 0c 01 00 00 11 01 00 00 10 01 00 00 0f 01 00 00 14 01 00 00 13 01 00 00 12 01 00 ................................
31e0 00 17 01 00 00 16 01 00 00 15 01 00 00 1a 01 00 00 19 01 00 00 18 01 00 00 1d 01 00 00 1c 01 00 ................................
3200 00 1b 01 00 00 20 01 00 00 1f 01 00 00 1e 01 00 00 23 01 00 00 22 01 00 00 21 01 00 00 26 01 00 .................#..."...!...&..
3220 00 25 01 00 00 24 01 00 00 29 01 00 00 28 01 00 00 27 01 00 00 2c 01 00 00 2b 01 00 00 2a 01 00 .%...$...)...(...'...,...+...*..
3240 00 2f 01 00 00 2e 01 00 00 2d 01 00 00 32 01 00 00 31 01 00 00 30 01 00 00 35 01 00 00 34 01 00 ./.......-...2...1...0...5...4..
3260 00 33 01 00 00 38 01 00 00 37 01 00 00 36 01 00 00 3b 01 00 00 3a 01 00 00 39 01 00 00 3e 01 00 .3...8...7...6...;...:...9...>..
3280 00 3d 01 00 00 3c 01 00 00 41 01 00 00 40 01 00 00 3f 01 00 00 44 01 00 00 43 01 00 00 42 01 00 .=...<...A...@...?...D...C...B..
32a0 00 47 01 00 00 46 01 00 00 45 01 00 00 4a 01 00 00 49 01 00 00 48 01 00 00 4b 01 00 00 4a 01 00 .G...F...E...J...I...H...K...J..
32c0 00 48 01 00 00 4e 01 00 00 4d 01 00 00 4c 01 00 00 4f 01 00 00 4e 01 00 00 4c 01 00 00 52 01 00 .H...N...M...L...O...N...L...R..
32e0 00 51 01 00 00 50 01 00 00 53 01 00 00 52 01 00 00 50 01 00 00 56 01 00 00 55 01 00 00 54 01 00 .Q...P...S...R...P...V...U...T..
3300 00 57 01 00 00 56 01 00 00 54 01 00 00 5a 01 00 00 59 01 00 00 58 01 00 00 5b 01 00 00 5a 01 00 .W...V...T...Z...Y...X...[...Z..
3320 00 58 01 00 00 .X...