48 Commits

Author SHA1 Message Date
f920cdcaf5 i18n: fix translation 2025-09-04 10:01:41 +08:00
40cad381af i18n: update translation 2025-09-03 09:50:56 +08:00
0d20a1fe44 doc: update english doc 2025-09-02 13:51:51 +08:00
599e9a6ef0 doc: sync zh-cn doc to en doc 2025-09-01 13:59:31 +08:00
e22b888bfc doc: fix bme adder doc 2025-09-01 13:16:02 +08:00
88ef1d3202 doc: fix legacy align doc 2025-09-01 13:05:51 +08:00
f2af90c876 doc: fix export target for virtools exporting in doc 2025-09-01 12:56:19 +08:00
4dba3c3a71 doc: add game camera doc 2025-09-01 11:00:34 +08:00
e31a677d83 doc: add version rules in doc 2025-09-01 10:12:44 +08:00
35fcbe54b5 fix: re-design the layout of game camera.
- use more friendly layout in game camera. reported by zzq.
2025-08-30 22:50:43 +08:00
9e83fe0a10 i18n: update i18n
- update i18n template and translation.
- fix lost translation context in code.
2025-08-26 21:54:32 +08:00
33fb1a65d3 chore: remove useless gitkeep 2025-08-26 20:47:06 +08:00
415cc98758 doc: update document
- add hint for gray virtools import export button
- add outcome of leaving blank ballance texture folder setting.
- update compile chapter according to the change of build scripts.
2025-08-26 20:42:11 +08:00
2d93ce1340 feat: allow export all object for virtools file. 2025-08-26 19:59:36 +08:00
1129872234 fix: fix UTIL_naming_convention rename in i18n files. 2025-08-25 14:22:42 +08:00
2b2b18cfa4 fix: add error report for invalid file path when importing or exporting virtools file.
- add error report for invalid file path when importing or exporting virtools to avoid BMapException was thrown. Reported by SongRui
2025-08-25 14:09:10 +08:00
b19800e37f fix: fix bug that there is no preset encoding names.
- fix the issue that there is no preset encoding names in list when enable plugin without any extra operations.
2025-08-25 13:53:57 +08:00
e14729500c fix: fix rail adders poll issue
- add Ballance Texture requirement for all rail adders because they need it.
2025-08-25 13:24:15 +08:00
48bfc54830 i18n: modify i18n file batchly.
- update translation context in i18n files batchly due to previous BME prototype changes.
2025-08-25 13:13:42 +08:00
7e74e42bd7 feat: add BME category display in blender.
- add BME category display in blender, including add menu and side menu.
2025-08-25 13:07:55 +08:00
96a81b165b feat: add category fields for BME.
- add category for BME prorotypes.
- update validator and extractor for this change.
2025-08-25 10:30:44 +08:00
0681f0d240 fix: optimize the ui layout for BME boolean property. 2025-08-20 14:40:14 +08:00
d700f1276a fix: fix the wrong showcase type of Is Sink field in BME prototype Flat. 2025-08-20 14:32:57 +08:00
3bea3d67b9 feat: add OP_OBJECT_game_view operator.
- add OP_OBJECT_game_view operator for changing blender render resolution to some game resolution presets.
2025-08-18 21:55:15 +08:00
ec41b7553a feat: add game camera feature.
- add game camera operator which allow user see camera view as Ballance game presented.
2025-08-18 16:02:50 +08:00
9e2539499e fix: fix wrong UI words in legacy align. 2025-08-04 13:50:56 +08:00
3a5cd1c937 feat: support macos arm64 arch
- specially thank doyaGu for compiling macos arm64 BMap binary.
2025-08-04 11:22:09 +08:00
1afa5f9893 fix: change the shape of BME floor terminal.
- change the shape of all BME floor terminal (normal, sink and wide) from 5x2.5 to 5x5 requested by Zzq and Lee623.
- change icons according to above changes.
- add some comment in prototype files.
2025-08-01 15:13:38 +08:00
1383e87104 feat: allow 3D Cursor as align source in legacy align operator.
- allow 3D Cursor as align source in legacy align operator. this feature is requested by Zzq.
- add icon for legacy align.
2025-08-01 15:13:21 +08:00
a2b8f41a21 fix: fix performance after adding sidebar panel.
- resolve a performance issue by removing useless feature.
- more details about this issue can be seen the content inside this commit.
2025-07-31 16:50:32 +08:00
93f23abeb9 feat: add Ballance menu in 3d view sidebar for convenient adding. 2025-07-31 12:02:40 +08:00
4ba3ff9e5a fix: fix the aftermath of changing EnumPropHelper.
- fix the generic error of EnumPropHelper.
- use EnumPropHelper in UTIL_ioport_shared.ExportParams field instead of raw Blender string.
- remove useless type hint in various modules.
2025-07-30 13:35:36 +08:00
a9a889a8fd refactor: use generic type in EnumPropHelper
- use typing.Generic in EnumPropHelper and its child classes.
- change Doxygen docstring into reStructedText docstring.
2025-07-30 10:56:24 +08:00
fc34b19a42 feat: allow exporting selected objects as Virtools file
- add Selected Objects option in exporting Virtools file window requested by ZZQ.
2025-07-29 21:43:59 +08:00
9e65d258d7 refactor: use JSON5 instead of JSON for BME prototype.
- use JSON5 for BME prototype description file instead of JSON to make us have ability that make comment in declaration files (TBD in future).
- upgrade corresponding scripts.
- confirm the finish of upgrading script into modern Python.
2025-07-29 21:14:02 +08:00
ab266a07fb fix: fix BME JSONs validator error 2025-07-24 22:03:42 +08:00
61c7709b97 chore: finish BME JSON validator 2025-07-24 21:51:01 +08:00
1044d4b450 chore: remove useless scripts 2025-07-24 14:55:59 +08:00
54edc4dab7 chore: finish BME JSONs extractor 2025-07-24 14:51:05 +08:00
f40efb0467 chore: finish icons builder
- finish icons builder in scripts.
2025-07-24 14:00:25 +08:00
10de948a79 feat: update scripts
- add meshes builder (copyer).
- fix json compressor.
2025-07-24 10:16:58 +08:00
0ae95e927f refactor: re-layput project
- move assets (raw jsons, icons, meshes and i18n data) into the root of repo.
- move script into the root of repo.
- modify blender manifest according to this changes.
- optimize gitignore.
2025-07-24 09:44:38 +08:00
9f591113f8 refactor: refactor toolset (not finished) 2025-07-23 22:35:47 +08:00
685a0b8066 fix: rotate 4 flames when creating sector pair.
- according to Lee623 report, rotate 90 degree for 4 flames startpoint when creating sector pair to correspond with models in ballance asset library.
2025-07-18 14:42:33 +08:00
a1a215ec19 fix: fix span between checkpoint and resetpoint.
- change the span between checkpoint and resetpoint to prevent paper ball model respawn offset error.
- the span between 4 flames and resetpoint now is 3.65
- the span for 2 flames now is 3.3258
- these data were measured by Lee623 and picked by mode number in all original levels (because there is no uniform number in original levels).
2025-07-18 14:30:18 +08:00
3bed920f11 refactor: rename some operators and modules.
- rename module OP_MTL_fix_all_material to OP_MTL_fix_all_materials.
- rename operator BBP_OT_fix_all_material to BBP_OT_fix_all_materials.
- rename module UTIL_naming_convension to UTIL_naming_convention.
- change some translation contexts to correspond with this change.
2025-07-18 14:13:19 +08:00
6dc82aade6 doc: update fake-bpy-module.
- update fake-bpy-module for dev and write its version, which is suit for blender 4.5, in doc.
2025-07-18 09:43:27 +08:00
ac6692cd97 feat: bump version up to 4.3
- update blender version to 4.5 LTS.
- there is no compatibility issue when porting to blender 4.5.
- bump plugin version up to 4.3 in manifest and document (which has not been updated a while).
2025-07-17 20:08:07 +08:00
188 changed files with 13450 additions and 6860 deletions

11
.gitattributes vendored
View File

@ -1,7 +1,6 @@
# all png are binary # All PNG image are binary
*.png binary *.png binary
# our generated mesh should be save as binary # Element placeholder mesh should be save as binary
*.bin binary *.ph binary
# the raw json data should be binary # Raw json data should be binary, although i edit it manually
# although i edit it manually assets/jsons/*.json5 binary
bbp_ng/raw_jsons/*.json binary

4
.gitignore vendored
View File

@ -1,3 +1,3 @@
## ===== Personal ===== ## ===== Personal =====
# Disable distribution build folder # Disable VSCode
redist/ .vscode/

View File

Before

Width:  |  Height:  |  Size: 785 B

After

Width:  |  Height:  |  Size: 785 B

View File

Before

Width:  |  Height:  |  Size: 6.3 KiB

After

Width:  |  Height:  |  Size: 6.3 KiB

View File

Before

Width:  |  Height:  |  Size: 15 KiB

After

Width:  |  Height:  |  Size: 15 KiB

View File

Before

Width:  |  Height:  |  Size: 31 KiB

After

Width:  |  Height:  |  Size: 31 KiB

View File

Before

Width:  |  Height:  |  Size: 6.7 KiB

After

Width:  |  Height:  |  Size: 6.7 KiB

View File

Before

Width:  |  Height:  |  Size: 24 KiB

After

Width:  |  Height:  |  Size: 24 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 30 KiB

View File

Before

Width:  |  Height:  |  Size: 6.2 KiB

After

Width:  |  Height:  |  Size: 6.2 KiB

View File

Before

Width:  |  Height:  |  Size: 30 KiB

After

Width:  |  Height:  |  Size: 30 KiB

View File

Before

Width:  |  Height:  |  Size: 7.0 KiB

After

Width:  |  Height:  |  Size: 7.0 KiB

View File

Before

Width:  |  Height:  |  Size: 58 KiB

After

Width:  |  Height:  |  Size: 58 KiB

View File

Before

Width:  |  Height:  |  Size: 22 KiB

After

Width:  |  Height:  |  Size: 22 KiB

View File

Before

Width:  |  Height:  |  Size: 27 KiB

After

Width:  |  Height:  |  Size: 27 KiB

View File

Before

Width:  |  Height:  |  Size: 39 KiB

After

Width:  |  Height:  |  Size: 39 KiB

View File

Before

Width:  |  Height:  |  Size: 12 KiB

After

Width:  |  Height:  |  Size: 12 KiB

View File

Before

Width:  |  Height:  |  Size: 14 KiB

After

Width:  |  Height:  |  Size: 14 KiB

View File

Before

Width:  |  Height:  |  Size: 14 KiB

After

Width:  |  Height:  |  Size: 14 KiB

View File

Before

Width:  |  Height:  |  Size: 108 KiB

After

Width:  |  Height:  |  Size: 108 KiB

View File

Before

Width:  |  Height:  |  Size: 31 KiB

After

Width:  |  Height:  |  Size: 31 KiB

View File

Before

Width:  |  Height:  |  Size: 6.8 KiB

After

Width:  |  Height:  |  Size: 6.8 KiB

View File

Before

Width:  |  Height:  |  Size: 25 KiB

After

Width:  |  Height:  |  Size: 25 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 31 KiB

View File

Before

Width:  |  Height:  |  Size: 6.5 KiB

After

Width:  |  Height:  |  Size: 6.5 KiB

View File

Before

Width:  |  Height:  |  Size: 30 KiB

After

Width:  |  Height:  |  Size: 30 KiB

View File

Before

Width:  |  Height:  |  Size: 7.2 KiB

After

Width:  |  Height:  |  Size: 7.2 KiB

View File

Before

Width:  |  Height:  |  Size: 108 KiB

After

Width:  |  Height:  |  Size: 108 KiB

View File

Before

Width:  |  Height:  |  Size: 23 KiB

After

Width:  |  Height:  |  Size: 23 KiB

View File

Before

Width:  |  Height:  |  Size: 28 KiB

After

Width:  |  Height:  |  Size: 28 KiB

View File

Before

Width:  |  Height:  |  Size: 39 KiB

After

Width:  |  Height:  |  Size: 39 KiB

View File

Before

Width:  |  Height:  |  Size: 25 KiB

After

Width:  |  Height:  |  Size: 25 KiB

View File

Before

Width:  |  Height:  |  Size: 26 KiB

After

Width:  |  Height:  |  Size: 26 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 42 KiB

View File

Before

Width:  |  Height:  |  Size: 58 KiB

After

Width:  |  Height:  |  Size: 58 KiB

View File

Before

Width:  |  Height:  |  Size: 32 KiB

After

Width:  |  Height:  |  Size: 32 KiB

View File

Before

Width:  |  Height:  |  Size: 43 KiB

After

Width:  |  Height:  |  Size: 43 KiB

View File

Before

Width:  |  Height:  |  Size: 27 KiB

After

Width:  |  Height:  |  Size: 27 KiB

View File

Before

Width:  |  Height:  |  Size: 663 B

After

Width:  |  Height:  |  Size: 663 B

View File

Before

Width:  |  Height:  |  Size: 745 B

After

Width:  |  Height:  |  Size: 745 B

View File

Before

Width:  |  Height:  |  Size: 945 B

After

Width:  |  Height:  |  Size: 945 B

View File

Before

Width:  |  Height:  |  Size: 818 B

After

Width:  |  Height:  |  Size: 818 B

View File

Before

Width:  |  Height:  |  Size: 2.3 KiB

After

Width:  |  Height:  |  Size: 2.3 KiB

View File

Before

Width:  |  Height:  |  Size: 2.6 KiB

After

Width:  |  Height:  |  Size: 2.6 KiB

View File

Before

Width:  |  Height:  |  Size: 2.6 KiB

After

Width:  |  Height:  |  Size: 2.6 KiB

View File

Before

Width:  |  Height:  |  Size: 984 B

After

Width:  |  Height:  |  Size: 984 B

View File

Before

Width:  |  Height:  |  Size: 611 B

After

Width:  |  Height:  |  Size: 611 B

View File

Before

Width:  |  Height:  |  Size: 1.1 KiB

After

Width:  |  Height:  |  Size: 1.1 KiB

View File

Before

Width:  |  Height:  |  Size: 1.3 KiB

After

Width:  |  Height:  |  Size: 1.3 KiB

View File

Before

Width:  |  Height:  |  Size: 1.1 KiB

After

Width:  |  Height:  |  Size: 1.1 KiB

View File

Before

Width:  |  Height:  |  Size: 471 B

After

Width:  |  Height:  |  Size: 471 B

View File

Before

Width:  |  Height:  |  Size: 1.1 KiB

After

Width:  |  Height:  |  Size: 1.1 KiB

View File

Before

Width:  |  Height:  |  Size: 494 B

After

Width:  |  Height:  |  Size: 494 B

View File

Before

Width:  |  Height:  |  Size: 360 B

After

Width:  |  Height:  |  Size: 360 B

View File

Before

Width:  |  Height:  |  Size: 992 B

After

Width:  |  Height:  |  Size: 992 B

View File

Before

Width:  |  Height:  |  Size: 444 B

After

Width:  |  Height:  |  Size: 444 B

View File

Before

Width:  |  Height:  |  Size: 691 B

After

Width:  |  Height:  |  Size: 691 B

View File

Before

Width:  |  Height:  |  Size: 775 B

After

Width:  |  Height:  |  Size: 775 B

View File

Before

Width:  |  Height:  |  Size: 807 B

After

Width:  |  Height:  |  Size: 807 B

View File

Before

Width:  |  Height:  |  Size: 652 B

After

Width:  |  Height:  |  Size: 652 B

View File

Before

Width:  |  Height:  |  Size: 695 B

After

Width:  |  Height:  |  Size: 695 B

View File

Before

Width:  |  Height:  |  Size: 550 B

After

Width:  |  Height:  |  Size: 550 B

View File

Before

Width:  |  Height:  |  Size: 1.8 KiB

After

Width:  |  Height:  |  Size: 1.8 KiB

View File

Before

Width:  |  Height:  |  Size: 1.9 KiB

After

Width:  |  Height:  |  Size: 1.9 KiB

View File

Before

Width:  |  Height:  |  Size: 1.9 KiB

After

Width:  |  Height:  |  Size: 1.9 KiB

View File

Before

Width:  |  Height:  |  Size: 2.2 KiB

After

Width:  |  Height:  |  Size: 2.2 KiB

View File

Before

Width:  |  Height:  |  Size: 2.5 KiB

After

Width:  |  Height:  |  Size: 2.5 KiB

View File

Before

Width:  |  Height:  |  Size: 265 B

After

Width:  |  Height:  |  Size: 265 B

View File

@ -1,183 +1,185 @@
[ [
{ {
"identifier": "raw_floor_1x1", "identifier": "raw_floor_1x1",
"showcase": null, "showcase": null,
"params": [ "params": [
{ {
"field": "height", "field": "height",
"data": "5.0" "data": "5.0"
}, },
{ {
"field": "face", "field": "face",
"data": "(True, False, True, True, True, True)" "data": "(True, False, True, True, True, True)"
}, },
{ {
"field": "is_sink", "field": "is_sink",
"data": "False" "data": "False"
} }
], ],
"skip": "False", "skip": "False",
"vars": [], "vars": [],
"vertices": [], "vertices": [],
"faces": [], "faces": [],
"instances": [ "instances": [
{ {
"identifier": "cv_triangle_side", "identifier": "cv_triangle_side",
"skip": "False", "skip": "False",
"params": { "params": {
"edge_length": "5", "edge_length": "5",
"tip_offset": "2.5", "tip_offset": "2.5",
"height": "height", "height": "height",
"face": "(face[0], False, False, False, face[3], None)", "face": "(face[0], False, False, False, face[3], None)",
"is_sink": "is_sink" "is_sink": "is_sink"
}, },
"transform": "move(5, 0, 0) @ rot(0, 0, 90)" "transform": "move(5, 0, 0) @ rot(0, 0, 90)"
}, },
{ {
"identifier": "cv_triangle_side", "identifier": "cv_triangle_side",
"skip": "False", "skip": "False",
"params": { "params": {
"edge_length": "5", "edge_length": "5",
"tip_offset": "2.5", "tip_offset": "2.5",
"height": "height", "height": "height",
"face": "(face[0], False, False, False, face[5], None)", "face": "(face[0], False, False, False, face[5], None)",
"is_sink": "is_sink" "is_sink": "is_sink"
}, },
"transform": "move(5, 5, 0) @ rot(0, 0, 180)" "transform": "move(5, 5, 0) @ rot(0, 0, 180)"
}, },
{ {
"identifier": "cv_triangle_side", "identifier": "cv_triangle_side",
"skip": "False", "skip": "False",
"params": { "params": {
"edge_length": "5", "edge_length": "5",
"tip_offset": "2.5", "tip_offset": "2.5",
"height": "height", "height": "height",
"face": "(face[0], False, False, False, face[2], None)", "face": "(face[0], False, False, False, face[2], None)",
"is_sink": "is_sink" "is_sink": "is_sink"
}, },
"transform": "move(0, 5, 0) @ rot(0, 0, 270)" "transform": "move(0, 5, 0) @ rot(0, 0, 270)"
}, },
{ {
"identifier": "cv_triangle_side", "identifier": "cv_triangle_side",
"skip": "False", "skip": "False",
"params": { "params": {
"edge_length": "5", "edge_length": "5",
"tip_offset": "2.5", "tip_offset": "2.5",
"height": "height", "height": "height",
"face": "(face[0], False, False, False, face[4], None)", "face": "(face[0], False, False, False, face[4], None)",
"is_sink": "is_sink" "is_sink": "is_sink"
}, },
"transform": "ident()" "transform": "ident()"
}, },
{ {
"identifier": "floor_rectangle_bottom", "identifier": "floor_rectangle_bottom",
"skip": "not face[1]", "skip": "not face[1]",
"params": { "params": {
"length": "5", "length": "5",
"width": "5" "width": "5"
}, },
"transform": "move(0, 0, -height)" "transform": "move(0, 0, -height)"
} }
] ]
}, },
{ {
"identifier": "floor_normal_1x1", "identifier": "floor_normal_1x1",
"showcase": { "showcase": {
"title": "Normal 1x1", "title": "Normal 1x1",
"icon": "Normal1x1", "category": "1x1 Blocks",
"type": "floor", "icon": "Normal1x1",
"cfgs": [ "type": "floor",
{ "cfgs": [
"field": "height_", {
"type": "float", "field": "height_",
"title": "Height", "type": "float",
"desc": "The height of block.", "title": "Height",
"default": "5.0" "desc": "The height of block.",
}, "default": "5.0"
{ },
"field": "face_", {
"type": "face", "field": "face_",
"title": "Face", "type": "face",
"desc": "Whether has some faces.", "title": "Face",
"default": "(True, False, True, True, True, True)" "desc": "Whether has some faces.",
} "default": "(True, False, True, True, True, True)"
] }
}, ]
"params": [ },
{ "params": [
"field": "height", {
"data": "height_" "field": "height",
}, "data": "height_"
{ },
"field": "face", {
"data": "face_" "field": "face",
} "data": "face_"
], }
"skip": "False", ],
"vars": [], "skip": "False",
"vertices": [], "vars": [],
"faces": [], "vertices": [],
"instances": [ "faces": [],
{ "instances": [
"identifier": "raw_floor_1x1", {
"skip": "False", "identifier": "raw_floor_1x1",
"params": { "skip": "False",
"height": "height", "params": {
"face": "face", "height": "height",
"is_sink": "False" "face": "face",
}, "is_sink": "False"
"transform": "ident()" },
} "transform": "ident()"
] }
}, ]
{ },
"identifier": "floor_sink_1x1", {
"showcase": { "identifier": "floor_sink_1x1",
"title": "Sink 1x1", "showcase": {
"icon": "Sink1x1", "title": "Sink 1x1",
"type": "floor", "category": "1x1 Blocks",
"cfgs": [ "icon": "Sink1x1",
{ "type": "floor",
"field": "height_", "cfgs": [
"type": "float", {
"title": "Height", "field": "height_",
"desc": "The height of block.", "type": "float",
"default": "5.0" "title": "Height",
}, "desc": "The height of block.",
{ "default": "5.0"
"field": "face_", },
"type": "face", {
"title": "Face", "field": "face_",
"desc": "Whether has some faces.", "type": "face",
"default": "(True, False, True, True, True, True)" "title": "Face",
} "desc": "Whether has some faces.",
] "default": "(True, False, True, True, True, True)"
}, }
"params": [ ]
{ },
"field": "height", "params": [
"data": "height_" {
}, "field": "height",
{ "data": "height_"
"field": "face", },
"data": "face_" {
} "field": "face",
], "data": "face_"
"skip": "False", }
"vars": [], ],
"vertices": [], "skip": "False",
"faces": [], "vars": [],
"instances": [ "vertices": [],
{ "faces": [],
"identifier": "raw_floor_1x1", "instances": [
"skip": "False", {
"params": { "identifier": "raw_floor_1x1",
"height": "height", "skip": "False",
"face": "face", "params": {
"is_sink": "True" "height": "height",
}, "face": "face",
"transform": "ident()" "is_sink": "True"
} },
] "transform": "ident()"
} }
]
}
] ]

View File

@ -1,237 +1,240 @@
[ [
{ {
"identifier": "raw_floor_border", "identifier": "raw_floor_border",
"showcase": null, "showcase": null,
"params": [ "params": [
{ {
"field": "length", "field": "length",
"data": "5.0" "data": "5.0"
}, },
{ {
"field": "height", "field": "height",
"data": "5.0" "data": "5.0"
}, },
{ {
"field": "face", "field": "face",
"data": "(True, False, False, False, True, False)" "data": "(True, False, False, False, True, False)"
}, },
{ {
"field": "is_sink", "field": "is_sink",
"data": "False" "data": "False"
}, },
{ {
"field": "is_ribbon", "field": "is_ribbon",
"data": "False" "data": "False"
} }
], ],
"skip": "length == 0.0", "skip": "length == 0.0",
"vars": [], "vars": [],
"vertices": [], "vertices": [],
"faces": [], "faces": [],
"instances": [ "instances": [
{ {
"identifier": "cv_trapezoid_side", "identifier": "cv_trapezoid_side",
"skip": "False", "skip": "False",
"params": { "params": {
"long_edge_length": "length", "long_edge_length": "length",
"short_edge_offset": "0", "short_edge_offset": "0",
"short_edge_length": "length", "short_edge_length": "length",
"height": "height", "height": "height",
"face": "face", "face": "face",
"is_sink": "is_sink", "is_sink": "is_sink",
"is_ribbon": "is_ribbon" "is_ribbon": "is_ribbon"
}, },
"transform": "ident()" "transform": "ident()"
} }
] ]
}, },
{ {
"identifier": "floor_normal_border", "identifier": "floor_normal_border",
"showcase": { "showcase": {
"title": "Normal Border", "title": "Normal Border",
"icon": "NormalBorder", "category": "Borders",
"type": "floor", "icon": "NormalBorder",
"cfgs": [ "type": "floor",
{ "cfgs": [
"field": "length_", {
"type": "float", "field": "length_",
"title": "Length", "type": "float",
"desc": "The length of block.", "title": "Length",
"default": "2.5" "desc": "The length of block.",
}, "default": "2.5"
{ },
"field": "height_", {
"type": "float", "field": "height_",
"title": "Height", "type": "float",
"desc": "The height of block.", "title": "Height",
"default": "5.0" "desc": "The height of block.",
}, "default": "5.0"
{ },
"field": "face_", {
"type": "face", "field": "face_",
"title": "Face", "type": "face",
"desc": "Whether has some faces.", "title": "Face",
"default": "(True, False, False, False, True, False)" "desc": "Whether has some faces.",
} "default": "(True, False, False, False, True, False)"
] }
}, ]
"params": [ },
{ "params": [
"field": "length", {
"data": "length_" "field": "length",
}, "data": "length_"
{ },
"field": "height", {
"data": "height_" "field": "height",
}, "data": "height_"
{ },
"field": "face", {
"data": "face_" "field": "face",
} "data": "face_"
], }
"skip": "False", ],
"vars": [], "skip": "False",
"vertices": [], "vars": [],
"faces": [], "vertices": [],
"instances": [ "faces": [],
{ "instances": [
"identifier": "raw_floor_border", {
"skip": "False", "identifier": "raw_floor_border",
"params": { "skip": "False",
"length": "length", "params": {
"height": "height", "length": "length",
"face": "face", "height": "height",
"is_sink": "False", "face": "face",
"is_ribbon": "False" "is_sink": "False",
}, "is_ribbon": "False"
"transform": "ident()" },
} "transform": "ident()"
] }
}, ]
{ },
"identifier": "floor_sink_border", {
"showcase": { "identifier": "floor_sink_border",
"title": "Sink Border", "showcase": {
"icon": "SinkBorder", "title": "Sink Border",
"type": "floor", "category": "Borders",
"cfgs": [ "icon": "SinkBorder",
{ "type": "floor",
"field": "length_", "cfgs": [
"type": "float", {
"title": "Length", "field": "length_",
"desc": "The length of block.", "type": "float",
"default": "2.5" "title": "Length",
}, "desc": "The length of block.",
{ "default": "2.5"
"field": "height_", },
"type": "float", {
"title": "Height", "field": "height_",
"desc": "The height of block.", "type": "float",
"default": "5.0" "title": "Height",
}, "desc": "The height of block.",
{ "default": "5.0"
"field": "face_", },
"type": "face", {
"title": "Face", "field": "face_",
"desc": "Whether has some faces.", "type": "face",
"default": "(True, False, False, False, True, False)" "title": "Face",
} "desc": "Whether has some faces.",
] "default": "(True, False, False, False, True, False)"
}, }
"params": [ ]
{ },
"field": "length", "params": [
"data": "length_" {
}, "field": "length",
{ "data": "length_"
"field": "height", },
"data": "height_" {
}, "field": "height",
{ "data": "height_"
"field": "face", },
"data": "face_" {
} "field": "face",
], "data": "face_"
"skip": "False", }
"vars": [], ],
"vertices": [], "skip": "False",
"faces": [], "vars": [],
"instances": [ "vertices": [],
{ "faces": [],
"identifier": "raw_floor_border", "instances": [
"skip": "False", {
"params": { "identifier": "raw_floor_border",
"length": "length", "skip": "False",
"height": "height", "params": {
"face": "face", "length": "length",
"is_sink": "True", "height": "height",
"is_ribbon": "False" "face": "face",
}, "is_sink": "True",
"transform": "ident()" "is_ribbon": "False"
} },
] "transform": "ident()"
}, }
{ ]
"identifier": "floor_ribbon_border", },
"showcase": { {
"title": "Ribbon Border", "identifier": "floor_ribbon_border",
"icon": "RibbonBorder", "showcase": {
"type": "floor", "title": "Ribbon Border",
"cfgs": [ "category": "Borders",
{ "icon": "RibbonBorder",
"field": "length_", "type": "floor",
"type": "float", "cfgs": [
"title": "Length", {
"desc": "The length of block.", "field": "length_",
"default": "2.5" "type": "float",
}, "title": "Length",
{ "desc": "The length of block.",
"field": "height_", "default": "2.5"
"type": "float", },
"title": "Height", {
"desc": "The height of block.", "field": "height_",
"default": "5.0" "type": "float",
}, "title": "Height",
{ "desc": "The height of block.",
"field": "face_", "default": "5.0"
"type": "face", },
"title": "Face", {
"desc": "Whether has some faces.", "field": "face_",
"default": "(True, False, False, False, True, False)" "type": "face",
} "title": "Face",
] "desc": "Whether has some faces.",
}, "default": "(True, False, False, False, True, False)"
"params": [ }
{ ]
"field": "length", },
"data": "length_" "params": [
}, {
{ "field": "length",
"field": "height", "data": "length_"
"data": "height_" },
}, {
{ "field": "height",
"field": "face", "data": "height_"
"data": "face_" },
} {
], "field": "face",
"skip": "False", "data": "face_"
"vars": [], }
"vertices": [], ],
"faces": [], "skip": "False",
"instances": [ "vars": [],
{ "vertices": [],
"identifier": "raw_floor_border", "faces": [],
"skip": "False", "instances": [
"params": { {
"length": "length", "identifier": "raw_floor_border",
"height": "height", "skip": "False",
"face": "face", "params": {
"is_sink": "True", "length": "length",
"is_ribbon": "True" "height": "height",
}, "face": "face",
"transform": "ident()" "is_sink": "True",
} "is_ribbon": "True"
] },
} "transform": "ident()"
}
]
}
] ]

View File

@ -1,414 +1,427 @@
[ [
{ // One of Chris suggested more vanilla prototypes.
"identifier": "cv_trapezoid_side", // This prototype represent a half of a normal, sink or double ribbon border,
"showcase": null, // which looks like trapezoid from top to bottom.
"params": [ //
{ // The bottom edge of trapezoid is from origin to +X with `long_edge_length` length.
"field": "long_edge_length", // The length of top edge is `short_edge_length` and it just like moving bottom edge to +Y direction.
"data": "5.0" // The offset between top edge and bottom edge is always 2.5.
}, // The distance from the closest point of top edge, to Y axis is `short_edge_offset`.
{ {
"field": "short_edge_offset", "identifier": "cv_trapezoid_side",
"data": "0.0" "showcase": null,
}, "params": [
{ {
"field": "short_edge_length", "field": "long_edge_length",
"data": "5.0" "data": "5.0"
}, },
{ {
"field": "height", "field": "short_edge_offset",
"data": "5.0" "data": "0.0"
}, },
{ {
"field": "face", "field": "short_edge_length",
"data": "(True, False, False, False, True, False)" "data": "5.0"
}, },
{ {
"field": "is_sink", "field": "height",
"data": "False" "data": "5.0"
}, },
{ {
"field": "is_ribbon", "field": "face",
"data": "False" "data": "(True, False, False, False, True, False)"
} },
], {
"skip": "long_edge_length == 0.0 or short_edge_length == 0.0", "field": "is_sink",
"vars": [ "data": "False"
{ },
"field": "long_edge_uv_length", {
"data": "long_edge_length / 5.0" "field": "is_ribbon",
}, "data": "False"
{ }
"field": "short_edge_uv_offset", ],
"data": "short_edge_offset / 5.0" "skip": "long_edge_length == 0.0 or short_edge_length == 0.0",
}, "vars": [
{ {
"field": "short_edge_uv_length", "field": "long_edge_uv_length",
"data": "short_edge_length / 5.0" "data": "long_edge_length / 5.0"
}, },
{ {
"field": "short_edge_total", "field": "short_edge_uv_offset",
"data": "short_edge_offset + short_edge_length" "data": "short_edge_offset / 5.0"
}, },
{ {
"field": "short_edge_uv_total", "field": "short_edge_uv_length",
"data": "short_edge_uv_offset + short_edge_uv_length" "data": "short_edge_length / 5.0"
}, },
{ {
"field": "uv_border_texture", "field": "short_edge_total",
"data": "1.0 if is_ribbon else 0.5" "data": "short_edge_offset + short_edge_length"
}, },
{ {
"field": "sink", "field": "short_edge_uv_total",
"data": "0.7 if is_sink else 0.0" "data": "short_edge_uv_offset + short_edge_uv_length"
} },
], {
"vertices": [ "field": "uv_border_texture",
{ "data": "1.0 if is_ribbon else 0.5"
"skip": "not face[0]", },
"data": "(0, 0, 0)" {
}, "field": "sink",
{ "data": "0.7 if is_sink else 0.0"
"skip": "not face[0]", }
"data": "(short_edge_offset, 2.5, -sink)" ],
}, "vertices": [
{ {
"skip": "not face[0]", "skip": "not face[0]",
"data": "(long_edge_length, 0, 0)" "data": "(0, 0, 0)"
}, },
{ {
"skip": "not face[0]", "skip": "not face[0]",
"data": "(short_edge_total, 2.5, -sink)" "data": "(short_edge_offset, 2.5, -sink)"
} },
], {
"faces": [ "skip": "not face[0]",
{ "data": "(long_edge_length, 0, 0)"
"skip": "not face[0]", },
"texture": "(\"FloorTopFlat\" if is_ribbon else \"FloorTopProfil\") if is_sink else \"FloorTopBorder\"", {
"indices": [0, 2, 3, 1], "skip": "not face[0]",
"uvs": [ "data": "(short_edge_total, 2.5, -sink)"
"(0, 0)", }
"(0, long_edge_uv_length)", ],
"(uv_border_texture, short_edge_uv_total)", "faces": [
"(uv_border_texture, short_edge_uv_offset)" {
], "skip": "not face[0]",
"normals": null "texture": "(\"FloorTopFlat\" if is_ribbon else \"FloorTopProfil\") if is_sink else \"FloorTopBorder\"",
} "indices": [0, 2, 3, 1],
], "uvs": [
"instances": [ "(0, 0)",
{ "(0, long_edge_uv_length)",
"identifier": "raw_floor_side", "(uv_border_texture, short_edge_uv_total)",
"skip": "not face[4]", "(uv_border_texture, short_edge_uv_offset)"
"params": { ],
"height": "height", "normals": null
"length": "long_edge_length", }
"is_left_sink": "False", ],
"is_right_sink": "False" "instances": [
}, {
"transform": "ident()" "identifier": "raw_floor_side",
}, "skip": "not face[4]",
{ "params": {
"identifier": "raw_floor_side", "height": "height",
"skip": "not face[2]", "length": "long_edge_length",
"params": { "is_left_sink": "False",
"height": "height", "is_right_sink": "False"
"length": "distance(0, 0, short_edge_offset, 2.5)", },
"is_left_sink": "False", "transform": "ident()"
"is_right_sink": "is_sink" },
}, {
"transform": "rot(0, 0, angle(0, 0, short_edge_offset, 2.5)) @ scale(1, -1, 1)" "identifier": "raw_floor_side",
}, "skip": "not face[2]",
{ "params": {
"identifier": "raw_floor_side", "height": "height",
"skip": "not face[3]", "length": "distance(0, 0, short_edge_offset, 2.5)",
"params": { "is_left_sink": "False",
"height": "height", "is_right_sink": "is_sink"
"length": "distance(long_edge_length, 0, short_edge_total, 2.5)", },
"is_left_sink": "False", "transform": "rot(0, 0, angle(0, 0, short_edge_offset, 2.5)) @ scale(1, -1, 1)"
"is_right_sink": "is_sink" },
}, {
"transform": "move(long_edge_length, 0, 0) @ rot(0, 0, angle(long_edge_length, 0, short_edge_total, 2.5))" "identifier": "raw_floor_side",
}, "skip": "not face[3]",
{ "params": {
"identifier": "raw_floor_side", "height": "height",
"skip": "not face[5]", "length": "distance(long_edge_length, 0, short_edge_total, 2.5)",
"params": { "is_left_sink": "False",
"height": "height", "is_right_sink": "is_sink"
"length": "short_edge_length", },
"is_left_sink": "is_sink", "transform": "move(long_edge_length, 0, 0) @ rot(0, 0, angle(long_edge_length, 0, short_edge_total, 2.5))"
"is_right_sink": "is_sink" },
}, {
"transform": "move(short_edge_offset, 2.5, 0) @ scale(1, -1, 1)" "identifier": "raw_floor_side",
}, "skip": "not face[5]",
{ "params": {
"identifier": "floor_4edges_bottom", "height": "height",
"skip": "not face[1]", "length": "short_edge_length",
"params": { "is_left_sink": "is_sink",
"top_left_pos": "(0, 0)", "is_right_sink": "is_sink"
"top_right_pos": "(short_edge_offset, 2.5)", },
"bottom_left_pos": "(long_edge_length, 0)", "transform": "move(short_edge_offset, 2.5, 0) @ scale(1, -1, 1)"
"bottom_right_pos": "(short_edge_total, 2.5)" },
}, {
"transform": "move(0, 0, -height)" "identifier": "floor_4edges_bottom",
} "skip": "not face[1]",
] "params": {
}, "top_left_pos": "(0, 0)",
{ "top_right_pos": "(short_edge_offset, 2.5)",
"identifier": "cv_triangle_side", "bottom_left_pos": "(long_edge_length, 0)",
"showcase": null, "bottom_right_pos": "(short_edge_total, 2.5)"
"params": [ },
{ "transform": "move(0, 0, -height)"
"field": "edge_length", }
"data": "5.0" ]
}, },
{ // Same as previous one, but looks like triangle from top to bottom.
"field": "tip_offset", //
"data": "2.5" // The bottom edge is from origin to +X with `edge_length` length.
}, // The tip is going to +Y.
{ // The height of this triangle is always 2.5 and the offset between tip and Y axis is `tip_offset`.
"field": "height", {
"data": "5.0" "identifier": "cv_triangle_side",
}, "showcase": null,
{ "params": [
"field": "face", {
"data": "(True, False, False, False, True, None)" "field": "edge_length",
}, "data": "5.0"
{ },
"field": "is_sink", {
"data": "False" "field": "tip_offset",
} "data": "2.5"
], },
"skip": "edge_length == 0.0", {
"vars": [ "field": "height",
{ "data": "5.0"
"field": "edge_uv_length", },
"data": "edge_length / 5.0" {
}, "field": "face",
{ "data": "(True, False, False, False, True, None)"
"field": "tip_uv_offset", },
"data": "tip_offset / 5.0" {
}, "field": "is_sink",
{ "data": "False"
"field": "sink", }
"data": "0.7 if is_sink else 0.0" ],
} "skip": "edge_length == 0.0",
], "vars": [
"vertices": [ {
{ "field": "edge_uv_length",
"skip": "not face[0]", "data": "edge_length / 5.0"
"data": "(0, 0, 0)" },
}, {
{ "field": "tip_uv_offset",
"skip": "not face[0]", "data": "tip_offset / 5.0"
"data": "(tip_offset, 2.5, -sink)" },
}, {
{ "field": "sink",
"skip": "not face[0]", "data": "0.7 if is_sink else 0.0"
"data": "(edge_length, 0, 0)" }
} ],
], "vertices": [
"faces": [ {
{ "skip": "not face[0]",
"skip": "not face[0]", "data": "(0, 0, 0)"
"texture": "\"FloorTopProfil\" if is_sink else \"FloorTopBorder\"", },
"indices": [0, 2, 1], {
"uvs": [ "skip": "not face[0]",
"(0, 0)", "data": "(tip_offset, 2.5, -sink)"
"(0, edge_uv_length)", },
"(0.5, tip_uv_offset)" {
], "skip": "not face[0]",
"normals": null "data": "(edge_length, 0, 0)"
} }
], ],
"instances": [ "faces": [
{ {
"identifier": "raw_floor_side", "skip": "not face[0]",
"skip": "not face[4]", "texture": "\"FloorTopProfil\" if is_sink else \"FloorTopBorder\"",
"params": { "indices": [0, 2, 1],
"height": "height", "uvs": [
"length": "edge_length", "(0, 0)",
"is_left_sink": "False", "(0, edge_uv_length)",
"is_right_sink": "False" "(0.5, tip_uv_offset)"
}, ],
"transform": "ident()" "normals": null
}, }
{ ],
"identifier": "raw_floor_side", "instances": [
"skip": "not face[2]", {
"params": { "identifier": "raw_floor_side",
"height": "height", "skip": "not face[4]",
"length": "distance(0, 0, tip_offset, 2.5)", "params": {
"is_left_sink": "False", "height": "height",
"is_right_sink": "is_sink" "length": "edge_length",
}, "is_left_sink": "False",
"transform": "rot(0, 0, angle(0, 0, tip_offset, 2.5)) @ scale(1, -1, 1)" "is_right_sink": "False"
}, },
{ "transform": "ident()"
"identifier": "raw_floor_side", },
"skip": "not face[3]", {
"params": { "identifier": "raw_floor_side",
"height": "height", "skip": "not face[2]",
"length": "distance(edge_length, 0, tip_offset, 2.5)", "params": {
"is_left_sink": "False", "height": "height",
"is_right_sink": "is_sink" "length": "distance(0, 0, tip_offset, 2.5)",
}, "is_left_sink": "False",
"transform": "move(edge_length, 0, 0) @ rot(0, 0, angle(edge_length, 0, tip_offset, 2.5))" "is_right_sink": "is_sink"
}, },
{ "transform": "rot(0, 0, angle(0, 0, tip_offset, 2.5)) @ scale(1, -1, 1)"
"identifier": "floor_triangle_bottom", },
"skip": "not face[1]", {
"params": { "identifier": "raw_floor_side",
"length": "edge_length", "skip": "not face[3]",
"width": "2.5", "params": {
"tip_offset": "tip_offset" "height": "height",
}, "length": "distance(edge_length, 0, tip_offset, 2.5)",
"transform": "move(0, 0, -height)" "is_left_sink": "False",
} "is_right_sink": "is_sink"
] },
}, "transform": "move(edge_length, 0, 0) @ rot(0, 0, angle(edge_length, 0, tip_offset, 2.5))"
{ },
"identifier": "cv_triangle_center", {
"showcase": null, "identifier": "floor_triangle_bottom",
"params": [ "skip": "not face[1]",
{ "params": {
"field": "height", "length": "edge_length",
"data": "5.0" "width": "2.5",
}, "tip_offset": "tip_offset"
{ },
"field": "face", "transform": "move(0, 0, -height)"
"data": "(True, False, False, False, True, None)" }
}, ]
{ },
"field": "is_sink", {
"data": "False" "identifier": "cv_triangle_center",
} "showcase": null,
], "params": [
"skip": "False", {
"vars": [ "field": "height",
{ "data": "5.0"
"field": "sink", },
"data": "0.7 if is_sink else 0.0" {
} "field": "face",
], "data": "(True, False, False, False, True, None)"
"vertices": [ },
{ {
"skip": "not face[0]", "field": "is_sink",
"data": "(0, 0, 0)" "data": "False"
}, }
{ ],
"skip": "not face[0]", "skip": "False",
"data": "(5, 0, 0)" "vars": [
}, {
{ "field": "sink",
"skip": "not face[0]", "data": "0.7 if is_sink else 0.0"
"data": "(2.5, 2.5, -sink)" }
}, ],
{ "vertices": [
"skip": "(not face[0]) or (not is_sink)", {
"data": "(2.5, 0, -sink)" "skip": "not face[0]",
} "data": "(0, 0, 0)"
], },
"faces": [ {
{ "skip": "not face[0]",
"skip": "(not face[0]) or is_sink", "data": "(5, 0, 0)"
"texture": "\"FloorTopFlat\"", },
"indices": [0, 1, 2], {
"uvs": [ "skip": "not face[0]",
"(0, 0)", "data": "(2.5, 2.5, -sink)"
"(1, 0)", },
"(0.5, 0.5)" {
], "skip": "(not face[0]) or (not is_sink)",
"normals": null "data": "(2.5, 0, -sink)"
}, }
{ ],
"skip": "(not face[0]) or (not is_sink)", "faces": [
"texture": "\"FloorTopProfil\"", {
"indices": [0, 3, 2], "skip": "(not face[0]) or is_sink",
"uvs": [ "texture": "\"FloorTopFlat\"",
"(0, 0)", "indices": [0, 1, 2],
"(0.5, 0)", "uvs": [
"(0.5, 0.5)" "(0, 0)",
], "(1, 0)",
"normals": null "(0.5, 0.5)"
}, ],
{ "normals": null
"skip": "(not face[0]) or (not is_sink)", },
"texture": "\"FloorTopProfil\"", {
"indices": [3, 1, 2], "skip": "(not face[0]) or (not is_sink)",
"uvs": [ "texture": "\"FloorTopProfil\"",
"(0.5, 0)", "indices": [0, 3, 2],
"(1, 0)", "uvs": [
"(0.5, 0.5)" "(0, 0)",
], "(0.5, 0)",
"normals": null "(0.5, 0.5)"
} ],
], "normals": null
"instances": [ },
{ {
"identifier": "raw_floor_side", "skip": "(not face[0]) or (not is_sink)",
"skip": "not face[2]", "texture": "\"FloorTopProfil\"",
"params": { "indices": [3, 1, 2],
"height": "height", "uvs": [
"length": "distance(0, 0, 2.5, 2.5)", "(0.5, 0)",
"is_left_sink": "False", "(1, 0)",
"is_right_sink": "is_sink" "(0.5, 0.5)"
}, ],
"transform": "rot(0, 0, 45)" "normals": null
}, }
{ ],
"identifier": "raw_floor_side", "instances": [
"skip": "not face[3]", {
"params": { "identifier": "raw_floor_side",
"height": "height", "skip": "not face[2]",
"length": "distance(5, 0, 2.5, 2.5)", "params": {
"is_left_sink": "False", "height": "height",
"is_right_sink": "is_sink" "length": "distance(0, 0, 2.5, 2.5)",
}, "is_left_sink": "False",
"transform": "move(5, 0, 0) @ rot(0, 0, 135)" "is_right_sink": "is_sink"
}, },
{ "transform": "rot(0, 0, 45)"
"identifier": "raw_floor_side", },
"skip": "(not face[4]) or (not is_sink)", {
"params": { "identifier": "raw_floor_side",
"height": "height", "skip": "not face[3]",
"length": "2.5", "params": {
"is_left_sink": "False", "height": "height",
"is_right_sink": "True" "length": "distance(5, 0, 2.5, 2.5)",
}, "is_left_sink": "False",
"transform": "ident()" "is_right_sink": "is_sink"
}, },
{ "transform": "move(5, 0, 0) @ rot(0, 0, 135)"
"identifier": "raw_floor_side", },
"skip": "(not face[4]) or (not is_sink)", {
"params": { "identifier": "raw_floor_side",
"height": "height", "skip": "(not face[4]) or (not is_sink)",
"length": "2.5", "params": {
"is_left_sink": "True", "height": "height",
"is_right_sink": "False" "length": "2.5",
}, "is_left_sink": "False",
"transform": "move(2.5, 0, 0)" "is_right_sink": "True"
}, },
{ "transform": "ident()"
"identifier": "raw_floor_side", },
"skip": "(not face[4]) or is_sink", {
"params": { "identifier": "raw_floor_side",
"height": "height", "skip": "(not face[4]) or (not is_sink)",
"length": "5", "params": {
"is_left_sink": "False", "height": "height",
"is_right_sink": "False" "length": "2.5",
}, "is_left_sink": "True",
"transform": "ident()" "is_right_sink": "False"
}, },
{ "transform": "move(2.5, 0, 0)"
"identifier": "floor_triangle_bottom", },
"skip": "not face[1]", {
"params": { "identifier": "raw_floor_side",
"length": "5", "skip": "(not face[4]) or is_sink",
"width": "2.5", "params": {
"tip_offset": "2.5" "height": "height",
}, "length": "5",
"transform": "move(0, 0, -height)" "is_left_sink": "False",
} "is_right_sink": "False"
] },
} "transform": "ident()"
},
{
"identifier": "floor_triangle_bottom",
"skip": "not face[1]",
"params": {
"length": "5",
"width": "2.5",
"tip_offset": "2.5"
},
"transform": "move(0, 0, -height)"
}
]
}
] ]

View File

@ -1,460 +1,466 @@
[ [
{ {
"identifier": "raw_floor_corner", "identifier": "raw_floor_corner",
"showcase": null, "showcase": null,
"params": [ "params": [
{ {
"field": "height", "field": "height",
"data": "5.0" "data": "5.0"
}, },
{ {
"field": "face", "field": "face",
"data": "(True, False, False, False, False, False)" "data": "(True, False, False, False, False, False)"
}, },
{ {
"field": "is_sink", "field": "is_sink",
"data": "False" "data": "False"
}, },
{ {
"field": "is_inner", "field": "is_inner",
"data": "False" "data": "False"
}, },
{ {
"field": "is_ribbon", "field": "is_ribbon",
"data": "False" "data": "False"
} }
], ],
"skip": "False", "skip": "False",
"vars": [ "vars": [
{ {
"field": "PXPY_sink", "field": "PXPY_sink",
"data": "0.7 if (is_sink and (not is_inner)) else 0" "data": "0.7 if (is_sink and (not is_inner)) else 0"
}, },
{ {
"field": "NXNY_sink", "field": "NXNY_sink",
"data": "0.7 if (is_sink and is_inner) else 0" "data": "0.7 if (is_sink and is_inner) else 0"
}, },
{ {
"field": "PXPY_uv", "field": "PXPY_uv",
"data": "(0 if is_inner else 0.5) * (2 if is_ribbon else 1)" "data": "(0 if is_inner else 0.5) * (2 if is_ribbon else 1)"
}, },
{ {
"field": "NXNY_uv", "field": "NXNY_uv",
"data": "(0.5 if is_inner else 0) * (2 if is_ribbon else 1)" "data": "(0.5 if is_inner else 0) * (2 if is_ribbon else 1)"
}, },
{ {
"field": "corner_texture", "field": "corner_texture",
"data": "(\"FloorTopFlat\" if is_ribbon else \"FloorTopProfil\") if is_sink else \"FloorTopBorder\"" "data": "(\"FloorTopFlat\" if is_ribbon else \"FloorTopProfil\") if is_sink else \"FloorTopBorder\""
} }
], ],
"vertices": [ "vertices": [
{ {
"skip": "not face[0]", "skip": "not face[0]",
"data": "(0, 0, -NXNY_sink)" "data": "(0, 0, -NXNY_sink)"
}, },
{ {
"skip": "not face[0]", "skip": "not face[0]",
"data": "(2.5, 0, -NXNY_sink)" "data": "(2.5, 0, -NXNY_sink)"
}, },
{ {
"skip": "not face[0]", "skip": "not face[0]",
"data": "(2.5, 2.5, -PXPY_sink)" "data": "(2.5, 2.5, -PXPY_sink)"
}, },
{ {
"skip": "not face[0]", "skip": "not face[0]",
"data": "(0, 2.5, -NXNY_sink)" "data": "(0, 2.5, -NXNY_sink)"
} }
], ],
"faces": [ "faces": [
{ {
"skip": "not face[0]", "skip": "not face[0]",
"texture": "corner_texture", "texture": "corner_texture",
"indices": [0, 1, 2], "indices": [0, 1, 2],
"uvs": [ "uvs": [
"(NXNY_uv, 0.5)", "(NXNY_uv, 0.5)",
"(NXNY_uv, 0)", "(NXNY_uv, 0)",
"(PXPY_uv, 0)" "(PXPY_uv, 0)"
], ],
"normals": null "normals": null
}, },
{ {
"skip": "not face[0]", "skip": "not face[0]",
"texture": "corner_texture", "texture": "corner_texture",
"indices": [0, 2, 3], "indices": [0, 2, 3],
"uvs": [ "uvs": [
"(NXNY_uv, 0.5)", "(NXNY_uv, 0.5)",
"(PXPY_uv, 0)", "(PXPY_uv, 0)",
"(NXNY_uv, 0)" "(NXNY_uv, 0)"
], ],
"normals": null "normals": null
} }
], ],
"instances": [ "instances": [
{ {
"identifier": "raw_floor_side", "identifier": "raw_floor_side",
"skip": "not face[4]", "skip": "not face[4]",
"params": { "params": {
"height": "height", "height": "height",
"length": "2.5", "length": "2.5",
"is_left_sink": "NXNY_sink != 0", "is_left_sink": "NXNY_sink != 0",
"is_right_sink": "NXNY_sink != 0" "is_right_sink": "NXNY_sink != 0"
}, },
"transform": "ident()" "transform": "ident()"
}, },
{ {
"identifier": "raw_floor_side", "identifier": "raw_floor_side",
"skip": "not face[2]", "skip": "not face[2]",
"params": { "params": {
"height": "height", "height": "height",
"length": "2.5", "length": "2.5",
"is_left_sink": "NXNY_sink != 0", "is_left_sink": "NXNY_sink != 0",
"is_right_sink": "NXNY_sink != 0" "is_right_sink": "NXNY_sink != 0"
}, },
"transform": "move(0, 2.5, 0) @ rot(0, 0, -90)" "transform": "move(0, 2.5, 0) @ rot(0, 0, -90)"
}, },
{ {
"identifier": "raw_floor_side", "identifier": "raw_floor_side",
"skip": "not face[3]", "skip": "not face[3]",
"params": { "params": {
"height": "height", "height": "height",
"length": "2.5", "length": "2.5",
"is_left_sink": "NXNY_sink != 0", "is_left_sink": "NXNY_sink != 0",
"is_right_sink": "PXPY_sink != 0" "is_right_sink": "PXPY_sink != 0"
}, },
"transform": "move(2.5, 0, 0) @ rot(0, 0, 90)" "transform": "move(2.5, 0, 0) @ rot(0, 0, 90)"
}, },
{ {
"identifier": "raw_floor_side", "identifier": "raw_floor_side",
"skip": "not face[5]", "skip": "not face[5]",
"params": { "params": {
"height": "height", "height": "height",
"length": "2.5", "length": "2.5",
"is_left_sink": "PXPY_sink != 0", "is_left_sink": "PXPY_sink != 0",
"is_right_sink": "NXNY_sink != 0" "is_right_sink": "NXNY_sink != 0"
}, },
"transform": "move(2.5, 2.5, 0) @ rot(0, 0, 180)" "transform": "move(2.5, 2.5, 0) @ rot(0, 0, 180)"
}, },
{ {
"identifier": "floor_rectangle_bottom", "identifier": "floor_rectangle_bottom",
"skip": "not face[1]", "skip": "not face[1]",
"params": { "params": {
"length": "2.5", "length": "2.5",
"width": "2.5" "width": "2.5"
}, },
"transform": "move(0, 0, -height)" "transform": "move(0, 0, -height)"
} }
] ]
}, },
{ {
"identifier": "floor_normal_inner_corner", "identifier": "floor_normal_inner_corner",
"showcase": { "showcase": {
"title": "Normal Inner Corner", "title": "Normal Inner Corner",
"icon": "NormalInnerCorner", "category": "Half Block Corners",
"type": "floor", "icon": "NormalInnerCorner",
"cfgs": [ "type": "floor",
{ "cfgs": [
"field": "height_", {
"type": "float", "field": "height_",
"title": "Height", "type": "float",
"desc": "The height of block.", "title": "Height",
"default": "5.0" "desc": "The height of block.",
}, "default": "5.0"
{ },
"field": "face_", {
"type": "face", "field": "face_",
"title": "Face", "type": "face",
"desc": "Whether has some faces.", "title": "Face",
"default": "(True, False, False, False, False, False)" "desc": "Whether has some faces.",
} "default": "(True, False, False, False, False, False)"
] }
}, ]
"params": [ },
{ "params": [
"field": "height", {
"data": "height_" "field": "height",
}, "data": "height_"
{ },
"field": "face", {
"data": "face_" "field": "face",
} "data": "face_"
], }
"skip": "False", ],
"vars": [], "skip": "False",
"vertices": [], "vars": [],
"faces": [], "vertices": [],
"instances": [ "faces": [],
{ "instances": [
"identifier": "raw_floor_corner", {
"skip": "False", "identifier": "raw_floor_corner",
"params": { "skip": "False",
"height": "height", "params": {
"face": "face", "height": "height",
"is_sink": "False", "face": "face",
"is_inner": "True", "is_sink": "False",
"is_ribbon": "False" "is_inner": "True",
}, "is_ribbon": "False"
"transform": "ident()" },
} "transform": "ident()"
] }
}, ]
{ },
"identifier": "floor_sink_inner_corner", {
"showcase": { "identifier": "floor_sink_inner_corner",
"title": "Sink Inner Corner", "showcase": {
"icon": "SinkInnerCorner", "title": "Sink Inner Corner",
"type": "floor", "category": "Half Block Corners",
"cfgs": [ "icon": "SinkInnerCorner",
{ "type": "floor",
"field": "height_", "cfgs": [
"type": "float", {
"title": "Height", "field": "height_",
"desc": "The height of block.", "type": "float",
"default": "5.0" "title": "Height",
}, "desc": "The height of block.",
{ "default": "5.0"
"field": "face_", },
"type": "face", {
"title": "Face", "field": "face_",
"desc": "Whether has some faces.", "type": "face",
"default": "(True, False, False, False, False, False)" "title": "Face",
} "desc": "Whether has some faces.",
] "default": "(True, False, False, False, False, False)"
}, }
"params": [ ]
{ },
"field": "height", "params": [
"data": "height_" {
}, "field": "height",
{ "data": "height_"
"field": "face", },
"data": "face_" {
} "field": "face",
], "data": "face_"
"skip": "False", }
"vars": [], ],
"vertices": [], "skip": "False",
"faces": [], "vars": [],
"instances": [ "vertices": [],
{ "faces": [],
"identifier": "raw_floor_corner", "instances": [
"skip": "False", {
"params": { "identifier": "raw_floor_corner",
"height": "height", "skip": "False",
"face": "face", "params": {
"is_sink": "True", "height": "height",
"is_inner": "True", "face": "face",
"is_ribbon": "False" "is_sink": "True",
}, "is_inner": "True",
"transform": "ident()" "is_ribbon": "False"
} },
] "transform": "ident()"
}, }
{ ]
"identifier": "floor_ribbon_inner_corner", },
"showcase": { {
"title": "Ribbon Inner Corner", "identifier": "floor_ribbon_inner_corner",
"icon": "RibbonInnerCorner", "showcase": {
"type": "floor", "title": "Ribbon Inner Corner",
"cfgs": [ "category": "Half Block Corners",
{ "icon": "RibbonInnerCorner",
"field": "height_", "type": "floor",
"type": "float", "cfgs": [
"title": "Height", {
"desc": "The height of block.", "field": "height_",
"default": "5.0" "type": "float",
}, "title": "Height",
{ "desc": "The height of block.",
"field": "face_", "default": "5.0"
"type": "face", },
"title": "Face", {
"desc": "Whether has some faces.", "field": "face_",
"default": "(True, False, False, False, False, False)" "type": "face",
} "title": "Face",
] "desc": "Whether has some faces.",
}, "default": "(True, False, False, False, False, False)"
"params": [ }
{ ]
"field": "height", },
"data": "height_" "params": [
}, {
{ "field": "height",
"field": "face", "data": "height_"
"data": "face_" },
} {
], "field": "face",
"skip": "False", "data": "face_"
"vars": [], }
"vertices": [], ],
"faces": [], "skip": "False",
"instances": [ "vars": [],
{ "vertices": [],
"identifier": "raw_floor_corner", "faces": [],
"skip": "False", "instances": [
"params": { {
"height": "height", "identifier": "raw_floor_corner",
"face": "face", "skip": "False",
"is_sink": "True", "params": {
"is_inner": "True", "height": "height",
"is_ribbon": "True" "face": "face",
}, "is_sink": "True",
"transform": "ident()" "is_inner": "True",
} "is_ribbon": "True"
] },
}, "transform": "ident()"
{ }
"identifier": "floor_normal_outter_corner", ]
"showcase": { },
"title": "Normal Outter Corner", {
"icon": "NormalOutterCorner", "identifier": "floor_normal_outter_corner",
"type": "floor", "showcase": {
"cfgs": [ "title": "Normal Outter Corner",
{ "category": "Half Block Corners",
"field": "height_", "icon": "NormalOutterCorner",
"type": "float", "type": "floor",
"title": "Height", "cfgs": [
"desc": "The height of block.", {
"default": "5.0" "field": "height_",
}, "type": "float",
{ "title": "Height",
"field": "face_", "desc": "The height of block.",
"type": "face", "default": "5.0"
"title": "Face", },
"desc": "Whether has some faces.", {
"default": "(True, False, True, False, True, False)" "field": "face_",
} "type": "face",
] "title": "Face",
}, "desc": "Whether has some faces.",
"params": [ "default": "(True, False, True, False, True, False)"
{ }
"field": "height", ]
"data": "height_" },
}, "params": [
{ {
"field": "face", "field": "height",
"data": "face_" "data": "height_"
} },
], {
"skip": "False", "field": "face",
"vars": [], "data": "face_"
"vertices": [], }
"faces": [], ],
"instances": [ "skip": "False",
{ "vars": [],
"identifier": "raw_floor_corner", "vertices": [],
"skip": "False", "faces": [],
"params": { "instances": [
"height": "height", {
"face": "face", "identifier": "raw_floor_corner",
"is_sink": "False", "skip": "False",
"is_inner": "False", "params": {
"is_ribbon": "False" "height": "height",
}, "face": "face",
"transform": "ident()" "is_sink": "False",
} "is_inner": "False",
] "is_ribbon": "False"
}, },
{ "transform": "ident()"
"identifier": "floor_sink_outter_corner", }
"showcase": { ]
"title": "Sink Outter Corner", },
"icon": "SinkOutterCorner", {
"type": "floor", "identifier": "floor_sink_outter_corner",
"cfgs": [ "showcase": {
{ "title": "Sink Outter Corner",
"field": "height_", "category": "Half Block Corners",
"type": "float", "icon": "SinkOutterCorner",
"title": "Height", "type": "floor",
"desc": "The height of block.", "cfgs": [
"default": "5.0" {
}, "field": "height_",
{ "type": "float",
"field": "face_", "title": "Height",
"type": "face", "desc": "The height of block.",
"title": "Face", "default": "5.0"
"desc": "Whether has some faces.", },
"default": "(True, False, True, False, True, False)" {
} "field": "face_",
] "type": "face",
}, "title": "Face",
"params": [ "desc": "Whether has some faces.",
{ "default": "(True, False, True, False, True, False)"
"field": "height", }
"data": "height_" ]
}, },
{ "params": [
"field": "face", {
"data": "face_" "field": "height",
} "data": "height_"
], },
"skip": "False", {
"vars": [], "field": "face",
"vertices": [], "data": "face_"
"faces": [], }
"instances": [ ],
{ "skip": "False",
"identifier": "raw_floor_corner", "vars": [],
"skip": "False", "vertices": [],
"params": { "faces": [],
"height": "height", "instances": [
"face": "face", {
"is_sink": "True", "identifier": "raw_floor_corner",
"is_inner": "False", "skip": "False",
"is_ribbon": "False" "params": {
}, "height": "height",
"transform": "ident()" "face": "face",
} "is_sink": "True",
] "is_inner": "False",
}, "is_ribbon": "False"
{ },
"identifier": "floor_ribbon_outter_corner", "transform": "ident()"
"showcase": { }
"title": "Ribbon Outter Corner", ]
"icon": "RibbonOutterCorner", },
"type": "floor", {
"cfgs": [ "identifier": "floor_ribbon_outter_corner",
{ "showcase": {
"field": "height_", "title": "Ribbon Outter Corner",
"type": "float", "category": "Half Block Corners",
"title": "Height", "icon": "RibbonOutterCorner",
"desc": "The height of block.", "type": "floor",
"default": "5.0" "cfgs": [
}, {
{ "field": "height_",
"field": "face_", "type": "float",
"type": "face", "title": "Height",
"title": "Face", "desc": "The height of block.",
"desc": "Whether has some faces.", "default": "5.0"
"default": "(True, False, True, False, True, False)" },
} {
] "field": "face_",
}, "type": "face",
"params": [ "title": "Face",
{ "desc": "Whether has some faces.",
"field": "height", "default": "(True, False, True, False, True, False)"
"data": "height_" }
}, ]
{ },
"field": "face", "params": [
"data": "face_" {
} "field": "height",
], "data": "height_"
"skip": "False", },
"vars": [], {
"vertices": [], "field": "face",
"faces": [], "data": "face_"
"instances": [ }
{ ],
"identifier": "raw_floor_corner", "skip": "False",
"skip": "False", "vars": [],
"params": { "vertices": [],
"height": "height", "faces": [],
"face": "face", "instances": [
"is_sink": "True", {
"is_inner": "False", "identifier": "raw_floor_corner",
"is_ribbon": "True" "skip": "False",
}, "params": {
"transform": "ident()" "height": "height",
} "face": "face",
] "is_sink": "True",
} "is_inner": "False",
"is_ribbon": "True"
},
"transform": "ident()"
}
]
}
] ]

View File

@ -1,171 +1,172 @@
[ [
{ {
"identifier": "floor_flat", "identifier": "floor_flat",
"showcase": { "showcase": {
"title": "Flat", "title": "Flat",
"icon": "Flat", "category": "Miscellaneous",
"type": "floor", "icon": "Flat",
"cfgs": [ "type": "floor",
{ "cfgs": [
"field": "height_", {
"type": "float", "field": "height_",
"title": "Height", "type": "float",
"desc": "The height of block.", "title": "Height",
"default": "5.0" "desc": "The height of block.",
}, "default": "5.0"
{ },
"field": "length_", {
"type": "float", "field": "length_",
"title": "Length", "type": "float",
"desc": "The length of block.", "title": "Length",
"default": "2.5" "desc": "The length of block.",
}, "default": "2.5"
{ },
"field": "width_", {
"type": "float", "field": "width_",
"title": "Width", "type": "float",
"desc": "The width of block.", "title": "Width",
"default": "2.5" "desc": "The width of block.",
}, "default": "2.5"
{ },
"field": "face_", {
"type": "face", "field": "face_",
"title": "Face", "type": "face",
"desc": "Whether has some faces.", "title": "Face",
"default": "(True, False, False, False, False, False)" "desc": "Whether has some faces.",
}, "default": "(True, False, False, False, False, False)"
{ },
"field": "is_sink_", {
"type": "float", "field": "is_sink_",
"title": "Is Sink", "type": "bool",
"desc": "Whether this flat floor is used for sink floor.", "title": "Is Sink",
"default": "False" "desc": "Whether this flat floor is used for sink floor.",
} "default": "False"
] }
}, ]
"params": [ },
{ "params": [
"field": "height", {
"data": "height_" "field": "height",
}, "data": "height_"
{ },
"field": "length", {
"data": "length_" "field": "length",
}, "data": "length_"
{ },
"field": "width", {
"data": "width_" "field": "width",
}, "data": "width_"
{ },
"field": "face", {
"data": "face_" "field": "face",
}, "data": "face_"
{ },
"field": "is_sink", {
"data": "is_sink_" "field": "is_sink",
} "data": "is_sink_"
], }
"skip": "length == 0.0 or width == 0.0", ],
"vars": [ "skip": "length == 0.0 or width == 0.0",
{ "vars": [
"field": "sink", {
"data": "0.7 if is_sink else 0" "field": "sink",
}, "data": "0.7 if is_sink else 0"
{ },
"field": "uv_length", {
"data": "length / 5.0" "field": "uv_length",
}, "data": "length / 5.0"
{ },
"field": "uv_width", {
"data": "width / 5.0" "field": "uv_width",
} "data": "width / 5.0"
], }
"vertices": [ ],
{ "vertices": [
"skip": "False", {
"data": "(0, 0, -sink)" "skip": "False",
}, "data": "(0, 0, -sink)"
{ },
"skip": "False", {
"data": "(length, 0, -sink)" "skip": "False",
}, "data": "(length, 0, -sink)"
{ },
"skip": "False", {
"data": "(length, width, -sink)" "skip": "False",
}, "data": "(length, width, -sink)"
{ },
"skip": "False", {
"data": "(0, width, -sink)" "skip": "False",
} "data": "(0, width, -sink)"
], }
"faces": [ ],
{ "faces": [
"skip": "not face[0]", {
"texture": "\"FloorTopBorderless\"", "skip": "not face[0]",
"indices": [0, 1, 2, 3], "texture": "\"FloorTopBorderless\"",
"uvs": [ "indices": [0, 1, 2, 3],
"(0, 0)", "uvs": [
"(uv_length, 0)", "(0, 0)",
"(uv_length, uv_width)", "(uv_length, 0)",
"(0, uv_width)" "(uv_length, uv_width)",
], "(0, uv_width)"
"normals": null ],
} "normals": null
], }
"instances": [ ],
{ "instances": [
"identifier": "raw_floor_side", {
"skip": "not face[4]", "identifier": "raw_floor_side",
"params": { "skip": "not face[4]",
"height": "height", "params": {
"length": "length", "height": "height",
"is_left_sink": "is_sink", "length": "length",
"is_right_sink": "is_sink" "is_left_sink": "is_sink",
}, "is_right_sink": "is_sink"
"transform": "ident()" },
}, "transform": "ident()"
{ },
"identifier": "raw_floor_side", {
"skip": "not face[2]", "identifier": "raw_floor_side",
"params": { "skip": "not face[2]",
"height": "height", "params": {
"length": "width", "height": "height",
"is_left_sink": "is_sink", "length": "width",
"is_right_sink": "is_sink" "is_left_sink": "is_sink",
}, "is_right_sink": "is_sink"
"transform": "move(0, width, 0) @ rot(0, 0, -90)" },
}, "transform": "move(0, width, 0) @ rot(0, 0, -90)"
{ },
"identifier": "raw_floor_side", {
"skip": "not face[3]", "identifier": "raw_floor_side",
"params": { "skip": "not face[3]",
"height": "height", "params": {
"length": "width", "height": "height",
"is_left_sink": "is_sink", "length": "width",
"is_right_sink": "is_sink" "is_left_sink": "is_sink",
}, "is_right_sink": "is_sink"
"transform": "move(length, 0, 0) @ rot(0, 0, 90)" },
}, "transform": "move(length, 0, 0) @ rot(0, 0, 90)"
{ },
"identifier": "raw_floor_side", {
"skip": "not face[5]", "identifier": "raw_floor_side",
"params": { "skip": "not face[5]",
"height": "height", "params": {
"length": "length", "height": "height",
"is_left_sink": "is_sink", "length": "length",
"is_right_sink": "is_sink" "is_left_sink": "is_sink",
}, "is_right_sink": "is_sink"
"transform": "move(length, width, 0) @ rot(0, 0, 180)" },
}, "transform": "move(length, width, 0) @ rot(0, 0, 180)"
{ },
"identifier": "floor_rectangle_bottom", {
"skip": "not face[1]", "identifier": "floor_rectangle_bottom",
"params": { "skip": "not face[1]",
"length": "length", "params": {
"width": "width" "length": "length",
}, "width": "width"
"transform": "move(0, 0, -height)" },
} "transform": "move(0, 0, -height)"
] }
} ]
}
] ]

View File

@ -1,340 +1,343 @@
[ [
{ {
"identifier": "raw_floor_platform", "identifier": "raw_floor_platform",
"showcase": null, "showcase": null,
"params": [ "params": [
{ {
"field": "height", "field": "height",
"data": "5.0" "data": "5.0"
}, },
{ {
"field": "length", "field": "length",
"data": "5.0" "data": "5.0"
}, },
{ {
"field": "width", "field": "width",
"data": "5.0" "data": "5.0"
}, },
{ {
"field": "face", "field": "face",
"data": "(True, False, True, True, True, True)" "data": "(True, False, True, True, True, True)"
}, },
{ {
"field": "is_sink", "field": "is_sink",
"data": "False" "data": "False"
}, },
{ {
"field": "is_ribbon", "field": "is_ribbon",
"data": "False" "data": "False"
} }
], ],
"skip": "False", "skip": "False",
"vars": [], "vars": [],
"vertices": [], "vertices": [],
"faces": [], "faces": [],
"instances": [ "instances": [
{ {
"identifier": "cv_trapezoid_side", "identifier": "cv_trapezoid_side",
"skip": "False", "skip": "False",
"params": { "params": {
"long_edge_length": "length + 5", "long_edge_length": "length + 5",
"short_edge_offset": "2.5", "short_edge_offset": "2.5",
"short_edge_length": "length", "short_edge_length": "length",
"height": "height", "height": "height",
"face": "(face[0], False, False, False, face[4], False)", "face": "(face[0], False, False, False, face[4], False)",
"is_sink": "is_sink", "is_sink": "is_sink",
"is_ribbon": "is_ribbon" "is_ribbon": "is_ribbon"
}, },
"transform": "ident()" "transform": "ident()"
}, },
{ {
"identifier": "cv_trapezoid_side", "identifier": "cv_trapezoid_side",
"skip": "False", "skip": "False",
"params": { "params": {
"long_edge_length": "length + 5", "long_edge_length": "length + 5",
"short_edge_offset": "2.5", "short_edge_offset": "2.5",
"short_edge_length": "length", "short_edge_length": "length",
"height": "height", "height": "height",
"face": "(face[0], False, False, False, face[5], False)", "face": "(face[0], False, False, False, face[5], False)",
"is_sink": "is_sink", "is_sink": "is_sink",
"is_ribbon": "is_ribbon" "is_ribbon": "is_ribbon"
}, },
"transform": "move(0, 5 + width, 0) @ scale(1, -1, 1)" "transform": "move(0, 5 + width, 0) @ scale(1, -1, 1)"
}, },
{ {
"identifier": "cv_trapezoid_side", "identifier": "cv_trapezoid_side",
"skip": "False", "skip": "False",
"params": { "params": {
"long_edge_length": "width + 5", "long_edge_length": "width + 5",
"short_edge_offset": "2.5", "short_edge_offset": "2.5",
"short_edge_length": "width", "short_edge_length": "width",
"height": "height", "height": "height",
"face": "(face[0], False, False, False, face[3], False)", "face": "(face[0], False, False, False, face[3], False)",
"is_sink": "is_sink", "is_sink": "is_sink",
"is_ribbon": "is_ribbon" "is_ribbon": "is_ribbon"
}, },
"transform": "move(5 + length, 0, 0) @ rot(0, 0, 90)" "transform": "move(5 + length, 0, 0) @ rot(0, 0, 90)"
}, },
{ {
"identifier": "cv_trapezoid_side", "identifier": "cv_trapezoid_side",
"skip": "False", "skip": "False",
"params": { "params": {
"long_edge_length": "width + 5", "long_edge_length": "width + 5",
"short_edge_offset": "2.5", "short_edge_offset": "2.5",
"short_edge_length": "width", "short_edge_length": "width",
"height": "height", "height": "height",
"face": "(face[0], False, False, False, face[2], False)", "face": "(face[0], False, False, False, face[2], False)",
"is_sink": "is_sink", "is_sink": "is_sink",
"is_ribbon": "is_ribbon" "is_ribbon": "is_ribbon"
}, },
"transform": "rot(0, 0, 90) @ scale(1, -1, 1)" "transform": "rot(0, 0, 90) @ scale(1, -1, 1)"
}, },
{ {
"identifier": "floor_flat", "identifier": "floor_flat",
"skip": "False", "skip": "False",
"params": { "params": {
"height": "height", "height": "height",
"length": "length", "length": "length",
"width": "width", "width": "width",
"face": "(face[0], False, False, False, False, False)", "face": "(face[0], False, False, False, False, False)",
"is_sink": "is_sink" "is_sink": "is_sink"
}, },
"transform": "move(2.5, 2.5, 0)" "transform": "move(2.5, 2.5, 0)"
}, },
{ {
"identifier": "floor_rectangle_bottom", "identifier": "floor_rectangle_bottom",
"skip": "not face[1]", "skip": "not face[1]",
"params": { "params": {
"length": "5 + length", "length": "5 + length",
"width": "5 + width" "width": "5 + width"
}, },
"transform": "move(0, 0, -height)" "transform": "move(0, 0, -height)"
} }
] ]
}, },
{ {
"identifier": "floor_normal_platform", "identifier": "floor_normal_platform",
"showcase": { "showcase": {
"title": "Normal Platform", "title": "Normal Platform",
"icon": "NormalPlatform", "category": "Platforms",
"type": "floor", "icon": "NormalPlatform",
"cfgs": [ "type": "floor",
{ "cfgs": [
"field": "length_", {
"type": "float", "field": "length_",
"title": "Length", "type": "float",
"desc": "The length of block.", "title": "Length",
"default": "2.5" "desc": "The length of block.",
}, "default": "2.5"
{ },
"field": "width_", {
"type": "float", "field": "width_",
"title": "Width", "type": "float",
"desc": "The width of block.", "title": "Width",
"default": "2.5" "desc": "The width of block.",
}, "default": "2.5"
{ },
"field": "height_", {
"type": "float", "field": "height_",
"title": "Height", "type": "float",
"desc": "The height of block.", "title": "Height",
"default": "5.0" "desc": "The height of block.",
}, "default": "5.0"
{ },
"field": "face_", {
"type": "face", "field": "face_",
"title": "Face", "type": "face",
"desc": "Whether has some faces.", "title": "Face",
"default": "(True, False, True, True, True, True)" "desc": "Whether has some faces.",
} "default": "(True, False, True, True, True, True)"
] }
}, ]
"params": [ },
{ "params": [
"field": "height", {
"data": "height_" "field": "height",
}, "data": "height_"
{ },
"field": "length", {
"data": "length_" "field": "length",
}, "data": "length_"
{ },
"field": "width", {
"data": "width_" "field": "width",
}, "data": "width_"
{ },
"field": "face", {
"data": "face_" "field": "face",
} "data": "face_"
], }
"skip": "False", ],
"vars": [], "skip": "False",
"vertices": [], "vars": [],
"faces": [], "vertices": [],
"instances": [ "faces": [],
{ "instances": [
"identifier": "raw_floor_platform", {
"skip": "False", "identifier": "raw_floor_platform",
"params": { "skip": "False",
"length": "length", "params": {
"width": "width", "length": "length",
"height": "height", "width": "width",
"face": "face", "height": "height",
"is_sink": "False", "face": "face",
"is_ribbon": "False" "is_sink": "False",
}, "is_ribbon": "False"
"transform": "ident()" },
} "transform": "ident()"
] }
}, ]
{ },
"identifier": "floor_sink_platform", {
"showcase": { "identifier": "floor_sink_platform",
"title": "Sink Platform", "showcase": {
"icon": "SinkPlatform", "title": "Sink Platform",
"type": "floor", "category": "Platforms",
"cfgs": [ "icon": "SinkPlatform",
{ "type": "floor",
"field": "length_", "cfgs": [
"type": "float", {
"title": "Length", "field": "length_",
"desc": "The length of block.", "type": "float",
"default": "2.5" "title": "Length",
}, "desc": "The length of block.",
{ "default": "2.5"
"field": "width_", },
"type": "float", {
"title": "Width", "field": "width_",
"desc": "The width of block.", "type": "float",
"default": "2.5" "title": "Width",
}, "desc": "The width of block.",
{ "default": "2.5"
"field": "height_", },
"type": "float", {
"title": "Height", "field": "height_",
"desc": "The height of block.", "type": "float",
"default": "5.0" "title": "Height",
}, "desc": "The height of block.",
{ "default": "5.0"
"field": "face_", },
"type": "face", {
"title": "Face", "field": "face_",
"desc": "Whether has some faces.", "type": "face",
"default": "(True, False, True, True, True, True)" "title": "Face",
} "desc": "Whether has some faces.",
] "default": "(True, False, True, True, True, True)"
}, }
"params": [ ]
{ },
"field": "height", "params": [
"data": "height_" {
}, "field": "height",
{ "data": "height_"
"field": "length", },
"data": "length_" {
}, "field": "length",
{ "data": "length_"
"field": "width", },
"data": "width_" {
}, "field": "width",
{ "data": "width_"
"field": "face", },
"data": "face_" {
} "field": "face",
], "data": "face_"
"skip": "False", }
"vars": [], ],
"vertices": [], "skip": "False",
"faces": [], "vars": [],
"instances": [ "vertices": [],
{ "faces": [],
"identifier": "raw_floor_platform", "instances": [
"skip": "False", {
"params": { "identifier": "raw_floor_platform",
"length": "length", "skip": "False",
"width": "width", "params": {
"height": "height", "length": "length",
"face": "face", "width": "width",
"is_sink": "True", "height": "height",
"is_ribbon": "False" "face": "face",
}, "is_sink": "True",
"transform": "ident()" "is_ribbon": "False"
} },
] "transform": "ident()"
}, }
{ ]
"identifier": "floor_ribbon_platform", },
"showcase": { {
"title": "Ribbon Platform", "identifier": "floor_ribbon_platform",
"icon": "RibbonPlatform", "showcase": {
"type": "floor", "title": "Ribbon Platform",
"cfgs": [ "category": "Platforms",
{ "icon": "RibbonPlatform",
"field": "length_", "type": "floor",
"type": "float", "cfgs": [
"title": "Length", {
"desc": "The length of block.", "field": "length_",
"default": "2.5" "type": "float",
}, "title": "Length",
{ "desc": "The length of block.",
"field": "width_", "default": "2.5"
"type": "float", },
"title": "Width", {
"desc": "The width of block.", "field": "width_",
"default": "2.5" "type": "float",
}, "title": "Width",
{ "desc": "The width of block.",
"field": "height_", "default": "2.5"
"type": "float", },
"title": "Height", {
"desc": "The height of block.", "field": "height_",
"default": "5.0" "type": "float",
}, "title": "Height",
{ "desc": "The height of block.",
"field": "face_", "default": "5.0"
"type": "face", },
"title": "Face", {
"desc": "Whether has some faces.", "field": "face_",
"default": "(True, False, True, True, True, True)" "type": "face",
} "title": "Face",
] "desc": "Whether has some faces.",
}, "default": "(True, False, True, True, True, True)"
"params": [ }
{ ]
"field": "height", },
"data": "height_" "params": [
}, {
{ "field": "height",
"field": "length", "data": "height_"
"data": "length_" },
}, {
{ "field": "length",
"field": "width", "data": "length_"
"data": "width_" },
}, {
{ "field": "width",
"field": "face", "data": "width_"
"data": "face_" },
} {
], "field": "face",
"skip": "False", "data": "face_"
"vars": [], }
"vertices": [], ],
"faces": [], "skip": "False",
"instances": [ "vars": [],
{ "vertices": [],
"identifier": "raw_floor_platform", "faces": [],
"skip": "False", "instances": [
"params": { {
"length": "length", "identifier": "raw_floor_platform",
"width": "width", "skip": "False",
"height": "height", "params": {
"face": "face", "length": "length",
"is_sink": "True", "width": "width",
"is_ribbon": "True" "height": "height",
}, "face": "face",
"transform": "ident()" "is_sink": "True",
} "is_ribbon": "True"
] },
} "transform": "ident()"
}
]
}
] ]

View File

@ -1,324 +1,324 @@
[ [
{ {
"identifier": "raw_floor_side", "identifier": "raw_floor_side",
"showcase": null, "showcase": null,
"params": [ "params": [
{ {
"field": "height", "field": "height",
"data": "5.0" "data": "5.0"
}, },
{ {
"field": "length", "field": "length",
"data": "5.0" "data": "5.0"
}, },
{ {
"field": "is_left_sink", "field": "is_left_sink",
"data": "False" "data": "False"
}, },
{ {
"field": "is_right_sink", "field": "is_right_sink",
"data": "False" "data": "False"
} }
], ],
"skip": "height <= (0.7 if (is_left_sink or is_right_sink) else 0.0) or length == 0.0", "skip": "height <= (0.7 if (is_left_sink or is_right_sink) else 0.0) or length == 0.0",
"vars": [ "vars": [
{ {
"field": "skip_long_side", "field": "skip_long_side",
"data": "height <= 5.0" "data": "height <= 5.0"
}, },
{ {
"field": "skip_short_side", "field": "skip_short_side",
"data": "height > 5.0" "data": "height > 5.0"
}, },
{ {
"field": "uv_height", "field": "uv_height",
"data": "height / 5.0" "data": "height / 5.0"
}, },
{ {
"field": "uv_length", "field": "uv_length",
"data": "length / 5.0" "data": "length / 5.0"
}, },
{ {
"field": "left_sink", "field": "left_sink",
"data": "0.7 if is_left_sink else 0.0" "data": "0.7 if is_left_sink else 0.0"
}, },
{ {
"field": "right_sink", "field": "right_sink",
"data": "0.7 if is_right_sink else 0.0" "data": "0.7 if is_right_sink else 0.0"
}, },
{ {
"field": "uv_left_sink", "field": "uv_left_sink",
"data": "left_sink / 5.0" "data": "left_sink / 5.0"
}, },
{ {
"field": "uv_right_sink", "field": "uv_right_sink",
"data": "right_sink / 5.0" "data": "right_sink / 5.0"
} }
], ],
"vertices": [ "vertices": [
{ {
"skip": "False", "skip": "False",
"data": "(0, 0, -left_sink)" "data": "(0, 0, -left_sink)"
}, },
{ {
"skip": "False", "skip": "False",
"data": "(length, 0, -right_sink)" "data": "(length, 0, -right_sink)"
}, },
{ {
"skip": "skip_long_side", "skip": "skip_long_side",
"data": "(0, 0, -5.0)" "data": "(0, 0, -5.0)"
}, },
{ {
"skip": "skip_long_side", "skip": "skip_long_side",
"data": "(length, 0, -5.0)" "data": "(length, 0, -5.0)"
}, },
{ {
"skip": "False", "skip": "False",
"data": "(0, 0, -height)" "data": "(0, 0, -height)"
}, },
{ {
"skip": "False", "skip": "False",
"data": "(length, 0, -height)" "data": "(length, 0, -height)"
} }
], ],
"faces": [ "faces": [
{ {
"skip": "skip_short_side", "skip": "skip_short_side",
"texture": "\"FloorSide\"", "texture": "\"FloorSide\"",
"indices": [0, 2, 3, 1], "indices": [0, 2, 3, 1],
"uvs": [ "uvs": [
"(0, 0)", "(0, 0)",
"(uv_height - uv_left_sink, 0)", "(uv_height - uv_left_sink, 0)",
"(uv_height - uv_right_sink, uv_length)", "(uv_height - uv_right_sink, uv_length)",
"(0, uv_length)" "(0, uv_length)"
], ],
"normals": null "normals": null
}, },
{ {
"skip": "skip_long_side", "skip": "skip_long_side",
"texture": "\"LightingFloorTopBorder\"", "texture": "\"LightingFloorTopBorder\"",
"indices": [0, 2, 3, 1], "indices": [0, 2, 3, 1],
"uvs": [ "uvs": [
"(0, 0)", "(0, 0)",
"(1 - uv_left_sink, 0)", "(1 - uv_left_sink, 0)",
"(1 - uv_right_sink, uv_length)", "(1 - uv_right_sink, uv_length)",
"(0, uv_length)" "(0, uv_length)"
], ],
"normals": null "normals": null
}, },
{ {
"skip": "skip_long_side", "skip": "skip_long_side",
"texture": "\"LightingFloorTopBorderless\"", "texture": "\"LightingFloorTopBorderless\"",
"indices": [2, 4, 5, 3], "indices": [2, 4, 5, 3],
"uvs": [ "uvs": [
"(0, 0)", "(0, 0)",
"(uv_height - 1.0, 0)", "(uv_height - 1.0, 0)",
"(uv_height - 1.0, uv_length)", "(uv_height - 1.0, uv_length)",
"(0, uv_length)" "(0, uv_length)"
], ],
"normals": null "normals": null
} }
], ],
"instances": [] "instances": []
}, },
{ {
"identifier": "floor_4edges_bottom", "identifier": "floor_4edges_bottom",
"showcase": null, "showcase": null,
"params": [ "params": [
{ {
"field": "top_left_pos", "field": "top_left_pos",
"data": "(0.0, 0.0)" "data": "(0.0, 0.0)"
}, },
{ {
"field": "top_right_pos", "field": "top_right_pos",
"data": "(0.0, 5.0)" "data": "(0.0, 5.0)"
}, },
{ {
"field": "bottom_left_pos", "field": "bottom_left_pos",
"data": "(5.0, 0.0)" "data": "(5.0, 0.0)"
}, },
{ {
"field": "bottom_right_pos", "field": "bottom_right_pos",
"data": "(5.0, 5.0)" "data": "(5.0, 5.0)"
} }
], ],
"skip": "False", "skip": "False",
"vars": [ "vars": [
{ {
"field": "top_left_uv", "field": "top_left_uv",
"data": "tuple(map(lambda x: x / 5.0, top_left_pos))" "data": "tuple(map(lambda x: x / 5.0, top_left_pos))"
}, },
{ {
"field": "top_right_uv", "field": "top_right_uv",
"data": "tuple(map(lambda x: x / 5.0, top_right_pos))" "data": "tuple(map(lambda x: x / 5.0, top_right_pos))"
}, },
{ {
"field": "bottom_left_uv", "field": "bottom_left_uv",
"data": "tuple(map(lambda x: x / 5.0, bottom_left_pos))" "data": "tuple(map(lambda x: x / 5.0, bottom_left_pos))"
}, },
{ {
"field": "bottom_right_uv", "field": "bottom_right_uv",
"data": "tuple(map(lambda x: x / 5.0, bottom_right_pos))" "data": "tuple(map(lambda x: x / 5.0, bottom_right_pos))"
} }
], ],
"vertices": [ "vertices": [
{ {
"skip": "False", "skip": "False",
"data": "top_left_pos + (0, )" "data": "top_left_pos + (0, )"
}, },
{ {
"skip": "False", "skip": "False",
"data": "top_right_pos + (0, )" "data": "top_right_pos + (0, )"
}, },
{ {
"skip": "False", "skip": "False",
"data": "bottom_left_pos + (0, )" "data": "bottom_left_pos + (0, )"
}, },
{ {
"skip": "False", "skip": "False",
"data": "bottom_right_pos + (0, )" "data": "bottom_right_pos + (0, )"
} }
], ],
"faces": [ "faces": [
{ {
"skip": "False", "skip": "False",
"texture": "\"FloorTopBorderless\"", "texture": "\"FloorTopBorderless\"",
"indices": [0, 1, 3, 2], "indices": [0, 1, 3, 2],
"uvs": [ "uvs": [
"top_left_uv", "top_left_uv",
"top_right_uv", "top_right_uv",
"bottom_right_uv", "bottom_right_uv",
"bottom_left_uv" "bottom_left_uv"
], ],
"normals": null "normals": null
} }
], ],
"instances": [] "instances": []
}, },
{ {
"identifier": "floor_3edges_bottom", "identifier": "floor_3edges_bottom",
"showcase": null, "showcase": null,
"params": [ "params": [
{ {
"field": "top_pos", "field": "top_pos",
"data": "(0.0, 0.0)" "data": "(0.0, 0.0)"
}, },
{ {
"field": "bottom_pos", "field": "bottom_pos",
"data": "(5.0, 0.0)" "data": "(5.0, 0.0)"
}, },
{ {
"field": "tip_pos", "field": "tip_pos",
"data": "(2.5, 2.5)" "data": "(2.5, 2.5)"
} }
], ],
"skip": "False", "skip": "False",
"vars": [ "vars": [
{ {
"field": "top_uv", "field": "top_uv",
"data": "tuple(map(lambda x: x / 5.0, top_pos))" "data": "tuple(map(lambda x: x / 5.0, top_pos))"
}, },
{ {
"field": "bottom_uv", "field": "bottom_uv",
"data": "tuple(map(lambda x: x / 5.0, bottom_pos))" "data": "tuple(map(lambda x: x / 5.0, bottom_pos))"
}, },
{ {
"field": "tip_uv", "field": "tip_uv",
"data": "tuple(map(lambda x: x / 5.0, tip_pos))" "data": "tuple(map(lambda x: x / 5.0, tip_pos))"
} }
], ],
"vertices": [ "vertices": [
{ {
"skip": "False", "skip": "False",
"data": "top_pos + (0, )" "data": "top_pos + (0, )"
}, },
{ {
"skip": "False", "skip": "False",
"data": "bottom_pos + (0, )" "data": "bottom_pos + (0, )"
}, },
{ {
"skip": "False", "skip": "False",
"data": "tip_pos + (0, )" "data": "tip_pos + (0, )"
} }
], ],
"faces": [ "faces": [
{ {
"skip": "False", "skip": "False",
"texture": "\"FloorTopBorderless\"", "texture": "\"FloorTopBorderless\"",
"indices": [0, 2, 1], "indices": [0, 2, 1],
"uvs": [ "uvs": [
"top_uv", "top_uv",
"tip_uv", "tip_uv",
"bottom_uv" "bottom_uv"
], ],
"normals": null "normals": null
} }
], ],
"instances": [] "instances": []
}, },
{ {
"identifier": "floor_rectangle_bottom", "identifier": "floor_rectangle_bottom",
"showcase": null, "showcase": null,
"params": [ "params": [
{ {
"field": "length", "field": "length",
"data": "5.0" "data": "5.0"
}, },
{ {
"field": "width", "field": "width",
"data": "5.0" "data": "5.0"
} }
], ],
"skip": "length == 0.0 or width == 0.0", "skip": "length == 0.0 or width == 0.0",
"vars": [], "vars": [],
"vertices": [], "vertices": [],
"faces": [], "faces": [],
"instances": [ "instances": [
{ {
"identifier": "floor_4edges_bottom", "identifier": "floor_4edges_bottom",
"skip": "False", "skip": "False",
"params": { "params": {
"top_left_pos": "(0, 0)", "top_left_pos": "(0, 0)",
"top_right_pos": "(0, width)", "top_right_pos": "(0, width)",
"bottom_left_pos": "(length, 0)", "bottom_left_pos": "(length, 0)",
"bottom_right_pos": "(length, width)" "bottom_right_pos": "(length, width)"
}, },
"transform": "ident()" "transform": "ident()"
} }
] ]
}, },
{ {
"identifier": "floor_triangle_bottom", "identifier": "floor_triangle_bottom",
"showcase": null, "showcase": null,
"params": [ "params": [
{ {
"field": "length", "field": "length",
"data": "5.0" "data": "5.0"
}, },
{ {
"field": "width", "field": "width",
"data": "2.5" "data": "2.5"
}, },
{ {
"field": "tip_offset", "field": "tip_offset",
"data": "2.5" "data": "2.5"
} }
], ],
"skip": "length == 0.0", "skip": "length == 0.0",
"vars": [], "vars": [],
"vertices": [], "vertices": [],
"faces": [], "faces": [],
"instances": [ "instances": [
{ {
"identifier": "floor_3edges_bottom", "identifier": "floor_3edges_bottom",
"skip": "False", "skip": "False",
"params": { "params": {
"top_pos": "(0, 0)", "top_pos": "(0, 0)",
"bottom_pos": "(length, 0)", "bottom_pos": "(length, 0)",
"tip_pos": "(tip_offset, width)" "tip_pos": "(tip_offset, width)"
}, },
"transform": "ident()" "transform": "ident()"
} }
] ]
} }
] ]

View File

@ -1,322 +1,324 @@
[ [
{ {
"identifier": "floor_normal_straight", "identifier": "floor_normal_straight",
"showcase": { "showcase": {
"title": "Normal Floor", "title": "Normal Floor",
"icon": "NormalFloor", "category": "Floors",
"type": "floor", "icon": "NormalFloor",
"cfgs": [ "type": "floor",
{ "cfgs": [
"field": "height_", {
"type": "float", "field": "height_",
"title": "Height", "type": "float",
"desc": "The height of block.", "title": "Height",
"default": "5.0" "desc": "The height of block.",
}, "default": "5.0"
{ },
"field": "length_", {
"type": "float", "field": "length_",
"title": "Length", "type": "float",
"desc": "The length of block.", "title": "Length",
"default": "2.5" "desc": "The length of block.",
}, "default": "2.5"
{ },
"field": "face_", {
"type": "face", "field": "face_",
"title": "Face", "type": "face",
"desc": "Whether has some faces.", "title": "Face",
"default": "(True, False, False, False, True, True)" "desc": "Whether has some faces.",
} "default": "(True, False, False, False, True, True)"
] }
}, ]
"params": [ },
{ "params": [
"field": "height", {
"data": "height_" "field": "height",
}, "data": "height_"
{ },
"field": "length", {
"data": "length_" "field": "length",
}, "data": "length_"
{ },
"field": "face", {
"data": "face_" "field": "face",
} "data": "face_"
], }
"skip": "length == 0", ],
"vars": [ "skip": "length == 0",
{ "vars": [
"field": "length_uv", {
"data": "length / 5.0" "field": "length_uv",
} "data": "length / 5.0"
], }
"vertices": [ ],
{ "vertices": [
"skip": "not face[0]", {
"data": "(0, 0, 0)" "skip": "not face[0]",
}, "data": "(0, 0, 0)"
{ },
"skip": "not face[0]", {
"data": "(length, 0, 0)" "skip": "not face[0]",
}, "data": "(length, 0, 0)"
{ },
"skip": "not face[0]", {
"data": "(length, 5, 0)" "skip": "not face[0]",
}, "data": "(length, 5, 0)"
{ },
"skip": "not face[0]", {
"data": "(0, 5, 0)" "skip": "not face[0]",
} "data": "(0, 5, 0)"
], }
"faces": [ ],
{ "faces": [
"skip": "not face[0]", {
"texture": "\"FloorTopFlat\"", "skip": "not face[0]",
"indices": [0, 1, 2, 3], "texture": "\"FloorTopFlat\"",
"uvs": [ "indices": [0, 1, 2, 3],
"(0, 0)", "uvs": [
"(0, length_uv)", "(0, 0)",
"(1, length_uv)", "(0, length_uv)",
"(1, 0)" "(1, length_uv)",
], "(1, 0)"
"normals": null ],
} "normals": null
], }
"instances": [ ],
{ "instances": [
"identifier": "raw_floor_side", {
"skip": "not face[2]", "identifier": "raw_floor_side",
"params": { "skip": "not face[2]",
"height": "height", "params": {
"length": "5", "height": "height",
"is_left_sink": "False", "length": "5",
"is_right_sink": "False" "is_left_sink": "False",
}, "is_right_sink": "False"
"transform": "rot(0, 0, 90) @ scale(1, -1, 1)" },
}, "transform": "rot(0, 0, 90) @ scale(1, -1, 1)"
{ },
"identifier": "raw_floor_side", {
"skip": "not face[3]", "identifier": "raw_floor_side",
"params": { "skip": "not face[3]",
"height": "height", "params": {
"length": "5", "height": "height",
"is_left_sink": "False", "length": "5",
"is_right_sink": "False" "is_left_sink": "False",
}, "is_right_sink": "False"
"transform": "move(length, 0, 0) @ rot(0, 0, 90)" },
}, "transform": "move(length, 0, 0) @ rot(0, 0, 90)"
{ },
"identifier": "raw_floor_side", {
"skip": "not face[4]", "identifier": "raw_floor_side",
"params": { "skip": "not face[4]",
"height": "height", "params": {
"length": "length", "height": "height",
"is_left_sink": "False", "length": "length",
"is_right_sink": "False" "is_left_sink": "False",
}, "is_right_sink": "False"
"transform": "ident()" },
}, "transform": "ident()"
{ },
"identifier": "raw_floor_side", {
"skip": "not face[5]", "identifier": "raw_floor_side",
"params": { "skip": "not face[5]",
"height": "height", "params": {
"length": "length", "height": "height",
"is_left_sink": "False", "length": "length",
"is_right_sink": "False" "is_left_sink": "False",
}, "is_right_sink": "False"
"transform": "move(0, 5, 0) @ scale(1, -1, 1)" },
}, "transform": "move(0, 5, 0) @ scale(1, -1, 1)"
{ },
"identifier": "floor_rectangle_bottom", {
"skip": "not face[1]", "identifier": "floor_rectangle_bottom",
"params": { "skip": "not face[1]",
"length": "length", "params": {
"width": "5" "length": "length",
}, "width": "5"
"transform": "move(0, 0, -height)" },
} "transform": "move(0, 0, -height)"
] }
}, ]
{ },
"identifier": "floor_sink_straight", {
"showcase": { "identifier": "floor_sink_straight",
"title": "Sink Floor", "showcase": {
"icon": "SinkFloor", "title": "Sink Floor",
"type": "floor", "category": "Floors",
"cfgs": [ "icon": "SinkFloor",
{ "type": "floor",
"field": "height_", "cfgs": [
"type": "float", {
"title": "Height", "field": "height_",
"desc": "The height of block.", "type": "float",
"default": "5.0" "title": "Height",
}, "desc": "The height of block.",
{ "default": "5.0"
"field": "length_", },
"type": "float", {
"title": "Length", "field": "length_",
"desc": "The length of block.", "type": "float",
"default": "2.5" "title": "Length",
}, "desc": "The length of block.",
{ "default": "2.5"
"field": "face_", },
"type": "face", {
"title": "Face", "field": "face_",
"desc": "Whether has some faces.", "type": "face",
"default": "(True, False, False, False, True, True)" "title": "Face",
} "desc": "Whether has some faces.",
] "default": "(True, False, False, False, True, True)"
}, }
"params": [ ]
{ },
"field": "height", "params": [
"data": "height_" {
}, "field": "height",
{ "data": "height_"
"field": "length", },
"data": "length_" {
}, "field": "length",
{ "data": "length_"
"field": "face", },
"data": "face_" {
} "field": "face",
], "data": "face_"
"skip": "length == 0", }
"vars": [ ],
{ "skip": "length == 0",
"field": "length_uv", "vars": [
"data": "length / 5.0" {
} "field": "length_uv",
], "data": "length / 5.0"
"vertices": [ }
{ ],
"skip": "not face[0]", "vertices": [
"data": "(0, 0, 0)" {
}, "skip": "not face[0]",
{ "data": "(0, 0, 0)"
"skip": "not face[0]", },
"data": "(length, 0, 0)" {
}, "skip": "not face[0]",
{ "data": "(length, 0, 0)"
"skip": "not face[0]", },
"data": "(length, 2.5, -0.7)" {
}, "skip": "not face[0]",
{ "data": "(length, 2.5, -0.7)"
"skip": "not face[0]", },
"data": "(0, 2.5, -0.7)" {
}, "skip": "not face[0]",
{ "data": "(0, 2.5, -0.7)"
"skip": "not face[0]", },
"data": "(length, 5, 0)" {
}, "skip": "not face[0]",
{ "data": "(length, 5, 0)"
"skip": "not face[0]", },
"data": "(0, 5, 0)" {
} "skip": "not face[0]",
], "data": "(0, 5, 0)"
"faces": [ }
{ ],
"skip": "not face[0]", "faces": [
"texture": "\"FloorTopProfil\"", {
"indices": [0, 1, 2, 3], "skip": "not face[0]",
"uvs": [ "texture": "\"FloorTopProfil\"",
"(0, 0)", "indices": [0, 1, 2, 3],
"(0, length_uv)", "uvs": [
"(0.5, length_uv)", "(0, 0)",
"(0.5, 0)" "(0, length_uv)",
], "(0.5, length_uv)",
"normals": null "(0.5, 0)"
}, ],
{ "normals": null
"skip": "not face[0]", },
"texture": "\"FloorTopProfil\"", {
"indices": [3, 2, 4, 5], "skip": "not face[0]",
"uvs": [ "texture": "\"FloorTopProfil\"",
"(0.5, 0)", "indices": [3, 2, 4, 5],
"(0.5, length_uv)", "uvs": [
"(1, length_uv)", "(0.5, 0)",
"(1, 0)" "(0.5, length_uv)",
], "(1, length_uv)",
"normals": null "(1, 0)"
} ],
], "normals": null
"instances": [ }
{ ],
"identifier": "raw_floor_side", "instances": [
"skip": "not face[2]", {
"params": { "identifier": "raw_floor_side",
"height": "height", "skip": "not face[2]",
"length": "2.5", "params": {
"is_left_sink": "False", "height": "height",
"is_right_sink": "True" "length": "2.5",
}, "is_left_sink": "False",
"transform": "rot(0, 0, 90) @ scale(1, -1, 1)" "is_right_sink": "True"
}, },
{ "transform": "rot(0, 0, 90) @ scale(1, -1, 1)"
"identifier": "raw_floor_side", },
"skip": "not face[2]", {
"params": { "identifier": "raw_floor_side",
"height": "height", "skip": "not face[2]",
"length": "2.5", "params": {
"is_left_sink": "True", "height": "height",
"is_right_sink": "False" "length": "2.5",
}, "is_left_sink": "True",
"transform": "move(0, 2.5, 0) @ rot(0, 0, 90) @ scale(1, -1, 1)" "is_right_sink": "False"
}, },
{ "transform": "move(0, 2.5, 0) @ rot(0, 0, 90) @ scale(1, -1, 1)"
"identifier": "raw_floor_side", },
"skip": "not face[3]", {
"params": { "identifier": "raw_floor_side",
"height": "height", "skip": "not face[3]",
"length": "2.5", "params": {
"is_left_sink": "False", "height": "height",
"is_right_sink": "True" "length": "2.5",
}, "is_left_sink": "False",
"transform": "move(length, 0, 0) @ rot(0, 0, 90)" "is_right_sink": "True"
}, },
{ "transform": "move(length, 0, 0) @ rot(0, 0, 90)"
"identifier": "raw_floor_side", },
"skip": "not face[3]", {
"params": { "identifier": "raw_floor_side",
"height": "height", "skip": "not face[3]",
"length": "2.5", "params": {
"is_left_sink": "True", "height": "height",
"is_right_sink": "False" "length": "2.5",
}, "is_left_sink": "True",
"transform": "move(length, 2.5, 0) @ rot(0, 0, 90)" "is_right_sink": "False"
}, },
{ "transform": "move(length, 2.5, 0) @ rot(0, 0, 90)"
"identifier": "raw_floor_side", },
"skip": "not face[4]", {
"params": { "identifier": "raw_floor_side",
"height": "height", "skip": "not face[4]",
"length": "length", "params": {
"is_left_sink": "False", "height": "height",
"is_right_sink": "False" "length": "length",
}, "is_left_sink": "False",
"transform": "ident()" "is_right_sink": "False"
}, },
{ "transform": "ident()"
"identifier": "raw_floor_side", },
"skip": "not face[5]", {
"params": { "identifier": "raw_floor_side",
"height": "height", "skip": "not face[5]",
"length": "length", "params": {
"is_left_sink": "False", "height": "height",
"is_right_sink": "False" "length": "length",
}, "is_left_sink": "False",
"transform": "move(0, 5, 0) @ scale(1, -1, 1)" "is_right_sink": "False"
}, },
{ "transform": "move(0, 5, 0) @ scale(1, -1, 1)"
"identifier": "floor_rectangle_bottom", },
"skip": "not face[1]", {
"params": { "identifier": "floor_rectangle_bottom",
"length": "length", "skip": "not face[1]",
"width": "5" "params": {
}, "length": "length",
"transform": "move(0, 0, -height)" "width": "5"
} },
] "transform": "move(0, 0, -height)"
} }
]
}
] ]

View File

@ -1,171 +1,178 @@
[ [
{ // The shared template prototype used by all floor terminals.
"identifier": "raw_floor_terminal", {
"showcase": null, "identifier": "raw_floor_terminal",
"params": [ "showcase": null,
{ "params": [
"field": "height", {
"data": "5.0" "field": "height",
}, "data": "5.0"
{ },
"field": "face", {
"data": "(True, False, True, False, True, True)" "field": "face",
}, "data": "(True, False, True, False, True, True)"
{ },
"field": "is_sink", {
"data": "False" "field": "is_sink",
} "data": "False"
], }
"skip": "False", ],
"vars": [], "skip": "False",
"vertices": [], "vars": [],
"faces": [], "vertices": [],
"instances": [ "faces": [],
{ "instances": [
"identifier": "cv_triangle_side", {
"skip": "False", "identifier": "cv_trapezoid_side",
"params": { "skip": "False",
"edge_length": "2.5", "params": {
"tip_offset": "2.5", "long_edge_length": "5.0",
"height": "height", "short_edge_offset": "2.5",
"face": "(face[0], False, False, face[3], face[4], None)", "short_edge_length": "2.5",
"is_sink": "is_sink" "height": "height",
}, "face": "(face[0], False, False, face[3], face[4], False)",
"transform": "ident()" "is_sink": "is_sink",
}, "is_ribbon": "False"
{ },
"identifier": "cv_triangle_side", "transform": "ident()"
"skip": "False", },
"params": { {
"edge_length": "2.5", "identifier": "cv_trapezoid_side",
"tip_offset": "2.5", "skip": "False",
"height": "height", "params": {
"face": "(face[0], False, False, face[3], face[5], None)", "long_edge_length": "5.0",
"is_sink": "is_sink" "short_edge_offset": "2.5",
}, "short_edge_length": "2.5",
"transform": "move(0, 5, 0) @ scale(1, -1, 1)" "height": "height",
}, "face": "(face[0], False, False, face[3], face[5], False)",
{ "is_sink": "is_sink",
"identifier": "cv_triangle_side", "is_ribbon": "False"
"skip": "False", },
"params": { "transform": "move(0, 5, 0) @ scale(1, -1, 1)"
"edge_length": "5", },
"tip_offset": "2.5", {
"height": "height", "identifier": "cv_triangle_side",
"face": "(face[0], False, False, False, face[2], None)", "skip": "False",
"is_sink": "is_sink" "params": {
}, "edge_length": "5",
"transform": "move(0, 5, 0) @ rot(0, 0, -90)" "tip_offset": "2.5",
}, "height": "height",
{ "face": "(face[0], False, False, False, face[2], None)",
"identifier": "floor_rectangle_bottom", "is_sink": "is_sink"
"skip": "not face[1]", },
"params": { "transform": "move(0, 5, 0) @ rot(0, 0, -90)"
"length": "2.5", },
"width": "5" {
}, "identifier": "floor_rectangle_bottom",
"transform": "move(0, 0, -height)" "skip": "not face[1]",
} "params": {
] "length": "5",
}, "width": "5"
{ },
"identifier": "floor_normal_terminal", "transform": "move(0, 0, -height)"
"showcase": { }
"title": "Normal Floor Terminal", ]
"icon": "NormalFloorTerminal", },
"type": "floor", {
"cfgs": [ "identifier": "floor_normal_terminal",
{ "showcase": {
"field": "height_", "title": "Normal Floor Terminal",
"type": "float", "category": "Floors",
"title": "Height", "icon": "NormalFloorTerminal",
"desc": "The height of block.", "type": "floor",
"default": "5.0" "cfgs": [
}, {
{ "field": "height_",
"field": "face_", "type": "float",
"type": "face", "title": "Height",
"title": "Face", "desc": "The height of block.",
"desc": "Whether has some faces.", "default": "5.0"
"default": "(True, False, True, False, True, True)" },
} {
] "field": "face_",
}, "type": "face",
"params": [ "title": "Face",
{ "desc": "Whether has some faces.",
"field": "height", "default": "(True, False, True, False, True, True)"
"data": "height_" }
}, ]
{ },
"field": "face", "params": [
"data": "face_" {
} "field": "height",
], "data": "height_"
"skip": "False", },
"vars": [], {
"vertices": [], "field": "face",
"faces": [], "data": "face_"
"instances": [ }
{ ],
"identifier": "raw_floor_terminal", "skip": "False",
"skip": "False", "vars": [],
"params": { "vertices": [],
"height": "height", "faces": [],
"face": "face", "instances": [
"is_sink": "False" {
}, "identifier": "raw_floor_terminal",
"transform": "ident()" "skip": "False",
} "params": {
] "height": "height",
}, "face": "face",
{ "is_sink": "False"
"identifier": "floor_sink_terminal", },
"showcase": { "transform": "ident()"
"title": "Sink Floor Terminal", }
"icon": "SinkFloorTerminal", ]
"type": "floor", },
"cfgs": [ {
{ "identifier": "floor_sink_terminal",
"field": "height_", "showcase": {
"type": "float", "title": "Sink Floor Terminal",
"title": "Height", "category": "Floors",
"desc": "The height of block.", "icon": "SinkFloorTerminal",
"default": "5.0" "type": "floor",
}, "cfgs": [
{ {
"field": "face_", "field": "height_",
"type": "face", "type": "float",
"title": "Face", "title": "Height",
"desc": "Whether has some faces.", "desc": "The height of block.",
"default": "(True, False, True, False, True, True)" "default": "5.0"
} },
] {
}, "field": "face_",
"params": [ "type": "face",
{ "title": "Face",
"field": "height", "desc": "Whether has some faces.",
"data": "height_" "default": "(True, False, True, False, True, True)"
}, }
{ ]
"field": "face", },
"data": "face_" "params": [
} {
], "field": "height",
"skip": "False", "data": "height_"
"vars": [], },
"vertices": [], {
"faces": [], "field": "face",
"instances": [ "data": "face_"
{ }
"identifier": "raw_floor_terminal", ],
"skip": "False", "skip": "False",
"params": { "vars": [],
"height": "height", "vertices": [],
"face": "face", "faces": [],
"is_sink": "True" "instances": [
}, {
"transform": "ident()" "identifier": "raw_floor_terminal",
} "skip": "False",
] "params": {
} "height": "height",
"face": "face",
"is_sink": "True"
},
"transform": "ident()"
}
]
}
] ]

View File

@ -1,286 +1,289 @@
[ [
{ {
"identifier": "raw_trafo", "identifier": "raw_trafo",
"showcase": null, "showcase": null,
"params": [ "params": [
{ {
"field": "trafo_texture", "field": "trafo_texture",
"data": "\"BallWood\"" "data": "\"BallWood\""
}, },
{ {
"field": "height", "field": "height",
"data": "5.0" "data": "5.0"
}, },
{ {
"field": "face", "field": "face",
"data": "(True, False, True, True, True, True)" "data": "(True, False, True, True, True, True)"
} }
], ],
"skip": "False", "skip": "False",
"vars": [ "vars": [
{ {
"field": "uv_height", "field": "uv_height",
"data": "height / 5.0" "data": "height / 5.0"
} }
], ],
"vertices": [ "vertices": [
{ {
"skip": "False", "skip": "False",
"data": "(0, 0, 0)" "data": "(0, 0, 0)"
}, },
{ {
"skip": "False", "skip": "False",
"data": "(5, 0, 0)" "data": "(5, 0, 0)"
}, },
{ {
"skip": "False", "skip": "False",
"data": "(5, 5, 0)" "data": "(5, 5, 0)"
}, },
{ {
"skip": "False", "skip": "False",
"data": "(0, 5, 0)" "data": "(0, 5, 0)"
}, },
{ {
"skip": "False", "skip": "False",
"data": "(0, 0, -height)" "data": "(0, 0, -height)"
}, },
{ {
"skip": "False", "skip": "False",
"data": "(5, 0, -height)" "data": "(5, 0, -height)"
}, },
{ {
"skip": "False", "skip": "False",
"data": "(5, 5, -height)" "data": "(5, 5, -height)"
}, },
{ {
"skip": "False", "skip": "False",
"data": "(0, 5, -height)" "data": "(0, 5, -height)"
} }
], ],
"faces": [ "faces": [
{ {
"skip": "not face[0]", "skip": "not face[0]",
"texture": "trafo_texture", "texture": "trafo_texture",
"indices": [0, 1, 2, 3], "indices": [0, 1, 2, 3],
"uvs": [ "uvs": [
"(0, 0)", "(0, 0)",
"(1, 0)", "(1, 0)",
"(1, 1)", "(1, 1)",
"(0, 1)" "(0, 1)"
], ],
"normals": null "normals": null
}, },
{ {
"skip": "(not face[1]) or height == 0.0", "skip": "(not face[1]) or height == 0.0",
"texture": "trafo_texture", "texture": "trafo_texture",
"indices": [5, 4, 7, 6], "indices": [5, 4, 7, 6],
"uvs": [ "uvs": [
"(0, 0)", "(0, 0)",
"(1, 0)", "(1, 0)",
"(1, 1)", "(1, 1)",
"(0, 1)" "(0, 1)"
], ],
"normals": null "normals": null
}, },
{ {
"skip": "(not face[2]) or height == 0.0", "skip": "(not face[2]) or height == 0.0",
"texture": "trafo_texture", "texture": "trafo_texture",
"indices": [3, 7, 4, 0], "indices": [3, 7, 4, 0],
"uvs": [ "uvs": [
"(0, 0)", "(0, 0)",
"(uv_height, 0)", "(uv_height, 0)",
"(uv_height, 1)", "(uv_height, 1)",
"(0, 1)" "(0, 1)"
], ],
"normals": null "normals": null
}, },
{ {
"skip": "(not face[3]) or height == 0.0", "skip": "(not face[3]) or height == 0.0",
"texture": "trafo_texture", "texture": "trafo_texture",
"indices": [1, 5, 6, 2], "indices": [1, 5, 6, 2],
"uvs": [ "uvs": [
"(0, 0)", "(0, 0)",
"(uv_height, 0)", "(uv_height, 0)",
"(uv_height, 1)", "(uv_height, 1)",
"(0, 1)" "(0, 1)"
], ],
"normals": null "normals": null
}, },
{ {
"skip": "(not face[4]) or height == 0.0", "skip": "(not face[4]) or height == 0.0",
"texture": "trafo_texture", "texture": "trafo_texture",
"indices": [0, 4, 5, 1], "indices": [0, 4, 5, 1],
"uvs": [ "uvs": [
"(0, 0)", "(0, 0)",
"(uv_height, 0)", "(uv_height, 0)",
"(uv_height, 1)", "(uv_height, 1)",
"(0, 1)" "(0, 1)"
], ],
"normals": null "normals": null
}, },
{ {
"skip": "(not face[5]) or height == 0.0", "skip": "(not face[5]) or height == 0.0",
"texture": "trafo_texture", "texture": "trafo_texture",
"indices": [2, 6, 7, 3], "indices": [2, 6, 7, 3],
"uvs": [ "uvs": [
"(0, 0)", "(0, 0)",
"(uv_height, 0)", "(uv_height, 0)",
"(uv_height, 1)", "(uv_height, 1)",
"(0, 1)" "(0, 1)"
], ],
"normals": null "normals": null
} }
], ],
"instances": [] "instances": []
}, },
{ {
"identifier": "wood_trafo", "identifier": "wood_trafo",
"showcase": { "showcase": {
"title": "Wood Trafo", "title": "Wood Trafo",
"icon": "WoodTrafo", "category": "Trafo",
"type": "floor", "icon": "WoodTrafo",
"cfgs": [ "type": "floor",
{ "cfgs": [
"field": "height_", {
"type": "float", "field": "height_",
"title": "Height", "type": "float",
"desc": "The height of block.", "title": "Height",
"default": "5.0" "desc": "The height of block.",
}, "default": "5.0"
{ },
"field": "face_", {
"type": "face", "field": "face_",
"title": "Face", "type": "face",
"desc": "Whether has some faces.", "title": "Face",
"default": "(True, False, True, True, True, True)" "desc": "Whether has some faces.",
} "default": "(True, False, True, True, True, True)"
] }
}, ]
"params": [ },
{ "params": [
"field": "height", {
"data": "height_" "field": "height",
}, "data": "height_"
{ },
"field": "face", {
"data": "face_" "field": "face",
} "data": "face_"
], }
"skip": "False", ],
"vars": [], "skip": "False",
"vertices": [], "vars": [],
"faces": [], "vertices": [],
"instances": [ "faces": [],
{ "instances": [
"identifier": "raw_trafo", {
"skip": "False", "identifier": "raw_trafo",
"params": { "skip": "False",
"trafo_texture": "\"BallWood\"", "params": {
"height": "height", "trafo_texture": "\"BallWood\"",
"face": "face" "height": "height",
}, "face": "face"
"transform": "ident()" },
} "transform": "ident()"
] }
}, ]
{ },
"identifier": "stone_trafo", {
"showcase": { "identifier": "stone_trafo",
"title": "Stone Trafo", "showcase": {
"icon": "StoneTrafo", "title": "Stone Trafo",
"type": "floor", "category": "Trafo",
"cfgs": [ "icon": "StoneTrafo",
{ "type": "floor",
"field": "height_", "cfgs": [
"type": "float", {
"title": "Height", "field": "height_",
"desc": "The height of block.", "type": "float",
"default": "5.0" "title": "Height",
}, "desc": "The height of block.",
{ "default": "5.0"
"field": "face_", },
"type": "face", {
"title": "Face", "field": "face_",
"desc": "Whether has some faces.", "type": "face",
"default": "(True, False, True, True, True, True)" "title": "Face",
} "desc": "Whether has some faces.",
] "default": "(True, False, True, True, True, True)"
}, }
"params": [ ]
{ },
"field": "height", "params": [
"data": "height_" {
}, "field": "height",
{ "data": "height_"
"field": "face", },
"data": "face_" {
} "field": "face",
], "data": "face_"
"skip": "False", }
"vars": [], ],
"vertices": [], "skip": "False",
"faces": [], "vars": [],
"instances": [ "vertices": [],
{ "faces": [],
"identifier": "raw_trafo", "instances": [
"skip": "False", {
"params": { "identifier": "raw_trafo",
"trafo_texture": "\"BallStone\"", "skip": "False",
"height": "height", "params": {
"face": "face" "trafo_texture": "\"BallStone\"",
}, "height": "height",
"transform": "ident()" "face": "face"
} },
] "transform": "ident()"
}, }
{ ]
"identifier": "paper_trafo", },
"showcase": { {
"title": "Paper Trafo", "identifier": "paper_trafo",
"icon": "PaperTrafo", "showcase": {
"type": "floor", "title": "Paper Trafo",
"cfgs": [ "category": "Trafo",
{ "icon": "PaperTrafo",
"field": "height_", "type": "floor",
"type": "float", "cfgs": [
"title": "Height", {
"desc": "The height of block.", "field": "height_",
"default": "5.0" "type": "float",
}, "title": "Height",
{ "desc": "The height of block.",
"field": "face_", "default": "5.0"
"type": "face", },
"title": "Face", {
"desc": "Whether has some faces.", "field": "face_",
"default": "(True, False, True, True, True, True)" "type": "face",
} "title": "Face",
] "desc": "Whether has some faces.",
}, "default": "(True, False, True, True, True, True)"
"params": [ }
{ ]
"field": "height", },
"data": "height_" "params": [
}, {
{ "field": "height",
"field": "face", "data": "height_"
"data": "face_" },
} {
], "field": "face",
"skip": "False", "data": "face_"
"vars": [], }
"vertices": [], ],
"faces": [], "skip": "False",
"instances": [ "vars": [],
{ "vertices": [],
"identifier": "raw_trafo", "faces": [],
"skip": "False", "instances": [
"params": { {
"trafo_texture": "\"BallPaper\"", "identifier": "raw_trafo",
"height": "height", "skip": "False",
"face": "face" "params": {
}, "trafo_texture": "\"BallPaper\"",
"transform": "ident()" "height": "height",
} "face": "face"
] },
} "transform": "ident()"
}
]
}
] ]

View File

@ -1,270 +1,272 @@
[ [
{ {
"identifier": "raw_floor_transition_part", "identifier": "raw_floor_transition_part",
"showcase": null, "showcase": null,
"params": [ "params": [
{ {
"field": "height", "field": "height",
"data": "5.0" "data": "5.0"
}, },
{ {
"field": "face_part", "field": "face_part",
"data": "(True, False, False)" "data": "(True, False, False)"
} }
], ],
"skip": "False", "skip": "False",
"vars": [], "vars": [],
"vertices": [ "vertices": [
{ {
"skip": "not face_part[0]", "skip": "not face_part[0]",
"data": "(0, 0, 0)" "data": "(0, 0, 0)"
}, },
{ {
"skip": "not face_part[0]", "skip": "not face_part[0]",
"data": "(5, 0, 0)" "data": "(5, 0, 0)"
}, },
{ {
"skip": "not face_part[0]", "skip": "not face_part[0]",
"data": "(0, 2.5, -0.7)" "data": "(0, 2.5, -0.7)"
}, },
{ {
"skip": "not face_part[0]", "skip": "not face_part[0]",
"data": "(5, 5, 0)" "data": "(5, 5, 0)"
}, },
{ {
"skip": "not face_part[0]", "skip": "not face_part[0]",
"data": "(0, 5, 0)" "data": "(0, 5, 0)"
} }
], ],
"faces": [ "faces": [
{ {
"skip": "not face_part[0]", "skip": "not face_part[0]",
"texture": "\"FloorTopProfilFlat\"", "texture": "\"FloorTopProfilFlat\"",
"indices": [0, 1, 2], "indices": [0, 1, 2],
"uvs": [ "uvs": [
"(0, 1)", "(0, 1)",
"(0, 0)", "(0, 0)",
"(0.5, 1)" "(0.5, 1)"
], ],
"normals": null "normals": null
}, },
{ {
"skip": "not face_part[0]", "skip": "not face_part[0]",
"texture": "\"FloorTopProfilFlat\"", "texture": "\"FloorTopProfilFlat\"",
"indices": [3, 2, 1], "indices": [3, 2, 1],
"uvs": [ "uvs": [
"(1, 0)", "(1, 0)",
"(0.5, 1)", "(0.5, 1)",
"(0, 0)" "(0, 0)"
], ],
"normals": null "normals": null
}, },
{ {
"skip": "not face_part[0]", "skip": "not face_part[0]",
"texture": "\"FloorTopProfilFlat\"", "texture": "\"FloorTopProfilFlat\"",
"indices": [2, 3, 4], "indices": [2, 3, 4],
"uvs": [ "uvs": [
"(0.5, 1)", "(0.5, 1)",
"(1, 0)", "(1, 0)",
"(1, 1)" "(1, 1)"
], ],
"normals": null "normals": null
} }
], ],
"instances": [ "instances": [
{ {
"identifier": "raw_floor_side", "identifier": "raw_floor_side",
"skip": "not face_part[1]", "skip": "not face_part[1]",
"params": { "params": {
"height": "height", "height": "height",
"length": "2.5", "length": "2.5",
"is_left_sink": "False", "is_left_sink": "False",
"is_right_sink": "True" "is_right_sink": "True"
}, },
"transform": "move(0, 5, 0) @ rot(0, 0, -90)" "transform": "move(0, 5, 0) @ rot(0, 0, -90)"
}, },
{ {
"identifier": "raw_floor_side", "identifier": "raw_floor_side",
"skip": "not face_part[1]", "skip": "not face_part[1]",
"params": { "params": {
"height": "height", "height": "height",
"length": "2.5", "length": "2.5",
"is_left_sink": "True", "is_left_sink": "True",
"is_right_sink": "False" "is_right_sink": "False"
}, },
"transform": "move(0, 2.5, 0) @ rot(0, 0, -90)" "transform": "move(0, 2.5, 0) @ rot(0, 0, -90)"
}, },
{ {
"identifier": "raw_floor_side", "identifier": "raw_floor_side",
"skip": "not face_part[2]", "skip": "not face_part[2]",
"params": { "params": {
"height": "height", "height": "height",
"length": "5", "length": "5",
"is_left_sink": "False", "is_left_sink": "False",
"is_right_sink": "False" "is_right_sink": "False"
}, },
"transform": "move(5, 0, 0) @ rot(0, 0, 90)" "transform": "move(5, 0, 0) @ rot(0, 0, 90)"
} }
] ]
}, },
{ {
"identifier": "floor_transition", "identifier": "floor_transition",
"showcase": { "showcase": {
"title": "Transition", "title": "Transition",
"icon": "Transition", "category": "Miscellaneous",
"type": "floor", "icon": "Transition",
"cfgs": [ "type": "floor",
{ "cfgs": [
"field": "height_", {
"type": "float", "field": "height_",
"title": "Height", "type": "float",
"desc": "The height of block.", "title": "Height",
"default": "5.0" "desc": "The height of block.",
}, "default": "5.0"
{ },
"field": "face_", {
"type": "face", "field": "face_",
"title": "Face", "type": "face",
"desc": "Whether has some faces.", "title": "Face",
"default": "(True, False, False, False, True, True)" "desc": "Whether has some faces.",
} "default": "(True, False, False, False, True, True)"
] }
}, ]
"params": [ },
{ "params": [
"field": "height", {
"data": "height_" "field": "height",
}, "data": "height_"
{ },
"field": "face", {
"data": "face_" "field": "face",
} "data": "face_"
], }
"skip": "False", ],
"vars": [], "skip": "False",
"vertices": [], "vars": [],
"faces": [], "vertices": [],
"instances": [ "faces": [],
{ "instances": [
"identifier": "raw_floor_transition_part", {
"skip": "False", "identifier": "raw_floor_transition_part",
"params": { "skip": "False",
"height": "height", "params": {
"face_part": "(face[0], face[2], face[3])" "height": "height",
}, "face_part": "(face[0], face[2], face[3])"
"transform": "ident()" },
}, "transform": "ident()"
{ },
"identifier": "raw_floor_side", {
"skip": "not face[4]", "identifier": "raw_floor_side",
"params": { "skip": "not face[4]",
"height": "height", "params": {
"length": "5", "height": "height",
"is_left_sink": "False", "length": "5",
"is_right_sink": "False" "is_left_sink": "False",
}, "is_right_sink": "False"
"transform": "ident()" },
}, "transform": "ident()"
{ },
"identifier": "raw_floor_side", {
"skip": "not face[5]", "identifier": "raw_floor_side",
"params": { "skip": "not face[5]",
"height": "height", "params": {
"length": "5", "height": "height",
"is_left_sink": "False", "length": "5",
"is_right_sink": "False" "is_left_sink": "False",
}, "is_right_sink": "False"
"transform": "move(5, 5, 0) @ rot(0, 0, 180)" },
}, "transform": "move(5, 5, 0) @ rot(0, 0, 180)"
{ },
"identifier": "floor_rectangle_bottom", {
"skip": "not face[1]", "identifier": "floor_rectangle_bottom",
"params": { "skip": "not face[1]",
"length": "5", "params": {
"width": "5" "length": "5",
}, "width": "5"
"transform": "move(0, 0, -height)" },
} "transform": "move(0, 0, -height)"
] }
}, ]
{ },
"identifier": "floor_narrow_transition", {
"showcase": { "identifier": "floor_narrow_transition",
"title": "Narrow Transition", "showcase": {
"icon": "NarrowTransition", "title": "Narrow Transition",
"type": "floor", "category": "Miscellaneous",
"cfgs": [ "icon": "NarrowTransition",
{ "type": "floor",
"field": "height_", "cfgs": [
"type": "float", {
"title": "Height", "field": "height_",
"desc": "The height of block.", "type": "float",
"default": "5.0" "title": "Height",
}, "desc": "The height of block.",
{ "default": "5.0"
"field": "face_", },
"type": "face", {
"title": "Face", "field": "face_",
"desc": "Whether has some faces.", "type": "face",
"default": "(True, False, False, False, False, False)" "title": "Face",
} "desc": "Whether has some faces.",
] "default": "(True, False, False, False, False, False)"
}, }
"params": [ ]
{ },
"field": "height", "params": [
"data": "height_" {
}, "field": "height",
{ "data": "height_"
"field": "face", },
"data": "face_" {
} "field": "face",
], "data": "face_"
"skip": "False", }
"vars": [], ],
"vertices": [], "skip": "False",
"faces": [], "vars": [],
"instances": [ "vertices": [],
{ "faces": [],
"identifier": "raw_floor_transition_part", "instances": [
"skip": "False", {
"params": { "identifier": "raw_floor_transition_part",
"height": "height", "skip": "False",
"face_part": "(face[0], face[2], face[3])" "params": {
}, "height": "height",
"transform": "scale(0.5, 1, 1)" "face_part": "(face[0], face[2], face[3])"
}, },
{ "transform": "scale(0.5, 1, 1)"
"identifier": "raw_floor_side", },
"skip": "not face[4]", {
"params": { "identifier": "raw_floor_side",
"height": "height", "skip": "not face[4]",
"length": "2.5", "params": {
"is_left_sink": "False", "height": "height",
"is_right_sink": "False" "length": "2.5",
}, "is_left_sink": "False",
"transform": "ident()" "is_right_sink": "False"
}, },
{ "transform": "ident()"
"identifier": "raw_floor_side", },
"skip": "not face[5]", {
"params": { "identifier": "raw_floor_side",
"height": "height", "skip": "not face[5]",
"length": "2.5", "params": {
"is_left_sink": "False", "height": "height",
"is_right_sink": "False" "length": "2.5",
}, "is_left_sink": "False",
"transform": "move(2.5, 5, 0) @ rot(0, 0, 180)" "is_right_sink": "False"
}, },
{ "transform": "move(2.5, 5, 0) @ rot(0, 0, 180)"
"identifier": "floor_rectangle_bottom", },
"skip": "not face[1]", {
"params": { "identifier": "floor_rectangle_bottom",
"length": "2.5", "skip": "not face[1]",
"width": "5" "params": {
}, "length": "2.5",
"transform": "move(0, 0, -height)" "width": "5"
} },
] "transform": "move(0, 0, -height)"
} }
]
}
] ]

Some files were not shown because too many files have changed in this diff Show More