commit 12466b5d4e374702de0b3c551ee7b90fcf955670 Author: Ronja Date: Sun May 30 20:47:03 2021 +0200 initial commit diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..d9dc9db --- /dev/null +++ b/.gitignore @@ -0,0 +1,10 @@ +*/.DS_Store +.DS_Store +.DS_Store? +*/thumbs.db +thumbs.db +.thumbs.db? +.luxe/ +_luxe.data/ +_luxe.deploy/ +log.txt \ No newline at end of file diff --git a/.luxeignore b/.luxeignore new file mode 100644 index 0000000..a3de5ef --- /dev/null +++ b/.luxeignore @@ -0,0 +1 @@ +preview.png \ No newline at end of file diff --git a/.vscode/tasks.json b/.vscode/tasks.json new file mode 100644 index 0000000..4f2c46b --- /dev/null +++ b/.vscode/tasks.json @@ -0,0 +1,17 @@ +{ + "tasks": [ + { + "type": "luxe", + "script": "run", + "problemMatcher": [ + "$luxe-absolute", + "$luxe-relative" + ], + "group": { + "kind": "build", + "isDefault": true + }, + "label": "luxe: run - Build & Run the project" + } + ] +} \ No newline at end of file diff --git a/assets/down_the_mountain/snowplayers.atlas b/assets/down_the_mountain/snowplayers.atlas new file mode 100644 index 0000000..0f3532c --- /dev/null +++ b/assets/down_the_mountain/snowplayers.atlas @@ -0,0 +1,62 @@ + +skeleton.png +size: 1203,242 +format: RGBA8888 +filter: Linear,Linear +repeat: none +Untitled-1 + rotate: false + xy: 1071, 122 + size: 130, 118 + orig: 130, 118 + offset: 0, 0 + index: -1 +Untitled-2 + rotate: true + xy: 743, 29 + size: 133, 157 + orig: 133, 157 + offset: 0, 0 + index: -1 +Untitled-3 + rotate: false + xy: 743, 164 + size: 326, 76 + orig: 327, 76 + offset: 1, 0 + index: -1 +Untitled-4 + rotate: true + xy: 2, 6 + size: 234, 268 + orig: 236, 278 + offset: 2, 0 + index: -1 +Untitled-5 + rotate: false + xy: 542, 6 + size: 199, 234 + orig: 199, 234 + offset: 0, 0 + index: -1 +eye1 + rotate: false + xy: 1061, 2 + size: 130, 118 + orig: 130, 118 + offset: 0, 0 + index: -1 +eye2 + rotate: true + xy: 902, 29 + size: 133, 157 + orig: 133, 157 + offset: 0, 0 + index: -1 +eye3 + rotate: true + xy: 272, 6 + size: 234, 268 + orig: 236, 278 + offset: 2, 0 + index: -1 diff --git a/assets/down_the_mountain/snowplayers.image.lx b/assets/down_the_mountain/snowplayers.image.lx new file mode 100644 index 0000000..1cb7653 --- /dev/null +++ b/assets/down_the_mountain/snowplayers.image.lx @@ -0,0 +1,4 @@ +image = { + source = "assets/down_the_mountain/snowplayers.png" + generate_mipmaps_at_load = false +} \ No newline at end of file diff --git a/assets/down_the_mountain/snowplayers.json b/assets/down_the_mountain/snowplayers.json new file mode 100644 index 0000000..f8d9e16 --- /dev/null +++ b/assets/down_the_mountain/snowplayers.json @@ -0,0 +1,4974 @@ +{ + "skeleton": { + "hash": "RmkpQz6sxuxnUzwptK7HakO/CeA", + "spine": "3.8.86", + "x": -156.5, + "y": -9.94, + "width": 380, + "height": 283.24 + }, + "bones": [ + { + "name": "root" + }, + { + "name": "ekorn", + "parent": "root", + "length": 81.7, + "rotation": 73.74, + "x": -44.72, + "y": 35.68 + }, + { + "name": "bone2", + "parent": "ekorn", + "length": 68.64, + "rotation": 25.16, + "x": 80.92, + "y": -0.23, + "transform": "noScale" + }, + { + "name": "bone3", + "parent": "bone2", + "length": 31.53, + "rotation": 49.88, + "x": 62.87, + "y": 26.54 + }, + { + "name": "bone4", + "parent": "bone2", + "length": 34.13, + "rotation": 33.19, + "x": 79.12, + "y": -28.1 + }, + { + "name": "bone5", + "parent": "ekorn", + "length": 58.29, + "rotation": 75.02, + "x": 113.11, + "y": 84.9 + }, + { + "name": "pinnsvin", + "parent": "root", + "length": 45.52, + "rotation": 68.96, + "x": 23.09, + "y": 38.13 + }, + { + "name": "bone7", + "parent": "pinnsvin", + "length": 49.88, + "rotation": -10.57, + "x": 45.52, + "transform": "noScale" + }, + { + "name": "bone8", + "parent": "pinnsvin", + "length": 46.68, + "rotation": -101.82, + "x": 34.49, + "y": -19.12 + }, + { + "name": "bunny", + "parent": "root", + "length": 73.1, + "rotation": 64.87, + "x": 106.42, + "y": 38.95 + }, + { + "name": "bone10", + "parent": "bunny", + "length": 67.83, + "rotation": 23.75, + "x": 72.36, + "y": -0.35, + "transform": "noScale" + }, + { + "name": "bone11", + "parent": "bone10", + "length": 64.74, + "rotation": 48.43, + "x": 73.6, + "y": 32.01 + }, + { + "name": "bone12", + "parent": "bone11", + "length": 68.75, + "rotation": 22.8, + "x": 62.44, + "y": 0.08 + }, + { + "name": "bone13", + "parent": "bone10", + "length": 63.42, + "rotation": 39.58, + "x": 88.99, + "y": 3.78 + }, + { + "name": "bone14", + "parent": "bone13", + "length": 59.21, + "rotation": 23.82, + "x": 63.28, + "y": 1.15 + }, + { + "name": "bone15", + "parent": "root", + "length": 60.68, + "rotation": -43.36, + "x": 148.91, + "y": 92.05 + }, + { + "name": "ekorn2", + "parent": "root", + "length": 31.86, + "rotation": 90, + "x": -79.85, + "y": 57.74 + } + ], + "slots": [ + { + "name": "snowplayers_tex", + "bone": "root" + }, + { + "name": "Untitled-5", + "bone": "root", + "attachment": "Untitled-5" + }, + { + "name": "Untitled-4", + "bone": "root", + "attachment": "Untitled-4" + }, + { + "name": "eye2", + "bone": "root" + }, + { + "name": "Untitled-1", + "bone": "root", + "attachment": "Untitled-1" + }, + { + "name": "eye", + "bone": "root" + }, + { + "name": "Untitled-2", + "bone": "root", + "attachment": "Untitled-2" + }, + { + "name": "eye3", + "bone": "root" + }, + { + "name": "Untitled-3", + "bone": "root", + "attachment": "Untitled-3" + } + ], + "skins": [ + { + "name": "default", + "attachments": { + "Untitled-1": { + "Untitled-1": { + "type": "mesh", + "uvs": [ + 0.63296, + 0.0812, + 0.75606, + 0.26212, + 0.8229, + 0.31021, + 0.85435, + 0.38916, + 1, + 0.51302, + 1, + 0.54562, + 0.98836, + 0.63235, + 0.95832, + 0.75041, + 0.86364, + 0.86884, + 0.78507, + 0.96712, + 0.71655, + 1, + 0.63498, + 1, + 0.56249, + 0.9493, + 0.51616, + 0.95628, + 0.43822, + 0.97294, + 0.35541, + 0.91834, + 0.31509, + 0.87216, + 0.28943, + 0.73076, + 0.25775, + 0.55614, + 0.21042, + 0.54577, + 0.09678, + 0.48809, + 0, + 0.38199, + 0, + 0.27176, + 0.07569, + 0.26374, + 0.15895, + 0.28755, + 0.32625, + 0.39887, + 0.5344, + 0.23712, + 0.46163, + 0.07799, + 0.46081, + 0.00691, + 0.50595, + 0.0084, + 0.66628, + 0.27474, + 0.29394, + 0.46504, + 0.39374, + 0.69762, + 0.50122, + 0.69762, + 0.62789, + 0.63419, + 0.70466, + 0.54961, + 0.79294, + 0.53693, + 0.84668, + 0.48195 + ], + "triangles": [ + 27, + 28, + 29, + 0, + 27, + 29, + 26, + 27, + 0, + 30, + 26, + 0, + 1, + 30, + 0, + 21, + 22, + 23, + 31, + 24, + 25, + 24, + 21, + 23, + 20, + 24, + 31, + 20, + 21, + 24, + 19, + 20, + 31, + 18, + 19, + 31, + 1, + 2, + 30, + 37, + 3, + 4, + 31, + 32, + 18, + 37, + 4, + 5, + 36, + 35, + 3, + 6, + 37, + 5, + 35, + 34, + 26, + 25, + 26, + 34, + 25, + 34, + 33, + 33, + 32, + 31, + 6, + 36, + 37, + 7, + 36, + 6, + 8, + 36, + 7, + 16, + 17, + 32, + 15, + 16, + 32, + 12, + 33, + 34, + 34, + 35, + 36, + 8, + 34, + 36, + 13, + 33, + 12, + 9, + 34, + 8, + 10, + 12, + 34, + 33, + 15, + 32, + 13, + 15, + 33, + 13, + 14, + 15, + 10, + 11, + 12, + 34, + 9, + 10, + 17, + 18, + 32, + 33, + 31, + 25, + 37, + 36, + 3, + 3, + 35, + 30, + 3, + 30, + 2, + 35, + 26, + 30 + ], + "vertices": [ + 2, + 3, + -10.81, + -61.41, + 0, + 4, + 23.59, + -7.3, + 1, + 1, + 2, + 79.29, + -33.81, + 1, + 1, + 2, + 72.34, + -41.52, + 1, + 1, + 2, + 62.51, + -44.11, + 1, + 1, + 2, + 45.14, + -60.56, + 1, + 1, + 2, + 41.34, + -59.96, + 1, + 1, + 2, + 31.46, + -56.89, + 1, + 1, + 2, + 18.3, + -50.87, + 1, + 1, + 2, + 6.4, + -36.55, + 1, + 1, + 2, + -3.48, + -24.66, + 1, + 1, + 2, + -5.93, + -15.26, + 1, + 3, + 2, + -4.29, + -4.79, + 0.99701, + 3, + -67.23, + 31.17, + 1.5E-4, + 4, + -57.04, + 65.17, + 0.00284, + 2, + 2, + 3.08, + 3.6, + 0.99762, + 3, + -56.07, + 30.94, + 0.00238, + 1, + 2, + 3.2, + 9.68, + 1, + 1, + 2, + 2.82, + 19.99, + 1, + 1, + 2, + 10.85, + 29.63, + 1, + 1, + 2, + 17.05, + 33.96, + 1, + 1, + 2, + 34.05, + 34.68, + 1, + 1, + 2, + 55.04, + 35.56, + 1, + 2, + 2, + 57.2, + 41.45, + 0.00188, + 3, + 7.75, + 13.94, + 0.99812, + 1, + 3, + 23.91, + 15.78, + 1, + 1, + 3, + 41.16, + 11.59, + 1, + 1, + 3, + 47.9, + 0.47, + 1, + 1, + 3, + 39.98, + -5.44, + 1, + 1, + 3, + 29.26, + -8.65, + 1, + 1, + 2, + 72, + 23.89, + 1, + 1, + 2, + 86.67, + -5.8, + 1, + 2, + 2, + 106.68, + 0.64, + 6.7E-4, + 4, + 38.8, + 8.97, + 0.99933, + 2, + 2, + 114.99, + -0.55, + 0, + 4, + 45.1, + 3.43, + 1, + 1, + 4, + 41.03, + -0.81, + 1, + 3, + 2, + 79.63, + -22.05, + 0.09336, + 3, + -26.36, + -44.12, + 0, + 4, + 3.74, + 4.79, + 0.90664, + 1, + 3, + 3.4, + 0.17, + 1, + 1, + 2, + 35.81, + 20.68, + 1, + 1, + 2, + 33.65, + 6.87, + 1, + 1, + 2, + 38.5, + -10.56, + 1, + 1, + 2, + 46.81, + -21.96, + 1, + 1, + 2, + 46.52, + -33.53, + 1, + 1, + 2, + 51.84, + -41.44, + 1 + ], + "hull": 30 + } + }, + "Untitled-2": { + "Untitled-2": { + "type": "mesh", + "uvs": [ + 0.57172, + 0, + 0.67913, + 0.00855, + 0.78451, + 0.09597, + 0.7945, + 0.24163, + 0.85223, + 0.34481, + 1, + 0.3511, + 1, + 0.38562, + 0.81876, + 0.55875, + 0.83459, + 0.6167, + 0.94767, + 0.80919, + 0.95961, + 0.91208, + 0.94799, + 0.95681, + 0.8639, + 0.956, + 0.74612, + 0.95486, + 0.63931, + 1, + 0.59065, + 1, + 0.4307, + 0.92322, + 0.41776, + 0.90719, + 0.23717, + 0.92511, + 0.18606, + 0.89138, + 0.07312, + 0.79342, + 0, + 0.66908, + 0, + 0.60229, + 0.03103, + 0.39334, + 0.09018, + 0.23514, + 0.27368, + 0.06373, + 0.50938, + 0, + 0.85252, + 0.82225, + 0.79999, + 0.74279, + 0.70619, + 0.66968, + 0.58613, + 0.61883, + 0.44731, + 0.55526, + 0.2147, + 0.47263, + 0.56737, + 0.85403, + 0.50734, + 0.75232, + 0.40604, + 0.66651, + 0.21845, + 0.59023 + ], + "triangles": [ + 4, + 5, + 6, + 32, + 24, + 25, + 23, + 24, + 32, + 3, + 31, + 25, + 32, + 25, + 31, + 3, + 4, + 31, + 7, + 4, + 6, + 36, + 32, + 31, + 25, + 26, + 3, + 3, + 26, + 0, + 2, + 0, + 1, + 2, + 3, + 0, + 22, + 23, + 32, + 22, + 32, + 36, + 4, + 30, + 31, + 7, + 30, + 4, + 29, + 30, + 7, + 35, + 36, + 31, + 35, + 31, + 30, + 21, + 22, + 36, + 8, + 29, + 7, + 28, + 29, + 8, + 34, + 35, + 30, + 20, + 21, + 36, + 28, + 8, + 9, + 27, + 28, + 9, + 29, + 33, + 34, + 29, + 34, + 30, + 33, + 29, + 28, + 13, + 33, + 28, + 35, + 19, + 20, + 35, + 20, + 36, + 17, + 19, + 35, + 34, + 17, + 35, + 33, + 17, + 34, + 27, + 9, + 10, + 16, + 17, + 33, + 18, + 19, + 17, + 27, + 13, + 28, + 12, + 13, + 27, + 10, + 12, + 27, + 11, + 12, + 10, + 14, + 15, + 33, + 16, + 33, + 15, + 13, + 14, + 33 + ], + "vertices": [ + 1, + 7, + 82.4, + 20.05, + 1, + 1, + 7, + 88.74, + 7.18, + 1, + 2, + 7, + 84.4, + -11.95, + 0.99541, + 8, + -10.87, + 91.51, + 0.00459, + 2, + 7, + 65.62, + -25.07, + 0.90763, + 8, + 2.66, + 73.02, + 0.09237, + 2, + 7, + 55.85, + -40.1, + 0.70293, + 8, + 17.89, + 63.58, + 0.29707, + 2, + 7, + 65.3, + -57.35, + 0.63994, + 8, + 34.94, + 73.42, + 0.36006, + 2, + 7, + 60.69, + -60.19, + 0.63859, + 8, + 37.88, + 68.86, + 0.36141, + 2, + 7, + 24.91, + -53.91, + 0.33722, + 8, + 32.38, + 32.95, + 0.66278, + 2, + 7, + 18.26, + -60.47, + 0.1482, + 8, + 39.08, + 26.45, + 0.8518, + 2, + 7, + 0.41, + -89.12, + 3.0E-5, + 8, + 68.11, + 9.22, + 0.99997, + 1, + 8, + 78.21, + -3.48, + 1, + 1, + 8, + 80.72, + -10.22, + 1, + 2, + 6, + 4.06, + -85.55, + 0.00178, + 8, + 71.26, + -16.18, + 0.99822, + 2, + 6, + -1.4, + -70.87, + 0.03027, + 8, + 58, + -24.53, + 0.96973, + 2, + 6, + -13.11, + -60.15, + 0.09945, + 8, + 49.91, + -38.19, + 0.90055, + 2, + 6, + -15.44, + -54.12, + 0.12771, + 8, + 44.48, + -41.7, + 0.87229, + 2, + 6, + -11.82, + -29.93, + 0.43382, + 8, + 20.07, + -43.12, + 0.56618, + 2, + 6, + -10.09, + -27.42, + 0.51639, + 8, + 17.25, + -41.94, + 0.48361, + 2, + 6, + -21.34, + -6.01, + 0.96084, + 8, + -1.4, + -57.33, + 0.03916, + 2, + 6, + -18.84, + 2.23, + 0.99145, + 8, + -9.98, + -56.57, + 0.00855, + 2, + 6, + -9.87, + 21.77, + 0.99999, + 7, + -58.45, + 11.24, + 1.0E-5, + 2, + 6, + 4.85, + 37.86, + 0.96828, + 7, + -46.92, + 29.75, + 0.03172, + 2, + 6, + 14.64, + 41.62, + 0.91517, + 7, + -37.99, + 35.25, + 0.08483, + 2, + 6, + 46.74, + 49.54, + 0.46076, + 7, + -7.89, + 48.93, + 0.53924, + 2, + 6, + 72.75, + 51.12, + 0.14476, + 7, + 17.39, + 55.25, + 0.85524, + 2, + 6, + 106.63, + 38, + 0.003, + 7, + 53.1, + 48.56, + 0.997, + 1, + 7, + 78.05, + 27.11, + 1, + 1, + 8, + 58.59, + 0.64, + 1, + 2, + 7, + -1.01, + -66.93, + 0.00922, + 8, + 45.96, + 7.33, + 0.99078, + 2, + 7, + 2.23, + -50.29, + 0.0544, + 8, + 29.25, + 10.2, + 0.9456, + 2, + 7, + 0.66, + -32.5, + 0.09202, + 8, + 11.51, + 8.24, + 0.90798, + 3, + 6, + 42.89, + -11.26, + 0.24839, + 7, + -0.52, + -11.55, + 0.29949, + 8, + -9.42, + 6.61, + 0.45212, + 2, + 6, + 43.89, + 22.28, + 0.56123, + 7, + -5.68, + 21.6, + 0.43877, + 2, + 6, + 4.84, + -43, + 0.16185, + 8, + 29.44, + -24.13, + 0.83815, + 2, + 6, + 16.88, + -29.81, + 0.19572, + 8, + 14.07, + -15.05, + 0.80428, + 2, + 6, + 24.62, + -12.4, + 0.51876, + 8, + -4.55, + -11.04, + 0.48124, + 2, + 6, + 26.84, + 15.18, + 0.94392, + 7, + -21.15, + 11.5, + 0.05608 + ], + "hull": 27 + } + }, + "Untitled-3": { + "Untitled-3": { + "x": 60, + "y": 28.06, + "width": 327, + "height": 76 + } + }, + "Untitled-4": { + "Untitled-4": { + "type": "mesh", + "uvs": [ + 0.37457, + 0.04883, + 0.47703, + 0.08695, + 0.54302, + 0.13015, + 0.65295, + 0.26502, + 0.66854, + 0.28894, + 0.71357, + 0.3081, + 0.7995, + 0.34468, + 0.84907, + 0.38434, + 0.8897, + 0.49925, + 0.86264, + 0.56446, + 0.8164, + 0.63902, + 0.77421, + 0.65791, + 0.81165, + 0.68733, + 0.88252, + 0.69396, + 0.93382, + 0.72015, + 0.9409, + 0.79006, + 0.96092, + 0.80336, + 0.99677, + 0.83772, + 1, + 0.84439, + 1, + 0.85448, + 0.9388, + 0.89325, + 0.69777, + 0.90543, + 0.68357, + 0.93358, + 0.6529, + 0.98596, + 0.59964, + 1, + 0.59271, + 1, + 0.49657, + 0.98963, + 0.42722, + 0.96013, + 0.39094, + 0.8977, + 0.3835, + 0.81875, + 0.41695, + 0.74251, + 0.48882, + 0.66044, + 0.49993, + 0.63242, + 0.47564, + 0.59948, + 0.41909, + 0.52275, + 0.44264, + 0.44212, + 0.15664, + 0.33588, + 0.07216, + 0.27767, + 0.01085, + 0.19968, + 0.02432, + 0.13055, + 0.0743, + 0.10365, + 0.20335, + 0.1198, + 0.20315, + 0.05508, + 0.27343, + 0.03775, + 0.54384, + 0.34319, + 0.44658, + 0.24985, + 0.31337, + 0.16907, + 0.69819, + 0.65551, + 0.60516, + 0.64653, + 0.69396, + 0.62679, + 0.59458, + 0.61422, + 0.65379, + 0.35037, + 0.57344, + 0.38088, + 0.49309, + 0.45088, + 0.48041, + 0.42037, + 0.50789, + 0.39165, + 0.58401, + 0.3396, + 0.63687, + 0.32165 + ], + "triangles": [ + 41, + 42, + 43, + 46, + 43, + 0, + 46, + 0, + 1, + 41, + 43, + 46, + 45, + 46, + 1, + 45, + 1, + 2, + 45, + 2, + 3, + 40, + 38, + 39, + 41, + 38, + 40, + 41, + 37, + 38, + 45, + 3, + 44, + 57, + 3, + 4, + 57, + 4, + 5, + 36, + 37, + 41, + 36, + 41, + 46, + 57, + 56, + 3, + 56, + 44, + 3, + 51, + 57, + 5, + 51, + 5, + 6, + 52, + 44, + 56, + 51, + 52, + 56, + 51, + 56, + 57, + 55, + 45, + 44, + 55, + 44, + 52, + 54, + 45, + 55, + 45, + 36, + 46, + 35, + 45, + 54, + 35, + 36, + 45, + 53, + 54, + 55, + 35, + 54, + 53, + 53, + 55, + 52, + 34, + 35, + 53, + 8, + 51, + 7, + 33, + 34, + 53, + 49, + 50, + 52, + 53, + 52, + 50, + 33, + 53, + 50, + 51, + 6, + 7, + 52, + 51, + 49, + 8, + 9, + 51, + 9, + 49, + 51, + 32, + 33, + 50, + 10, + 49, + 9, + 48, + 50, + 49, + 32, + 50, + 48, + 11, + 47, + 49, + 48, + 49, + 47, + 10, + 11, + 49, + 17, + 18, + 19, + 13, + 14, + 15, + 20, + 15, + 16, + 20, + 16, + 17, + 20, + 17, + 19, + 21, + 28, + 29, + 21, + 48, + 47, + 12, + 21, + 47, + 12, + 47, + 11, + 12, + 15, + 21, + 13, + 15, + 12, + 20, + 21, + 15, + 48, + 30, + 31, + 29, + 30, + 21, + 27, + 28, + 21, + 31, + 32, + 48, + 30, + 48, + 21, + 21, + 26, + 27, + 21, + 22, + 26, + 22, + 25, + 26, + 22, + 24, + 25, + 23, + 24, + 22 + ], + "vertices": [ + 2, + 13, + 97.49, + -0.4, + 0.02786, + 14, + 30.67, + -15.23, + 0.97214, + 2, + 13, + 74.21, + -12.85, + 0.80216, + 14, + 4.34, + -17.22, + 0.19784, + 1, + 13, + 55.14, + -17.66, + 1, + 2, + 10, + 105.88, + -1.54, + 6.6E-4, + 13, + 9.63, + -14.86, + 0.99934, + 2, + 10, + 99.32, + -5.38, + 0.05138, + 13, + 2.13, + -13.64, + 0.94862, + 3, + 15, + -67.79, + 81.91, + 0.00147, + 10, + 94.25, + -16.13, + 0.34063, + 13, + -8.63, + -18.7, + 0.6579, + 3, + 15, + -46.06, + 88.44, + 0.01783, + 10, + 84.58, + -36.65, + 0.76035, + 13, + -29.16, + -28.35, + 0.22182, + 3, + 15, + -29.98, + 88.46, + 0.04089, + 10, + 73.84, + -48.61, + 0.85976, + 13, + -45.06, + -30.72, + 0.09934, + 3, + 15, + -1.08, + 71.82, + 0.14108, + 10, + 42.13, + -58.96, + 0.85413, + 13, + -76.09, + -18.5, + 0.00479, + 2, + 15, + 6.72, + 54.25, + 0.22962, + 10, + 23.85, + -53.02, + 0.77038, + 2, + 15, + 13.02, + 31.69, + 0.43011, + 10, + 2.87, + -42.61, + 0.56989, + 2, + 15, + 9.39, + 21.04, + 0.65213, + 10, + -2.62, + -32.78, + 0.34787, + 2, + 15, + 21.43, + 21.15, + 0.94194, + 10, + -10.58, + -41.81, + 0.05806, + 2, + 15, + 34.85, + 31.3, + 0.99933, + 10, + -12.03, + -58.57, + 6.7E-4, + 1, + 15, + 48.66, + 34.32, + 1, + 1, + 15, + 63.22, + 21.34, + 1, + 1, + 15, + 69.19, + 21.89, + 1, + 1, + 15, + 81.9, + 20.76, + 1, + 1, + 15, + 83.73, + 19.93, + 1, + 1, + 15, + 85.65, + 17.89, + 1, + 1, + 15, + 82.55, + 0.14, + 1, + 2, + 9, + 13.21, + -44.3, + 0.55419, + 15, + 43.52, + -41.38, + 0.44581, + 2, + 9, + 4.7, + -44.59, + 0.74254, + 15, + 46.46, + -49.37, + 0.25746, + 2, + 9, + -11.56, + -44.22, + 0.87789, + 15, + 51.2, + -64.93, + 0.12211, + 2, + 9, + -20.43, + -34.5, + 0.92635, + 15, + 44.74, + -76.39, + 0.07365, + 2, + 9, + -21.13, + -33.02, + 0.931, + 15, + 43.55, + -77.52, + 0.069, + 2, + 9, + -28.15, + -11.25, + 0.99075, + 15, + 25.07, + -91, + 0.00925, + 1, + 9, + -27.68, + 7.05, + 1, + 1, + 9, + -15.61, + 22.17, + 1, + 1, + 9, + 3.52, + 33.08, + 1, + 2, + 9, + 26.06, + 34.94, + 0.99993, + 11, + -53.37, + 88.69, + 7.0E-5, + 3, + 9, + 53.92, + 29.27, + 0.95829, + 10, + -4.95, + 34.53, + 0.01679, + 11, + -50.23, + 60.43, + 0.02492, + 3, + 9, + 62.09, + 30.21, + 0.81495, + 10, + 2.9, + 32.1, + 0.11283, + 11, + -46.84, + 52.95, + 0.07221, + 3, + 9, + 67.94, + 39.28, + 0.54566, + 10, + 11.92, + 38.05, + 0.27217, + 11, + -36.41, + 50.15, + 0.18217, + 3, + 9, + 81.58, + 60.43, + 0.23385, + 10, + 32.92, + 51.91, + 0.32091, + 11, + -12.11, + 43.63, + 0.44524, + 4, + 9, + 104.24, + 64.91, + 0.05674, + 10, + 55.47, + 46.89, + 0.13674, + 11, + -0.9, + 23.44, + 0.80611, + 12, + -49.34, + 46.07, + 4.1E-4, + 2, + 11, + 68.63, + 47.82, + 0.1234, + 12, + 24.2, + 41.61, + 0.8766, + 2, + 11, + 94.25, + 49.56, + 0.00256, + 12, + 48.5, + 33.28, + 0.99744, + 1, + 12, + 69.55, + 17.92, + 1, + 1, + 12, + 73.19, + -1.22, + 1, + 1, + 12, + 64.69, + -12.3, + 1, + 3, + 14, + 57.1, + 21.15, + 0.38516, + 11, + 101.49, + -3.66, + 0.03835, + 12, + 34.55, + -18.58, + 0.57649, + 3, + 14, + 65.58, + 5.28, + 0.96262, + 11, + 113.79, + -16.8, + 0.00326, + 12, + 40.8, + -35.46, + 0.03413, + 1, + 14, + 53.2, + -6.75, + 1, + 3, + 10, + 83.54, + 23.68, + 0.043, + 13, + 8.48, + 18.81, + 0.37795, + 11, + 0.36, + -12.96, + 0.57905, + 4, + 13, + 43.06, + 20.8, + 0.28414, + 14, + -10.55, + 26.15, + 0.1472, + 11, + 34.84, + -16.31, + 0.55588, + 12, + -31.79, + -4.43, + 0.01278, + 3, + 14, + 27.74, + 21.07, + 0.36775, + 11, + 73.15, + -11.33, + 0.55211, + 12, + 5.46, + -14.67, + 0.08014, + 2, + 15, + -4.11, + 9.2, + 0.55749, + 10, + -2.39, + -14.83, + 0.44251, + 2, + 9, + 69.08, + 6.06, + 0.99507, + 11, + -67.69, + 38.9, + 0.00493, + 2, + 15, + -10.32, + 14.32, + 0.31719, + 10, + 5.57, + -13.64, + 0.68281, + 3, + 9, + 76.15, + 12.13, + 0.56899, + 10, + 8.5, + 9.89, + 0.41166, + 11, + -59.75, + 34.02, + 0.01935, + 4, + 15, + -69.98, + 63.68, + 1.3E-4, + 10, + 82.17, + -2.31, + 0.36298, + 13, + -9.14, + -0.35, + 0.63475, + 11, + -19.99, + -29.19, + 0.00214, + 4, + 9, + 132.76, + 44.2, + 9.4E-4, + 10, + 73.23, + 16.44, + 0.35859, + 13, + -4.08, + 19.8, + 0.2112, + 11, + -11.89, + -10.06, + 0.42926, + 3, + 9, + 107.09, + 53.1, + 0.06887, + 10, + 53.32, + 34.93, + 0.27237, + 11, + -11.27, + 17.11, + 0.65876, + 3, + 9, + 113.5, + 59.41, + 0.03193, + 10, + 61.73, + 38.13, + 0.12268, + 11, + -3.3, + 12.94, + 0.84539, + 3, + 9, + 123.48, + 56.93, + 0.00515, + 10, + 69.86, + 31.84, + 0.04563, + 11, + -2.61, + 2.68, + 0.94922, + 3, + 10, + 84.76, + 14.23, + 0.09995, + 13, + 3.4, + 10.74, + 0.66489, + 11, + -5.9, + -20.16, + 0.23515, + 2, + 10, + 90.05, + 1.87, + 0.00744, + 13, + -0.39, + -2.15, + 0.99256 + ], + "hull": 44 + } + }, + "Untitled-5": { + "Untitled-5": { + "type": "mesh", + "uvs": [ + 0.61862, + 0.08288, + 0.6555, + 0.13452, + 0.69123, + 0.18147, + 0.75484, + 0.23738, + 0.82662, + 0.35415, + 0.82707, + 0.38805, + 0.81957, + 0.5564, + 0.82416, + 0.57099, + 0.98903, + 0.75315, + 1, + 0.79498, + 0.92673, + 0.88352, + 0.75011, + 0.85596, + 0.71856, + 0.92791, + 0.76961, + 0.96968, + 0.74892, + 0.9959, + 0.64522, + 0.9958, + 0.44437, + 0.89603, + 0.40848, + 0.87103, + 0.27161, + 0.81613, + 0.20507, + 0.76336, + 0.12552, + 0.62883, + 0.16939, + 0.57892, + 0.22879, + 0.49321, + 0.06728, + 0.4802, + 0, + 0.38734, + 0, + 0.23267, + 0.05675, + 0.15137, + 0.11543, + 0.10052, + 0.42486, + 0, + 0.47828, + 0, + 0.53731, + 0.01099, + 0.50604, + 0.56079, + 0.30544, + 0.52454, + 0.25529, + 0.75698, + 0.44837, + 0.79537, + 0.29792, + 0.43284, + 0.24526, + 0.35821, + 0.27535, + 0.28784, + 0.36311, + 0.27504, + 0.46342, + 0.26651, + 0.50604, + 0.32835, + 0.5261, + 0.49469, + 0.60384, + 0.49042, + 0.66903, + 0.52881, + 0.70163, + 0.59278, + 0.81196, + 0.72286 + ], + "triangles": [ + 18, + 33, + 34, + 34, + 31, + 44, + 33, + 32, + 31, + 31, + 32, + 41, + 35, + 41, + 32, + 34, + 33, + 31, + 33, + 21, + 32, + 41, + 35, + 40, + 40, + 35, + 38, + 38, + 39, + 40, + 22, + 35, + 32, + 35, + 22, + 36, + 22, + 23, + 36, + 23, + 24, + 36, + 35, + 36, + 38, + 38, + 36, + 37, + 24, + 25, + 36, + 36, + 25, + 37, + 25, + 26, + 37, + 26, + 27, + 37, + 37, + 27, + 38, + 39, + 38, + 28, + 38, + 27, + 28, + 44, + 6, + 7, + 6, + 43, + 5, + 41, + 40, + 42, + 42, + 4, + 5, + 4, + 40, + 3, + 3, + 40, + 2, + 40, + 4, + 42, + 40, + 39, + 2, + 39, + 1, + 2, + 39, + 0, + 1, + 0, + 29, + 30, + 0, + 39, + 29, + 39, + 28, + 29, + 13, + 14, + 12, + 14, + 15, + 12, + 15, + 16, + 12, + 11, + 12, + 34, + 12, + 16, + 34, + 16, + 17, + 34, + 11, + 45, + 10, + 10, + 8, + 9, + 10, + 45, + 8, + 34, + 44, + 11, + 31, + 43, + 44, + 43, + 31, + 42, + 31, + 41, + 42, + 17, + 18, + 34, + 11, + 44, + 45, + 19, + 33, + 18, + 19, + 20, + 33, + 20, + 21, + 33, + 32, + 21, + 22, + 45, + 7, + 8, + 45, + 44, + 7, + 44, + 43, + 6, + 43, + 42, + 5 + ], + "vertices": [ + 2, + 2, + 97.73, + -3.62, + 0.83771, + 5, + -30.32, + -67.95, + 0.16229, + 2, + 2, + 84.65, + -9, + 0.94872, + 5, + -42.86, + -61.42, + 0.05128, + 2, + 2, + 72.7, + -14.32, + 0.99956, + 5, + -54.64, + -55.71, + 4.4E-4, + 1, + 2, + 57.81, + -24.8, + 1, + 2, + 1, + 121.56, + -19.46, + 0.00279, + 2, + 28.61, + -34.69, + 0.99721, + 2, + 1, + 113.97, + -21.77, + 0.00521, + 2, + 20.76, + -33.55, + 0.99479, + 2, + 1, + 75.73, + -31.37, + 0.20637, + 2, + -17.93, + -25.98, + 0.79363, + 2, + 1, + 72.71, + -33.2, + 0.29924, + 2, + -21.44, + -26.35, + 0.70076, + 2, + 1, + 40.98, + -76.63, + 0.73395, + 2, + -68.63, + -52.17, + 0.26605, + 2, + 1, + 32.19, + -81.47, + 0.74465, + 2, + -78.64, + -52.81, + 0.25535, + 2, + 1, + 8.22, + -73.27, + 0.77791, + 2, + -96.86, + -35.2, + 0.22209, + 2, + 1, + 4.57, + -37.72, + 0.91709, + 2, + -85.04, + -1.48, + 0.08291, + 2, + 1, + -13.35, + -36.41, + 0.99052, + 2, + -100.71, + 7.33, + 0.00948, + 2, + 1, + -19.89, + -48.9, + 0.99979, + 2, + -111.94, + -1.19, + 2.1E-4, + 1, + 1, + -26.93, + -46.67, + 1, + 1, + 1, + -32.69, + -26.85, + 1, + 2, + 1, + -21.47, + 18.06, + 0.98557, + 5, + -99.35, + 112.73, + 0.01443, + 2, + 1, + -17.85, + 26.56, + 0.96865, + 5, + -90.21, + 111.43, + 0.03135, + 2, + 1, + -13.15, + 56.3, + 0.88795, + 5, + -60.26, + 114.57, + 0.11205, + 2, + 1, + -5, + 72.47, + 0.83815, + 5, + -42.54, + 110.88, + 0.16185, + 2, + 1, + 20.79, + 96.48, + 0.73405, + 5, + -12.68, + 92.17, + 0.26595, + 3, + 1, + 34.44, + 91.37, + 0.68425, + 2, + -3.12, + 102.67, + 0.0013, + 5, + -14.08, + 77.66, + 0.31445, + 3, + 1, + 57.01, + 85.64, + 0.38096, + 2, + 14.87, + 87.88, + 0.01447, + 5, + -13.79, + 54.38, + 0.60457, + 2, + 1, + 50.93, + 117.34, + 0.09453, + 5, + 15.27, + 68.45, + 0.90547, + 2, + 1, + 68.04, + 136.28, + 0.04381, + 5, + 37.99, + 56.81, + 0.95619, + 2, + 1, + 102.79, + 146.42, + 0.00317, + 5, + 56.76, + 25.87, + 0.99683, + 1, + 5, + 56.97, + 3.74, + 1, + 2, + 2, + 109.14, + 95.95, + 0.00415, + 5, + 53.15, + -12.49, + 0.99585, + 2, + 2, + 122.85, + 31.48, + 0.477, + 5, + 12.7, + -64.53, + 0.523, + 2, + 2, + 121.21, + 20.97, + 0.56132, + 5, + 3.61, + -70.04, + 0.43868, + 2, + 2, + 116.85, + 9.77, + 0.64699, + 5, + -7.76, + -73.94, + 0.35301, + 1, + 16, + 40.83, + -24.05, + 1, + 1, + 16, + 49.32, + 15.87, + 1, + 1, + 16, + -5.08, + 25.85, + 1, + 1, + 16, + -14.06, + -12.58, + 1, + 3, + 1, + 74.42, + 76.39, + 0.27695, + 2, + 26.7, + 72.11, + 0.05418, + 5, + -18.23, + 35.17, + 0.66888, + 3, + 1, + 88.25, + 91.34, + 0.09853, + 2, + 45.57, + 79.76, + 0.01068, + 5, + -0.21, + 25.67, + 0.89079, + 3, + 1, + 105.74, + 90.2, + 0.01901, + 2, + 60.91, + 71.29, + 0.00129, + 5, + 3.21, + 8.49, + 0.97971, + 3, + 1, + 113.5, + 74.27, + 0.01654, + 2, + 61.17, + 53.58, + 0.12546, + 5, + -10.17, + -3.13, + 0.85801, + 3, + 1, + 121.01, + 55.67, + 0.0166, + 2, + 60.05, + 33.55, + 0.50902, + 5, + -26.2, + -15.19, + 0.47438, + 3, + 1, + 109.49, + 43.47, + 0.05658, + 2, + 44.44, + 27.41, + 0.64902, + 5, + -40.96, + -7.22, + 0.29439, + 3, + 1, + 73.24, + 28.74, + 0.59787, + 2, + 5.37, + 29.48, + 0.26417, + 5, + -64.56, + 23.99, + 0.13797, + 3, + 1, + 78.53, + 14.17, + 0.5682, + 2, + 3.96, + 14.05, + 0.39527, + 5, + -77.26, + 15.12, + 0.03653, + 2, + 1, + 73.54, + -0.8, + 0.95713, + 2, + -6.92, + 2.62, + 0.04287, + 2, + 1, + 60.99, + -11.22, + 0.75253, + 2, + -22.71, + -1.47, + 0.24747, + 2, + 1, + 37.91, + -40.82, + 0.75398, + 2, + -56.18, + -18.45, + 0.24602 + ], + "hull": 31 + } + }, + "eye": { + "eye1": { + "type": "mesh", + "uvs": [ + 0.63296, + 0.0812, + 0.75606, + 0.26212, + 0.8229, + 0.31021, + 0.85435, + 0.38916, + 1, + 0.51302, + 1, + 0.54562, + 0.98836, + 0.63235, + 0.95832, + 0.75041, + 0.86364, + 0.86884, + 0.78507, + 0.96712, + 0.71655, + 1, + 0.63498, + 1, + 0.56249, + 0.9493, + 0.51616, + 0.95628, + 0.43822, + 0.97294, + 0.35541, + 0.91834, + 0.31509, + 0.87216, + 0.28943, + 0.73076, + 0.25775, + 0.55614, + 0.21042, + 0.54577, + 0.09678, + 0.48809, + 0, + 0.38199, + 0, + 0.27176, + 0.07569, + 0.26374, + 0.15895, + 0.28755, + 0.32625, + 0.39887, + 0.5344, + 0.23712, + 0.46163, + 0.07799, + 0.46081, + 0.00691, + 0.50595, + 0.0084, + 0.66628, + 0.27474, + 0.29394, + 0.46504, + 0.39374, + 0.69762, + 0.50122, + 0.69762, + 0.62789, + 0.63419, + 0.70466, + 0.54961, + 0.79294, + 0.53693, + 0.84668, + 0.48195 + ], + "triangles": [ + 27, + 28, + 29, + 0, + 27, + 29, + 26, + 27, + 0, + 30, + 26, + 0, + 1, + 30, + 0, + 21, + 22, + 23, + 31, + 24, + 25, + 24, + 21, + 23, + 20, + 24, + 31, + 20, + 21, + 24, + 19, + 20, + 31, + 18, + 19, + 31, + 1, + 2, + 30, + 37, + 3, + 4, + 31, + 32, + 18, + 37, + 4, + 5, + 36, + 35, + 3, + 6, + 37, + 5, + 35, + 34, + 26, + 25, + 26, + 34, + 25, + 34, + 33, + 33, + 32, + 31, + 6, + 36, + 37, + 7, + 36, + 6, + 8, + 36, + 7, + 16, + 17, + 32, + 15, + 16, + 32, + 12, + 33, + 34, + 34, + 35, + 36, + 8, + 34, + 36, + 13, + 33, + 12, + 9, + 34, + 8, + 10, + 12, + 34, + 33, + 15, + 32, + 13, + 15, + 33, + 13, + 14, + 15, + 10, + 11, + 12, + 34, + 9, + 10, + 17, + 18, + 32, + 33, + 31, + 25, + 37, + 36, + 3, + 3, + 35, + 30, + 3, + 30, + 2, + 35, + 26, + 30 + ], + "vertices": [ + 2, + 3, + -10.81, + -61.41, + 0, + 4, + 23.59, + -7.3, + 1, + 1, + 2, + 79.29, + -33.81, + 1, + 1, + 2, + 72.34, + -41.52, + 1, + 1, + 2, + 62.51, + -44.11, + 1, + 1, + 2, + 45.14, + -60.56, + 1, + 1, + 2, + 41.34, + -59.96, + 1, + 1, + 2, + 31.46, + -56.89, + 1, + 1, + 2, + 18.3, + -50.87, + 1, + 1, + 2, + 6.4, + -36.55, + 1, + 1, + 2, + -3.48, + -24.66, + 1, + 1, + 2, + -5.93, + -15.26, + 1, + 3, + 2, + -4.29, + -4.79, + 0.99701, + 3, + -67.23, + 31.17, + 1.5E-4, + 4, + -57.04, + 65.17, + 0.00284, + 2, + 2, + 3.08, + 3.6, + 0.99762, + 3, + -56.07, + 30.94, + 0.00238, + 1, + 2, + 3.2, + 9.68, + 1, + 1, + 2, + 2.82, + 19.99, + 1, + 1, + 2, + 10.85, + 29.63, + 1, + 1, + 2, + 17.05, + 33.96, + 1, + 1, + 2, + 34.05, + 34.68, + 1, + 1, + 2, + 55.04, + 35.56, + 1, + 2, + 2, + 57.2, + 41.45, + 0.00188, + 3, + 7.75, + 13.94, + 0.99812, + 1, + 3, + 23.91, + 15.78, + 1, + 1, + 3, + 41.16, + 11.59, + 1, + 1, + 3, + 47.9, + 0.47, + 1, + 1, + 3, + 39.98, + -5.44, + 1, + 1, + 3, + 29.26, + -8.65, + 1, + 1, + 2, + 72, + 23.89, + 1, + 1, + 2, + 86.67, + -5.8, + 1, + 2, + 2, + 106.68, + 0.64, + 6.7E-4, + 4, + 38.8, + 8.97, + 0.99933, + 2, + 2, + 114.99, + -0.55, + 0, + 4, + 45.1, + 3.43, + 1, + 1, + 4, + 41.03, + -0.81, + 1, + 3, + 2, + 79.63, + -22.05, + 0.09336, + 3, + -26.36, + -44.12, + 0, + 4, + 3.74, + 4.79, + 0.90664, + 1, + 3, + 3.4, + 0.17, + 1, + 1, + 2, + 35.81, + 20.68, + 1, + 1, + 2, + 33.65, + 6.87, + 1, + 1, + 2, + 38.5, + -10.56, + 1, + 1, + 2, + 46.81, + -21.96, + 1, + 1, + 2, + 46.52, + -33.53, + 1, + 1, + 2, + 51.84, + -41.44, + 1 + ], + "hull": 30 + } + }, + "eye2": { + "eye3": { + "type": "mesh", + "uvs": [ + 0.37457, + 0.04883, + 0.47703, + 0.08695, + 0.54302, + 0.13015, + 0.65295, + 0.26502, + 0.66854, + 0.28894, + 0.71357, + 0.3081, + 0.7995, + 0.34468, + 0.84907, + 0.38434, + 0.8897, + 0.49925, + 0.86264, + 0.56446, + 0.8164, + 0.63902, + 0.77421, + 0.65791, + 0.81165, + 0.68733, + 0.88252, + 0.69396, + 0.93382, + 0.72015, + 0.9409, + 0.79006, + 0.96092, + 0.80336, + 0.99677, + 0.83772, + 1, + 0.84439, + 1, + 0.85448, + 0.9388, + 0.89325, + 0.69777, + 0.90543, + 0.68357, + 0.93358, + 0.6529, + 0.98596, + 0.59964, + 1, + 0.59271, + 1, + 0.49657, + 0.98963, + 0.42722, + 0.96013, + 0.39094, + 0.8977, + 0.3835, + 0.81875, + 0.41695, + 0.74251, + 0.48882, + 0.66044, + 0.49993, + 0.63242, + 0.47564, + 0.59948, + 0.41909, + 0.52275, + 0.44264, + 0.44212, + 0.15664, + 0.33588, + 0.07216, + 0.27767, + 0.01085, + 0.19968, + 0.02432, + 0.13055, + 0.0743, + 0.10365, + 0.20335, + 0.1198, + 0.20315, + 0.05508, + 0.27343, + 0.03775, + 0.54384, + 0.34319, + 0.44658, + 0.24985, + 0.31337, + 0.16907, + 0.69819, + 0.65551, + 0.60516, + 0.64653, + 0.69396, + 0.62679, + 0.59458, + 0.61422, + 0.65379, + 0.35037, + 0.57344, + 0.38088, + 0.49309, + 0.45088, + 0.48041, + 0.42037, + 0.50789, + 0.39165, + 0.58401, + 0.3396, + 0.63687, + 0.32165 + ], + "triangles": [ + 41, + 42, + 43, + 46, + 43, + 0, + 46, + 0, + 1, + 41, + 43, + 46, + 45, + 46, + 1, + 45, + 1, + 2, + 45, + 2, + 3, + 40, + 38, + 39, + 41, + 38, + 40, + 41, + 37, + 38, + 45, + 3, + 44, + 57, + 3, + 4, + 57, + 4, + 5, + 36, + 37, + 41, + 36, + 41, + 46, + 57, + 56, + 3, + 56, + 44, + 3, + 51, + 57, + 5, + 51, + 5, + 6, + 52, + 44, + 56, + 51, + 52, + 56, + 51, + 56, + 57, + 55, + 45, + 44, + 55, + 44, + 52, + 54, + 45, + 55, + 45, + 36, + 46, + 35, + 45, + 54, + 35, + 36, + 45, + 53, + 54, + 55, + 35, + 54, + 53, + 53, + 55, + 52, + 34, + 35, + 53, + 8, + 51, + 7, + 33, + 34, + 53, + 49, + 50, + 52, + 53, + 52, + 50, + 33, + 53, + 50, + 51, + 6, + 7, + 52, + 51, + 49, + 8, + 9, + 51, + 9, + 49, + 51, + 32, + 33, + 50, + 10, + 49, + 9, + 48, + 50, + 49, + 32, + 50, + 48, + 11, + 47, + 49, + 48, + 49, + 47, + 10, + 11, + 49, + 17, + 18, + 19, + 13, + 14, + 15, + 20, + 15, + 16, + 20, + 16, + 17, + 20, + 17, + 19, + 21, + 28, + 29, + 21, + 48, + 47, + 12, + 21, + 47, + 12, + 47, + 11, + 12, + 15, + 21, + 13, + 15, + 12, + 20, + 21, + 15, + 48, + 30, + 31, + 29, + 30, + 21, + 27, + 28, + 21, + 31, + 32, + 48, + 30, + 48, + 21, + 21, + 26, + 27, + 21, + 22, + 26, + 22, + 25, + 26, + 22, + 24, + 25, + 23, + 24, + 22 + ], + "vertices": [ + 2, + 13, + 97.49, + -0.4, + 0.02786, + 14, + 30.67, + -15.23, + 0.97214, + 2, + 13, + 74.21, + -12.85, + 0.80216, + 14, + 4.34, + -17.22, + 0.19784, + 1, + 13, + 55.14, + -17.66, + 1, + 2, + 10, + 105.88, + -1.54, + 6.6E-4, + 13, + 9.63, + -14.86, + 0.99934, + 2, + 10, + 99.32, + -5.38, + 0.05138, + 13, + 2.13, + -13.64, + 0.94862, + 3, + 15, + -67.79, + 81.91, + 0.00147, + 10, + 94.25, + -16.13, + 0.34063, + 13, + -8.63, + -18.7, + 0.6579, + 3, + 15, + -46.06, + 88.44, + 0.01783, + 10, + 84.58, + -36.65, + 0.76035, + 13, + -29.16, + -28.35, + 0.22182, + 3, + 15, + -29.98, + 88.46, + 0.04089, + 10, + 73.84, + -48.61, + 0.85976, + 13, + -45.06, + -30.72, + 0.09934, + 3, + 15, + -1.08, + 71.82, + 0.14108, + 10, + 42.13, + -58.96, + 0.85413, + 13, + -76.09, + -18.5, + 0.00479, + 2, + 15, + 6.72, + 54.25, + 0.22962, + 10, + 23.85, + -53.02, + 0.77038, + 2, + 15, + 13.02, + 31.69, + 0.43011, + 10, + 2.87, + -42.61, + 0.56989, + 2, + 15, + 9.39, + 21.04, + 0.65213, + 10, + -2.62, + -32.78, + 0.34787, + 2, + 15, + 21.43, + 21.15, + 0.94194, + 10, + -10.58, + -41.81, + 0.05806, + 2, + 15, + 34.85, + 31.3, + 0.99933, + 10, + -12.03, + -58.57, + 6.7E-4, + 1, + 15, + 48.66, + 34.32, + 1, + 1, + 15, + 63.22, + 21.34, + 1, + 1, + 15, + 69.19, + 21.89, + 1, + 1, + 15, + 81.9, + 20.76, + 1, + 1, + 15, + 83.73, + 19.93, + 1, + 1, + 15, + 85.65, + 17.89, + 1, + 1, + 15, + 82.55, + 0.14, + 1, + 2, + 9, + 13.21, + -44.3, + 0.55419, + 15, + 43.52, + -41.38, + 0.44581, + 2, + 9, + 4.7, + -44.59, + 0.74254, + 15, + 46.46, + -49.37, + 0.25746, + 2, + 9, + -11.56, + -44.22, + 0.87789, + 15, + 51.2, + -64.93, + 0.12211, + 2, + 9, + -20.43, + -34.5, + 0.92635, + 15, + 44.74, + -76.39, + 0.07365, + 2, + 9, + -21.13, + -33.02, + 0.931, + 15, + 43.55, + -77.52, + 0.069, + 2, + 9, + -28.15, + -11.25, + 0.99075, + 15, + 25.07, + -91, + 0.00925, + 1, + 9, + -27.68, + 7.05, + 1, + 1, + 9, + -15.61, + 22.17, + 1, + 1, + 9, + 3.52, + 33.08, + 1, + 2, + 9, + 26.06, + 34.94, + 0.99993, + 11, + -53.37, + 88.69, + 7.0E-5, + 3, + 9, + 53.92, + 29.27, + 0.95829, + 10, + -4.95, + 34.53, + 0.01679, + 11, + -50.23, + 60.43, + 0.02492, + 3, + 9, + 62.09, + 30.21, + 0.81495, + 10, + 2.9, + 32.1, + 0.11283, + 11, + -46.84, + 52.95, + 0.07221, + 3, + 9, + 67.94, + 39.28, + 0.54566, + 10, + 11.92, + 38.05, + 0.27217, + 11, + -36.41, + 50.15, + 0.18217, + 3, + 9, + 81.58, + 60.43, + 0.23385, + 10, + 32.92, + 51.91, + 0.32091, + 11, + -12.11, + 43.63, + 0.44524, + 4, + 9, + 104.24, + 64.91, + 0.05674, + 10, + 55.47, + 46.89, + 0.13674, + 11, + -0.9, + 23.44, + 0.80611, + 12, + -49.34, + 46.07, + 4.1E-4, + 2, + 11, + 68.63, + 47.82, + 0.1234, + 12, + 24.2, + 41.61, + 0.8766, + 2, + 11, + 94.25, + 49.56, + 0.00256, + 12, + 48.5, + 33.28, + 0.99744, + 1, + 12, + 69.55, + 17.92, + 1, + 1, + 12, + 73.19, + -1.22, + 1, + 1, + 12, + 64.69, + -12.3, + 1, + 3, + 14, + 57.1, + 21.15, + 0.38516, + 11, + 101.49, + -3.66, + 0.03835, + 12, + 34.55, + -18.58, + 0.57649, + 3, + 14, + 65.58, + 5.28, + 0.96262, + 11, + 113.79, + -16.8, + 0.00326, + 12, + 40.8, + -35.46, + 0.03413, + 1, + 14, + 53.2, + -6.75, + 1, + 3, + 10, + 83.54, + 23.68, + 0.043, + 13, + 8.48, + 18.81, + 0.37795, + 11, + 0.36, + -12.96, + 0.57905, + 4, + 13, + 43.06, + 20.8, + 0.28414, + 14, + -10.55, + 26.15, + 0.1472, + 11, + 34.84, + -16.31, + 0.55588, + 12, + -31.79, + -4.43, + 0.01278, + 3, + 14, + 27.74, + 21.07, + 0.36775, + 11, + 73.15, + -11.33, + 0.55211, + 12, + 5.46, + -14.67, + 0.08014, + 2, + 15, + -4.11, + 9.2, + 0.55749, + 10, + -2.39, + -14.83, + 0.44251, + 2, + 9, + 69.08, + 6.06, + 0.99507, + 11, + -67.69, + 38.9, + 0.00493, + 2, + 15, + -10.32, + 14.32, + 0.31719, + 10, + 5.57, + -13.64, + 0.68281, + 3, + 9, + 76.15, + 12.13, + 0.56899, + 10, + 8.5, + 9.89, + 0.41166, + 11, + -59.75, + 34.02, + 0.01935, + 4, + 15, + -69.98, + 63.68, + 1.3E-4, + 10, + 82.17, + -2.31, + 0.36298, + 13, + -9.14, + -0.35, + 0.63475, + 11, + -19.99, + -29.19, + 0.00214, + 4, + 9, + 132.76, + 44.2, + 9.4E-4, + 10, + 73.23, + 16.44, + 0.35859, + 13, + -4.08, + 19.8, + 0.2112, + 11, + -11.89, + -10.06, + 0.42926, + 3, + 9, + 107.09, + 53.1, + 0.06887, + 10, + 53.32, + 34.93, + 0.27237, + 11, + -11.27, + 17.11, + 0.65876, + 3, + 9, + 113.5, + 59.41, + 0.03193, + 10, + 61.73, + 38.13, + 0.12268, + 11, + -3.3, + 12.94, + 0.84539, + 3, + 9, + 123.48, + 56.93, + 0.00515, + 10, + 69.86, + 31.84, + 0.04563, + 11, + -2.61, + 2.68, + 0.94922, + 3, + 10, + 84.76, + 14.23, + 0.09995, + 13, + 3.4, + 10.74, + 0.66489, + 11, + -5.9, + -20.16, + 0.23515, + 2, + 10, + 90.05, + 1.87, + 0.00744, + 13, + -0.39, + -2.15, + 0.99256 + ], + "hull": 44 + } + }, + "eye3": { + "eye2": { + "type": "mesh", + "uvs": [ + 0.57172, + 0, + 0.67913, + 0.00855, + 0.78451, + 0.09597, + 0.7945, + 0.24163, + 0.85223, + 0.34481, + 1, + 0.3511, + 1, + 0.38562, + 0.81876, + 0.55875, + 0.83459, + 0.6167, + 0.94767, + 0.80919, + 0.95961, + 0.91208, + 0.94799, + 0.95681, + 0.8639, + 0.956, + 0.74612, + 0.95486, + 0.63931, + 1, + 0.59065, + 1, + 0.4307, + 0.92322, + 0.41776, + 0.90719, + 0.23717, + 0.92511, + 0.18606, + 0.89138, + 0.07312, + 0.79342, + 0, + 0.66908, + 0, + 0.60229, + 0.03103, + 0.39334, + 0.09018, + 0.23514, + 0.27368, + 0.06373, + 0.50938, + 0, + 0.85252, + 0.82225, + 0.79999, + 0.74279, + 0.70619, + 0.66968, + 0.58613, + 0.61883, + 0.44731, + 0.55526, + 0.2147, + 0.47263, + 0.56737, + 0.85403, + 0.50734, + 0.75232, + 0.40604, + 0.66651, + 0.21845, + 0.59023 + ], + "triangles": [ + 4, + 5, + 6, + 32, + 24, + 25, + 23, + 24, + 32, + 3, + 31, + 25, + 32, + 25, + 31, + 3, + 4, + 31, + 7, + 4, + 6, + 36, + 32, + 31, + 25, + 26, + 3, + 3, + 26, + 0, + 2, + 0, + 1, + 2, + 3, + 0, + 22, + 23, + 32, + 22, + 32, + 36, + 4, + 30, + 31, + 7, + 30, + 4, + 29, + 30, + 7, + 35, + 36, + 31, + 35, + 31, + 30, + 21, + 22, + 36, + 8, + 29, + 7, + 28, + 29, + 8, + 34, + 35, + 30, + 20, + 21, + 36, + 28, + 8, + 9, + 27, + 28, + 9, + 29, + 33, + 34, + 29, + 34, + 30, + 33, + 29, + 28, + 13, + 33, + 28, + 35, + 19, + 20, + 35, + 20, + 36, + 17, + 19, + 35, + 34, + 17, + 35, + 33, + 17, + 34, + 27, + 9, + 10, + 16, + 17, + 33, + 18, + 19, + 17, + 27, + 13, + 28, + 12, + 13, + 27, + 10, + 12, + 27, + 11, + 12, + 10, + 14, + 15, + 33, + 16, + 33, + 15, + 13, + 14, + 33 + ], + "vertices": [ + 1, + 7, + 82.4, + 20.05, + 1, + 1, + 7, + 88.74, + 7.18, + 1, + 2, + 7, + 84.4, + -11.95, + 0.99541, + 8, + -10.87, + 91.51, + 0.00459, + 2, + 7, + 65.62, + -25.07, + 0.90763, + 8, + 2.66, + 73.02, + 0.09237, + 2, + 7, + 55.85, + -40.1, + 0.70293, + 8, + 17.89, + 63.58, + 0.29707, + 2, + 7, + 65.3, + -57.35, + 0.63994, + 8, + 34.94, + 73.42, + 0.36006, + 2, + 7, + 60.69, + -60.19, + 0.63859, + 8, + 37.88, + 68.86, + 0.36141, + 2, + 7, + 24.91, + -53.91, + 0.33722, + 8, + 32.38, + 32.95, + 0.66278, + 2, + 7, + 18.26, + -60.47, + 0.1482, + 8, + 39.08, + 26.45, + 0.8518, + 2, + 7, + 0.41, + -89.12, + 3.0E-5, + 8, + 68.11, + 9.22, + 0.99997, + 1, + 8, + 78.21, + -3.48, + 1, + 1, + 8, + 80.72, + -10.22, + 1, + 2, + 6, + 4.06, + -85.55, + 0.00178, + 8, + 71.26, + -16.18, + 0.99822, + 2, + 6, + -1.4, + -70.87, + 0.03027, + 8, + 58, + -24.53, + 0.96973, + 2, + 6, + -13.11, + -60.15, + 0.09945, + 8, + 49.91, + -38.19, + 0.90055, + 2, + 6, + -15.44, + -54.12, + 0.12771, + 8, + 44.48, + -41.7, + 0.87229, + 2, + 6, + -11.82, + -29.93, + 0.43382, + 8, + 20.07, + -43.12, + 0.56618, + 2, + 6, + -10.09, + -27.42, + 0.51639, + 8, + 17.25, + -41.94, + 0.48361, + 2, + 6, + -21.34, + -6.01, + 0.96084, + 8, + -1.4, + -57.33, + 0.03916, + 2, + 6, + -18.84, + 2.23, + 0.99145, + 8, + -9.98, + -56.57, + 0.00855, + 2, + 6, + -9.87, + 21.77, + 0.99999, + 7, + -58.45, + 11.24, + 1.0E-5, + 2, + 6, + 4.85, + 37.86, + 0.96828, + 7, + -46.92, + 29.75, + 0.03172, + 2, + 6, + 14.64, + 41.62, + 0.91517, + 7, + -37.99, + 35.25, + 0.08483, + 2, + 6, + 46.74, + 49.54, + 0.46076, + 7, + -7.89, + 48.93, + 0.53924, + 2, + 6, + 72.75, + 51.12, + 0.14476, + 7, + 17.39, + 55.25, + 0.85524, + 2, + 6, + 106.63, + 38, + 0.003, + 7, + 53.1, + 48.56, + 0.997, + 1, + 7, + 78.05, + 27.11, + 1, + 1, + 8, + 58.59, + 0.64, + 1, + 2, + 7, + -1.01, + -66.93, + 0.00922, + 8, + 45.96, + 7.33, + 0.99078, + 2, + 7, + 2.23, + -50.29, + 0.0544, + 8, + 29.25, + 10.2, + 0.9456, + 2, + 7, + 0.66, + -32.5, + 0.09202, + 8, + 11.51, + 8.24, + 0.90798, + 3, + 6, + 42.89, + -11.26, + 0.24839, + 7, + -0.52, + -11.55, + 0.29949, + 8, + -9.42, + 6.61, + 0.45212, + 2, + 6, + 43.89, + 22.28, + 0.56123, + 7, + -5.68, + 21.6, + 0.43877, + 2, + 6, + 4.84, + -43, + 0.16185, + 8, + 29.44, + -24.13, + 0.83815, + 2, + 6, + 16.88, + -29.81, + 0.19572, + 8, + 14.07, + -15.05, + 0.80428, + 2, + 6, + 24.62, + -12.4, + 0.51876, + 8, + -4.55, + -11.04, + 0.48124, + 2, + 6, + 26.84, + 15.18, + 0.94392, + 7, + -21.15, + 11.5, + 0.05608 + ], + "hull": 27 + } + } + } + } + ], + "animations": { + "animation": { + "slots": { + "eye": { + "attachment": [ + { + "name": "eye1" + } + ] + }, + "eye2": { + "attachment": [ + { + "name": "eye3" + } + ] + }, + "eye3": { + "attachment": [ + { + "name": "eye2" + } + ] + } + }, + "bones": { + "ekorn": { + "scale": [ + {}, + { + "time": 0.2333, + "x": 0.875 + }, + { + "time": 0.5 + } + ] + }, + "bone3": { + "rotate": [ + {}, + { + "time": 0.2667, + "angle": -16.34 + }, + { + "time": 0.5 + } + ] + }, + "bone4": { + "rotate": [ + {}, + { + "time": 0.2667, + "angle": -16.05 + }, + { + "time": 0.5 + } + ] + }, + "pinnsvin": { + "rotate": [ + { + "angle": 5.31 + } + ], + "scale": [ + {}, + { + "time": 0.2667, + "x": 0.833 + }, + { + "time": 0.5 + } + ] + }, + "bone7": { + "rotate": [ + { + "angle": 9.4 + } + ] + }, + "bunny": { + "rotate": [ + {}, + { + "time": 0.2667, + "angle": -5.85 + }, + { + "time": 0.5 + } + ], + "scale": [ + {}, + { + "time": 0.2667, + "x": 0.858 + }, + { + "time": 0.5 + } + ] + }, + "bone10": { + "rotate": [ + {}, + { + "time": 0.2667, + "angle": 4.01 + }, + { + "time": 0.5 + } + ] + }, + "bone11": { + "rotate": [ + { + "time": 0.1333 + }, + { + "time": 0.3, + "angle": 7.17 + }, + { + "time": 0.5 + } + ] + }, + "bone13": { + "rotate": [ + { + "time": 0.1333 + }, + { + "time": 0.3333, + "angle": 9.29 + }, + { + "time": 0.5 + } + ] + }, + "bone12": { + "rotate": [ + { + "time": 0.2333 + }, + { + "time": 0.4, + "angle": 12.16 + }, + { + "time": 0.5 + } + ] + }, + "bone14": { + "rotate": [ + { + "time": 0.2667 + }, + { + "time": 0.4, + "angle": 14.16 + }, + { + "time": 0.5 + } + ] + } + }, + "drawOrder": [ + { + "offsets": [ + { + "slot": "eye2", + "offset": 0 + }, + { + "slot": "eye", + "offset": -3 + }, + { + "slot": "eye3", + "offset": -6 + } + ] + } + ] + }, + "yay": { + "slots": { + "eye": { + "attachment": [ + { + "name": "eye1" + } + ] + }, + "eye2": { + "attachment": [ + { + "name": "eye3" + } + ] + }, + "eye3": { + "attachment": [ + { + "name": "eye2" + } + ] + } + }, + "bones": { + "bone11": { + "rotate": [ + {}, + { + "time": 0.1, + "angle": -25.07 + }, + { + "time": 0.1667 + } + ] + }, + "bone13": { + "rotate": [ + {}, + { + "time": 0.1, + "angle": -19.41 + }, + { + "time": 0.1667 + } + ] + }, + "bone12": { + "rotate": [ + {}, + { + "time": 0.1333, + "angle": -23.07 + }, + { + "time": 0.1667 + } + ] + }, + "bone14": { + "rotate": [ + {}, + { + "time": 0.1333, + "angle": -28.72 + }, + { + "time": 0.1667 + } + ] + }, + "bunny": { + "scale": [ + {}, + { + "time": 0.0667, + "x": 1.15 + }, + { + "time": 0.1667 + } + ] + }, + "pinnsvin": { + "scale": [ + {}, + { + "time": 0.0667, + "x": 1.208 + }, + { + "time": 0.1667 + } + ] + }, + "ekorn": { + "scale": [ + {}, + { + "time": 0.1, + "x": 1.147 + }, + { + "time": 0.1667 + } + ] + } + } + } + } +} \ No newline at end of file diff --git a/assets/down_the_mountain/snowplayers.png b/assets/down_the_mountain/snowplayers.png new file mode 100644 index 0000000..0c42f5f Binary files /dev/null and b/assets/down_the_mountain/snowplayers.png differ diff --git a/assets/down_the_mountain/snowplayers.spine.lx b/assets/down_the_mountain/snowplayers.spine.lx new file mode 100644 index 0000000..dd0fade --- /dev/null +++ b/assets/down_the_mountain/snowplayers.spine.lx @@ -0,0 +1,4 @@ +spine = { + skeleton = "assets/down_the_mountain/snowplayers", + atlas = "assets/down_the_mountain/snowplayers" +} \ No newline at end of file diff --git a/game.wren b/game.wren new file mode 100644 index 0000000..d6adf31 --- /dev/null +++ b/game.wren @@ -0,0 +1,58 @@ +import "luxe: game" for Ready +import "luxe: assets" for Assets +import "luxe: input" for Input, Key +import "luxe: world" for World, Entity, Transform, Sprite, Values, Tags, Camera +import "luxe: math" for Math +import "luxe: draw" for Draw +import "luxe: io" for IO + +import "outline/app" for App +import "spine" for Spine + +class Game is Ready { + + construct ready() { + + super("ready!") + + app = App.new() + + System.print("render size: %(app.width) x %(app.height) @ %(app.scale)x") + + _logo = Entity.create(app.world, "sprite") + Transform.create(_logo) + Transform.set_pos(_logo, app.width/2, app.height/2, 0) + Sprite.create(_logo, Assets.material("luxe: material/logo"), 128, 128) + + + var spine_asset = Spine.parse("assets/down_the_mountain/snowplayers") + _debug = Draw.create(World.render_set(app.world)) + spine_asset.draw_bones(_debug) + spine_asset.draw_outlines(_debug) + Draw.commit(_debug) + } //ready + + tick(delta) { + + var pos = Camera.screen_point_to_world(app.camera, Input.mouse_x(), Input.mouse_y()) + Transform.set_pos(_logo, pos.x, pos.y, 0) + + if(Input.key_state_released(Key.escape)) { + IO.shutdown() + } + + app.color.r = app.color.g = app.color.b = (IO.timestamp()/20 % 1) + + } //tick + + destroy() { + + System.print("unready!") + app.destroy() + + } //destroy + + app { _app } + app=(v) { _app=v } + +} //Game diff --git a/outline/app.wren b/outline/app.wren new file mode 100644 index 0000000..a0f1768 --- /dev/null +++ b/outline/app.wren @@ -0,0 +1,74 @@ +import "luxe: world" for World, Camera, Entity, Transform +import "luxe: render" for Render +import "luxe: game" for Frame + +class App { + + world { _world } + ui { _ui_world } + + camera { _camera } + ui_camera { _ui_camera } + + color { _color } + color=(v) { _color = v } + + width { Render.window_w() } + height { Render.window_h() } + scale { Render.drawable_ratio() } + + construct new() { + + _color = [1,1,1,1] + + //create worlds + + _world = World.create("game") + _ui_world = World.create("ui") + + //create cameras + + _camera = Entity.create(_world, "app.camera") + Transform.create(_camera) + Camera.create(_camera) + Camera.set_default(_world, _camera) + + _ui_camera = Entity.create(_ui_world, "app.ui_camera") + Transform.create(_ui_camera) + Camera.create(_ui_camera) + Camera.set_default(_ui_world, _ui_camera) + + //update our worlds + + Frame.on(Frame.sim) {|delta| + World.tick(_world, delta) + World.tick(_ui_world, delta) + } + + //render our worlds + + Frame.on(Frame.visual) {|delta| + World.render(_world, _camera, "game", {"clear_color":_color}) + World.render(_ui_world, _ui_camera, "ui") + } + + } //new + + destroy() { + + //destroy cameras + + Camera.destroy(_camera) + Camera.destroy(_ui_camera) + + Entity.destroy(_camera) + Entity.destroy(_ui_camera) + + //destroy worlds + + World.destroy(_ui_world) + World.destroy(_world) + + } //destroy + +} // diff --git a/outline/inputs.input.lx b/outline/inputs.input.lx new file mode 100644 index 0000000..dc45459 --- /dev/null +++ b/outline/inputs.input.lx @@ -0,0 +1,23 @@ +input = { + nodes = [ + { name = "ui" where = "front" channels = ["c01"] } + { name = "game" where = "after: ui" channels = ["c02"] } + ] + + map = { + left = { keys = ["key_a", "left"] } + right = { keys = ["key_d", "right"] } + up = { keys = ["key_w", "up"] } + down = { keys = ["key_s", "down"] } + jump = { + keys = ["key_x", "up", "key_w", "space"] + mouse = ["left"] + gamepad = [0] + } + + next = { + keys = ["key_x", "up", "key_w", "space", "enter", "escape"] + mouse = ["left", "right"] + } + } +} diff --git a/outline/renderer.wren b/outline/renderer.wren new file mode 100644 index 0000000..8c00ab4 --- /dev/null +++ b/outline/renderer.wren @@ -0,0 +1,51 @@ +import "luxe: render" for Render, RenderLayerDesc, PassLayerDesc, LoadAction +import "luxe: render" for SortType, ImageDesc, ImageType, PixelFormat + +class Renderer { + + construct new() { + + System.print("game / render / init / ok") + + } //new + + ready() { + + } + + tick(delta) { + + } + + render_path(ctx) { + + if(ctx.path == "game") { + game_render_path(ctx) + } else if(ctx.path == "ui") { + ui_render_path(ctx) + } + + } //render_path + + game_render_path(ctx) { + + var layer = RenderLayerDesc.new() + layer.dest.color[0].clear_color = ctx.get("clear_color", [1,1,1,1]) + layer.dest.color[0].load_action = LoadAction.clear + layer.dest.depth.load_action = LoadAction.clear + + ctx.layer_render("default", layer) + + } //game_render_path + + ui_render_path(ctx) { + + var layer = RenderLayerDesc.new() + layer.dest.color[0].load_action = LoadAction.dont_care + layer.dest.depth.load_action = LoadAction.clear + + ctx.layer_render("default", layer) + + } //ui_render_path + +} //Renderer diff --git a/outline/settings.settings.lx b/outline/settings.settings.lx new file mode 100644 index 0000000..fe39e7e --- /dev/null +++ b/outline/settings.settings.lx @@ -0,0 +1,17 @@ +engine = { + input.entry = "outline/inputs" + runtime = { + window = { + width = 960 + height = 640 + resizable = false + fullscreen = false + } + } + + render = { + antialiasing = 2 + stencil = 8 + depth = 24 + } +} \ No newline at end of file diff --git a/project.luxe b/project.luxe new file mode 100644 index 0000000..8105e5d --- /dev/null +++ b/project.luxe @@ -0,0 +1,14 @@ +import "luxe: project" for Entry + +class Project is Entry { + + construct entry(target) { + + name = "game" + version = "0.0.0" + renderer = "outline/renderer" + settings = "outline/settings" + + } //new + +} //Project \ No newline at end of file diff --git a/project.modules.lx b/project.modules.lx new file mode 100644 index 0000000..0858dd2 --- /dev/null +++ b/project.modules.lx @@ -0,0 +1,3 @@ +modules = { + luxe = "2021.0.3" +} //modules diff --git a/spine.wren b/spine.wren new file mode 100644 index 0000000..ea0aea8 --- /dev/null +++ b/spine.wren @@ -0,0 +1,328 @@ +import "luxe: assets" for Assets +import "luxe: color" for Color +import "luxe: string" for Str +import "luxe: render" for Geometry +import "luxe: draw" for Draw, PathStyle, LineJoin, LineCap +import "luxe: math" for Math + + +class Spine{ + bones_by_index{_bones_by_index} + bones_by_name{_bones_by_name} + + static parse(id: String) : Spine{ + var asset = Assets.lx(id + ".spine.lx")["spine"] + var skeleton = Assets.lx(asset["skeleton"]+".json") + var atlas = Assets.bytes(asset["atlas"]+".atlas") + + var spine_asset = Spine.from_data(skeleton) + return spine_asset + } + + construct from_data(jsonDict: Map){ + init() + load_skeleton(jsonDict["skeleton"]) + load_bones(jsonDict["bones"]) + load_slots(jsonDict["slots"]) + load_skins(jsonDict["skins"]) + load_animations(jsonDict["animations"]) + //todo: constraints + } + + init(){ + _pos = [0, 0] + _size = [0, 0] + _fps = 30 + + _bones_by_name = {} + _bones_by_index = [] + _slots_by_name = {} + _slots_by_index = [] + _skins = {} + _animations = {} + _active_skins = ["default"] + _active_attachments = [] + _active_animation = "" //todo: tie this into Anim system + } + + load_skeleton(skeleton_data: Map){ + _pos = [skeleton_data["x"], skeleton_data["y"]] + _size = [skeleton_data["width"], skeleton_data["height"]] + _fps = skeleton_data["fps"] || 30 + } + + load_bones(bones_data: List){ + _bones_by_index.clear() + for(bone_data in bones_data){ + var bone = SpineBone.from_data(bone_data, _bones_by_name) + _bones_by_name[bone.name] = bone + _bones_by_index.add(bone) + } + } + + load_slots(slots_data: List){ + if(slots_data == null) return + _slots_by_index.clear() + for(slot_data in slots_data){ + var slot = SpineSlot.from_data(slot_data, _bones_by_name) + _slots_by_name[slot.name] = slot + _slots_by_index.add(slot) + } + } + + load_skins(skins_data: List){ + if(skins_data == null) return + for(skin_data in skins_data){ + var skin = SpineSkin.from_data(skin_data, this) + _skins[skin.name] = skin + } + } + + load_animations(animation_data: Map){ + //todo + } + + + draw_bones(context){draw_bones(context, [1, 0, 0, 1])} + draw_bones(context, color){ + for(bone in _bones_by_index){ + var pos = bone.position() + pos = [pos.x+200, pos.y+200] + var length = bone.length + var rotation = Math.radians(bone.rotation()) + + var direction = [rotation.cos, rotation.sin] //todo: use matrices - this approach might be lossy with nonuniform scaling + var target = [pos.x + direction.x * length, pos.y + direction.y * length] + + var style = PathStyle.new() + style.color = color + Draw.line(context, pos.x, pos.y, target.x, target.y, 0, style) + } + } + + draw_outlines(context){draw_outlines(context, [0, 1, 0, 1])} + draw_outlines(context, color){ + for(skin_id in _active_skins){ //todo: only draw "uppermost" attachments + _skins[skin_id].draw_outlines(context, color) + } + } +} + +class SpineSkin{ + name{_name} + + construct from_data(skin_data: Map, spine){ + _name = skin_data["name"] + + _slots = {} + for(slot in skin_data["attachments"]){ + var attachments = [] + for(attachment_data in slot.value){ + var attachment = SpineAttachment.from_data(attachment_data.value, attachment_data.key, spine) + if(attachment) attachments.add(attachment) + } + _slots[slot.key] = attachments + } + + //todo: skins that are not the default skin can have bones/constraints/paths - handle that (http://esotericsoftware.com/spine-json-format/#Attachments) + } + + draw_outlines(context, color){ + for(slot in _slots.values){ + for(attachment in slot){ + attachment.draw_outlines(context, color) + } + } + } +} + +class SpineAttachment{ + type{_type} + type=(value){_type=value} + + name{_name} + name=(value){_name=value} + + static from_data(attachment_data: Map, map_name: String, spine): SpineAttachment{ + var type = attachment_data["type"] || "region" + var name = attachment_data["name"] || map_name + + var attachment + if(type == "mesh"){ + var weighted = attachment_data["vertices"].count > attachment_data["uvs"].count + if(weighted){ + attachment = SpineSkinnedMeshAttachment.from_data(attachment_data, spine) + } else { + attachment = SpineMeshAttachment.from_data(attachment_data) + } + } else { + System.print("Unknown attachment type \"%(type)\"") + return null + } + attachment.name = name + attachment.type = type + + return attachment + } +} + +class SpineMeshAttachment is SpineAttachment{ + path{(_path != null) ? _path : name} //use path when set, otherwise fall back to name + + construct from_data(attachment_data: Map){ + _hull = attachment_data["hull"] //amount of vertices that form the hull - always the first n vertices in the list + _path = attachment_data["path"] + //todo: parse tint (RGBA hex) + + var triangles = attachment_data["triangles"] + var vertices = attachment_data["vertices"] + var uvs = attachment_data["uvs"] + + _vertices = vertices + _triangles = triangles + _uvs = uvs + } +} + +class SpineSkinnedMeshAttachment is SpineAttachment{ + path{(_path != null) ? _path : name} //use path when set, otherwise fall back to name + + construct from_data(attachment_data: Map, spine: Spine){ + _hull = attachment_data["hull"] //amount of vertices that form the hull - always the first n vertices in the list + _path = attachment_data["path"] + //todo: parse tint (RGBA hex) + + var triangles = attachment_data["triangles"] + var vertices = attachment_data["vertices"] + var uvs = attachment_data["uvs"] + + _vertices = [] + var vert_index = 0 + //var uv_index = 0 + while(vert_index