#VRML V2.0 utf8 ## ##@ snowboard PROTO Snowboard [ exposedField MFString topTexture [] exposedField SFNode topMaterial Material { diffuseColor 0.2 0.5529 0.1765 ambientIntensity 0.1033 specularColor 0.045 0.045 0.045 shininess 0.2875 transparency 0 } exposedField MFString baseTexture [] exposedField SFNode baseMaterial Material { diffuseColor 0.1961 0.1961 0.1961 ambientIntensity 0.1033 specularColor 0.045 0.045 0.045 shininess 0.2875 transparency 0 } ] { Transform { scale 0.01 0.01 0.01 translation -0.01 0.03 0 children [ Transform { translation -0.02787 -2.517 0.6719 children [ Shape { appearance Appearance { material IS topMaterial texture ImageTexture { url IS topTexture } } geometry IndexedFaceSet { ccw TRUE solid TRUE coord Coordinate { point [ -18.51 -0.6335 70.7, -12.62 1.86 75.36, -4.095 2.693 76.92, 4.396 2.627 76.8, 12.71 2.048 75.71, 18.64 -0.5363 70.88, -19.99 -1.069 63.98, 20.01 -1.069 63.98, -19.98 -0.5668 45.3, 20.02 -0.5668 45.3, -18.18 -0.03593 11.41, 18.21 -0.03582 11.39, -18.18 -0.03615 -11.45, 18.21 -0.03636 -11.47, -19.96 -0.5647 -45.21, 20.04 -0.5647 -45.21, -19.99 -1.102 -65.23, 20.01 -1.102 -65.23, -17.03 0.2689 -72.24, -11.71 2.692 -76.77, -4.535 3.488 -78.27, 4.743 3.488 -78.27, 11.75 2.604 -76.61, 17.91 -0.0829 -71.58, -18.51 2.009 69.28, -12.62 4.507 73.95, -4.095 5.341 75.52, 4.396 5.275 75.39, 12.71 4.695 74.3, 18.64 2.107 69.47, -19.99 1.835 63.23, -11.99 1.835 63.23, 20.01 1.835 63.23, -19.98 2.432 45.37, 20.02 2.432 45.37, -18.18 2.964 11.43, 18.21 2.964 11.41, -18.18 2.964 -11.47, 18.21 2.964 -11.48, -19.96 2.434 -45.29, 20.04 2.434 -45.29, -19.99 1.782 -64.41, 12.01 1.782 -64.41, 20.01 1.782 -64.41, -17.03 2.913 -70.82, -11.71 5.34 -75.36, -4.535 6.137 -76.86, 4.743 6.137 -76.86, 11.75 5.252 -75.2, 17.91 2.561 -70.16] } texCoord TextureCoordinate { point [ 0.03643 0.0539, 0.1839 0.02479, 0.3969 0.01502, 0.6092 0.01579, 0.8169 0.02258, 0.9653 0.05277, -0.0003901 0.09593, 0.1996 0.09593, 0.9996 0.09593, -0.0001255 0.2127, 0.9999 0.2127, 0.0449 0.4245, 0.9545 0.4246, 0.0449 0.5673, 0.9545 0.5675, 0.0004151 0.7784, 1 0.7784, -0.0004151 0.9035, 0.7996 0.9035, 0.9996 0.9035, 0.07359 0.9473, 0.2065 0.9756, 0.3859 0.985, 0.6179 0.985, 0.793 0.9746, 0.947 0.9432, 0.03643 0.06277, 0.1839 0.03361, 0.3969 0.02383, 0.6092 0.0246, 0.8169 0.0314, 0.9653 0.06164, -0.0003901 0.1006, 0.1996 0.1006, 0.9996 0.1006, -0.0001255 0.2122, 0.9999 0.2122, 0.0449 0.4244, 0.9545 0.4245, 0.0449 0.5675, 0.9545 0.5676, 0.0004151 0.7789, 1 0.7789, -0.0004151 0.8983, 0.7996 0.8983, 0.9996 0.8983, 0.07359 0.9384, 0.2065 0.9668, 0.3859 0.9762, 0.6179 0.9762, 0.793 0.9658, 0.947 0.9343] } coordIndex [ 24, 25, 31, -1, 31, 30, 24, -1, 25, 26, 31, -1, 26, 27, 31, -1, 27, 28, 31, -1, 28, 29, 32, -1, 32, 31, 28, -1, 30, 31, 33, -1, 31, 32, 34, -1, 31, 34, 36, -1, 36, 33, 31, -1, 35, 33, 38, -1, 38, 37, 35, -1, 33, 36, 38, -1, 40, 37, 38, -1, 39, 37, 42, -1, 42, 41, 39, -1, 37, 40, 42, -1, 43, 42, 40, -1, 45, 44, 41, -1, 41, 42, 46, -1, 46, 45, 41, -1, 47, 46, 42, -1, 48, 47, 42, -1, 42, 43, 49, -1, 49, 48, 42, -1, 0, 1, 25, -1, 25, 24, 0, -1, 1, 2, 26, -1, 26, 25, 1, -1, 2, 3, 27, -1, 27, 26, 2, -1, 3, 4, 28, -1, 28, 27, 3, -1, 4, 5, 29, -1, 29, 28, 4, -1, 5, 7, 32, -1, 32, 29, 5, -1, 7, 9, 34, -1, 34, 32, 7, -1, 9, 11, 36, -1, 36, 34, 9, -1, 11, 13, 38, -1, 38, 36, 11, -1, 13, 15, 40, -1, 40, 38, 13, -1, 15, 17, 43, -1, 43, 40, 15, -1, 17, 23, 49, -1, 49, 43, 17, -1, 23, 22, 48, -1, 48, 49, 23, -1, 22, 21, 47, -1, 47, 48, 22, -1, 21, 20, 46, -1, 46, 47, 21, -1, 20, 19, 45, -1, 45, 46, 20, -1, 19, 18, 44, -1, 44, 45, 19, -1, 18, 16, 41, -1, 41, 44, 18, -1, 16, 14, 39, -1, 39, 41, 16, -1, 14, 12, 37, -1, 37, 39, 14, -1, 12, 10, 35, -1, 35, 37, 12, -1, 10, 8, 33, -1, 33, 35, 10, -1, 8, 6, 30, -1, 30, 33, 8, -1, 6, 0, 24, -1, 24, 30, 6, -1] texCoordIndex [ 26, 27, 33, -1, 33, 32, 26, -1, 27, 28, 33, -1, 28, 29, 33, -1, 29, 30, 33, -1, 30, 31, 34, -1, 34, 33, 30, -1, 32, 33, 35, -1, 33, 34, 36, -1, 33, 36, 38, -1, 38, 35, 33, -1, 37, 35, 40, -1, 40, 39, 37, -1, 35, 38, 40, -1, 42, 39, 40, -1, 41, 39, 44, -1, 44, 43, 41, -1, 39, 42, 44, -1, 45, 44, 42, -1, 47, 46, 43, -1, 43, 44, 48, -1, 48, 47, 43, -1, 49, 48, 44, -1, 50, 49, 44, -1, 44, 45, 51, -1, 51, 50, 44, -1, 0, 1, 27, -1, 27, 26, 0, -1, 1, 2, 28, -1, 28, 27, 1, -1, 2, 3, 29, -1, 29, 28, 2, -1, 3, 4, 30, -1, 30, 29, 3, -1, 4, 5, 31, -1, 31, 30, 4, -1, 5, 8, 34, -1, 34, 31, 5, -1, 8, 10, 36, -1, 36, 34, 8, -1, 10, 12, 38, -1, 38, 36, 10, -1, 12, 14, 40, -1, 40, 38, 12, -1, 14, 16, 42, -1, 42, 40, 14, -1, 16, 19, 45, -1, 45, 42, 16, -1, 19, 25, 51, -1, 51, 45, 19, -1, 25, 24, 50, -1, 50, 51, 25, -1, 24, 23, 49, -1, 49, 50, 24, -1, 23, 22, 48, -1, 48, 49, 23, -1, 22, 21, 47, -1, 47, 48, 22, -1, 21, 20, 46, -1, 46, 47, 21, -1, 20, 17, 43, -1, 43, 46, 20, -1, 17, 15, 41, -1, 41, 43, 17, -1, 15, 13, 39, -1, 39, 41, 15, -1, 13, 11, 37, -1, 37, 39, 13, -1, 11, 9, 35, -1, 35, 37, 11, -1, 9, 6, 32, -1, 32, 35, 9, -1, 6, 0, 26, -1, 26, 32, 6, -1] } } ] }, Transform { translation -0.02787 -2.517 0.6719 children [ Shape { appearance Appearance { material IS baseMaterial textureTransform TextureTransform { scale -1 1 } texture ImageTexture { url IS baseTexture } } geometry IndexedFaceSet { ccw TRUE solid TRUE coord Coordinate { point [ -18.51 -0.6335 70.7, -12.62 1.86 75.36, -4.095 2.693 76.92, 4.396 2.627 76.8, 12.71 2.048 75.71, 18.64 -0.5363 70.88, -19.99 -1.069 63.98, -11.99 -1.069 63.98, 20.01 -1.069 63.98, -19.98 -0.5668 45.3, 20.02 -0.5668 45.3, -18.18 -0.03593 11.41, 18.21 -0.03582 11.39, -18.18 -0.03615 -11.45, 18.21 -0.03636 -11.47, -19.96 -0.5647 -45.21, 20.04 -0.5647 -45.21, -19.99 -1.102 -65.23, 12.01 -1.102 -65.23, 20.01 -1.102 -65.23, -17.03 0.2689 -72.24, -11.71 2.692 -76.77, -4.535 3.488 -78.27, 4.743 3.488 -78.27, 11.75 2.604 -76.61, 17.91 -0.0829 -71.58] } texCoord TextureCoordinate { point [ 0.03643 0.0539, 0.1839 0.02479, 0.3969 0.01502, 0.6092 0.01579, 0.8169 0.02258, 0.9653 0.05277, -0.0003901 0.09593, 0.1996 0.09593, 0.9996 0.09593, -0.0001255 0.2127, 0.9999 0.2127, 0.0449 0.4245, 0.9545 0.4246, 0.0449 0.5673, 0.9545 0.5675, 0.0004151 0.7784, 1 0.7784, -0.0004151 0.9035, 0.7996 0.9035, 0.9996 0.9035, 0.07359 0.9473, 0.2065 0.9756, 0.3859 0.985, 0.6179 0.985, 0.793 0.9746, 0.947 0.9432, 0.03643 0.06277, 0.1839 0.03361, 0.3969 0.02383, 0.6092 0.0246, 0.8169 0.0314, 0.9653 0.06164, -0.0003901 0.1006, 0.1996 0.1006, 0.9996 0.1006, -0.0001255 0.2122, 0.9999 0.2122, 0.0449 0.4244, 0.9545 0.4245, 0.0449 0.5675, 0.9545 0.5676, 0.0004151 0.7789, 1 0.7789, -0.0004151 0.8983, 0.7996 0.8983, 0.9996 0.8983, 0.07359 0.9384, 0.2065 0.9668, 0.3859 0.9762, 0.6179 0.9762, 0.793 0.9658, 0.947 0.9343] } coordIndex [ 0, 6, 7, -1, 7, 1, 0, -1, 7, 2, 1, -1, 7, 3, 2, -1, 7, 4, 3, -1, 4, 7, 8, -1, 8, 5, 4, -1, 9, 7, 6, -1, 7, 9, 10, -1, 10, 8, 7, -1, 9, 11, 12, -1, 12, 10, 9, -1, 13, 12, 11, -1, 12, 13, 14, -1, 13, 15, 16, -1, 16, 14, 13, -1, 15, 17, 18, -1, 18, 16, 15, -1, 16, 18, 19, -1, 17, 20, 21, -1, 17, 21, 22, -1, 17, 22, 23, -1, 17, 23, 24, -1, 24, 18, 17, -1, 18, 24, 25, -1, 25, 19, 18, -1] texCoordIndex [ 0, 6, 7, -1, 7, 1, 0, -1, 7, 2, 1, -1, 7, 3, 2, -1, 7, 4, 3, -1, 4, 7, 8, -1, 8, 5, 4, -1, 9, 7, 6, -1, 7, 9, 10, -1, 10, 8, 7, -1, 9, 11, 12, -1, 12, 10, 9, -1, 13, 12, 11, -1, 12, 13, 14, -1, 13, 15, 16, -1, 16, 14, 13, -1, 15, 17, 18, -1, 18, 16, 15, -1, 16, 18, 19, -1, 17, 20, 21, -1, 17, 21, 22, -1, 17, 22, 23, -1, 17, 23, 24, -1, 24, 18, 17, -1, 18, 24, 25, -1, 25, 19, 18, -1] } } ] } ] } } ##@ boot PROTO Boot [ exposedField MFString textureUrl [] exposedField SFNode material Material { diffuseColor 0.7176 0.7176 0.7176 ambientIntensity 0.1804 specularColor 0.045 0.045 0.045 shininess 0.2875 transparency 0 } ] { Transform { ## translation 0.075 0.1 0.01 translation 0.05 0.1 0.01 rotation 0.5774 -0.5774 0.5774 -4.189 scale 0.001 0.001 0.001 children [ Shape { appearance Appearance { material IS material texture ImageTexture { url IS textureUrl } } geometry IndexedFaceSet { ccw TRUE solid TRUE coord Coordinate { point [ -23.61 4 75.32, 42.53 4 73.66, 103.3 4 65.78, 103.4 4 -44.46, 70.13 4 -118.8, 31.15 2 -100.5, -8.55 4 -102.1, -26.73 4 -79.48, -28.58 4 -50.53, 2.971 2.4 -26.57, -33.44 4 -12.03, -159 4 41.4, -23.61 96 75.32, -13.02 97.6 57.05, 70.13 96 -118.8, -2.93 96 -103.6, -22.62 96 -78.46, -24.47 96 -49.51, -26.91 97 -10.74, -34.58 96 -14.29, -142.1 3.083 68.98, -5.007 3 59.03, 139 20 35.47, 81.77 3 -36.63, 48.64 3 -116, -14.23 10.33 -108.9, -7.985 3.083 -90.55, -26.02 3.083 -47.89, -31.81 20 -40.89, -10.36 2.95 -43.23, -23.45 10.2 -32.16, -27.41 20 -36.48, -28.31 3.083 -8.643, -48.9 3 19.72, -133 3.083 35.99, -177.4 20 35.3, -192.9 20 44.39, -162.7 3.167 52.94, -197.6 20 53.61, 119.8 30 -61.91, 122.9 50 -61.91, 119.8 70 -61.91, 111 80 -86.88, -27.41 80 -36.48, -30.8 80 -27.5, -38.1 80 -21.09, -142.1 96.92 68.98, 87.56 96.92 -61.33, 76.8 89.67 -119.7, 48.62 96.97 -116.4, -13.67 89.67 -109.1, 12.75 96.97 -101.3, 1.737 96.92 -92.97, -30.77 89.67 -48.2, -23.76 89.8 -31.3, -1.577 97.05 -32.54, -48.99 97 19.55, -95.99 96.92 30.17, -150.2 96.83 39.81, -162.7 96.83 52.94, -176.8 10.25 63.75, -86.72 10.25 82.11, -31.93 10.25 81.49, -15.54 10.25 76.76, 107.7 10.25 73.9, 122.4 10.25 66.49, 113.1 10.25 -37.96, 108.2 10.25 -56.81, 101.7 10.25 -86.88, 90.91 10.25 -110.6, 47.81 10.25 -119.1, -25.47 10.25 -88.71, -29.26 10.25 -41.51, -24.23 10.25 -37.14, -34.84 10.25 -20.04, -58.39 10.25 8.107, -201.1 30 64.07, 140.4 30 67.22, 129.9 30 -46.65, 103.9 30 -110.5, -35.16 30 -65, -185.5 30 35.3, -201.8 30 44.39, -206.7 30 53.61, -206.3 50 64.07, 133.2 50 -46.65, 119.1 50 -86.88, 106.6 50 -110.5, -49.48 50 -11.73, -207 50 44.39, -212 50 53.61, -201.1 70 64.07, -172.8 70 76.39, 123.2 70 74.82, 140.4 70 67.22, 145.4 70 35.47, 103.9 70 -110.5, -28.87 70 -89.33, -28.68 70 -36.48, -32.22 70 -27.5, -185.5 70 35.3, -206.7 70 53.61, -86.72 89.75 82.11, -31.93 89.75 81.49, -15.54 89.75 76.76, 67.23 89.75 79.23, 122.7 89.75 66.66, 90.91 89.75 -110.6, 47.81 89.75 -119.1, -2.644 89.75 -111.9, -24.86 89.75 -88.56, -28.64 89.75 -41.35, -23.4 89.75 -36.21, -28.06 89.75 -26.23, -35.01 89.75 -20.38, -42.24 89.75 -11.25, -80.96 89.75 18.65, -139.3 89.75 30.29, -23.58 0.75 -64.96, 52.62 99.29 -72.05] } texCoord TextureCoordinate { point [ 0.5189 0.1754, 0.6781 0.1811, 0.8243 0.2085, 0.8247 0.5906, 0.7445 0.8481, 0.6507 0.7847, 0.5551 0.7903, 0.5114 0.712, 0.5069 0.6116, 0.5829 0.5286, 0.4952 0.4782, 0.1931 0.293, 0.5189 0.1754, 0.5444 0.2387, 0.7445 0.8481, 0.5687 0.7955, 0.5213 0.7085, 0.5168 0.6081, 0.5109 0.4737, 0.4925 0.486, 0.2338 0.1974, 0.5637 0.2319, 0.9102 0.3135, 0.7725 0.5634, 0.6928 0.8387, 0.5415 0.814, 0.5565 0.7504, 0.5131 0.6025, 0.4992 0.5782, 0.5508 0.5863, 0.5193 0.548, 0.5097 0.5629, 0.5076 0.4664, 0.458 0.3681, 0.2555 0.3117, 0.1488 0.3141, 0.1114 0.2826, 0.1841 0.253, 0.1001 0.2507, 0.8641 0.6511, 0.8715 0.6511, 0.8641 0.6511, 0.8428 0.7377, 0.5097 0.5629, 0.5016 0.5318, 0.484 0.5096, 0.2338 0.1974, 0.7865 0.6491, 0.7605 0.8513, 0.6927 0.8401, 0.5428 0.8145, 0.6064 0.7876, 0.5799 0.7588, 0.5017 0.6036, 0.5185 0.545, 0.5719 0.5493, 0.4578 0.3687, 0.3447 0.3319, 0.2143 0.2985, 0.1841 0.253, 0.1503 0.2155, 0.367 0.1519, 0.4989 0.154, 0.5383 0.1704, 0.8349 0.1803, 0.8704 0.206, 0.8478 0.5681, 0.8361 0.6334, 0.8206 0.7377, 0.7945 0.8197, 0.6908 0.8494, 0.5144 0.744, 0.5053 0.5804, 0.5174 0.5652, 0.4919 0.506, 0.4352 0.4084, 0.09168 0.2144, 0.9136 0.2035, 0.8884 0.5982, 0.8258 0.8197, 0.4911 0.6618, 0.1292 0.3141, 0.09004 0.2826, 0.07823 0.2507, 0.07926 0.2144, 0.8964 0.5982, 0.8623 0.7377, 0.8322 0.8197, 0.4566 0.4771, 0.07757 0.2826, 0.06545 0.2507, 0.09168 0.2144, 0.1598 0.1717, 0.8723 0.1771, 0.9136 0.2035, 0.9256 0.3135, 0.8258 0.8197, 0.5062 0.7461, 0.5067 0.5629, 0.4982 0.5318, 0.1292 0.3141, 0.07823 0.2507, 0.367 0.1519, 0.4989 0.154, 0.5383 0.1704, 0.7375 0.1618, 0.871 0.2054, 0.7945 0.8197, 0.6908 0.8494, 0.5694 0.8243, 0.5159 0.7435, 0.5068 0.5798, 0.5194 0.562, 0.5082 0.5274, 0.4914 0.5071, 0.4741 0.4755, 0.3809 0.3718, 0.2405 0.3315, 0.519 0.6617, 0.7024 0.6862] } coordIndex [ 20, 60, 37, -1, 62, 61, 0, -1, 61, 20, 0, -1, 63, 62, 0, -1, 63, 0, 21, -1, 0, 20, 21, -1, 20, 33, 21, -1, 63, 21, 1, -1, 21, 33, 1, -1, 65, 64, 2, -1, 64, 1, 2, -1, 22, 65, 2, -1, 66, 22, 2, -1, 1, 23, 2, -1, 66, 2, 23, -1, 66, 23, 3, -1, 67, 66, 3, -1, 23, 24, 3, -1, 68, 67, 3, -1, 24, 68, 3, -1, 69, 68, 4, -1, 68, 24, 4, -1, 24, 70, 4, -1, 25, 70, 5, -1, 70, 24, 5, -1, 24, 23, 5, -1, 23, 26, 5, -1, 26, 71, 6, -1, 71, 25, 6, -1, 25, 5, 6, -1, 5, 26, 6, -1, 7, 71, 26, -1, 118, 7, 26, -1, 27, 72, 8, -1, 72, 80, 8, -1, 80, 7, 8, -1, 7, 118, 8, -1, 118, 27, 8, -1, 73, 72, 29, -1, 72, 27, 29, -1, 27, 118, 29, -1, 118, 26, 29, -1, 23, 1, 9, -1, 30, 73, 9, -1, 73, 29, 9, -1, 29, 26, 9, -1, 26, 23, 9, -1, 74, 30, 32, -1, 30, 9, 32, -1, 9, 1, 32, -1, 1, 33, 32, -1, 75, 74, 10, -1, 74, 32, 10, -1, 32, 33, 10, -1, 75, 10, 33, -1, 20, 34, 33, -1, 34, 75, 33, -1, 20, 37, 34, -1, 35, 34, 11, -1, 34, 37, 11, -1, 37, 60, 38, -1, 60, 76, 38, -1, 76, 83, 38, -1, 20, 92, 60, -1, 92, 76, 60, -1, 20, 61, 92, -1, 64, 93, 1, -1, 93, 64, 77, -1, 64, 65, 77, -1, 65, 22, 77, -1, 22, 66, 78, -1, 66, 67, 78, -1, 39, 78, 67, -1, 68, 39, 67, -1, 86, 39, 68, -1, 69, 79, 68, -1, 79, 86, 68, -1, 69, 4, 79, -1, 4, 70, 79, -1, 7, 80, 71, -1, 80, 72, 28, -1, 72, 73, 28, -1, 73, 31, 28, -1, 73, 30, 31, -1, 30, 74, 31, -1, 11, 36, 35, -1, 36, 82, 35, -1, 82, 81, 35, -1, 11, 37, 36, -1, 37, 38, 36, -1, 38, 83, 36, -1, 83, 82, 36, -1, 76, 84, 83, -1, 84, 90, 83, -1, 76, 92, 84, -1, 77, 94, 93, -1, 95, 94, 77, -1, 77, 22, 95, -1, 22, 78, 95, -1, 78, 85, 95, -1, 40, 85, 78, -1, 78, 39, 40, -1, 39, 86, 40, -1, 79, 87, 86, -1, 80, 28, 98, -1, 31, 98, 28, -1, 74, 98, 31, -1, 74, 75, 88, -1, 75, 116, 88, -1, 75, 34, 116, -1, 34, 35, 116, -1, 81, 82, 89, -1, 83, 90, 82, -1, 90, 89, 82, -1, 84, 91, 90, -1, 91, 101, 90, -1, 84, 92, 91, -1, 41, 95, 85, -1, 40, 41, 85, -1, 40, 86, 41, -1, 87, 96, 86, -1, 79, 70, 87, -1, 25, 71, 97, -1, 71, 80, 97, -1, 80, 53, 97, -1, 80, 98, 53, -1, 74, 99, 98, -1, 74, 88, 99, -1, 35, 117, 116, -1, 35, 81, 117, -1, 81, 100, 117, -1, 81, 89, 100, -1, 89, 101, 100, -1, 90, 101, 89, -1, 91, 59, 101, -1, 92, 46, 91, -1, 92, 61, 46, -1, 61, 102, 46, -1, 61, 62, 102, -1, 62, 103, 102, -1, 62, 63, 103, -1, 63, 104, 103, -1, 63, 105, 104, -1, 63, 1, 105, -1, 1, 93, 105, -1, 93, 106, 105, -1, 93, 94, 106, -1, 94, 95, 106, -1, 47, 106, 95, -1, 41, 47, 95, -1, 42, 47, 41, -1, 41, 86, 42, -1, 86, 96, 42, -1, 96, 107, 42, -1, 107, 96, 48, -1, 96, 87, 48, -1, 87, 70, 48, -1, 70, 108, 48, -1, 70, 25, 108, -1, 25, 109, 108, -1, 109, 25, 50, -1, 25, 97, 50, -1, 97, 110, 50, -1, 97, 53, 110, -1, 53, 16, 110, -1, 98, 111, 53, -1, 98, 43, 111, -1, 43, 112, 111, -1, 54, 112, 43, -1, 98, 99, 43, -1, 99, 44, 43, -1, 44, 113, 43, -1, 113, 54, 43, -1, 99, 45, 44, -1, 45, 114, 44, -1, 114, 113, 44, -1, 99, 88, 45, -1, 88, 115, 45, -1, 115, 114, 45, -1, 88, 116, 115, -1, 101, 59, 100, -1, 91, 46, 59, -1, 102, 12, 46, -1, 12, 57, 46, -1, 57, 59, 46, -1, 102, 103, 12, -1, 103, 104, 12, -1, 18, 12, 13, -1, 12, 104, 13, -1, 104, 105, 13, -1, 55, 13, 105, -1, 55, 105, 106, -1, 47, 55, 106, -1, 42, 107, 47, -1, 107, 14, 47, -1, 14, 49, 47, -1, 49, 119, 47, -1, 107, 48, 14, -1, 48, 108, 14, -1, 108, 49, 14, -1, 49, 108, 51, -1, 108, 109, 51, -1, 119, 49, 51, -1, 51, 109, 15, -1, 109, 50, 15, -1, 50, 110, 15, -1, 110, 52, 15, -1, 52, 119, 15, -1, 119, 51, 15, -1, 52, 110, 16, -1, 119, 52, 16, -1, 16, 53, 17, -1, 53, 111, 17, -1, 119, 16, 17, -1, 111, 112, 17, -1, 112, 55, 17, -1, 55, 47, 17, -1, 47, 119, 17, -1, 112, 54, 55, -1, 54, 113, 55, -1, 55, 113, 18, -1, 113, 114, 18, -1, 13, 55, 18, -1, 18, 114, 19, -1, 114, 115, 19, -1, 18, 19, 56, -1, 19, 115, 56, -1, 115, 116, 56, -1, 12, 18, 56, -1, 116, 57, 56, -1, 57, 12, 56, -1, 57, 116, 58, -1, 116, 117, 58, -1, 59, 57, 58, -1, 117, 100, 58, -1, 100, 59, 58, -1] texCoordIndex [ 20, 60, 37, -1, 62, 61, 0, -1, 61, 20, 0, -1, 63, 62, 0, -1, 63, 0, 21, -1, 0, 20, 21, -1, 20, 33, 21, -1, 63, 21, 1, -1, 21, 33, 1, -1, 65, 64, 2, -1, 64, 1, 2, -1, 22, 65, 2, -1, 66, 22, 2, -1, 1, 23, 2, -1, 66, 2, 23, -1, 66, 23, 3, -1, 67, 66, 3, -1, 23, 24, 3, -1, 68, 67, 3, -1, 24, 68, 3, -1, 69, 68, 4, -1, 68, 24, 4, -1, 24, 70, 4, -1, 25, 70, 5, -1, 70, 24, 5, -1, 24, 23, 5, -1, 23, 26, 5, -1, 26, 71, 6, -1, 71, 25, 6, -1, 25, 5, 6, -1, 5, 26, 6, -1, 7, 71, 26, -1, 118, 7, 26, -1, 27, 72, 8, -1, 72, 80, 8, -1, 80, 7, 8, -1, 7, 118, 8, -1, 118, 27, 8, -1, 73, 72, 29, -1, 72, 27, 29, -1, 27, 118, 29, -1, 118, 26, 29, -1, 23, 1, 9, -1, 30, 73, 9, -1, 73, 29, 9, -1, 29, 26, 9, -1, 26, 23, 9, -1, 74, 30, 32, -1, 30, 9, 32, -1, 9, 1, 32, -1, 1, 33, 32, -1, 75, 74, 10, -1, 74, 32, 10, -1, 32, 33, 10, -1, 75, 10, 33, -1, 20, 34, 33, -1, 34, 75, 33, -1, 20, 37, 34, -1, 35, 34, 11, -1, 34, 37, 11, -1, 37, 60, 38, -1, 60, 76, 38, -1, 76, 83, 38, -1, 20, 92, 60, -1, 92, 76, 60, -1, 20, 61, 92, -1, 64, 93, 1, -1, 93, 64, 77, -1, 64, 65, 77, -1, 65, 22, 77, -1, 22, 66, 78, -1, 66, 67, 78, -1, 39, 78, 67, -1, 68, 39, 67, -1, 86, 39, 68, -1, 69, 79, 68, -1, 79, 86, 68, -1, 69, 4, 79, -1, 4, 70, 79, -1, 7, 80, 71, -1, 80, 72, 28, -1, 72, 73, 28, -1, 73, 31, 28, -1, 73, 30, 31, -1, 30, 74, 31, -1, 11, 36, 35, -1, 36, 82, 35, -1, 82, 81, 35, -1, 11, 37, 36, -1, 37, 38, 36, -1, 38, 83, 36, -1, 83, 82, 36, -1, 76, 84, 83, -1, 84, 90, 83, -1, 76, 92, 84, -1, 77, 94, 93, -1, 95, 94, 77, -1, 77, 22, 95, -1, 22, 78, 95, -1, 78, 85, 95, -1, 40, 85, 78, -1, 78, 39, 40, -1, 39, 86, 40, -1, 79, 87, 86, -1, 80, 28, 98, -1, 31, 98, 28, -1, 74, 98, 31, -1, 74, 75, 88, -1, 75, 116, 88, -1, 75, 34, 116, -1, 34, 35, 116, -1, 81, 82, 89, -1, 83, 90, 82, -1, 90, 89, 82, -1, 84, 91, 90, -1, 91, 101, 90, -1, 84, 92, 91, -1, 41, 95, 85, -1, 40, 41, 85, -1, 40, 86, 41, -1, 87, 96, 86, -1, 79, 70, 87, -1, 25, 71, 97, -1, 71, 80, 97, -1, 80, 53, 97, -1, 80, 98, 53, -1, 74, 99, 98, -1, 74, 88, 99, -1, 35, 117, 116, -1, 35, 81, 117, -1, 81, 100, 117, -1, 81, 89, 100, -1, 89, 101, 100, -1, 90, 101, 89, -1, 91, 59, 101, -1, 92, 46, 91, -1, 92, 61, 46, -1, 61, 102, 46, -1, 61, 62, 102, -1, 62, 103, 102, -1, 62, 63, 103, -1, 63, 104, 103, -1, 63, 105, 104, -1, 63, 1, 105, -1, 1, 93, 105, -1, 93, 106, 105, -1, 93, 94, 106, -1, 94, 95, 106, -1, 47, 106, 95, -1, 41, 47, 95, -1, 42, 47, 41, -1, 41, 86, 42, -1, 86, 96, 42, -1, 96, 107, 42, -1, 107, 96, 48, -1, 96, 87, 48, -1, 87, 70, 48, -1, 70, 108, 48, -1, 70, 25, 108, -1, 25, 109, 108, -1, 109, 25, 50, -1, 25, 97, 50, -1, 97, 110, 50, -1, 97, 53, 110, -1, 53, 16, 110, -1, 98, 111, 53, -1, 98, 43, 111, -1, 43, 112, 111, -1, 54, 112, 43, -1, 98, 99, 43, -1, 99, 44, 43, -1, 44, 113, 43, -1, 113, 54, 43, -1, 99, 45, 44, -1, 45, 114, 44, -1, 114, 113, 44, -1, 99, 88, 45, -1, 88, 115, 45, -1, 115, 114, 45, -1, 88, 116, 115, -1, 101, 59, 100, -1, 91, 46, 59, -1, 102, 12, 46, -1, 12, 57, 46, -1, 57, 59, 46, -1, 102, 103, 12, -1, 103, 104, 12, -1, 18, 12, 13, -1, 12, 104, 13, -1, 104, 105, 13, -1, 55, 13, 105, -1, 55, 105, 106, -1, 47, 55, 106, -1, 42, 107, 47, -1, 107, 14, 47, -1, 14, 49, 47, -1, 49, 119, 47, -1, 107, 48, 14, -1, 48, 108, 14, -1, 108, 49, 14, -1, 49, 108, 51, -1, 108, 109, 51, -1, 119, 49, 51, -1, 51, 109, 15, -1, 109, 50, 15, -1, 50, 110, 15, -1, 110, 52, 15, -1, 52, 119, 15, -1, 119, 51, 15, -1, 52, 110, 16, -1, 119, 52, 16, -1, 16, 53, 17, -1, 53, 111, 17, -1, 119, 16, 17, -1, 111, 112, 17, -1, 112, 55, 17, -1, 55, 47, 17, -1, 47, 119, 17, -1, 112, 54, 55, -1, 54, 113, 55, -1, 55, 113, 18, -1, 113, 114, 18, -1, 13, 55, 18, -1, 18, 114, 19, -1, 114, 115, 19, -1, 18, 19, 56, -1, 19, 115, 56, -1, 115, 116, 56, -1, 12, 18, 56, -1, 116, 57, 56, -1, 57, 12, 56, -1, 57, 116, 58, -1, 116, 117, 58, -1, 59, 57, 58, -1, 117, 100, 58, -1, 100, 59, 58, -1] } } ] } } ##@ leg PROTO Leg [ exposedField SFRotation kneeBend 0 0 1 0 exposedField SFRotation ankleBend 0 0 1 0 ] { Transform { rotation IS ankleBend children Transform { translation 0 0.15 0 children [ Shape { geometry Cylinder { top FALSE height 0.3 radius 0.1 } appearance Appearance { material DEF PANT_MAT Material { diffuseColor 0 0 0.7 } } } Transform { translation 0 0.15 0 children [ Shape { appearance Appearance { material USE PANT_MAT } geometry Sphere { radius 0.1 } } Transform { rotation IS kneeBend children Transform { translation 0 0.15 0 children [ Shape { geometry Cylinder { top FALSE bottom FALSE height 0.3 radius 0.1 } appearance Appearance { material USE PANT_MAT } } ] } } ] } ] } } } ##@ arm PROTO Arm [ exposedField SFRotation elbowBend 0 0 1 0 exposedField SFRotation shoulderBend 0 0 1 0 ] { Transform { rotation IS shoulderBend children [ Shape { appearance Appearance { material DEF ARM_MAT Material { diffuseColor 0.4 0.4 0.7 } } geometry Sphere { radius 0.08 } } Transform { translation 0 -0.15 0 children [ Shape { geometry Cylinder { top FALSE height 0.3 radius 0.08 } appearance Appearance { material USE ARM_MAT } } Transform { translation 0 -0.15 0 children [ Shape { appearance Appearance { material USE ARM_MAT } geometry Sphere { radius 0.08 } } Transform { rotation IS elbowBend children Transform { translation 0 -0.15 0 children [ Shape { geometry Cylinder { top FALSE bottom FALSE height 0.3 radius 0.08 } appearance Appearance { material USE ARM_MAT } } ] } } ] } ] } ] } } ##@ pants PROTO Pants [ exposedField MFNode body [] ] { Transform { ## Left Leg rotation 1 0 0 -0.2 translation 0.05 0.2 0.2 children [ Leg { kneeBend 0 0 1 -0.5 ankleBend 0 0 1 0.5 } ] } Transform { ## Right Leg rotation 1 0 0 0.2 translation 0.05 0.2 -0.2 children [ Leg { kneeBend 0 0 1 -0.5 ankleBend 0 0 1 0.1 } ] } Transform { ## Butt rotation 0 1 0 0.6 translation 0 0.85 0 children [ Shape { geometry Box { size 0.6 0.3 0.3 } appearance Appearance { material DEF PANT_MAT Material { diffuseColor 0 0 0.7 } } } Transform { rotation 0 1 0 -0.3 translation 0 0.15 0 children IS body } ] } } ##@ jacket PROTO Jacket [ ] { Transform { translation 0 0.3 0 children [ Shape { geometry Box { size 0.6 0.6 0.3 } appearance Appearance { material DEF PANT_MAT Material { diffuseColor 0 0 0.7 } } } Transform { ## Right Arm translation 0.3 0.25 0 rotation 0 1 0 0.2 children [ Arm { shoulderBend 0 0 1 1.1 elbowBend 1 0 0 0.5 } ] } Transform { ## Left Arm translation -0.3 0.25 0 rotation 0 1 0 -0.4 children [ Arm { shoulderBend 0 0 1 -1.1 elbowBend 1 0 0 0.5 } ] } Transform { translation 0 0.4 0 children [ Cylinder { height 0.2 radius 0.06 } Transform { translation 0 0.2 0 children [ Sphere { radius 0.2 } ] } ] } ] } } ##@ boarder PROTO Boarder [ exposedField SFVec3f position 0 0 0 exposedField SFRotation orientation 0 1 0 0 eventIn SFBool bindViewpoint field MFNode board [] field MFNode boot [] ] { Transform { translation IS position children [ DEF VIEW1 Viewpoint { bind IS bindViewpoint position 0 6 4 orientation 1 0 0 -1.0 description "Cool Boarder 1" } DEF VIEW2 Viewpoint { position -6 1.6 0 orientation 0 1 0 -1.57 description "Cool Boarder 2" } ] } Transform { translation IS position rotation IS orientation children [ Group { children IS board } Transform { translation 0 0 -0.2 rotation 0 1 0 1.4 children IS boot } Transform { translation 0 0 0.2 rotation 0 1 0 1.57 children IS boot } Pants { body Jacket {} } ] } } ##@ do not navigate NavigationInfo { type ["NONE"] } ##@ script DEF MAIN_SCRIPT Script { eventIn MFString topTexture_set eventIn MFString baseTexture_set field MFString topTexture "local/skate/boards/top_killerloop_99.jpg" field MFString baseTexture "local/skate/boards/base_killerloop_99.jpg" eventOut MFString topTexture_changed eventOut MFString baseTexture_changed eventIn SFTime goButtonPressed eventOut SFInt32 setMainSwitch eventOut SFBool startGame url "javascript: function goButtonPressed(v,t) { topTexture_changed = topTexture; baseTexture_changed = baseTexture; setMainSwitch = 1; startGame = TRUE; } function topTexture_set(v,t) { topTexture = v; } function baseTexture_set(v,t) { baseTexture = v; } " } ##@ switch DEF MAIN_SWITCH Switch { whichChoice 0 choice [ Group { children [ ##@ do not nest PROTO SelectableSnowboard [ eventOut MFString topTexture_set eventOut MFString baseTexture_set exposedField MFString topTexture [] exposedField MFString baseTexture [] exposedField SFVec3f location 0 0 0 exposedField MFString description [] eventOut MFString text_changed ] { Transform { translation IS location children [ DEF CYLINDERSENSOR CylinderSensor { } DEF TRANS Transform { children Transform { rotation 1 0 0 1.57 children Snowboard { topTexture IS topTexture baseTexture IS baseTexture } } } ] } DEF SCRIPT Script { eventIn SFBool isActive field MFString description IS description eventOut MFString text_changed IS text_changed field MFString topTexture IS topTexture field MFString baseTexture IS baseTexture eventOut MFString topTexture_set IS topTexture_set eventOut MFString baseTexture_set IS baseTexture_set url "javascript: function isActive(v,t) { if(v) { text_changed = description; topTexture_set = topTexture; baseTexture_set = baseTexture; } } " } ROUTE CYLINDERSENSOR.rotation_changed TO TRANS.set_rotation ROUTE CYLINDERSENSOR.isActive TO SCRIPT.isActive } Transform { translation -0.25 1.5 0 children Shape { appearance Appearance { material Material { emissiveColor 1 1 1 } } geometry DEF SELECTION_TEXT Text { string ["Select your board"] fontStyle FontStyle { justify ["BEGIN"] size 0.3 } } } } Transform { translation 2.5 0.5 -1 children Shape { geometry Box{ size 8 5 0 } appearance Appearance { texture ImageTexture { url "local/skate/mountain.jpg" } } } } ##@ boards DEF BOARDS Group { children [ SelectableSnowboard { location 0 0 0 topTexture "local/skate/boards/top_airwalk_matrix155_99.jpg" baseTexture "local/skate/boards/base_airwalk_matrix155_99.jpg" description ["Airwalk", "Matrix 155", "1999-2000"] } SelectableSnowboard { location 0.5 0 0 topTexture "local/skate/boards/top_burton_feelgood99.jpg" baseTexture "local/skate/boards/base_burton_feelgood99.jpg" description ["Burton", "Feelgood", "1999-2000"] } SelectableSnowboard { location 1 0 0 topTexture "local/skate/boards/top_killerloop_99.jpg" baseTexture "local/skate/boards/base_killerloop_99.jpg" description ["Killerloop", "??", "1999-2000"] } SelectableSnowboard { location 1.5 0 0 topTexture "local/skate/boards/top_libtech_davelee156z_99.jpg" baseTexture "local/skate/boards/base_libtech_davelee156z_99.jpg" description ["Lib Technologies", "Dave Lee 156z", "1999-2000"] } SelectableSnowboard { location 2 0 0 topTexture "local/skate/boards/top_morrow_unit161_99.jpg" baseTexture "local/skate/boards/base_morrow_unit161_99.jpg" description ["Morrow", "Unit 161", "1999-2000"] } SelectableSnowboard { location 2.5 0 0 topTexture "local/skate/boards/top_palmer_channeltitanium164_99.jpg" baseTexture "local/skate/boards/base_palmer_channeltitanium164_99.jpg" description ["Palmer", "Channel Titanium 164", "1999-2000"] } ] } Transform { translation 2.5 -0.9 0.1 children [ Transform { translation 0 -0.08 0.1 children Shape { appearance Appearance { material Material { diffuseColor 0 0 0 specularColor 0 0 0 emissiveColor 1 1 1 } } geometry Text { string ["GO"] fontStyle FontStyle { justify ["MIDDLE"] size 0.3 } } } } Shape { geometry Box{ size 0.6 0.3 0 } appearance Appearance { material Material { diffuseColor 0 0 0 specularColor 0 0 0 emissiveColor 0.5 0.5 1.0 } } } DEF GO_BUTTON_TOUCH TouchSensor {} ] } ##@ viewpoint Viewpoint { position 2.25 0.5 4 } ##@ script Script { directOutput TRUE field SFNode boards USE BOARDS field SFNode main USE MAIN_SCRIPT field SFNode text USE SELECTION_TEXT url "javascript: function initialize() { var children = boards.children; for(i=0;iposition[1]) { position[1] = h; speed[1] = 0; } position_changed = position; var realNose = (orientation.multVec(new SFVec3f(0,0,-0.4))).add(position); nose[0] = realNose[0]; nose[2] = realNose[2]; nose[1] = getHeight(nose[0],nose[2]); var realTail = (orientation.multVec(new SFVec3f(0,0,0.4))).add(position); tail[0] = realTail[0]; tail[2] = realTail[2]; tail[1] = getHeight(tail[0],tail[2]); var dl = Math.sqrt(direction[0]*direction[0]+direction[2]*direction[2]); var accel = 0.01 + (direction.dot(yAxis) * dl)/200; if(realTail[1] < realNose[1]) accel = -accel; speed[0] = speed[0]- (direction[0]*accel)/3; speed[1] = speed[1] - 0.10; // gravity speed[2] = speed[2]- (direction[2]*accel)/3; //Browser.print('[spd] '+ speed); // Do somphin with rotation only, // and keep speed constant when jumpin... // Also do 'fall' check when landing... if(realNose[1]>(nose[1]+0.2)) {// 'flying', don't adjust orientation direction = realTail.subtract(realNose); } else { direction = tail.subtract(nose); } if(left) { var S = Math.sqrt(speed[0]*speed[0]+speed[2]*speed[2]) * 0.99; direction = (new SFRotation(0,1,0,0.1)).multVec(direction); var L = Math.sqrt(direction[0]*direction[0]+direction[2]*direction[2]); if(Math.atan(speed.dot(direction)) > 0) { // reverse speed[0] = S*(direction[0]/L); speed[2] = S*(direction[2]/L); } else { speed[0] = -S*(direction[0]/L); speed[2] = -S*(direction[2]/L); } } if(right) { var S = Math.sqrt(speed[0]*speed[0]+speed[2]*speed[2]) * 0.99; direction = (new SFRotation(0,1,0,-0.1)).multVec(direction); var L = Math.sqrt(direction[0]*direction[0]+direction[2]*direction[2]); if(Math.atan(speed.dot(direction)) > 0) { // reverse speed[0] = S*(direction[0]/L); speed[2] = S*(direction[2]/L); } else { speed[0] = -S*(direction[0]/L); speed[2] = -S*(direction[2]/L); } } if(upk) { direction = (new SFRotation(1,0,0,-0.2)).multVec(direction); } if(down) { direction = (new SFRotation(1,0,0,0.2)).multVec(direction); } rotA = new SFRotation(defDirection, direction); up = rotA.multVec(yAxis); rotB = new SFRotation( direction.cross(up), direction.cross(yAxis)); orientation = rotA.multiply(rotB); orientation_changed = orientation; } function getHeight(x,z) { if(x<0 || x>=31) return 0; if(z<0 || z>=199) return 0; var xfl = Math.floor(x); var zfl = Math.floor(z); var i = xfl + zfl*32; var hxz = height[i]; var hx1z = height[i+1]; var hxz1 = height[i+32]; var hx1z1= height[i+33]; var hz0 = (hxz+((hx1z-hxz)*(x-xfl))); var hz1 = (hxz1+((hx1z1-hxz1)*(x-xfl))); var h = hz0 + ((hz1-hz0)*(z-zfl)); return h; } " } ROUTE TIMER.time_changed TO SCRIPT.tick ROUTE SCRIPT.position_changed TO BOARDER.position ROUTE SCRIPT.orientation_changed TO BOARDER.orientation ] } ] } ROUTE MAIN_SCRIPT.setMainSwitch TO MAIN_SWITCH.set_whichChoice ROUTE GO_BUTTON_TOUCH.touchTime TO MAIN_SCRIPT.goButtonPressed ##