mapspinner 1.1.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (49) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +91 -0
  3. package/package.json +47 -0
  4. package/src/lib/assets/bark/README.md +8 -0
  5. package/src/lib/assets/bark/birch_ao_1k.jpg +0 -0
  6. package/src/lib/assets/bark/birch_color_1k.jpg +0 -0
  7. package/src/lib/assets/bark/birch_normal_1k.jpg +0 -0
  8. package/src/lib/assets/bark/birch_roughness_1k.jpg +0 -0
  9. package/src/lib/assets/bark/oak_ao_1k.jpg +0 -0
  10. package/src/lib/assets/bark/oak_color_1k.jpg +0 -0
  11. package/src/lib/assets/bark/oak_normal_1k.jpg +0 -0
  12. package/src/lib/assets/bark/oak_roughness_1k.jpg +0 -0
  13. package/src/lib/assets/bark/pine_ao_1k.jpg +0 -0
  14. package/src/lib/assets/bark/pine_color_1k.jpg +0 -0
  15. package/src/lib/assets/bark/pine_normal_1k.jpg +0 -0
  16. package/src/lib/assets/bark/pine_roughness_1k.jpg +0 -0
  17. package/src/lib/assets/bark/willow_ao_1k.jpg +0 -0
  18. package/src/lib/assets/bark/willow_color_1k.jpg +0 -0
  19. package/src/lib/assets/bark/willow_normal_1k.jpg +0 -0
  20. package/src/lib/assets/bark/willow_roughness_1k.jpg +0 -0
  21. package/src/lib/assets/leaves/ash_color.png +0 -0
  22. package/src/lib/assets/leaves/aspen_color.png +0 -0
  23. package/src/lib/assets/leaves/oak_color.png +0 -0
  24. package/src/lib/assets/leaves/pine_color.png +0 -0
  25. package/src/lib/branch.js +28 -0
  26. package/src/lib/enums.js +23 -0
  27. package/src/lib/index.js +4 -0
  28. package/src/lib/options.js +198 -0
  29. package/src/lib/presets/ash_large.json +96 -0
  30. package/src/lib/presets/ash_medium.json +96 -0
  31. package/src/lib/presets/ash_small.json +96 -0
  32. package/src/lib/presets/aspen_large.json +96 -0
  33. package/src/lib/presets/aspen_medium.json +96 -0
  34. package/src/lib/presets/aspen_small.json +96 -0
  35. package/src/lib/presets/bush_1.json +96 -0
  36. package/src/lib/presets/bush_2.json +96 -0
  37. package/src/lib/presets/bush_3.json +96 -0
  38. package/src/lib/presets/index.js +47 -0
  39. package/src/lib/presets/oak_large.json +96 -0
  40. package/src/lib/presets/oak_medium.json +96 -0
  41. package/src/lib/presets/oak_small.json +96 -0
  42. package/src/lib/presets/pine_large.json +96 -0
  43. package/src/lib/presets/pine_medium.json +96 -0
  44. package/src/lib/presets/pine_small.json +96 -0
  45. package/src/lib/presets/trellis.json +112 -0
  46. package/src/lib/rng.js +22 -0
  47. package/src/lib/textures.js +105 -0
  48. package/src/lib/tree.js +1062 -0
  49. package/src/lib/trellis.js +135 -0
@@ -0,0 +1,47 @@
1
+ const [ashSmall, ashMedium, ashLarge, aspenSmall, aspenMedium, aspenLarge, bush1, bush2, bush3, oakSmall, oakMedium, oakLarge, pineSmall, pineMedium, pineLarge, trellis] = await Promise.all([
2
+ fetch(new URL('./ash_small.json', import.meta.url)).then(r => r.json()),
3
+ fetch(new URL('./ash_medium.json', import.meta.url)).then(r => r.json()),
4
+ fetch(new URL('./ash_large.json', import.meta.url)).then(r => r.json()),
5
+ fetch(new URL('./aspen_small.json', import.meta.url)).then(r => r.json()),
6
+ fetch(new URL('./aspen_medium.json', import.meta.url)).then(r => r.json()),
7
+ fetch(new URL('./aspen_large.json', import.meta.url)).then(r => r.json()),
8
+ fetch(new URL('./bush_1.json', import.meta.url)).then(r => r.json()),
9
+ fetch(new URL('./bush_2.json', import.meta.url)).then(r => r.json()),
10
+ fetch(new URL('./bush_3.json', import.meta.url)).then(r => r.json()),
11
+ fetch(new URL('./oak_small.json', import.meta.url)).then(r => r.json()),
12
+ fetch(new URL('./oak_medium.json', import.meta.url)).then(r => r.json()),
13
+ fetch(new URL('./oak_large.json', import.meta.url)).then(r => r.json()),
14
+ fetch(new URL('./pine_small.json', import.meta.url)).then(r => r.json()),
15
+ fetch(new URL('./pine_medium.json', import.meta.url)).then(r => r.json()),
16
+ fetch(new URL('./pine_large.json', import.meta.url)).then(r => r.json()),
17
+ fetch(new URL('./trellis.json', import.meta.url)).then(r => r.json())
18
+ ]);
19
+ import TreeOptions from '../options.js';
20
+
21
+ export const TreePreset = {
22
+ 'Ash Small': ashSmall,
23
+ 'Ash Medium': ashMedium,
24
+ 'Ash Large': ashLarge,
25
+ 'Aspen Small': aspenSmall,
26
+ 'Aspen Medium': aspenMedium,
27
+ 'Aspen Large': aspenLarge,
28
+ 'Bush 1': bush1,
29
+ 'Bush 2': bush2,
30
+ 'Bush 3': bush3,
31
+ 'Oak Small': oakSmall,
32
+ 'Oak Medium': oakMedium,
33
+ 'Oak Large': oakLarge,
34
+ 'Pine Small': pineSmall,
35
+ 'Pine Medium': pineMedium,
36
+ 'Pine Large': pineLarge,
37
+ 'Trellis': trellis,
38
+ };
39
+
40
+ /**
41
+ * @param {string} name The name of the preset to load
42
+ * @returns {TreeOptions}
43
+ */
44
+ export function loadPreset(name) {
45
+ const preset = TreePreset[name];
46
+ return preset ? structuredClone(preset) : new TreeOptions();
47
+ }
@@ -0,0 +1,96 @@
1
+ {
2
+ "seed": 23399,
3
+ "type": "deciduous",
4
+ "bark": {
5
+ "type": "oak",
6
+ "tint": 16774097,
7
+ "flatShading": false,
8
+ "textured": true,
9
+ "textureScale": {
10
+ "x": 1,
11
+ "y": 10
12
+ }
13
+ },
14
+ "branch": {
15
+ "levels": 3,
16
+ "angle": {
17
+ "1": 54,
18
+ "2": 43,
19
+ "3": 32
20
+ },
21
+ "children": {
22
+ "0": 9,
23
+ "1": 5,
24
+ "2": 3
25
+ },
26
+ "force": {
27
+ "direction": {
28
+ "x": 0,
29
+ "y": 1,
30
+ "z": 0
31
+ },
32
+ "strength": -0.025
33
+ },
34
+ "gnarliness": {
35
+ "0": -0.04,
36
+ "1": 0.16,
37
+ "2": -0.06,
38
+ "3": 0.09
39
+ },
40
+ "length": {
41
+ "0": 47.7,
42
+ "1": 29.39,
43
+ "2": 17.62,
44
+ "3": 7.16
45
+ },
46
+ "radius": {
47
+ "0": 3,
48
+ "1": 0.69,
49
+ "2": 0.69,
50
+ "3": 1.19
51
+ },
52
+ "sections": {
53
+ "0": 16,
54
+ "1": 9,
55
+ "2": 8,
56
+ "3": 3
57
+ },
58
+ "segments": {
59
+ "0": 12,
60
+ "1": 5,
61
+ "2": 3,
62
+ "3": 3
63
+ },
64
+ "start": {
65
+ "1": 0.35,
66
+ "2": 0.1,
67
+ "3": 0.0
68
+ },
69
+ "taper": {
70
+ "0": 0.73,
71
+ "1": 0.42,
72
+ "2": 0.69,
73
+ "3": 0.75
74
+ },
75
+ "twist": {
76
+ "0": -0.23,
77
+ "1": 0.42,
78
+ "2": 0,
79
+ "3": 0
80
+ }
81
+ },
82
+ "leaves": {
83
+ "type": "oak",
84
+ "billboard": "double",
85
+ "angle": 36,
86
+ "count": 10,
87
+ "start": 0.16,
88
+ "size": 4.5,
89
+ "sizeVariance": 0.7,
90
+ "tint": 14013901,
91
+ "alphaTest": 0.5
92
+ },
93
+ "trellis": {
94
+ "enabled": false
95
+ }
96
+ }
@@ -0,0 +1,96 @@
1
+ {
2
+ "seed": 35729,
3
+ "type": "deciduous",
4
+ "bark": {
5
+ "type": "oak",
6
+ "tint": 16774097,
7
+ "flatShading": false,
8
+ "textured": true,
9
+ "textureScale": {
10
+ "x": 1,
11
+ "y": 10
12
+ }
13
+ },
14
+ "branch": {
15
+ "levels": 3,
16
+ "angle": {
17
+ "1": 54,
18
+ "2": 58,
19
+ "3": 32
20
+ },
21
+ "children": {
22
+ "0": 6,
23
+ "1": 4,
24
+ "2": 3
25
+ },
26
+ "force": {
27
+ "direction": {
28
+ "x": 0,
29
+ "y": 1,
30
+ "z": 0
31
+ },
32
+ "strength": -0.01
33
+ },
34
+ "gnarliness": {
35
+ "0": 0,
36
+ "1": -0.1,
37
+ "2": -0.15,
38
+ "3": 0.09
39
+ },
40
+ "length": {
41
+ "0": 37.24,
42
+ "1": 11.08,
43
+ "2": 12.39,
44
+ "3": 7.16
45
+ },
46
+ "radius": {
47
+ "0": 1.41,
48
+ "1": 0.9,
49
+ "2": 0.69,
50
+ "3": 1.19
51
+ },
52
+ "sections": {
53
+ "0": 8,
54
+ "1": 6,
55
+ "2": 3,
56
+ "3": 1
57
+ },
58
+ "segments": {
59
+ "0": 7,
60
+ "1": 5,
61
+ "2": 3,
62
+ "3": 3
63
+ },
64
+ "start": {
65
+ "1": 0.49,
66
+ "2": 0.06,
67
+ "3": 0.12
68
+ },
69
+ "taper": {
70
+ "0": 0.73,
71
+ "1": 0.42,
72
+ "2": 0.69,
73
+ "3": 0.75
74
+ },
75
+ "twist": {
76
+ "0": -0.23,
77
+ "1": 0.42,
78
+ "2": 0,
79
+ "3": 0
80
+ }
81
+ },
82
+ "leaves": {
83
+ "type": "oak",
84
+ "billboard": "double",
85
+ "angle": 42,
86
+ "count": 18,
87
+ "start": 0.16,
88
+ "size": 2.5,
89
+ "sizeVariance": 0.7,
90
+ "tint": 14013901,
91
+ "alphaTest": 0.5
92
+ },
93
+ "trellis": {
94
+ "enabled": false
95
+ }
96
+ }
@@ -0,0 +1,96 @@
1
+ {
2
+ "seed": 30895,
3
+ "type": "deciduous",
4
+ "bark": {
5
+ "type": "oak",
6
+ "tint": 16774097,
7
+ "flatShading": false,
8
+ "textured": true,
9
+ "textureScale": {
10
+ "x": 1,
11
+ "y": 10
12
+ }
13
+ },
14
+ "branch": {
15
+ "levels": 3,
16
+ "angle": {
17
+ "1": 54,
18
+ "2": 58,
19
+ "3": 32
20
+ },
21
+ "children": {
22
+ "0": 4,
23
+ "1": 2,
24
+ "2": 3
25
+ },
26
+ "force": {
27
+ "direction": {
28
+ "x": 0,
29
+ "y": 1,
30
+ "z": 0
31
+ },
32
+ "strength": -0.01
33
+ },
34
+ "gnarliness": {
35
+ "0": 0.07,
36
+ "1": -0.08,
37
+ "2": 0.11,
38
+ "3": 0.09
39
+ },
40
+ "length": {
41
+ "0": 28.08,
42
+ "1": 4.55,
43
+ "2": 9.78,
44
+ "3": 7.16
45
+ },
46
+ "radius": {
47
+ "0": 1,
48
+ "1": 1.02,
49
+ "2": 0.69,
50
+ "3": 1.19
51
+ },
52
+ "sections": {
53
+ "0": 16,
54
+ "1": 9,
55
+ "2": 8,
56
+ "3": 1
57
+ },
58
+ "segments": {
59
+ "0": 7,
60
+ "1": 5,
61
+ "2": 3,
62
+ "3": 3
63
+ },
64
+ "start": {
65
+ "1": 0.49,
66
+ "2": 0.06,
67
+ "3": 0.12
68
+ },
69
+ "taper": {
70
+ "0": 0.73,
71
+ "1": 0.42,
72
+ "2": 0.69,
73
+ "3": 0.75
74
+ },
75
+ "twist": {
76
+ "0": -0.23,
77
+ "1": 0.42,
78
+ "2": 0,
79
+ "3": 0
80
+ }
81
+ },
82
+ "leaves": {
83
+ "type": "oak",
84
+ "billboard": "double",
85
+ "angle": 42,
86
+ "count": 14,
87
+ "start": 0.16,
88
+ "size": 1.38,
89
+ "sizeVariance": 0.7,
90
+ "tint": 14013901,
91
+ "alphaTest": 0.5
92
+ },
93
+ "trellis": {
94
+ "enabled": false
95
+ }
96
+ }
@@ -0,0 +1,96 @@
1
+ {
2
+ "seed": 44166,
3
+ "type": "evergreen",
4
+ "bark": {
5
+ "type": "pine",
6
+ "tint": 16777215,
7
+ "flatShading": false,
8
+ "textured": true,
9
+ "textureScale": {
10
+ "x": 1,
11
+ "y": 1
12
+ }
13
+ },
14
+ "branch": {
15
+ "levels": 1,
16
+ "angle": {
17
+ "1": 129.1304347826087,
18
+ "2": 16,
19
+ "3": 60
20
+ },
21
+ "children": {
22
+ "0": 100,
23
+ "1": 3,
24
+ "2": 0
25
+ },
26
+ "force": {
27
+ "direction": {
28
+ "x": 0,
29
+ "y": 1,
30
+ "z": 0
31
+ },
32
+ "strength": 0.009000000000000001
33
+ },
34
+ "gnarliness": {
35
+ "0": 0.05,
36
+ "1": 0.08,
37
+ "2": 0,
38
+ "3": 0
39
+ },
40
+ "length": {
41
+ "0": 65.25217391304348,
42
+ "1": 34.84782608695652,
43
+ "2": 27.246739130434783,
44
+ "3": 1
45
+ },
46
+ "radius": {
47
+ "0": 1.271739130434783,
48
+ "1": 0.366304347826087,
49
+ "2": 0.7,
50
+ "3": 0.7
51
+ },
52
+ "sections": {
53
+ "0": 12,
54
+ "1": 10,
55
+ "2": 8,
56
+ "3": 6
57
+ },
58
+ "segments": {
59
+ "0": 8,
60
+ "1": 6,
61
+ "2": 4,
62
+ "3": 3
63
+ },
64
+ "start": {
65
+ "1": 0.29347826086956524,
66
+ "2": 0.14,
67
+ "3": 0.3
68
+ },
69
+ "taper": {
70
+ "0": 0.7,
71
+ "1": 0.7,
72
+ "2": 0.7,
73
+ "3": 0.7
74
+ },
75
+ "twist": {
76
+ "0": 0,
77
+ "1": 0,
78
+ "2": 0,
79
+ "3": 0
80
+ }
81
+ },
82
+ "leaves": {
83
+ "type": "pine",
84
+ "billboard": "double",
85
+ "angle": 17,
86
+ "count": 18,
87
+ "start": 0.07608695652173914,
88
+ "size": 2.608695652173913,
89
+ "sizeVariance": 0.201,
90
+ "tint": 16777215,
91
+ "alphaTest": 0.3
92
+ },
93
+ "trellis": {
94
+ "enabled": false
95
+ }
96
+ }
@@ -0,0 +1,96 @@
1
+ {
2
+ "seed": 13977,
3
+ "type": "evergreen",
4
+ "bark": {
5
+ "type": "pine",
6
+ "tint": 16777215,
7
+ "flatShading": false,
8
+ "textured": true,
9
+ "textureScale": {
10
+ "x": 1,
11
+ "y": 1
12
+ }
13
+ },
14
+ "branch": {
15
+ "levels": 1,
16
+ "angle": {
17
+ "1": 110,
18
+ "2": 16,
19
+ "3": 60
20
+ },
21
+ "children": {
22
+ "0": 82,
23
+ "1": 3,
24
+ "2": 5
25
+ },
26
+ "force": {
27
+ "direction": {
28
+ "x": 0,
29
+ "y": 1,
30
+ "z": 0
31
+ },
32
+ "strength": -0.003
33
+ },
34
+ "gnarliness": {
35
+ "0": 0.05,
36
+ "1": 0.08,
37
+ "2": 0,
38
+ "3": 0
39
+ },
40
+ "length": {
41
+ "0": 50,
42
+ "1": 23.87,
43
+ "2": 14.08,
44
+ "3": 1
45
+ },
46
+ "radius": {
47
+ "0": 1.05,
48
+ "1": 0.36,
49
+ "2": 0.7,
50
+ "3": 0.7
51
+ },
52
+ "sections": {
53
+ "0": 12,
54
+ "1": 10,
55
+ "2": 8,
56
+ "3": 6
57
+ },
58
+ "segments": {
59
+ "0": 8,
60
+ "1": 6,
61
+ "2": 4,
62
+ "3": 3
63
+ },
64
+ "start": {
65
+ "1": 0.27,
66
+ "2": 0.14,
67
+ "3": 0.3
68
+ },
69
+ "taper": {
70
+ "0": 0.7,
71
+ "1": 0.7,
72
+ "2": 0.7,
73
+ "3": 0.7
74
+ },
75
+ "twist": {
76
+ "0": 0,
77
+ "1": 0,
78
+ "2": 0,
79
+ "3": 0
80
+ }
81
+ },
82
+ "leaves": {
83
+ "type": "pine",
84
+ "billboard": "double",
85
+ "angle": 39,
86
+ "count": 30,
87
+ "start": 0.09,
88
+ "size": 1.435,
89
+ "sizeVariance": 0.201,
90
+ "tint": 16777215,
91
+ "alphaTest": 0.3
92
+ },
93
+ "trellis": {
94
+ "enabled": false
95
+ }
96
+ }
@@ -0,0 +1,96 @@
1
+ {
2
+ "seed": 11744,
3
+ "type": "evergreen",
4
+ "bark": {
5
+ "type": "pine",
6
+ "tint": 16777215,
7
+ "flatShading": false,
8
+ "textured": true,
9
+ "textureScale": {
10
+ "x": 1,
11
+ "y": 1
12
+ }
13
+ },
14
+ "branch": {
15
+ "levels": 1,
16
+ "angle": {
17
+ "1": 117,
18
+ "2": 60,
19
+ "3": 60
20
+ },
21
+ "children": {
22
+ "0": 91,
23
+ "1": 7,
24
+ "2": 5
25
+ },
26
+ "force": {
27
+ "direction": {
28
+ "x": 0,
29
+ "y": 1,
30
+ "z": 0
31
+ },
32
+ "strength": 0
33
+ },
34
+ "gnarliness": {
35
+ "0": 0.05,
36
+ "1": 0.08,
37
+ "2": 0,
38
+ "3": 0
39
+ },
40
+ "length": {
41
+ "0": 39.55,
42
+ "1": 12.12,
43
+ "2": 10,
44
+ "3": 1
45
+ },
46
+ "radius": {
47
+ "0": 0.55,
48
+ "1": 0.41,
49
+ "2": 0.7,
50
+ "3": 0.7
51
+ },
52
+ "sections": {
53
+ "0": 12,
54
+ "1": 10,
55
+ "2": 8,
56
+ "3": 6
57
+ },
58
+ "segments": {
59
+ "0": 8,
60
+ "1": 6,
61
+ "2": 4,
62
+ "3": 3
63
+ },
64
+ "start": {
65
+ "1": 0.16,
66
+ "2": 0.3,
67
+ "3": 0.3
68
+ },
69
+ "taper": {
70
+ "0": 0.7,
71
+ "1": 0.7,
72
+ "2": 0.7,
73
+ "3": 0.7
74
+ },
75
+ "twist": {
76
+ "0": 0,
77
+ "1": 0,
78
+ "2": 0,
79
+ "3": 0
80
+ }
81
+ },
82
+ "leaves": {
83
+ "type": "pine",
84
+ "billboard": "double",
85
+ "angle": 10,
86
+ "count": 21,
87
+ "start": 0,
88
+ "size": 0.965,
89
+ "sizeVariance": 0.7,
90
+ "tint": 16777215,
91
+ "alphaTest": 0.3
92
+ },
93
+ "trellis": {
94
+ "enabled": false
95
+ }
96
+ }