Compare commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
2b2b18cfa4 | ||
|
|
b19800e37f | ||
|
|
e14729500c | ||
|
|
48bfc54830 | ||
|
|
7e74e42bd7 | ||
|
|
96a81b165b | ||
|
|
0681f0d240 | ||
|
|
d700f1276a | ||
|
|
3bea3d67b9 | ||
|
|
ec41b7553a | ||
|
|
9e2539499e | ||
|
|
3a5cd1c937 | ||
|
|
1afa5f9893 | ||
|
|
1383e87104 | ||
|
|
a2b8f41a21 | ||
|
|
93f23abeb9 | ||
|
|
4ba3ff9e5a | ||
|
|
a9a889a8fd | ||
|
|
fc34b19a42 | ||
|
|
9e65d258d7 | ||
|
|
ab266a07fb | ||
|
|
61c7709b97 | ||
|
|
1044d4b450 | ||
|
|
54edc4dab7 | ||
|
|
f40efb0467 | ||
|
|
10de948a79 | ||
|
|
0ae95e927f | ||
|
|
9f591113f8 | ||
|
|
685a0b8066 | ||
|
|
a1a215ec19 | ||
|
|
3bed920f11 | ||
|
|
6dc82aade6 | ||
|
|
ac6692cd97 | ||
|
|
14de9f3f1b | ||
|
|
dd64c0ce04 | ||
|
|
84f6baae6a | ||
|
|
5afbf679ed | ||
|
|
89f5b5990d | ||
|
|
b441063061 | ||
|
|
b96550ca5c | ||
|
|
cc74a2ca8b | ||
|
|
f9fe4af1fe | ||
|
|
4a96906002 | ||
|
|
c448216496 | ||
|
|
f10c273067 | ||
|
|
04aa879c22 | ||
|
|
4ffe29654b | ||
|
|
1d7ac76d0e | ||
|
|
77315ffbea | ||
|
|
0862ecd269 | ||
|
|
f4d3e48be2 | ||
|
|
6ae8899912 | ||
|
|
76f1cdc3c7 | ||
|
|
8105b110f2 | ||
|
|
acb87b3844 | ||
|
|
94d5c934c6 | ||
|
|
3372c7a4b7 | ||
|
|
4181096a9e | ||
|
|
89a5e6367b | ||
|
|
cb893b770a | ||
|
|
2f08455518 | ||
|
|
729e12ed7b | ||
|
|
fe47861bd0 | ||
|
|
c894d88c54 | ||
|
|
c8d59ef5f4 | ||
|
|
f5c50ae079 | ||
|
|
b1199f6a21 | ||
|
|
47a8d81ecd | ||
|
|
24ac07a3b3 | ||
|
|
b647d7256f | ||
|
|
421f01b3db | ||
|
|
f215d3487f | ||
|
|
1661f82a07 | ||
|
|
512e7e868b | ||
|
|
427bad4f6b | ||
|
|
209d212287 | ||
|
|
2271b0a621 | ||
|
|
6940428b88 | ||
|
|
aa602a7bb8 | ||
|
|
8588f097a2 | ||
|
|
5d8ffb7e48 | ||
|
|
270fddff52 | ||
|
|
084e7fbe61 | ||
|
|
190be6ec61 | ||
|
|
36e925101e | ||
|
|
84e7e8380f | ||
|
|
c58af8ce48 | ||
|
|
07298fd21c | ||
|
|
3a1a0fb0f6 | ||
|
|
3396947115 | ||
|
|
6cf2ab895d | ||
|
|
b039dd8b43 | ||
|
|
8bad1a487c | ||
|
|
0f18559d3f | ||
|
|
5a5053440c | ||
|
|
02a1222210 | ||
|
|
f8c344f65e | ||
|
|
0bec108dcb | ||
|
|
997839a187 | ||
|
|
da71d5560c | ||
|
|
02082bf99e | ||
|
|
c82c094519 | ||
|
|
8ec101e1f1 | ||
|
|
8499c25b67 | ||
|
|
200ac40648 | ||
|
|
25091a48a7 | ||
|
|
259f99ddf8 | ||
|
|
f123bdacc0 | ||
|
|
8f27fec3c8 | ||
|
|
0d0d4db2db | ||
|
|
bfbdf5c99b | ||
|
|
50b2cf2cf1 | ||
|
|
013096459a | ||
|
|
31aa5c3127 | ||
|
|
f9502fe2d4 | ||
|
|
b5565d796a | ||
|
|
6b31401240 | ||
|
|
2c006b4528 | ||
|
|
680f367a42 | ||
|
|
318d661ac1 | ||
|
|
321e1b6fe9 | ||
|
|
20aba6c273 | ||
|
|
c5ce6e8a2c | ||
|
|
9315ff723d | ||
|
|
50b7eb0bce | ||
|
|
03e8feac67 | ||
|
|
35f2c4a389 | ||
|
|
6bc3933291 | ||
|
|
03441c642b | ||
|
|
77b15a8797 | ||
|
|
94872957fd | ||
|
|
a6de69c882 | ||
|
|
52f3936e42 | ||
|
|
2f123e6a3c | ||
|
|
f6569313bf | ||
|
|
ebb22c9ec1 | ||
|
|
ae9a848864 | ||
|
|
ca7e047c09 | ||
|
|
5c34bbad38 | ||
|
|
70dd525315 | ||
|
|
3025fcf305 | ||
|
|
52452a96d5 | ||
|
|
84b3ace13d | ||
|
|
7116d7198a | ||
|
|
6944415912 | ||
|
|
88fe1519e3 | ||
|
|
5bb3abed20 | ||
|
|
e79982c43f | ||
|
|
8e2d7a4133 | ||
|
|
cb80fa8b03 | ||
|
|
e84c1148f3 | ||
|
|
1432c2990a | ||
|
|
1a2dd08092 | ||
|
|
59a1275f68 | ||
|
|
d128ffcde5 | ||
|
|
fd17d3b5c9 | ||
|
|
1f0444009f | ||
|
|
bd40e0fdf2 | ||
|
|
6991307b8b | ||
|
|
b7ad5c67d4 | ||
|
|
5bbaa895eb | ||
|
|
1299a14f3b | ||
|
|
8fad643dd9 | ||
|
|
ec0749f3e5 | ||
|
|
6e4b1b37da | ||
|
|
1eaaedfcbd | ||
|
|
c1f92c7244 | ||
|
|
2896602e6a | ||
|
|
9079bf1bb3 | ||
|
|
f7dd5f32ba | ||
|
|
b4bb85cc71 | ||
|
|
bcbe9c987e | ||
|
|
16d4fc2bca | ||
|
|
4f10b1a9e9 | ||
|
|
484a4101ad | ||
|
|
ea6cb430fe | ||
|
|
354b3cd180 | ||
|
|
1d1de08bd7 | ||
|
|
21345b8251 | ||
|
|
b94e7e2b22 | ||
|
|
5584bc66a0 | ||
|
|
4f693b555d | ||
|
|
4733295a39 | ||
|
|
d9b9531828 | ||
|
|
1db6cab8ca | ||
|
|
8de1adda04 | ||
|
|
f07cfc91d5 | ||
|
|
0a3b3c5862 | ||
|
|
0d1e382b37 | ||
|
|
12d5f8c236 | ||
|
|
6fe856fa8e | ||
|
|
c2a85a2d86 | ||
|
|
dafb679780 | ||
|
|
f3663a4280 | ||
|
|
9c8d365ab6 | ||
|
|
0be036fcea | ||
|
|
e153e51abd | ||
|
|
d292ce389a | ||
|
|
807e006245 | ||
|
|
8d7a982e50 | ||
|
|
ddf6b7befe | ||
|
|
a300ddbb49 | ||
|
|
c9e51c9b6a | ||
|
|
b58f837a94 | ||
|
|
5fe865c621 | ||
|
|
9b9fc9cde8 | ||
|
|
ef459a210d | ||
|
|
7680d11c0e | ||
|
|
e7376a3e9c | ||
|
|
2a87e98904 | ||
|
|
9211b0bcca | ||
|
|
43a93d7c19 | ||
|
|
803bcaad05 | ||
|
|
314284ed94 | ||
|
|
0a815f04d6 | ||
|
|
2bd031784a | ||
|
|
d5cb8eb1ec | ||
|
|
02c11ffe5a | ||
|
|
240d5612df | ||
|
|
84dd5b76f1 | ||
|
|
2950857e3d | ||
|
|
dde95c3e4f | ||
|
|
4701164a6c | ||
|
|
6c875d23ae | ||
|
|
3c36b8b9db | ||
|
|
c943264d05 | ||
|
|
ca459c6185 | ||
|
|
1bfae63fe3 | ||
|
|
cb9609ac2c | ||
|
|
c40f956771 | ||
|
|
e264c85a04 |
@@ -1,2 +1,6 @@
|
|||||||
# our generated mesh should be save as binary
|
# All PNG image are binary
|
||||||
*.bin binary
|
*.png binary
|
||||||
|
# Element placeholder mesh should be save as binary
|
||||||
|
*.ph binary
|
||||||
|
# Raw json data should be binary, although i edit it manually
|
||||||
|
assets/jsons/*.json binary
|
||||||
|
|||||||
@@ -0,0 +1,27 @@
|
|||||||
|
name: Publish docs via GitHub Pages
|
||||||
|
on:
|
||||||
|
push:
|
||||||
|
branches:
|
||||||
|
- master
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
build:
|
||||||
|
name: Deploy docs
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
steps:
|
||||||
|
- name: Checkout master
|
||||||
|
uses: actions/checkout@v4
|
||||||
|
with:
|
||||||
|
ref: master
|
||||||
|
|
||||||
|
- name: Install MkDocs
|
||||||
|
run: |
|
||||||
|
echo 'mkdocs' > requirements.txt
|
||||||
|
echo 'pymdown-extensions' >> requirements.txt
|
||||||
|
|
||||||
|
- name: Deploy docs
|
||||||
|
uses: mhausenblas/mkdocs-deploy-gh-pages@nomaterial
|
||||||
|
env:
|
||||||
|
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||||
|
CONFIG_FILE: docs/mkdocs.yml
|
||||||
|
# GITHUB_DOMAIN: github.myenterprise.com
|
||||||
@@ -1,138 +1,3 @@
|
|||||||
# Byte-compiled / optimized / DLL files
|
## ===== Personal =====
|
||||||
__pycache__/
|
# Disable VSCode
|
||||||
*.py[cod]
|
.vscode/
|
||||||
*$py.class
|
|
||||||
|
|
||||||
# C extensions
|
|
||||||
*.so
|
|
||||||
|
|
||||||
# Distribution / packaging
|
|
||||||
.Python
|
|
||||||
build/
|
|
||||||
develop-eggs/
|
|
||||||
dist/
|
|
||||||
downloads/
|
|
||||||
eggs/
|
|
||||||
.eggs/
|
|
||||||
lib/
|
|
||||||
lib64/
|
|
||||||
parts/
|
|
||||||
sdist/
|
|
||||||
var/
|
|
||||||
wheels/
|
|
||||||
share/python-wheels/
|
|
||||||
*.egg-info/
|
|
||||||
.installed.cfg
|
|
||||||
*.egg
|
|
||||||
MANIFEST
|
|
||||||
|
|
||||||
# PyInstaller
|
|
||||||
# Usually these files are written by a python script from a template
|
|
||||||
# before PyInstaller builds the exe, so as to inject date/other infos into it.
|
|
||||||
*.manifest
|
|
||||||
*.spec
|
|
||||||
|
|
||||||
# Installer logs
|
|
||||||
pip-log.txt
|
|
||||||
pip-delete-this-directory.txt
|
|
||||||
|
|
||||||
# Unit test / coverage reports
|
|
||||||
htmlcov/
|
|
||||||
.tox/
|
|
||||||
.nox/
|
|
||||||
.coverage
|
|
||||||
.coverage.*
|
|
||||||
.cache
|
|
||||||
nosetests.xml
|
|
||||||
coverage.xml
|
|
||||||
*.cover
|
|
||||||
*.py,cover
|
|
||||||
.hypothesis/
|
|
||||||
.pytest_cache/
|
|
||||||
cover/
|
|
||||||
|
|
||||||
# Translations
|
|
||||||
*.mo
|
|
||||||
*.pot
|
|
||||||
|
|
||||||
# Django stuff:
|
|
||||||
*.log
|
|
||||||
local_settings.py
|
|
||||||
db.sqlite3
|
|
||||||
db.sqlite3-journal
|
|
||||||
|
|
||||||
# Flask stuff:
|
|
||||||
instance/
|
|
||||||
.webassets-cache
|
|
||||||
|
|
||||||
# Scrapy stuff:
|
|
||||||
.scrapy
|
|
||||||
|
|
||||||
# Sphinx documentation
|
|
||||||
docs/_build/
|
|
||||||
|
|
||||||
# PyBuilder
|
|
||||||
.pybuilder/
|
|
||||||
target/
|
|
||||||
|
|
||||||
# Jupyter Notebook
|
|
||||||
.ipynb_checkpoints
|
|
||||||
|
|
||||||
# IPython
|
|
||||||
profile_default/
|
|
||||||
ipython_config.py
|
|
||||||
|
|
||||||
# pyenv
|
|
||||||
# For a library or package, you might want to ignore these files since the code is
|
|
||||||
# intended to run in multiple environments; otherwise, check them in:
|
|
||||||
# .python-version
|
|
||||||
|
|
||||||
# pipenv
|
|
||||||
# According to pypa/pipenv#598, it is recommended to include Pipfile.lock in version control.
|
|
||||||
# However, in case of collaboration, if having platform-specific dependencies or dependencies
|
|
||||||
# having no cross-platform support, pipenv may install dependencies that don't work, or not
|
|
||||||
# install all needed dependencies.
|
|
||||||
#Pipfile.lock
|
|
||||||
|
|
||||||
# PEP 582; used by e.g. github.com/David-OConnor/pyflow
|
|
||||||
__pypackages__/
|
|
||||||
|
|
||||||
# Celery stuff
|
|
||||||
celerybeat-schedule
|
|
||||||
celerybeat.pid
|
|
||||||
|
|
||||||
# SageMath parsed files
|
|
||||||
*.sage.py
|
|
||||||
|
|
||||||
# Environments
|
|
||||||
.env
|
|
||||||
.venv
|
|
||||||
env/
|
|
||||||
venv/
|
|
||||||
ENV/
|
|
||||||
env.bak/
|
|
||||||
venv.bak/
|
|
||||||
|
|
||||||
# Spyder project settings
|
|
||||||
.spyderproject
|
|
||||||
.spyproject
|
|
||||||
|
|
||||||
# Rope project settings
|
|
||||||
.ropeproject
|
|
||||||
|
|
||||||
# mkdocs documentation
|
|
||||||
/site
|
|
||||||
|
|
||||||
# mypy
|
|
||||||
.mypy_cache/
|
|
||||||
.dmypy.json
|
|
||||||
dmypy.json
|
|
||||||
|
|
||||||
# Pyre type checker
|
|
||||||
.pyre/
|
|
||||||
|
|
||||||
# pytype static type analyzer
|
|
||||||
.pytype/
|
|
||||||
|
|
||||||
# Cython debug symbols
|
|
||||||
cython_debug/
|
|
||||||
|
|||||||
@@ -1,80 +1,7 @@
|
|||||||
# Ballance Blender Helper
|
# BBP NG
|
||||||
|
|
||||||
[中文版本](README_ZH.md)
|
[中文版本](README_ZH.md)
|
||||||
|
|
||||||
## Brief introduction
|
BBP NG, abbr **B**allance **B**lender **P**lugin **N**ext **G**eneration.
|
||||||
|
|
||||||
This is a Blender plugin which is served for Ballance mapping in Blender.
|
|
||||||
|
|
||||||
The latest commit may not be stable to use, please visit the Release page to get a stable version.
|
|
||||||
|
|
||||||
## Technical infomation
|
|
||||||
|
|
||||||
Used BM file spec can be found in [there](https://github.com/yyc12345/gist/blob/master/BMFileSpec/BMSpec_ZH.md)(Chinese only).
|
|
||||||
|
|
||||||
Used tools chain principle and the file format located in `meshes` can be found in [there](https://github.com/yyc12345/gist/blob/master/BMFileSpec/YYCToolsChainSpec_ZH.md)(Chinese only).
|
|
||||||
|
|
||||||
The format of the files which are under the `jsons` folder and belong to the BMERevenge section, can be found in [here](https://github.com/yyc12345/gist/blob/master/BMERevenge/DevDocument_ZH.md)
|
|
||||||
|
|
||||||
This plugin will continuously support Blender lastest **LTS** version. This plugin will migrate to new version when the new LTS version released. Currently, it based on Blender 2.83.x.
|
|
||||||
|
|
||||||
## Function introduction
|
|
||||||
|
|
||||||
### Plugin settings
|
|
||||||
|
|
||||||
* External texture folder: Please fill in the Texture directory of Ballance, the plugin will call the external texture file from this directory (the texture file originally with Ballance)
|
|
||||||
* No component collection: Objects in this collection will be forced to be set as non-Component. If left blank, this function will be shutdown.
|
|
||||||
* Temp texture folder: used to cache texture files extracted from BM files. Please arrange a directory that will not be automatically cleaned up. Since Blender will continue to read texture files from this directory, it cannot be emptied at will. And it also does not allow files with the same name to exist, that is, if I import two BMs for two maps, and there are two files with the same name but different images in the two BMs, the later files will overwrite the previous files , And in turn caused a texture error when the first blender document was opened again. For solving this problem, please refer to the subsequent BM import / export
|
|
||||||
|
|
||||||
### BM import / export
|
|
||||||
|
|
||||||
For import, in order to prevent texture errors, the best way is to force packaging once. After successfully importing the BM, choose to pack all into the blend file, and then clear the directory where the Temp texture folder is located, and then click Unpack to file if necessary, this operation will re-depend the textures in the texture library under the project folder.
|
|
||||||
|
|
||||||
For export, you can choose to export a collection or an object (Export mode), and specify the target (Export target).
|
|
||||||
|
|
||||||
It should be noted that once the BM is exported, all the faces in the file will be converted to triangular faces, please make a backup in advance. And it is recommended to use a flat collection structure, do not put a collections within another collection, which may cause some unnecessary problems.
|
|
||||||
|
|
||||||
### Ballance 3D
|
|
||||||
|
|
||||||
Ballance 3D is a set of light tools related to 3D operations, which can be found in the upper right corner of the 3D view.
|
|
||||||
|
|
||||||
#### 3ds Max Align
|
|
||||||
|
|
||||||
Provide 3ds Max like align tools. Current active will be seen as reference object. All selected objects(except active object) will be seen as operating object (So you can select multiple objects to align to the reference object).
|
|
||||||
|
|
||||||
#### Create Rail UV
|
|
||||||
|
|
||||||
To create UVs for the rails in the map, you need to select the objects that need to add UVs similar to the rails, and then click this button to create.
|
|
||||||
|
|
||||||
In the dialog, you can select the material to be used. You can also choose the unfolding mode. For shorter rails, you can choose Point mode. For longer rails, you can use Uniform mode. If you need to manually adjust the zoom ratio, please select Scale mode and specify the ratio (not recommended).
|
|
||||||
|
|
||||||
You can also select the projection axis for better UV distribution.
|
|
||||||
|
|
||||||
### Flatten UV
|
|
||||||
|
|
||||||
In the object editing mode, it is a operator which is used to attach the currently selected surface to the UV. And you can specific the edge which will be attached into the V axis. Note that only convex faces are supported.
|
|
||||||
|
|
||||||
In the edit mode, select the surface, click Flatten UV, and then scroll the slider to select an edge as a reference. If the generated UV is not attached correctly, such as the FloorSide's band is pasted to the bottom, you can reselect the reference edge and redo the operation until it is correct.
|
|
||||||
|
|
||||||
### Add Menu
|
|
||||||
|
|
||||||
In the add menu, we have added a set of commonly used objects. After adding, the object will move to the 3D cursor.
|
|
||||||
|
|
||||||
#### Elements
|
|
||||||
|
|
||||||
Add elements, you can also specify attributes such as section when adding (it will not be displayed for unique objects such as start point)
|
|
||||||
|
|
||||||
#### Rail section
|
|
||||||
|
|
||||||
Add rail section, you can choose monorail or rail (just decide the number of rail section loops added, and will not help you rotate the angle), as well as rail radius and rail span.
|
|
||||||
|
|
||||||
#### Floors
|
|
||||||
|
|
||||||
Adding floor is part of the BMERevenge project. Basic floor is a basic floor component, and Derived floor is a common component composed of basic components. The extension(length) and the side configuration can be set according to its properties. It also has the advantage of reducing vertices.
|
|
||||||
|
|
||||||
It is recommended to merge the vertices by distance, unless there is a need to delete the surface after adding it
|
|
||||||
|
|
||||||
## Install
|
|
||||||
|
|
||||||
Put `ballance_blender_plugin` into Blender's plugin folder, `scripts/addons_contrib`. Then enable this plugin in Blender's preferences (Don't forget to configure this plugin's settings).
|
|
||||||
|
|
||||||
|
For an introduction to this plugin, installing it, compiling it, reporting bugs, etc., see the GitHub Page of this project: https://yyc12345.github.io/BallanceBlenderHelper
|
||||||
|
|||||||
@@ -1,80 +1,7 @@
|
|||||||
# Ballance Blender Helper
|
# BBP NG
|
||||||
|
|
||||||
[English version](README.md)
|
[English version](README.md)
|
||||||
|
|
||||||
## 简介
|
BBP NG,又名**B**allance **B**lender **P**lugin **N**ext **G**eneration(下一代Ballance Blender插件)。
|
||||||
|
|
||||||
这是一个用于Blender的插件,其主要是服务于Ballance制图。
|
|
||||||
|
|
||||||
请使用Release中打tag的最新版本,最新的commit不能保证其是稳定可用的
|
|
||||||
|
|
||||||
## 技术信息
|
|
||||||
|
|
||||||
使用的BM文件标准可以在[这里](https://github.com/yyc12345/gist/blob/master/BMFileSpec/BMSpec_ZH.md)查找
|
|
||||||
|
|
||||||
使用的制图链标准以及`meshes`文件夹下的文件的格式可以在[这里](https://github.com/yyc12345/gist/blob/master/BMFileSpec/YYCToolsChainSpec_ZH.md)查找
|
|
||||||
|
|
||||||
`jsons`文件夹下的,隶属于BMERevenge部分的文件的格式可以在[这里](https://github.com/yyc12345/gist/blob/master/BMERevenge/DevDocument_ZH.md)查找
|
|
||||||
|
|
||||||
支持Blender的原则是支持当前最新的 **LTS** 版本,在最新的LTS版本释出之后会花一些时间迁移插件。当前插件基于2.83.x版本
|
|
||||||
|
|
||||||
## 功能介绍
|
|
||||||
|
|
||||||
### 插件设置
|
|
||||||
|
|
||||||
* External texture folder:请填写为Ballance的Texture目录,插件将从此目录下调用外置贴图文件(即Ballance原本带有的贴图文件)
|
|
||||||
* No component collection:处于此集合中的物体将被强制指定为非Component。如果留空则表示不需要这个功能。
|
|
||||||
* Temp texture folder:用于缓存从BM文件中提取的贴图文件,请安排一个平时不会被自动清理的目录。由于Blender会持续从这个目录读取贴图文件,因此不能随意清空。并且其也不允许同名文件存在,即如果我为2个地图分别导入两个BM,这两个BM中存在贴图文件名相同但图像不同的两个文件,那么后来的文件将会覆盖前面的文件,并进而导致前者导入后的文档再次打开时出现贴图错误。关于解决这个问题的方法,请参考后续的BM导入导出
|
|
||||||
|
|
||||||
### BM导入导出
|
|
||||||
|
|
||||||
对于导入而言,为了防止贴图出错,最好的方法是强制打包一次。在导入BM成功之后,选择全部打包到blend文件,然后清空Temp texture folder所在目录,然后如果有需要可以再点击解包到文件,将贴图重新依赖到工程文件夹下的贴图库内。
|
|
||||||
|
|
||||||
对于导出,可以选择导出一个集合或者是一个物体(Export mode),并给定对象(Export target)即可。
|
|
||||||
|
|
||||||
需要注意的是,一旦导出BM,文件中所有的面将全部转换为三角形面,请做好备份。并且建议使用平铺的集合结构,不要在集合内嵌套集合,可能会导致一些不必要的问题。
|
|
||||||
|
|
||||||
### Ballance 3D
|
|
||||||
|
|
||||||
Ballance 3D是一套简单的用于制图3D相关的轻型工具集合,可以在3D视图右上角找到。
|
|
||||||
|
|
||||||
#### 3ds Max Align
|
|
||||||
|
|
||||||
提供一种类似于3ds Max的对齐方式。当前活动物体将被设为参照对象,当前选中的所有物体(如果参照也被选中则去掉参照对象)将被视为操作对象(因此可以选择多个物体一起对齐到参照对象)。
|
|
||||||
|
|
||||||
#### Create Rail UV
|
|
||||||
|
|
||||||
为地图中的钢轨创建UV,你需要先选中需要添加类似钢轨UV的物体,然后点击这个按钮以创建。
|
|
||||||
|
|
||||||
在弹出设置窗口中,可以选择使用的材质。还可以选择展开模式,对于较短的钢轨,可以选择Point模式,对于较长的钢轨,可以使用Uniform模式,如果需要手动调整缩放比,请选择Scale模式并指定比率(不推荐)。
|
|
||||||
|
|
||||||
还可以选择投影轴以获取更好的UV分布。
|
|
||||||
|
|
||||||
### Flatten UV
|
|
||||||
|
|
||||||
在物体编辑模式下,用于将当前选中面按某一边贴附到V轴上的模式,展开到UV上。注意,只支持凸边面。
|
|
||||||
|
|
||||||
编辑模式下,选中面,点击Flatten UV,然后滚动滑条选中一个边作为参考,如果最后生成的边贴附不对,比如把路面花纹贴到了下部,可以重新选择参考边再进行操作,直到正确为止。
|
|
||||||
|
|
||||||
### 添加菜单
|
|
||||||
|
|
||||||
在添加菜单中我们添加了一套较为常用的物体。添加后物体会移动到3D游标处。
|
|
||||||
|
|
||||||
#### Elements
|
|
||||||
|
|
||||||
添加机关,添加时还可以指定添加的小节等属性(对于飞船等唯一物体不会显示)
|
|
||||||
|
|
||||||
#### Rail section
|
|
||||||
|
|
||||||
添加钢轨截面,可以选择单轨还是双轨(只是决定添加的界面数量,并不会帮你旋转角度),以及轨道半径和轨道间距
|
|
||||||
|
|
||||||
#### Floors
|
|
||||||
|
|
||||||
添加路面,隶属于BMERevenge工程的拓展。Basic floor是基本的路面组件,而Derived floor则是由基本组件组成的常用组件。可以根据其属性设置其延展,以及各边是否显示。其还具有减少顶点的优点。
|
|
||||||
|
|
||||||
建议添加后除非有消除面的需求外,应该立即按距离合并顶点一次以避免各类问题
|
|
||||||
|
|
||||||
## 安装
|
|
||||||
|
|
||||||
将`ballance_blender_plugin`直接复制到Blender插件目录`scripts/addons_contrib`内即可。然后在Blender偏好设置中启用即可(记得配置插件设置)。
|
|
||||||
|
|
||||||
|
有关此插件的介绍,安装,编译,汇报错误等,请参阅本项目的GitHub Page页面:https://yyc12345.github.io/BallanceBlenderHelper
|
||||||
|
|||||||
|
After Width: | Height: | Size: 785 B |
|
Before Width: | Height: | Size: 6.3 KiB After Width: | Height: | Size: 6.3 KiB |
|
After Width: | Height: | Size: 15 KiB |
|
Before Width: | Height: | Size: 31 KiB After Width: | Height: | Size: 31 KiB |
|
Before Width: | Height: | Size: 6.7 KiB After Width: | Height: | Size: 6.7 KiB |
|
Before Width: | Height: | Size: 24 KiB After Width: | Height: | Size: 24 KiB |
|
After Width: | Height: | Size: 30 KiB |
|
Before Width: | Height: | Size: 6.2 KiB After Width: | Height: | Size: 6.2 KiB |
|
Before Width: | Height: | Size: 30 KiB After Width: | Height: | Size: 30 KiB |
|
Before Width: | Height: | Size: 7.0 KiB After Width: | Height: | Size: 7.0 KiB |
|
Before Width: | Height: | Size: 58 KiB After Width: | Height: | Size: 58 KiB |
|
Before Width: | Height: | Size: 22 KiB After Width: | Height: | Size: 22 KiB |
|
Before Width: | Height: | Size: 27 KiB After Width: | Height: | Size: 27 KiB |
|
Before Width: | Height: | Size: 39 KiB After Width: | Height: | Size: 39 KiB |
|
After Width: | Height: | Size: 12 KiB |
|
After Width: | Height: | Size: 14 KiB |
|
After Width: | Height: | Size: 14 KiB |
|
After Width: | Height: | Size: 108 KiB |
|
Before Width: | Height: | Size: 31 KiB After Width: | Height: | Size: 31 KiB |
|
Before Width: | Height: | Size: 6.8 KiB After Width: | Height: | Size: 6.8 KiB |
|
Before Width: | Height: | Size: 25 KiB After Width: | Height: | Size: 25 KiB |
|
After Width: | Height: | Size: 31 KiB |
|
Before Width: | Height: | Size: 6.5 KiB After Width: | Height: | Size: 6.5 KiB |
|
Before Width: | Height: | Size: 30 KiB After Width: | Height: | Size: 30 KiB |
|
Before Width: | Height: | Size: 7.2 KiB After Width: | Height: | Size: 7.2 KiB |
|
After Width: | Height: | Size: 108 KiB |
|
Before Width: | Height: | Size: 23 KiB After Width: | Height: | Size: 23 KiB |
|
Before Width: | Height: | Size: 28 KiB After Width: | Height: | Size: 28 KiB |
|
Before Width: | Height: | Size: 39 KiB After Width: | Height: | Size: 39 KiB |
|
Before Width: | Height: | Size: 25 KiB After Width: | Height: | Size: 25 KiB |
|
After Width: | Height: | Size: 26 KiB |
|
After Width: | Height: | Size: 42 KiB |
|
After Width: | Height: | Size: 58 KiB |
|
After Width: | Height: | Size: 32 KiB |
|
After Width: | Height: | Size: 43 KiB |
|
Before Width: | Height: | Size: 27 KiB After Width: | Height: | Size: 27 KiB |
|
After Width: | Height: | Size: 663 B |
|
After Width: | Height: | Size: 745 B |
|
After Width: | Height: | Size: 945 B |
|
After Width: | Height: | Size: 818 B |
|
After Width: | Height: | Size: 2.3 KiB |
|
After Width: | Height: | Size: 2.6 KiB |
|
After Width: | Height: | Size: 2.6 KiB |
|
After Width: | Height: | Size: 984 B |
|
After Width: | Height: | Size: 611 B |
|
After Width: | Height: | Size: 1.1 KiB |
|
After Width: | Height: | Size: 1.3 KiB |
|
After Width: | Height: | Size: 1.1 KiB |
|
After Width: | Height: | Size: 471 B |
|
After Width: | Height: | Size: 1.1 KiB |
|
After Width: | Height: | Size: 494 B |
|
After Width: | Height: | Size: 360 B |
|
After Width: | Height: | Size: 992 B |
|
After Width: | Height: | Size: 444 B |
|
After Width: | Height: | Size: 691 B |
|
After Width: | Height: | Size: 775 B |
|
After Width: | Height: | Size: 807 B |
|
After Width: | Height: | Size: 652 B |
|
After Width: | Height: | Size: 695 B |
|
After Width: | Height: | Size: 550 B |
|
After Width: | Height: | Size: 1.8 KiB |
|
After Width: | Height: | Size: 1.9 KiB |
|
After Width: | Height: | Size: 1.9 KiB |
|
After Width: | Height: | Size: 2.2 KiB |
|
After Width: | Height: | Size: 2.5 KiB |
|
After Width: | Height: | Size: 265 B |
@@ -0,0 +1,185 @@
|
|||||||
|
[
|
||||||
|
{
|
||||||
|
"identifier": "raw_floor_1x1",
|
||||||
|
"showcase": null,
|
||||||
|
"params": [
|
||||||
|
{
|
||||||
|
"field": "height",
|
||||||
|
"data": "5.0"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"field": "face",
|
||||||
|
"data": "(True, False, True, True, True, True)"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"field": "is_sink",
|
||||||
|
"data": "False"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"skip": "False",
|
||||||
|
"vars": [],
|
||||||
|
"vertices": [],
|
||||||
|
"faces": [],
|
||||||
|
"instances": [
|
||||||
|
{
|
||||||
|
"identifier": "cv_triangle_side",
|
||||||
|
"skip": "False",
|
||||||
|
"params": {
|
||||||
|
"edge_length": "5",
|
||||||
|
"tip_offset": "2.5",
|
||||||
|
"height": "height",
|
||||||
|
"face": "(face[0], False, False, False, face[3], None)",
|
||||||
|
"is_sink": "is_sink"
|
||||||
|
},
|
||||||
|
"transform": "move(5, 0, 0) @ rot(0, 0, 90)"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"identifier": "cv_triangle_side",
|
||||||
|
"skip": "False",
|
||||||
|
"params": {
|
||||||
|
"edge_length": "5",
|
||||||
|
"tip_offset": "2.5",
|
||||||
|
"height": "height",
|
||||||
|
"face": "(face[0], False, False, False, face[5], None)",
|
||||||
|
"is_sink": "is_sink"
|
||||||
|
},
|
||||||
|
"transform": "move(5, 5, 0) @ rot(0, 0, 180)"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"identifier": "cv_triangle_side",
|
||||||
|
"skip": "False",
|
||||||
|
"params": {
|
||||||
|
"edge_length": "5",
|
||||||
|
"tip_offset": "2.5",
|
||||||
|
"height": "height",
|
||||||
|
"face": "(face[0], False, False, False, face[2], None)",
|
||||||
|
"is_sink": "is_sink"
|
||||||
|
},
|
||||||
|
"transform": "move(0, 5, 0) @ rot(0, 0, 270)"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"identifier": "cv_triangle_side",
|
||||||
|
"skip": "False",
|
||||||
|
"params": {
|
||||||
|
"edge_length": "5",
|
||||||
|
"tip_offset": "2.5",
|
||||||
|
"height": "height",
|
||||||
|
"face": "(face[0], False, False, False, face[4], None)",
|
||||||
|
"is_sink": "is_sink"
|
||||||
|
},
|
||||||
|
"transform": "ident()"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"identifier": "floor_rectangle_bottom",
|
||||||
|
"skip": "not face[1]",
|
||||||
|
"params": {
|
||||||
|
"length": "5",
|
||||||
|
"width": "5"
|
||||||
|
},
|
||||||
|
"transform": "move(0, 0, -height)"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"identifier": "floor_normal_1x1",
|
||||||
|
"showcase": {
|
||||||
|
"title": "Normal 1x1",
|
||||||
|
"category": "1x1 Blocks",
|
||||||
|
"icon": "Normal1x1",
|
||||||
|
"type": "floor",
|
||||||
|
"cfgs": [
|
||||||
|
{
|
||||||
|
"field": "height_",
|
||||||
|
"type": "float",
|
||||||
|
"title": "Height",
|
||||||
|
"desc": "The height of block.",
|
||||||
|
"default": "5.0"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"field": "face_",
|
||||||
|
"type": "face",
|
||||||
|
"title": "Face",
|
||||||
|
"desc": "Whether has some faces.",
|
||||||
|
"default": "(True, False, True, True, True, True)"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"params": [
|
||||||
|
{
|
||||||
|
"field": "height",
|
||||||
|
"data": "height_"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"field": "face",
|
||||||
|
"data": "face_"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"skip": "False",
|
||||||
|
"vars": [],
|
||||||
|
"vertices": [],
|
||||||
|
"faces": [],
|
||||||
|
"instances": [
|
||||||
|
{
|
||||||
|
"identifier": "raw_floor_1x1",
|
||||||
|
"skip": "False",
|
||||||
|
"params": {
|
||||||
|
"height": "height",
|
||||||
|
"face": "face",
|
||||||
|
"is_sink": "False"
|
||||||
|
},
|
||||||
|
"transform": "ident()"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"identifier": "floor_sink_1x1",
|
||||||
|
"showcase": {
|
||||||
|
"title": "Sink 1x1",
|
||||||
|
"category": "1x1 Blocks",
|
||||||
|
"icon": "Sink1x1",
|
||||||
|
"type": "floor",
|
||||||
|
"cfgs": [
|
||||||
|
{
|
||||||
|
"field": "height_",
|
||||||
|
"type": "float",
|
||||||
|
"title": "Height",
|
||||||
|
"desc": "The height of block.",
|
||||||
|
"default": "5.0"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"field": "face_",
|
||||||
|
"type": "face",
|
||||||
|
"title": "Face",
|
||||||
|
"desc": "Whether has some faces.",
|
||||||
|
"default": "(True, False, True, True, True, True)"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"params": [
|
||||||
|
{
|
||||||
|
"field": "height",
|
||||||
|
"data": "height_"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"field": "face",
|
||||||
|
"data": "face_"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"skip": "False",
|
||||||
|
"vars": [],
|
||||||
|
"vertices": [],
|
||||||
|
"faces": [],
|
||||||
|
"instances": [
|
||||||
|
{
|
||||||
|
"identifier": "raw_floor_1x1",
|
||||||
|
"skip": "False",
|
||||||
|
"params": {
|
||||||
|
"height": "height",
|
||||||
|
"face": "face",
|
||||||
|
"is_sink": "True"
|
||||||
|
},
|
||||||
|
"transform": "ident()"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
@@ -0,0 +1,240 @@
|
|||||||
|
[
|
||||||
|
{
|
||||||
|
"identifier": "raw_floor_border",
|
||||||
|
"showcase": null,
|
||||||
|
"params": [
|
||||||
|
{
|
||||||
|
"field": "length",
|
||||||
|
"data": "5.0"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"field": "height",
|
||||||
|
"data": "5.0"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"field": "face",
|
||||||
|
"data": "(True, False, False, False, True, False)"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"field": "is_sink",
|
||||||
|
"data": "False"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"field": "is_ribbon",
|
||||||
|
"data": "False"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"skip": "length == 0.0",
|
||||||
|
"vars": [],
|
||||||
|
"vertices": [],
|
||||||
|
"faces": [],
|
||||||
|
"instances": [
|
||||||
|
{
|
||||||
|
"identifier": "cv_trapezoid_side",
|
||||||
|
"skip": "False",
|
||||||
|
"params": {
|
||||||
|
"long_edge_length": "length",
|
||||||
|
"short_edge_offset": "0",
|
||||||
|
"short_edge_length": "length",
|
||||||
|
"height": "height",
|
||||||
|
"face": "face",
|
||||||
|
"is_sink": "is_sink",
|
||||||
|
"is_ribbon": "is_ribbon"
|
||||||
|
},
|
||||||
|
"transform": "ident()"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"identifier": "floor_normal_border",
|
||||||
|
"showcase": {
|
||||||
|
"title": "Normal Border",
|
||||||
|
"category": "Borders",
|
||||||
|
"icon": "NormalBorder",
|
||||||
|
"type": "floor",
|
||||||
|
"cfgs": [
|
||||||
|
{
|
||||||
|
"field": "length_",
|
||||||
|
"type": "float",
|
||||||
|
"title": "Length",
|
||||||
|
"desc": "The length of block.",
|
||||||
|
"default": "2.5"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"field": "height_",
|
||||||
|
"type": "float",
|
||||||
|
"title": "Height",
|
||||||
|
"desc": "The height of block.",
|
||||||
|
"default": "5.0"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"field": "face_",
|
||||||
|
"type": "face",
|
||||||
|
"title": "Face",
|
||||||
|
"desc": "Whether has some faces.",
|
||||||
|
"default": "(True, False, False, False, True, False)"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"params": [
|
||||||
|
{
|
||||||
|
"field": "length",
|
||||||
|
"data": "length_"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"field": "height",
|
||||||
|
"data": "height_"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"field": "face",
|
||||||
|
"data": "face_"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"skip": "False",
|
||||||
|
"vars": [],
|
||||||
|
"vertices": [],
|
||||||
|
"faces": [],
|
||||||
|
"instances": [
|
||||||
|
{
|
||||||
|
"identifier": "raw_floor_border",
|
||||||
|
"skip": "False",
|
||||||
|
"params": {
|
||||||
|
"length": "length",
|
||||||
|
"height": "height",
|
||||||
|
"face": "face",
|
||||||
|
"is_sink": "False",
|
||||||
|
"is_ribbon": "False"
|
||||||
|
},
|
||||||
|
"transform": "ident()"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"identifier": "floor_sink_border",
|
||||||
|
"showcase": {
|
||||||
|
"title": "Sink Border",
|
||||||
|
"category": "Borders",
|
||||||
|
"icon": "SinkBorder",
|
||||||
|
"type": "floor",
|
||||||
|
"cfgs": [
|
||||||
|
{
|
||||||
|
"field": "length_",
|
||||||
|
"type": "float",
|
||||||
|
"title": "Length",
|
||||||
|
"desc": "The length of block.",
|
||||||
|
"default": "2.5"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"field": "height_",
|
||||||
|
"type": "float",
|
||||||
|
"title": "Height",
|
||||||
|
"desc": "The height of block.",
|
||||||
|
"default": "5.0"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"field": "face_",
|
||||||
|
"type": "face",
|
||||||
|
"title": "Face",
|
||||||
|
"desc": "Whether has some faces.",
|
||||||
|
"default": "(True, False, False, False, True, False)"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"params": [
|
||||||
|
{
|
||||||
|
"field": "length",
|
||||||
|
"data": "length_"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"field": "height",
|
||||||
|
"data": "height_"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"field": "face",
|
||||||
|
"data": "face_"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"skip": "False",
|
||||||
|
"vars": [],
|
||||||
|
"vertices": [],
|
||||||
|
"faces": [],
|
||||||
|
"instances": [
|
||||||
|
{
|
||||||
|
"identifier": "raw_floor_border",
|
||||||
|
"skip": "False",
|
||||||
|
"params": {
|
||||||
|
"length": "length",
|
||||||
|
"height": "height",
|
||||||
|
"face": "face",
|
||||||
|
"is_sink": "True",
|
||||||
|
"is_ribbon": "False"
|
||||||
|
},
|
||||||
|
"transform": "ident()"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"identifier": "floor_ribbon_border",
|
||||||
|
"showcase": {
|
||||||
|
"title": "Ribbon Border",
|
||||||
|
"category": "Borders",
|
||||||
|
"icon": "RibbonBorder",
|
||||||
|
"type": "floor",
|
||||||
|
"cfgs": [
|
||||||
|
{
|
||||||
|
"field": "length_",
|
||||||
|
"type": "float",
|
||||||
|
"title": "Length",
|
||||||
|
"desc": "The length of block.",
|
||||||
|
"default": "2.5"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"field": "height_",
|
||||||
|
"type": "float",
|
||||||
|
"title": "Height",
|
||||||
|
"desc": "The height of block.",
|
||||||
|
"default": "5.0"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"field": "face_",
|
||||||
|
"type": "face",
|
||||||
|
"title": "Face",
|
||||||
|
"desc": "Whether has some faces.",
|
||||||
|
"default": "(True, False, False, False, True, False)"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"params": [
|
||||||
|
{
|
||||||
|
"field": "length",
|
||||||
|
"data": "length_"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"field": "height",
|
||||||
|
"data": "height_"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"field": "face",
|
||||||
|
"data": "face_"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"skip": "False",
|
||||||
|
"vars": [],
|
||||||
|
"vertices": [],
|
||||||
|
"faces": [],
|
||||||
|
"instances": [
|
||||||
|
{
|
||||||
|
"identifier": "raw_floor_border",
|
||||||
|
"skip": "False",
|
||||||
|
"params": {
|
||||||
|
"length": "length",
|
||||||
|
"height": "height",
|
||||||
|
"face": "face",
|
||||||
|
"is_sink": "True",
|
||||||
|
"is_ribbon": "True"
|
||||||
|
},
|
||||||
|
"transform": "ident()"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
@@ -0,0 +1,427 @@
|
|||||||
|
[
|
||||||
|
// One of Chris suggested more vanilla prototypes.
|
||||||
|
// This prototype represent a half of a normal, sink or double ribbon border,
|
||||||
|
// which looks like trapezoid from top to bottom.
|
||||||
|
//
|
||||||
|
// The bottom edge of trapezoid is from origin to +X with `long_edge_length` length.
|
||||||
|
// The length of top edge is `short_edge_length` and it just like moving bottom edge to +Y direction.
|
||||||
|
// 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`.
|
||||||
|
{
|
||||||
|
"identifier": "cv_trapezoid_side",
|
||||||
|
"showcase": null,
|
||||||
|
"params": [
|
||||||
|
{
|
||||||
|
"field": "long_edge_length",
|
||||||
|
"data": "5.0"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"field": "short_edge_offset",
|
||||||
|
"data": "0.0"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"field": "short_edge_length",
|
||||||
|
"data": "5.0"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"field": "height",
|
||||||
|
"data": "5.0"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"field": "face",
|
||||||
|
"data": "(True, False, False, False, True, False)"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"field": "is_sink",
|
||||||
|
"data": "False"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"field": "is_ribbon",
|
||||||
|
"data": "False"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"skip": "long_edge_length == 0.0 or short_edge_length == 0.0",
|
||||||
|
"vars": [
|
||||||
|
{
|
||||||
|
"field": "long_edge_uv_length",
|
||||||
|
"data": "long_edge_length / 5.0"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"field": "short_edge_uv_offset",
|
||||||
|
"data": "short_edge_offset / 5.0"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"field": "short_edge_uv_length",
|
||||||
|
"data": "short_edge_length / 5.0"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"field": "short_edge_total",
|
||||||
|
"data": "short_edge_offset + short_edge_length"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"field": "short_edge_uv_total",
|
||||||
|
"data": "short_edge_uv_offset + short_edge_uv_length"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"field": "uv_border_texture",
|
||||||
|
"data": "1.0 if is_ribbon else 0.5"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"field": "sink",
|
||||||
|
"data": "0.7 if is_sink else 0.0"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"vertices": [
|
||||||
|
{
|
||||||
|
"skip": "not face[0]",
|
||||||
|
"data": "(0, 0, 0)"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"skip": "not face[0]",
|
||||||
|
"data": "(short_edge_offset, 2.5, -sink)"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"skip": "not face[0]",
|
||||||
|
"data": "(long_edge_length, 0, 0)"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"skip": "not face[0]",
|
||||||
|
"data": "(short_edge_total, 2.5, -sink)"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"faces": [
|
||||||
|
{
|
||||||
|
"skip": "not face[0]",
|
||||||
|
"texture": "(\"FloorTopFlat\" if is_ribbon else \"FloorTopProfil\") if is_sink else \"FloorTopBorder\"",
|
||||||
|
"indices": [0, 2, 3, 1],
|
||||||
|
"uvs": [
|
||||||
|
"(0, 0)",
|
||||||
|
"(0, long_edge_uv_length)",
|
||||||
|
"(uv_border_texture, short_edge_uv_total)",
|
||||||
|
"(uv_border_texture, short_edge_uv_offset)"
|
||||||
|
],
|
||||||
|
"normals": null
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"instances": [
|
||||||
|
{
|
||||||
|
"identifier": "raw_floor_side",
|
||||||
|
"skip": "not face[4]",
|
||||||
|
"params": {
|
||||||
|
"height": "height",
|
||||||
|
"length": "long_edge_length",
|
||||||
|
"is_left_sink": "False",
|
||||||
|
"is_right_sink": "False"
|
||||||
|
},
|
||||||
|
"transform": "ident()"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"identifier": "raw_floor_side",
|
||||||
|
"skip": "not face[2]",
|
||||||
|
"params": {
|
||||||
|
"height": "height",
|
||||||
|
"length": "distance(0, 0, short_edge_offset, 2.5)",
|
||||||
|
"is_left_sink": "False",
|
||||||
|
"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[3]",
|
||||||
|
"params": {
|
||||||
|
"height": "height",
|
||||||
|
"length": "distance(long_edge_length, 0, short_edge_total, 2.5)",
|
||||||
|
"is_left_sink": "False",
|
||||||
|
"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[5]",
|
||||||
|
"params": {
|
||||||
|
"height": "height",
|
||||||
|
"length": "short_edge_length",
|
||||||
|
"is_left_sink": "is_sink",
|
||||||
|
"is_right_sink": "is_sink"
|
||||||
|
},
|
||||||
|
"transform": "move(short_edge_offset, 2.5, 0) @ scale(1, -1, 1)"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"identifier": "floor_4edges_bottom",
|
||||||
|
"skip": "not face[1]",
|
||||||
|
"params": {
|
||||||
|
"top_left_pos": "(0, 0)",
|
||||||
|
"top_right_pos": "(short_edge_offset, 2.5)",
|
||||||
|
"bottom_left_pos": "(long_edge_length, 0)",
|
||||||
|
"bottom_right_pos": "(short_edge_total, 2.5)"
|
||||||
|
},
|
||||||
|
"transform": "move(0, 0, -height)"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
// Same as previous one, but looks like triangle from top to bottom.
|
||||||
|
//
|
||||||
|
// 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`.
|
||||||
|
{
|
||||||
|
"identifier": "cv_triangle_side",
|
||||||
|
"showcase": null,
|
||||||
|
"params": [
|
||||||
|
{
|
||||||
|
"field": "edge_length",
|
||||||
|
"data": "5.0"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"field": "tip_offset",
|
||||||
|
"data": "2.5"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"field": "height",
|
||||||
|
"data": "5.0"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"field": "face",
|
||||||
|
"data": "(True, False, False, False, True, None)"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"field": "is_sink",
|
||||||
|
"data": "False"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"skip": "edge_length == 0.0",
|
||||||
|
"vars": [
|
||||||
|
{
|
||||||
|
"field": "edge_uv_length",
|
||||||
|
"data": "edge_length / 5.0"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"field": "tip_uv_offset",
|
||||||
|
"data": "tip_offset / 5.0"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"field": "sink",
|
||||||
|
"data": "0.7 if is_sink else 0.0"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"vertices": [
|
||||||
|
{
|
||||||
|
"skip": "not face[0]",
|
||||||
|
"data": "(0, 0, 0)"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"skip": "not face[0]",
|
||||||
|
"data": "(tip_offset, 2.5, -sink)"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"skip": "not face[0]",
|
||||||
|
"data": "(edge_length, 0, 0)"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"faces": [
|
||||||
|
{
|
||||||
|
"skip": "not face[0]",
|
||||||
|
"texture": "\"FloorTopProfil\" if is_sink else \"FloorTopBorder\"",
|
||||||
|
"indices": [0, 2, 1],
|
||||||
|
"uvs": [
|
||||||
|
"(0, 0)",
|
||||||
|
"(0, edge_uv_length)",
|
||||||
|
"(0.5, tip_uv_offset)"
|
||||||
|
],
|
||||||
|
"normals": null
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"instances": [
|
||||||
|
{
|
||||||
|
"identifier": "raw_floor_side",
|
||||||
|
"skip": "not face[4]",
|
||||||
|
"params": {
|
||||||
|
"height": "height",
|
||||||
|
"length": "edge_length",
|
||||||
|
"is_left_sink": "False",
|
||||||
|
"is_right_sink": "False"
|
||||||
|
},
|
||||||
|
"transform": "ident()"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"identifier": "raw_floor_side",
|
||||||
|
"skip": "not face[2]",
|
||||||
|
"params": {
|
||||||
|
"height": "height",
|
||||||
|
"length": "distance(0, 0, tip_offset, 2.5)",
|
||||||
|
"is_left_sink": "False",
|
||||||
|
"is_right_sink": "is_sink"
|
||||||
|
},
|
||||||
|
"transform": "rot(0, 0, angle(0, 0, tip_offset, 2.5)) @ scale(1, -1, 1)"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"identifier": "raw_floor_side",
|
||||||
|
"skip": "not face[3]",
|
||||||
|
"params": {
|
||||||
|
"height": "height",
|
||||||
|
"length": "distance(edge_length, 0, tip_offset, 2.5)",
|
||||||
|
"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": "floor_triangle_bottom",
|
||||||
|
"skip": "not face[1]",
|
||||||
|
"params": {
|
||||||
|
"length": "edge_length",
|
||||||
|
"width": "2.5",
|
||||||
|
"tip_offset": "tip_offset"
|
||||||
|
},
|
||||||
|
"transform": "move(0, 0, -height)"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"identifier": "cv_triangle_center",
|
||||||
|
"showcase": null,
|
||||||
|
"params": [
|
||||||
|
{
|
||||||
|
"field": "height",
|
||||||
|
"data": "5.0"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"field": "face",
|
||||||
|
"data": "(True, False, False, False, True, None)"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"field": "is_sink",
|
||||||
|
"data": "False"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"skip": "False",
|
||||||
|
"vars": [
|
||||||
|
{
|
||||||
|
"field": "sink",
|
||||||
|
"data": "0.7 if is_sink else 0.0"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"vertices": [
|
||||||
|
{
|
||||||
|
"skip": "not face[0]",
|
||||||
|
"data": "(0, 0, 0)"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"skip": "not face[0]",
|
||||||
|
"data": "(5, 0, 0)"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"skip": "not face[0]",
|
||||||
|
"data": "(2.5, 2.5, -sink)"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"skip": "(not face[0]) or (not is_sink)",
|
||||||
|
"data": "(2.5, 0, -sink)"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"faces": [
|
||||||
|
{
|
||||||
|
"skip": "(not face[0]) or is_sink",
|
||||||
|
"texture": "\"FloorTopFlat\"",
|
||||||
|
"indices": [0, 1, 2],
|
||||||
|
"uvs": [
|
||||||
|
"(0, 0)",
|
||||||
|
"(1, 0)",
|
||||||
|
"(0.5, 0.5)"
|
||||||
|
],
|
||||||
|
"normals": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"skip": "(not face[0]) or (not is_sink)",
|
||||||
|
"texture": "\"FloorTopProfil\"",
|
||||||
|
"indices": [0, 3, 2],
|
||||||
|
"uvs": [
|
||||||
|
"(0, 0)",
|
||||||
|
"(0.5, 0)",
|
||||||
|
"(0.5, 0.5)"
|
||||||
|
],
|
||||||
|
"normals": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"skip": "(not face[0]) or (not is_sink)",
|
||||||
|
"texture": "\"FloorTopProfil\"",
|
||||||
|
"indices": [3, 1, 2],
|
||||||
|
"uvs": [
|
||||||
|
"(0.5, 0)",
|
||||||
|
"(1, 0)",
|
||||||
|
"(0.5, 0.5)"
|
||||||
|
],
|
||||||
|
"normals": null
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"instances": [
|
||||||
|
{
|
||||||
|
"identifier": "raw_floor_side",
|
||||||
|
"skip": "not face[2]",
|
||||||
|
"params": {
|
||||||
|
"height": "height",
|
||||||
|
"length": "distance(0, 0, 2.5, 2.5)",
|
||||||
|
"is_left_sink": "False",
|
||||||
|
"is_right_sink": "is_sink"
|
||||||
|
},
|
||||||
|
"transform": "rot(0, 0, 45)"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"identifier": "raw_floor_side",
|
||||||
|
"skip": "not face[3]",
|
||||||
|
"params": {
|
||||||
|
"height": "height",
|
||||||
|
"length": "distance(5, 0, 2.5, 2.5)",
|
||||||
|
"is_left_sink": "False",
|
||||||
|
"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": {
|
||||||
|
"height": "height",
|
||||||
|
"length": "2.5",
|
||||||
|
"is_left_sink": "False",
|
||||||
|
"is_right_sink": "True"
|
||||||
|
},
|
||||||
|
"transform": "ident()"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"identifier": "raw_floor_side",
|
||||||
|
"skip": "(not face[4]) or (not is_sink)",
|
||||||
|
"params": {
|
||||||
|
"height": "height",
|
||||||
|
"length": "2.5",
|
||||||
|
"is_left_sink": "True",
|
||||||
|
"is_right_sink": "False"
|
||||||
|
},
|
||||||
|
"transform": "move(2.5, 0, 0)"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"identifier": "raw_floor_side",
|
||||||
|
"skip": "(not face[4]) or is_sink",
|
||||||
|
"params": {
|
||||||
|
"height": "height",
|
||||||
|
"length": "5",
|
||||||
|
"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)"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
@@ -0,0 +1,466 @@
|
|||||||
|
[
|
||||||
|
{
|
||||||
|
"identifier": "raw_floor_corner",
|
||||||
|
"showcase": null,
|
||||||
|
"params": [
|
||||||
|
{
|
||||||
|
"field": "height",
|
||||||
|
"data": "5.0"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"field": "face",
|
||||||
|
"data": "(True, False, False, False, False, False)"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"field": "is_sink",
|
||||||
|
"data": "False"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"field": "is_inner",
|
||||||
|
"data": "False"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"field": "is_ribbon",
|
||||||
|
"data": "False"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"skip": "False",
|
||||||
|
"vars": [
|
||||||
|
{
|
||||||
|
"field": "PXPY_sink",
|
||||||
|
"data": "0.7 if (is_sink and (not is_inner)) else 0"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"field": "NXNY_sink",
|
||||||
|
"data": "0.7 if (is_sink and is_inner) else 0"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"field": "PXPY_uv",
|
||||||
|
"data": "(0 if is_inner else 0.5) * (2 if is_ribbon else 1)"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"field": "NXNY_uv",
|
||||||
|
"data": "(0.5 if is_inner else 0) * (2 if is_ribbon else 1)"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"field": "corner_texture",
|
||||||
|
"data": "(\"FloorTopFlat\" if is_ribbon else \"FloorTopProfil\") if is_sink else \"FloorTopBorder\""
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"vertices": [
|
||||||
|
{
|
||||||
|
"skip": "not face[0]",
|
||||||
|
"data": "(0, 0, -NXNY_sink)"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"skip": "not face[0]",
|
||||||
|
"data": "(2.5, 0, -NXNY_sink)"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"skip": "not face[0]",
|
||||||
|
"data": "(2.5, 2.5, -PXPY_sink)"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"skip": "not face[0]",
|
||||||
|
"data": "(0, 2.5, -NXNY_sink)"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"faces": [
|
||||||
|
{
|
||||||
|
"skip": "not face[0]",
|
||||||
|
"texture": "corner_texture",
|
||||||
|
"indices": [0, 1, 2],
|
||||||
|
"uvs": [
|
||||||
|
"(NXNY_uv, 0.5)",
|
||||||
|
"(NXNY_uv, 0)",
|
||||||
|
"(PXPY_uv, 0)"
|
||||||
|
],
|
||||||
|
"normals": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"skip": "not face[0]",
|
||||||
|
"texture": "corner_texture",
|
||||||
|
"indices": [0, 2, 3],
|
||||||
|
"uvs": [
|
||||||
|
"(NXNY_uv, 0.5)",
|
||||||
|
"(PXPY_uv, 0)",
|
||||||
|
"(NXNY_uv, 0)"
|
||||||
|
],
|
||||||
|
"normals": null
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"instances": [
|
||||||
|
{
|
||||||
|
"identifier": "raw_floor_side",
|
||||||
|
"skip": "not face[4]",
|
||||||
|
"params": {
|
||||||
|
"height": "height",
|
||||||
|
"length": "2.5",
|
||||||
|
"is_left_sink": "NXNY_sink != 0",
|
||||||
|
"is_right_sink": "NXNY_sink != 0"
|
||||||
|
},
|
||||||
|
"transform": "ident()"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"identifier": "raw_floor_side",
|
||||||
|
"skip": "not face[2]",
|
||||||
|
"params": {
|
||||||
|
"height": "height",
|
||||||
|
"length": "2.5",
|
||||||
|
"is_left_sink": "NXNY_sink != 0",
|
||||||
|
"is_right_sink": "NXNY_sink != 0"
|
||||||
|
},
|
||||||
|
"transform": "move(0, 2.5, 0) @ rot(0, 0, -90)"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"identifier": "raw_floor_side",
|
||||||
|
"skip": "not face[3]",
|
||||||
|
"params": {
|
||||||
|
"height": "height",
|
||||||
|
"length": "2.5",
|
||||||
|
"is_left_sink": "NXNY_sink != 0",
|
||||||
|
"is_right_sink": "PXPY_sink != 0"
|
||||||
|
},
|
||||||
|
"transform": "move(2.5, 0, 0) @ rot(0, 0, 90)"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"identifier": "raw_floor_side",
|
||||||
|
"skip": "not face[5]",
|
||||||
|
"params": {
|
||||||
|
"height": "height",
|
||||||
|
"length": "2.5",
|
||||||
|
"is_left_sink": "PXPY_sink != 0",
|
||||||
|
"is_right_sink": "NXNY_sink != 0"
|
||||||
|
},
|
||||||
|
"transform": "move(2.5, 2.5, 0) @ rot(0, 0, 180)"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"identifier": "floor_rectangle_bottom",
|
||||||
|
"skip": "not face[1]",
|
||||||
|
"params": {
|
||||||
|
"length": "2.5",
|
||||||
|
"width": "2.5"
|
||||||
|
},
|
||||||
|
"transform": "move(0, 0, -height)"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"identifier": "floor_normal_inner_corner",
|
||||||
|
"showcase": {
|
||||||
|
"title": "Normal Inner Corner",
|
||||||
|
"category": "Half Block Corners",
|
||||||
|
"icon": "NormalInnerCorner",
|
||||||
|
"type": "floor",
|
||||||
|
"cfgs": [
|
||||||
|
{
|
||||||
|
"field": "height_",
|
||||||
|
"type": "float",
|
||||||
|
"title": "Height",
|
||||||
|
"desc": "The height of block.",
|
||||||
|
"default": "5.0"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"field": "face_",
|
||||||
|
"type": "face",
|
||||||
|
"title": "Face",
|
||||||
|
"desc": "Whether has some faces.",
|
||||||
|
"default": "(True, False, False, False, False, False)"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"params": [
|
||||||
|
{
|
||||||
|
"field": "height",
|
||||||
|
"data": "height_"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"field": "face",
|
||||||
|
"data": "face_"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"skip": "False",
|
||||||
|
"vars": [],
|
||||||
|
"vertices": [],
|
||||||
|
"faces": [],
|
||||||
|
"instances": [
|
||||||
|
{
|
||||||
|
"identifier": "raw_floor_corner",
|
||||||
|
"skip": "False",
|
||||||
|
"params": {
|
||||||
|
"height": "height",
|
||||||
|
"face": "face",
|
||||||
|
"is_sink": "False",
|
||||||
|
"is_inner": "True",
|
||||||
|
"is_ribbon": "False"
|
||||||
|
},
|
||||||
|
"transform": "ident()"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"identifier": "floor_sink_inner_corner",
|
||||||
|
"showcase": {
|
||||||
|
"title": "Sink Inner Corner",
|
||||||
|
"category": "Half Block Corners",
|
||||||
|
"icon": "SinkInnerCorner",
|
||||||
|
"type": "floor",
|
||||||
|
"cfgs": [
|
||||||
|
{
|
||||||
|
"field": "height_",
|
||||||
|
"type": "float",
|
||||||
|
"title": "Height",
|
||||||
|
"desc": "The height of block.",
|
||||||
|
"default": "5.0"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"field": "face_",
|
||||||
|
"type": "face",
|
||||||
|
"title": "Face",
|
||||||
|
"desc": "Whether has some faces.",
|
||||||
|
"default": "(True, False, False, False, False, False)"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"params": [
|
||||||
|
{
|
||||||
|
"field": "height",
|
||||||
|
"data": "height_"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"field": "face",
|
||||||
|
"data": "face_"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"skip": "False",
|
||||||
|
"vars": [],
|
||||||
|
"vertices": [],
|
||||||
|
"faces": [],
|
||||||
|
"instances": [
|
||||||
|
{
|
||||||
|
"identifier": "raw_floor_corner",
|
||||||
|
"skip": "False",
|
||||||
|
"params": {
|
||||||
|
"height": "height",
|
||||||
|
"face": "face",
|
||||||
|
"is_sink": "True",
|
||||||
|
"is_inner": "True",
|
||||||
|
"is_ribbon": "False"
|
||||||
|
},
|
||||||
|
"transform": "ident()"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"identifier": "floor_ribbon_inner_corner",
|
||||||
|
"showcase": {
|
||||||
|
"title": "Ribbon Inner Corner",
|
||||||
|
"category": "Half Block Corners",
|
||||||
|
"icon": "RibbonInnerCorner",
|
||||||
|
"type": "floor",
|
||||||
|
"cfgs": [
|
||||||
|
{
|
||||||
|
"field": "height_",
|
||||||
|
"type": "float",
|
||||||
|
"title": "Height",
|
||||||
|
"desc": "The height of block.",
|
||||||
|
"default": "5.0"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"field": "face_",
|
||||||
|
"type": "face",
|
||||||
|
"title": "Face",
|
||||||
|
"desc": "Whether has some faces.",
|
||||||
|
"default": "(True, False, False, False, False, False)"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"params": [
|
||||||
|
{
|
||||||
|
"field": "height",
|
||||||
|
"data": "height_"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"field": "face",
|
||||||
|
"data": "face_"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"skip": "False",
|
||||||
|
"vars": [],
|
||||||
|
"vertices": [],
|
||||||
|
"faces": [],
|
||||||
|
"instances": [
|
||||||
|
{
|
||||||
|
"identifier": "raw_floor_corner",
|
||||||
|
"skip": "False",
|
||||||
|
"params": {
|
||||||
|
"height": "height",
|
||||||
|
"face": "face",
|
||||||
|
"is_sink": "True",
|
||||||
|
"is_inner": "True",
|
||||||
|
"is_ribbon": "True"
|
||||||
|
},
|
||||||
|
"transform": "ident()"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"identifier": "floor_normal_outter_corner",
|
||||||
|
"showcase": {
|
||||||
|
"title": "Normal Outter Corner",
|
||||||
|
"category": "Half Block Corners",
|
||||||
|
"icon": "NormalOutterCorner",
|
||||||
|
"type": "floor",
|
||||||
|
"cfgs": [
|
||||||
|
{
|
||||||
|
"field": "height_",
|
||||||
|
"type": "float",
|
||||||
|
"title": "Height",
|
||||||
|
"desc": "The height of block.",
|
||||||
|
"default": "5.0"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"field": "face_",
|
||||||
|
"type": "face",
|
||||||
|
"title": "Face",
|
||||||
|
"desc": "Whether has some faces.",
|
||||||
|
"default": "(True, False, True, False, True, False)"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"params": [
|
||||||
|
{
|
||||||
|
"field": "height",
|
||||||
|
"data": "height_"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"field": "face",
|
||||||
|
"data": "face_"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"skip": "False",
|
||||||
|
"vars": [],
|
||||||
|
"vertices": [],
|
||||||
|
"faces": [],
|
||||||
|
"instances": [
|
||||||
|
{
|
||||||
|
"identifier": "raw_floor_corner",
|
||||||
|
"skip": "False",
|
||||||
|
"params": {
|
||||||
|
"height": "height",
|
||||||
|
"face": "face",
|
||||||
|
"is_sink": "False",
|
||||||
|
"is_inner": "False",
|
||||||
|
"is_ribbon": "False"
|
||||||
|
},
|
||||||
|
"transform": "ident()"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"identifier": "floor_sink_outter_corner",
|
||||||
|
"showcase": {
|
||||||
|
"title": "Sink Outter Corner",
|
||||||
|
"category": "Half Block Corners",
|
||||||
|
"icon": "SinkOutterCorner",
|
||||||
|
"type": "floor",
|
||||||
|
"cfgs": [
|
||||||
|
{
|
||||||
|
"field": "height_",
|
||||||
|
"type": "float",
|
||||||
|
"title": "Height",
|
||||||
|
"desc": "The height of block.",
|
||||||
|
"default": "5.0"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"field": "face_",
|
||||||
|
"type": "face",
|
||||||
|
"title": "Face",
|
||||||
|
"desc": "Whether has some faces.",
|
||||||
|
"default": "(True, False, True, False, True, False)"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"params": [
|
||||||
|
{
|
||||||
|
"field": "height",
|
||||||
|
"data": "height_"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"field": "face",
|
||||||
|
"data": "face_"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"skip": "False",
|
||||||
|
"vars": [],
|
||||||
|
"vertices": [],
|
||||||
|
"faces": [],
|
||||||
|
"instances": [
|
||||||
|
{
|
||||||
|
"identifier": "raw_floor_corner",
|
||||||
|
"skip": "False",
|
||||||
|
"params": {
|
||||||
|
"height": "height",
|
||||||
|
"face": "face",
|
||||||
|
"is_sink": "True",
|
||||||
|
"is_inner": "False",
|
||||||
|
"is_ribbon": "False"
|
||||||
|
},
|
||||||
|
"transform": "ident()"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"identifier": "floor_ribbon_outter_corner",
|
||||||
|
"showcase": {
|
||||||
|
"title": "Ribbon Outter Corner",
|
||||||
|
"category": "Half Block Corners",
|
||||||
|
"icon": "RibbonOutterCorner",
|
||||||
|
"type": "floor",
|
||||||
|
"cfgs": [
|
||||||
|
{
|
||||||
|
"field": "height_",
|
||||||
|
"type": "float",
|
||||||
|
"title": "Height",
|
||||||
|
"desc": "The height of block.",
|
||||||
|
"default": "5.0"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"field": "face_",
|
||||||
|
"type": "face",
|
||||||
|
"title": "Face",
|
||||||
|
"desc": "Whether has some faces.",
|
||||||
|
"default": "(True, False, True, False, True, False)"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"params": [
|
||||||
|
{
|
||||||
|
"field": "height",
|
||||||
|
"data": "height_"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"field": "face",
|
||||||
|
"data": "face_"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"skip": "False",
|
||||||
|
"vars": [],
|
||||||
|
"vertices": [],
|
||||||
|
"faces": [],
|
||||||
|
"instances": [
|
||||||
|
{
|
||||||
|
"identifier": "raw_floor_corner",
|
||||||
|
"skip": "False",
|
||||||
|
"params": {
|
||||||
|
"height": "height",
|
||||||
|
"face": "face",
|
||||||
|
"is_sink": "True",
|
||||||
|
"is_inner": "False",
|
||||||
|
"is_ribbon": "True"
|
||||||
|
},
|
||||||
|
"transform": "ident()"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
@@ -0,0 +1,533 @@
|
|||||||
|
[
|
||||||
|
{
|
||||||
|
"identifier": "raw_floor_l_crossing",
|
||||||
|
"showcase": null,
|
||||||
|
"params": [
|
||||||
|
{
|
||||||
|
"field": "height",
|
||||||
|
"data": "5.0"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"field": "face",
|
||||||
|
"data": "(True, False, True, False, True, False)"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"field": "is_sink",
|
||||||
|
"data": "False"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"skip": "False",
|
||||||
|
"vars": [],
|
||||||
|
"vertices": [],
|
||||||
|
"faces": [],
|
||||||
|
"instances": [
|
||||||
|
{
|
||||||
|
"identifier": "cv_triangle_side",
|
||||||
|
"skip": "False",
|
||||||
|
"params": {
|
||||||
|
"edge_length": "5",
|
||||||
|
"tip_offset": "2.5",
|
||||||
|
"height": "height",
|
||||||
|
"face": "(face[0], False, False, False, face[4], None)",
|
||||||
|
"is_sink": "is_sink"
|
||||||
|
},
|
||||||
|
"transform": "ident()"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"identifier": "cv_triangle_center",
|
||||||
|
"skip": "False",
|
||||||
|
"params": {
|
||||||
|
"height": "height",
|
||||||
|
"face": "(face[0], False, False, False, face[3], None)",
|
||||||
|
"is_sink": "is_sink"
|
||||||
|
},
|
||||||
|
"transform": "move(5, 0, 0) @ rot(0, 0, 90)"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"identifier": "cv_triangle_center",
|
||||||
|
"skip": "False",
|
||||||
|
"params": {
|
||||||
|
"height": "height",
|
||||||
|
"face": "(face[0], False, False, False, face[5], None)",
|
||||||
|
"is_sink": "is_sink"
|
||||||
|
},
|
||||||
|
"transform": "move(5, 5, 0) @ rot(0, 0, 180)"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"identifier": "cv_triangle_side",
|
||||||
|
"skip": "False",
|
||||||
|
"params": {
|
||||||
|
"edge_length": "5",
|
||||||
|
"tip_offset": "2.5",
|
||||||
|
"height": "height",
|
||||||
|
"face": "(face[0], False, False, False, face[2], None)",
|
||||||
|
"is_sink": "is_sink"
|
||||||
|
},
|
||||||
|
"transform": "move(0, 5, 0) @ rot(0, 0, -90)"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"identifier": "floor_rectangle_bottom",
|
||||||
|
"skip": "not face[1]",
|
||||||
|
"params": {
|
||||||
|
"length": "5",
|
||||||
|
"width": "5"
|
||||||
|
},
|
||||||
|
"transform": "move(0, 0, -height)"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"identifier": "raw_floor_t_crossing",
|
||||||
|
"showcase": null,
|
||||||
|
"params": [
|
||||||
|
{
|
||||||
|
"field": "height",
|
||||||
|
"data": "5.0"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"field": "face",
|
||||||
|
"data": "(True, False, True, False, False, False)"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"field": "is_sink",
|
||||||
|
"data": "False"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"skip": "False",
|
||||||
|
"vars": [],
|
||||||
|
"vertices": [],
|
||||||
|
"faces": [],
|
||||||
|
"instances": [
|
||||||
|
{
|
||||||
|
"identifier": "cv_triangle_center",
|
||||||
|
"skip": "False",
|
||||||
|
"params": {
|
||||||
|
"height": "height",
|
||||||
|
"face": "(face[0], False, False, False, face[4], None)",
|
||||||
|
"is_sink": "is_sink"
|
||||||
|
},
|
||||||
|
"transform": "ident()"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"identifier": "cv_triangle_center",
|
||||||
|
"skip": "False",
|
||||||
|
"params": {
|
||||||
|
"height": "height",
|
||||||
|
"face": "(face[0], False, False, False, face[3], None)",
|
||||||
|
"is_sink": "is_sink"
|
||||||
|
},
|
||||||
|
"transform": "move(5, 0, 0) @ rot(0, 0, 90)"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"identifier": "cv_triangle_center",
|
||||||
|
"skip": "False",
|
||||||
|
"params": {
|
||||||
|
"height": "height",
|
||||||
|
"face": "(face[0], False, False, False, face[5], None)",
|
||||||
|
"is_sink": "is_sink"
|
||||||
|
},
|
||||||
|
"transform": "move(5, 5, 0) @ rot(0, 0, 180)"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"identifier": "cv_triangle_side",
|
||||||
|
"skip": "False",
|
||||||
|
"params": {
|
||||||
|
"edge_length": "5",
|
||||||
|
"tip_offset": "2.5",
|
||||||
|
"height": "height",
|
||||||
|
"face": "(face[0], False, False, False, face[2], None)",
|
||||||
|
"is_sink": "is_sink"
|
||||||
|
},
|
||||||
|
"transform": "move(0, 5, 0) @ rot(0, 0, -90)"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"identifier": "floor_rectangle_bottom",
|
||||||
|
"skip": "not face[1]",
|
||||||
|
"params": {
|
||||||
|
"length": "5",
|
||||||
|
"width": "5"
|
||||||
|
},
|
||||||
|
"transform": "move(0, 0, -height)"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"identifier": "raw_floor_x_crossing",
|
||||||
|
"showcase": null,
|
||||||
|
"params": [
|
||||||
|
{
|
||||||
|
"field": "height",
|
||||||
|
"data": "5.0"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"field": "face",
|
||||||
|
"data": "(True, False, False, False, False, False)"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"field": "is_sink",
|
||||||
|
"data": "False"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"skip": "False",
|
||||||
|
"vars": [],
|
||||||
|
"vertices": [],
|
||||||
|
"faces": [],
|
||||||
|
"instances": [
|
||||||
|
{
|
||||||
|
"identifier": "cv_triangle_center",
|
||||||
|
"skip": "False",
|
||||||
|
"params": {
|
||||||
|
"height": "height",
|
||||||
|
"face": "(face[0], False, False, False, face[4], None)",
|
||||||
|
"is_sink": "is_sink"
|
||||||
|
},
|
||||||
|
"transform": "ident()"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"identifier": "cv_triangle_center",
|
||||||
|
"skip": "False",
|
||||||
|
"params": {
|
||||||
|
"height": "height",
|
||||||
|
"face": "(face[0], False, False, False, face[3], None)",
|
||||||
|
"is_sink": "is_sink"
|
||||||
|
},
|
||||||
|
"transform": "move(5, 0, 0) @ rot(0, 0, 90)"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"identifier": "cv_triangle_center",
|
||||||
|
"skip": "False",
|
||||||
|
"params": {
|
||||||
|
"height": "height",
|
||||||
|
"face": "(face[0], False, False, False, face[5], None)",
|
||||||
|
"is_sink": "is_sink"
|
||||||
|
},
|
||||||
|
"transform": "move(5, 5, 0) @ rot(0, 0, 180)"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"identifier": "cv_triangle_center",
|
||||||
|
"skip": "False",
|
||||||
|
"params": {
|
||||||
|
"height": "height",
|
||||||
|
"face": "(face[0], False, False, False, face[2], None)",
|
||||||
|
"is_sink": "is_sink"
|
||||||
|
},
|
||||||
|
"transform": "move(0, 5, 0) @ rot(0, 0, -90)"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"identifier": "floor_rectangle_bottom",
|
||||||
|
"skip": "not face[1]",
|
||||||
|
"params": {
|
||||||
|
"length": "5",
|
||||||
|
"width": "5"
|
||||||
|
},
|
||||||
|
"transform": "move(0, 0, -height)"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"identifier": "floor_normal_l_crossing",
|
||||||
|
"showcase": {
|
||||||
|
"title": "Normal L Crossing",
|
||||||
|
"category": "Floor Crossings",
|
||||||
|
"icon": "NormalLCrossing",
|
||||||
|
"type": "floor",
|
||||||
|
"cfgs": [
|
||||||
|
{
|
||||||
|
"field": "height_",
|
||||||
|
"type": "float",
|
||||||
|
"title": "Height",
|
||||||
|
"desc": "The height of block.",
|
||||||
|
"default": "5.0"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"field": "face_",
|
||||||
|
"type": "face",
|
||||||
|
"title": "Face",
|
||||||
|
"desc": "Whether has some faces.",
|
||||||
|
"default": "(True, False, True, False, True, False)"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"params": [
|
||||||
|
{
|
||||||
|
"field": "height",
|
||||||
|
"data": "height_"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"field": "face",
|
||||||
|
"data": "face_"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"skip": "False",
|
||||||
|
"vars": [],
|
||||||
|
"vertices": [],
|
||||||
|
"faces": [],
|
||||||
|
"instances": [
|
||||||
|
{
|
||||||
|
"identifier": "raw_floor_l_crossing",
|
||||||
|
"skip": "False",
|
||||||
|
"params": {
|
||||||
|
"height": "height",
|
||||||
|
"face": "face",
|
||||||
|
"is_sink": "False"
|
||||||
|
},
|
||||||
|
"transform": "ident()"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"identifier": "floor_sink_l_crossing",
|
||||||
|
"showcase": {
|
||||||
|
"title": "Sink L Crossing",
|
||||||
|
"category": "Floor Crossings",
|
||||||
|
"icon": "SinkLCrossing",
|
||||||
|
"type": "floor",
|
||||||
|
"cfgs": [
|
||||||
|
{
|
||||||
|
"field": "height_",
|
||||||
|
"type": "float",
|
||||||
|
"title": "Height",
|
||||||
|
"desc": "The height of block.",
|
||||||
|
"default": "5.0"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"field": "face_",
|
||||||
|
"type": "face",
|
||||||
|
"title": "Face",
|
||||||
|
"desc": "Whether has some faces.",
|
||||||
|
"default": "(True, False, True, False, True, False)"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"params": [
|
||||||
|
{
|
||||||
|
"field": "height",
|
||||||
|
"data": "height_"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"field": "face",
|
||||||
|
"data": "face_"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"skip": "False",
|
||||||
|
"vars": [],
|
||||||
|
"vertices": [],
|
||||||
|
"faces": [],
|
||||||
|
"instances": [
|
||||||
|
{
|
||||||
|
"identifier": "raw_floor_l_crossing",
|
||||||
|
"skip": "False",
|
||||||
|
"params": {
|
||||||
|
"height": "height",
|
||||||
|
"face": "face",
|
||||||
|
"is_sink": "True"
|
||||||
|
},
|
||||||
|
"transform": "ident()"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"identifier": "floor_normal_t_crossing",
|
||||||
|
"showcase": {
|
||||||
|
"title": "Normal T Crossing",
|
||||||
|
"category": "Floor Crossings",
|
||||||
|
"icon": "NormalTCrossing",
|
||||||
|
"type": "floor",
|
||||||
|
"cfgs": [
|
||||||
|
{
|
||||||
|
"field": "height_",
|
||||||
|
"type": "float",
|
||||||
|
"title": "Height",
|
||||||
|
"desc": "The height of block.",
|
||||||
|
"default": "5.0"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"field": "face_",
|
||||||
|
"type": "face",
|
||||||
|
"title": "Face",
|
||||||
|
"desc": "Whether has some faces.",
|
||||||
|
"default": "(True, False, True, False, False, False)"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"params": [
|
||||||
|
{
|
||||||
|
"field": "height",
|
||||||
|
"data": "height_"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"field": "face",
|
||||||
|
"data": "face_"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"skip": "False",
|
||||||
|
"vars": [],
|
||||||
|
"vertices": [],
|
||||||
|
"faces": [],
|
||||||
|
"instances": [
|
||||||
|
{
|
||||||
|
"identifier": "raw_floor_t_crossing",
|
||||||
|
"skip": "False",
|
||||||
|
"params": {
|
||||||
|
"height": "height",
|
||||||
|
"face": "face",
|
||||||
|
"is_sink": "False"
|
||||||
|
},
|
||||||
|
"transform": "ident()"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"identifier": "floor_sink_t_crossing",
|
||||||
|
"showcase": {
|
||||||
|
"title": "Sink T Crossing",
|
||||||
|
"category": "Floor Crossings",
|
||||||
|
"icon": "SinkTCrossing",
|
||||||
|
"type": "floor",
|
||||||
|
"cfgs": [
|
||||||
|
{
|
||||||
|
"field": "height_",
|
||||||
|
"type": "float",
|
||||||
|
"title": "Height",
|
||||||
|
"desc": "The height of block.",
|
||||||
|
"default": "5.0"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"field": "face_",
|
||||||
|
"type": "face",
|
||||||
|
"title": "Face",
|
||||||
|
"desc": "Whether has some faces.",
|
||||||
|
"default": "(True, False, True, False, False, False)"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"params": [
|
||||||
|
{
|
||||||
|
"field": "height",
|
||||||
|
"data": "height_"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"field": "face",
|
||||||
|
"data": "face_"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"skip": "False",
|
||||||
|
"vars": [],
|
||||||
|
"vertices": [],
|
||||||
|
"faces": [],
|
||||||
|
"instances": [
|
||||||
|
{
|
||||||
|
"identifier": "raw_floor_t_crossing",
|
||||||
|
"skip": "False",
|
||||||
|
"params": {
|
||||||
|
"height": "height",
|
||||||
|
"face": "face",
|
||||||
|
"is_sink": "True"
|
||||||
|
},
|
||||||
|
"transform": "ident()"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"identifier": "floor_normal_x_crossing",
|
||||||
|
"showcase": {
|
||||||
|
"title": "Normal X Crossing",
|
||||||
|
"category": "Floor Crossings",
|
||||||
|
"icon": "NormalXCrossing",
|
||||||
|
"type": "floor",
|
||||||
|
"cfgs": [
|
||||||
|
{
|
||||||
|
"field": "height_",
|
||||||
|
"type": "float",
|
||||||
|
"title": "Height",
|
||||||
|
"desc": "The height of block.",
|
||||||
|
"default": "5.0"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"field": "face_",
|
||||||
|
"type": "face",
|
||||||
|
"title": "Face",
|
||||||
|
"desc": "Whether has some faces.",
|
||||||
|
"default": "(True, False, False, False, False, False)"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"params": [
|
||||||
|
{
|
||||||
|
"field": "height",
|
||||||
|
"data": "height_"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"field": "face",
|
||||||
|
"data": "face_"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"skip": "False",
|
||||||
|
"vars": [],
|
||||||
|
"vertices": [],
|
||||||
|
"faces": [],
|
||||||
|
"instances": [
|
||||||
|
{
|
||||||
|
"identifier": "raw_floor_x_crossing",
|
||||||
|
"skip": "False",
|
||||||
|
"params": {
|
||||||
|
"height": "height",
|
||||||
|
"face": "face",
|
||||||
|
"is_sink": "False"
|
||||||
|
},
|
||||||
|
"transform": "ident()"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"identifier": "floor_sink_x_crossing",
|
||||||
|
"showcase": {
|
||||||
|
"title": "Sink X Crossing",
|
||||||
|
"category": "Floor Crossings",
|
||||||
|
"icon": "SinkXCrossing",
|
||||||
|
"type": "floor",
|
||||||
|
"cfgs": [
|
||||||
|
{
|
||||||
|
"field": "height_",
|
||||||
|
"type": "float",
|
||||||
|
"title": "Height",
|
||||||
|
"desc": "The height of block.",
|
||||||
|
"default": "5.0"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"field": "face_",
|
||||||
|
"type": "face",
|
||||||
|
"title": "Face",
|
||||||
|
"desc": "Whether has some faces.",
|
||||||
|
"default": "(True, False, False, False, False, False)"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"params": [
|
||||||
|
{
|
||||||
|
"field": "height",
|
||||||
|
"data": "height_"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"field": "face",
|
||||||
|
"data": "face_"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"skip": "False",
|
||||||
|
"vars": [],
|
||||||
|
"vertices": [],
|
||||||
|
"faces": [],
|
||||||
|
"instances": [
|
||||||
|
{
|
||||||
|
"identifier": "raw_floor_x_crossing",
|
||||||
|
"skip": "False",
|
||||||
|
"params": {
|
||||||
|
"height": "height",
|
||||||
|
"face": "face",
|
||||||
|
"is_sink": "True"
|
||||||
|
},
|
||||||
|
"transform": "ident()"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
@@ -0,0 +1,172 @@
|
|||||||
|
[
|
||||||
|
{
|
||||||
|
"identifier": "floor_flat",
|
||||||
|
"showcase": {
|
||||||
|
"title": "Flat",
|
||||||
|
"category": "Miscellaneous",
|
||||||
|
"icon": "Flat",
|
||||||
|
"type": "floor",
|
||||||
|
"cfgs": [
|
||||||
|
{
|
||||||
|
"field": "height_",
|
||||||
|
"type": "float",
|
||||||
|
"title": "Height",
|
||||||
|
"desc": "The height of block.",
|
||||||
|
"default": "5.0"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"field": "length_",
|
||||||
|
"type": "float",
|
||||||
|
"title": "Length",
|
||||||
|
"desc": "The length of block.",
|
||||||
|
"default": "2.5"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"field": "width_",
|
||||||
|
"type": "float",
|
||||||
|
"title": "Width",
|
||||||
|
"desc": "The width of block.",
|
||||||
|
"default": "2.5"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"field": "face_",
|
||||||
|
"type": "face",
|
||||||
|
"title": "Face",
|
||||||
|
"desc": "Whether has some faces.",
|
||||||
|
"default": "(True, False, False, False, False, False)"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"field": "is_sink_",
|
||||||
|
"type": "bool",
|
||||||
|
"title": "Is Sink",
|
||||||
|
"desc": "Whether this flat floor is used for sink floor.",
|
||||||
|
"default": "False"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"params": [
|
||||||
|
{
|
||||||
|
"field": "height",
|
||||||
|
"data": "height_"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"field": "length",
|
||||||
|
"data": "length_"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"field": "width",
|
||||||
|
"data": "width_"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"field": "face",
|
||||||
|
"data": "face_"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"field": "is_sink",
|
||||||
|
"data": "is_sink_"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"skip": "length == 0.0 or width == 0.0",
|
||||||
|
"vars": [
|
||||||
|
{
|
||||||
|
"field": "sink",
|
||||||
|
"data": "0.7 if is_sink else 0"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"field": "uv_length",
|
||||||
|
"data": "length / 5.0"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"field": "uv_width",
|
||||||
|
"data": "width / 5.0"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"vertices": [
|
||||||
|
{
|
||||||
|
"skip": "False",
|
||||||
|
"data": "(0, 0, -sink)"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"skip": "False",
|
||||||
|
"data": "(length, 0, -sink)"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"skip": "False",
|
||||||
|
"data": "(length, width, -sink)"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"skip": "False",
|
||||||
|
"data": "(0, width, -sink)"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"faces": [
|
||||||
|
{
|
||||||
|
"skip": "not face[0]",
|
||||||
|
"texture": "\"FloorTopBorderless\"",
|
||||||
|
"indices": [0, 1, 2, 3],
|
||||||
|
"uvs": [
|
||||||
|
"(0, 0)",
|
||||||
|
"(uv_length, 0)",
|
||||||
|
"(uv_length, uv_width)",
|
||||||
|
"(0, uv_width)"
|
||||||
|
],
|
||||||
|
"normals": null
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"instances": [
|
||||||
|
{
|
||||||
|
"identifier": "raw_floor_side",
|
||||||
|
"skip": "not face[4]",
|
||||||
|
"params": {
|
||||||
|
"height": "height",
|
||||||
|
"length": "length",
|
||||||
|
"is_left_sink": "is_sink",
|
||||||
|
"is_right_sink": "is_sink"
|
||||||
|
},
|
||||||
|
"transform": "ident()"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"identifier": "raw_floor_side",
|
||||||
|
"skip": "not face[2]",
|
||||||
|
"params": {
|
||||||
|
"height": "height",
|
||||||
|
"length": "width",
|
||||||
|
"is_left_sink": "is_sink",
|
||||||
|
"is_right_sink": "is_sink"
|
||||||
|
},
|
||||||
|
"transform": "move(0, width, 0) @ rot(0, 0, -90)"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"identifier": "raw_floor_side",
|
||||||
|
"skip": "not face[3]",
|
||||||
|
"params": {
|
||||||
|
"height": "height",
|
||||||
|
"length": "width",
|
||||||
|
"is_left_sink": "is_sink",
|
||||||
|
"is_right_sink": "is_sink"
|
||||||
|
},
|
||||||
|
"transform": "move(length, 0, 0) @ rot(0, 0, 90)"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"identifier": "raw_floor_side",
|
||||||
|
"skip": "not face[5]",
|
||||||
|
"params": {
|
||||||
|
"height": "height",
|
||||||
|
"length": "length",
|
||||||
|
"is_left_sink": "is_sink",
|
||||||
|
"is_right_sink": "is_sink"
|
||||||
|
},
|
||||||
|
"transform": "move(length, width, 0) @ rot(0, 0, 180)"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"identifier": "floor_rectangle_bottom",
|
||||||
|
"skip": "not face[1]",
|
||||||
|
"params": {
|
||||||
|
"length": "length",
|
||||||
|
"width": "width"
|
||||||
|
},
|
||||||
|
"transform": "move(0, 0, -height)"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
@@ -0,0 +1,343 @@
|
|||||||
|
[
|
||||||
|
{
|
||||||
|
"identifier": "raw_floor_platform",
|
||||||
|
"showcase": null,
|
||||||
|
"params": [
|
||||||
|
{
|
||||||
|
"field": "height",
|
||||||
|
"data": "5.0"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"field": "length",
|
||||||
|
"data": "5.0"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"field": "width",
|
||||||
|
"data": "5.0"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"field": "face",
|
||||||
|
"data": "(True, False, True, True, True, True)"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"field": "is_sink",
|
||||||
|
"data": "False"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"field": "is_ribbon",
|
||||||
|
"data": "False"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"skip": "False",
|
||||||
|
"vars": [],
|
||||||
|
"vertices": [],
|
||||||
|
"faces": [],
|
||||||
|
"instances": [
|
||||||
|
{
|
||||||
|
"identifier": "cv_trapezoid_side",
|
||||||
|
"skip": "False",
|
||||||
|
"params": {
|
||||||
|
"long_edge_length": "length + 5",
|
||||||
|
"short_edge_offset": "2.5",
|
||||||
|
"short_edge_length": "length",
|
||||||
|
"height": "height",
|
||||||
|
"face": "(face[0], False, False, False, face[4], False)",
|
||||||
|
"is_sink": "is_sink",
|
||||||
|
"is_ribbon": "is_ribbon"
|
||||||
|
},
|
||||||
|
"transform": "ident()"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"identifier": "cv_trapezoid_side",
|
||||||
|
"skip": "False",
|
||||||
|
"params": {
|
||||||
|
"long_edge_length": "length + 5",
|
||||||
|
"short_edge_offset": "2.5",
|
||||||
|
"short_edge_length": "length",
|
||||||
|
"height": "height",
|
||||||
|
"face": "(face[0], False, False, False, face[5], False)",
|
||||||
|
"is_sink": "is_sink",
|
||||||
|
"is_ribbon": "is_ribbon"
|
||||||
|
},
|
||||||
|
"transform": "move(0, 5 + width, 0) @ scale(1, -1, 1)"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"identifier": "cv_trapezoid_side",
|
||||||
|
"skip": "False",
|
||||||
|
"params": {
|
||||||
|
"long_edge_length": "width + 5",
|
||||||
|
"short_edge_offset": "2.5",
|
||||||
|
"short_edge_length": "width",
|
||||||
|
"height": "height",
|
||||||
|
"face": "(face[0], False, False, False, face[3], False)",
|
||||||
|
"is_sink": "is_sink",
|
||||||
|
"is_ribbon": "is_ribbon"
|
||||||
|
},
|
||||||
|
"transform": "move(5 + length, 0, 0) @ rot(0, 0, 90)"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"identifier": "cv_trapezoid_side",
|
||||||
|
"skip": "False",
|
||||||
|
"params": {
|
||||||
|
"long_edge_length": "width + 5",
|
||||||
|
"short_edge_offset": "2.5",
|
||||||
|
"short_edge_length": "width",
|
||||||
|
"height": "height",
|
||||||
|
"face": "(face[0], False, False, False, face[2], False)",
|
||||||
|
"is_sink": "is_sink",
|
||||||
|
"is_ribbon": "is_ribbon"
|
||||||
|
},
|
||||||
|
"transform": "rot(0, 0, 90) @ scale(1, -1, 1)"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"identifier": "floor_flat",
|
||||||
|
"skip": "False",
|
||||||
|
"params": {
|
||||||
|
"height": "height",
|
||||||
|
"length": "length",
|
||||||
|
"width": "width",
|
||||||
|
"face": "(face[0], False, False, False, False, False)",
|
||||||
|
"is_sink": "is_sink"
|
||||||
|
},
|
||||||
|
"transform": "move(2.5, 2.5, 0)"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"identifier": "floor_rectangle_bottom",
|
||||||
|
"skip": "not face[1]",
|
||||||
|
"params": {
|
||||||
|
"length": "5 + length",
|
||||||
|
"width": "5 + width"
|
||||||
|
},
|
||||||
|
"transform": "move(0, 0, -height)"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"identifier": "floor_normal_platform",
|
||||||
|
"showcase": {
|
||||||
|
"title": "Normal Platform",
|
||||||
|
"category": "Platforms",
|
||||||
|
"icon": "NormalPlatform",
|
||||||
|
"type": "floor",
|
||||||
|
"cfgs": [
|
||||||
|
{
|
||||||
|
"field": "length_",
|
||||||
|
"type": "float",
|
||||||
|
"title": "Length",
|
||||||
|
"desc": "The length of block.",
|
||||||
|
"default": "2.5"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"field": "width_",
|
||||||
|
"type": "float",
|
||||||
|
"title": "Width",
|
||||||
|
"desc": "The width of block.",
|
||||||
|
"default": "2.5"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"field": "height_",
|
||||||
|
"type": "float",
|
||||||
|
"title": "Height",
|
||||||
|
"desc": "The height of block.",
|
||||||
|
"default": "5.0"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"field": "face_",
|
||||||
|
"type": "face",
|
||||||
|
"title": "Face",
|
||||||
|
"desc": "Whether has some faces.",
|
||||||
|
"default": "(True, False, True, True, True, True)"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"params": [
|
||||||
|
{
|
||||||
|
"field": "height",
|
||||||
|
"data": "height_"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"field": "length",
|
||||||
|
"data": "length_"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"field": "width",
|
||||||
|
"data": "width_"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"field": "face",
|
||||||
|
"data": "face_"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"skip": "False",
|
||||||
|
"vars": [],
|
||||||
|
"vertices": [],
|
||||||
|
"faces": [],
|
||||||
|
"instances": [
|
||||||
|
{
|
||||||
|
"identifier": "raw_floor_platform",
|
||||||
|
"skip": "False",
|
||||||
|
"params": {
|
||||||
|
"length": "length",
|
||||||
|
"width": "width",
|
||||||
|
"height": "height",
|
||||||
|
"face": "face",
|
||||||
|
"is_sink": "False",
|
||||||
|
"is_ribbon": "False"
|
||||||
|
},
|
||||||
|
"transform": "ident()"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"identifier": "floor_sink_platform",
|
||||||
|
"showcase": {
|
||||||
|
"title": "Sink Platform",
|
||||||
|
"category": "Platforms",
|
||||||
|
"icon": "SinkPlatform",
|
||||||
|
"type": "floor",
|
||||||
|
"cfgs": [
|
||||||
|
{
|
||||||
|
"field": "length_",
|
||||||
|
"type": "float",
|
||||||
|
"title": "Length",
|
||||||
|
"desc": "The length of block.",
|
||||||
|
"default": "2.5"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"field": "width_",
|
||||||
|
"type": "float",
|
||||||
|
"title": "Width",
|
||||||
|
"desc": "The width of block.",
|
||||||
|
"default": "2.5"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"field": "height_",
|
||||||
|
"type": "float",
|
||||||
|
"title": "Height",
|
||||||
|
"desc": "The height of block.",
|
||||||
|
"default": "5.0"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"field": "face_",
|
||||||
|
"type": "face",
|
||||||
|
"title": "Face",
|
||||||
|
"desc": "Whether has some faces.",
|
||||||
|
"default": "(True, False, True, True, True, True)"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"params": [
|
||||||
|
{
|
||||||
|
"field": "height",
|
||||||
|
"data": "height_"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"field": "length",
|
||||||
|
"data": "length_"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"field": "width",
|
||||||
|
"data": "width_"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"field": "face",
|
||||||
|
"data": "face_"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"skip": "False",
|
||||||
|
"vars": [],
|
||||||
|
"vertices": [],
|
||||||
|
"faces": [],
|
||||||
|
"instances": [
|
||||||
|
{
|
||||||
|
"identifier": "raw_floor_platform",
|
||||||
|
"skip": "False",
|
||||||
|
"params": {
|
||||||
|
"length": "length",
|
||||||
|
"width": "width",
|
||||||
|
"height": "height",
|
||||||
|
"face": "face",
|
||||||
|
"is_sink": "True",
|
||||||
|
"is_ribbon": "False"
|
||||||
|
},
|
||||||
|
"transform": "ident()"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"identifier": "floor_ribbon_platform",
|
||||||
|
"showcase": {
|
||||||
|
"title": "Ribbon Platform",
|
||||||
|
"category": "Platforms",
|
||||||
|
"icon": "RibbonPlatform",
|
||||||
|
"type": "floor",
|
||||||
|
"cfgs": [
|
||||||
|
{
|
||||||
|
"field": "length_",
|
||||||
|
"type": "float",
|
||||||
|
"title": "Length",
|
||||||
|
"desc": "The length of block.",
|
||||||
|
"default": "2.5"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"field": "width_",
|
||||||
|
"type": "float",
|
||||||
|
"title": "Width",
|
||||||
|
"desc": "The width of block.",
|
||||||
|
"default": "2.5"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"field": "height_",
|
||||||
|
"type": "float",
|
||||||
|
"title": "Height",
|
||||||
|
"desc": "The height of block.",
|
||||||
|
"default": "5.0"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"field": "face_",
|
||||||
|
"type": "face",
|
||||||
|
"title": "Face",
|
||||||
|
"desc": "Whether has some faces.",
|
||||||
|
"default": "(True, False, True, True, True, True)"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"params": [
|
||||||
|
{
|
||||||
|
"field": "height",
|
||||||
|
"data": "height_"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"field": "length",
|
||||||
|
"data": "length_"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"field": "width",
|
||||||
|
"data": "width_"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"field": "face",
|
||||||
|
"data": "face_"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"skip": "False",
|
||||||
|
"vars": [],
|
||||||
|
"vertices": [],
|
||||||
|
"faces": [],
|
||||||
|
"instances": [
|
||||||
|
{
|
||||||
|
"identifier": "raw_floor_platform",
|
||||||
|
"skip": "False",
|
||||||
|
"params": {
|
||||||
|
"length": "length",
|
||||||
|
"width": "width",
|
||||||
|
"height": "height",
|
||||||
|
"face": "face",
|
||||||
|
"is_sink": "True",
|
||||||
|
"is_ribbon": "True"
|
||||||
|
},
|
||||||
|
"transform": "ident()"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
@@ -0,0 +1,324 @@
|
|||||||
|
[
|
||||||
|
{
|
||||||
|
"identifier": "raw_floor_side",
|
||||||
|
"showcase": null,
|
||||||
|
"params": [
|
||||||
|
{
|
||||||
|
"field": "height",
|
||||||
|
"data": "5.0"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"field": "length",
|
||||||
|
"data": "5.0"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"field": "is_left_sink",
|
||||||
|
"data": "False"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"field": "is_right_sink",
|
||||||
|
"data": "False"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"skip": "height <= (0.7 if (is_left_sink or is_right_sink) else 0.0) or length == 0.0",
|
||||||
|
"vars": [
|
||||||
|
{
|
||||||
|
"field": "skip_long_side",
|
||||||
|
"data": "height <= 5.0"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"field": "skip_short_side",
|
||||||
|
"data": "height > 5.0"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"field": "uv_height",
|
||||||
|
"data": "height / 5.0"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"field": "uv_length",
|
||||||
|
"data": "length / 5.0"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"field": "left_sink",
|
||||||
|
"data": "0.7 if is_left_sink else 0.0"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"field": "right_sink",
|
||||||
|
"data": "0.7 if is_right_sink else 0.0"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"field": "uv_left_sink",
|
||||||
|
"data": "left_sink / 5.0"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"field": "uv_right_sink",
|
||||||
|
"data": "right_sink / 5.0"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"vertices": [
|
||||||
|
{
|
||||||
|
"skip": "False",
|
||||||
|
"data": "(0, 0, -left_sink)"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"skip": "False",
|
||||||
|
"data": "(length, 0, -right_sink)"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"skip": "skip_long_side",
|
||||||
|
"data": "(0, 0, -5.0)"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"skip": "skip_long_side",
|
||||||
|
"data": "(length, 0, -5.0)"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"skip": "False",
|
||||||
|
"data": "(0, 0, -height)"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"skip": "False",
|
||||||
|
"data": "(length, 0, -height)"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"faces": [
|
||||||
|
{
|
||||||
|
"skip": "skip_short_side",
|
||||||
|
"texture": "\"FloorSide\"",
|
||||||
|
"indices": [0, 2, 3, 1],
|
||||||
|
"uvs": [
|
||||||
|
"(0, 0)",
|
||||||
|
"(uv_height - uv_left_sink, 0)",
|
||||||
|
"(uv_height - uv_right_sink, uv_length)",
|
||||||
|
"(0, uv_length)"
|
||||||
|
],
|
||||||
|
"normals": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"skip": "skip_long_side",
|
||||||
|
"texture": "\"LightingFloorTopBorder\"",
|
||||||
|
"indices": [0, 2, 3, 1],
|
||||||
|
"uvs": [
|
||||||
|
"(0, 0)",
|
||||||
|
"(1 - uv_left_sink, 0)",
|
||||||
|
"(1 - uv_right_sink, uv_length)",
|
||||||
|
"(0, uv_length)"
|
||||||
|
],
|
||||||
|
"normals": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"skip": "skip_long_side",
|
||||||
|
"texture": "\"LightingFloorTopBorderless\"",
|
||||||
|
"indices": [2, 4, 5, 3],
|
||||||
|
"uvs": [
|
||||||
|
"(0, 0)",
|
||||||
|
"(uv_height - 1.0, 0)",
|
||||||
|
"(uv_height - 1.0, uv_length)",
|
||||||
|
"(0, uv_length)"
|
||||||
|
],
|
||||||
|
"normals": null
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"instances": []
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"identifier": "floor_4edges_bottom",
|
||||||
|
"showcase": null,
|
||||||
|
"params": [
|
||||||
|
{
|
||||||
|
"field": "top_left_pos",
|
||||||
|
"data": "(0.0, 0.0)"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"field": "top_right_pos",
|
||||||
|
"data": "(0.0, 5.0)"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"field": "bottom_left_pos",
|
||||||
|
"data": "(5.0, 0.0)"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"field": "bottom_right_pos",
|
||||||
|
"data": "(5.0, 5.0)"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"skip": "False",
|
||||||
|
"vars": [
|
||||||
|
{
|
||||||
|
"field": "top_left_uv",
|
||||||
|
"data": "tuple(map(lambda x: x / 5.0, top_left_pos))"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"field": "top_right_uv",
|
||||||
|
"data": "tuple(map(lambda x: x / 5.0, top_right_pos))"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"field": "bottom_left_uv",
|
||||||
|
"data": "tuple(map(lambda x: x / 5.0, bottom_left_pos))"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"field": "bottom_right_uv",
|
||||||
|
"data": "tuple(map(lambda x: x / 5.0, bottom_right_pos))"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"vertices": [
|
||||||
|
{
|
||||||
|
"skip": "False",
|
||||||
|
"data": "top_left_pos + (0, )"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"skip": "False",
|
||||||
|
"data": "top_right_pos + (0, )"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"skip": "False",
|
||||||
|
"data": "bottom_left_pos + (0, )"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"skip": "False",
|
||||||
|
"data": "bottom_right_pos + (0, )"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"faces": [
|
||||||
|
{
|
||||||
|
"skip": "False",
|
||||||
|
"texture": "\"FloorTopBorderless\"",
|
||||||
|
"indices": [0, 1, 3, 2],
|
||||||
|
"uvs": [
|
||||||
|
"top_left_uv",
|
||||||
|
"top_right_uv",
|
||||||
|
"bottom_right_uv",
|
||||||
|
"bottom_left_uv"
|
||||||
|
],
|
||||||
|
"normals": null
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"instances": []
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"identifier": "floor_3edges_bottom",
|
||||||
|
"showcase": null,
|
||||||
|
"params": [
|
||||||
|
{
|
||||||
|
"field": "top_pos",
|
||||||
|
"data": "(0.0, 0.0)"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"field": "bottom_pos",
|
||||||
|
"data": "(5.0, 0.0)"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"field": "tip_pos",
|
||||||
|
"data": "(2.5, 2.5)"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"skip": "False",
|
||||||
|
"vars": [
|
||||||
|
{
|
||||||
|
"field": "top_uv",
|
||||||
|
"data": "tuple(map(lambda x: x / 5.0, top_pos))"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"field": "bottom_uv",
|
||||||
|
"data": "tuple(map(lambda x: x / 5.0, bottom_pos))"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"field": "tip_uv",
|
||||||
|
"data": "tuple(map(lambda x: x / 5.0, tip_pos))"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"vertices": [
|
||||||
|
{
|
||||||
|
"skip": "False",
|
||||||
|
"data": "top_pos + (0, )"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"skip": "False",
|
||||||
|
"data": "bottom_pos + (0, )"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"skip": "False",
|
||||||
|
"data": "tip_pos + (0, )"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"faces": [
|
||||||
|
{
|
||||||
|
"skip": "False",
|
||||||
|
"texture": "\"FloorTopBorderless\"",
|
||||||
|
"indices": [0, 2, 1],
|
||||||
|
"uvs": [
|
||||||
|
"top_uv",
|
||||||
|
"tip_uv",
|
||||||
|
"bottom_uv"
|
||||||
|
],
|
||||||
|
"normals": null
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"instances": []
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"identifier": "floor_rectangle_bottom",
|
||||||
|
"showcase": null,
|
||||||
|
"params": [
|
||||||
|
{
|
||||||
|
"field": "length",
|
||||||
|
"data": "5.0"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"field": "width",
|
||||||
|
"data": "5.0"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"skip": "length == 0.0 or width == 0.0",
|
||||||
|
"vars": [],
|
||||||
|
"vertices": [],
|
||||||
|
"faces": [],
|
||||||
|
"instances": [
|
||||||
|
{
|
||||||
|
"identifier": "floor_4edges_bottom",
|
||||||
|
"skip": "False",
|
||||||
|
"params": {
|
||||||
|
"top_left_pos": "(0, 0)",
|
||||||
|
"top_right_pos": "(0, width)",
|
||||||
|
"bottom_left_pos": "(length, 0)",
|
||||||
|
"bottom_right_pos": "(length, width)"
|
||||||
|
},
|
||||||
|
"transform": "ident()"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"identifier": "floor_triangle_bottom",
|
||||||
|
"showcase": null,
|
||||||
|
"params": [
|
||||||
|
{
|
||||||
|
"field": "length",
|
||||||
|
"data": "5.0"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"field": "width",
|
||||||
|
"data": "2.5"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"field": "tip_offset",
|
||||||
|
"data": "2.5"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"skip": "length == 0.0",
|
||||||
|
"vars": [],
|
||||||
|
"vertices": [],
|
||||||
|
"faces": [],
|
||||||
|
"instances": [
|
||||||
|
{
|
||||||
|
"identifier": "floor_3edges_bottom",
|
||||||
|
"skip": "False",
|
||||||
|
"params": {
|
||||||
|
"top_pos": "(0, 0)",
|
||||||
|
"bottom_pos": "(length, 0)",
|
||||||
|
"tip_pos": "(tip_offset, width)"
|
||||||
|
},
|
||||||
|
"transform": "ident()"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
@@ -0,0 +1,324 @@
|
|||||||
|
[
|
||||||
|
{
|
||||||
|
"identifier": "floor_normal_straight",
|
||||||
|
"showcase": {
|
||||||
|
"title": "Normal Floor",
|
||||||
|
"category": "Floors",
|
||||||
|
"icon": "NormalFloor",
|
||||||
|
"type": "floor",
|
||||||
|
"cfgs": [
|
||||||
|
{
|
||||||
|
"field": "height_",
|
||||||
|
"type": "float",
|
||||||
|
"title": "Height",
|
||||||
|
"desc": "The height of block.",
|
||||||
|
"default": "5.0"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"field": "length_",
|
||||||
|
"type": "float",
|
||||||
|
"title": "Length",
|
||||||
|
"desc": "The length of block.",
|
||||||
|
"default": "2.5"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"field": "face_",
|
||||||
|
"type": "face",
|
||||||
|
"title": "Face",
|
||||||
|
"desc": "Whether has some faces.",
|
||||||
|
"default": "(True, False, False, False, True, True)"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"params": [
|
||||||
|
{
|
||||||
|
"field": "height",
|
||||||
|
"data": "height_"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"field": "length",
|
||||||
|
"data": "length_"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"field": "face",
|
||||||
|
"data": "face_"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"skip": "length == 0",
|
||||||
|
"vars": [
|
||||||
|
{
|
||||||
|
"field": "length_uv",
|
||||||
|
"data": "length / 5.0"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"vertices": [
|
||||||
|
{
|
||||||
|
"skip": "not face[0]",
|
||||||
|
"data": "(0, 0, 0)"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"skip": "not face[0]",
|
||||||
|
"data": "(length, 0, 0)"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"skip": "not face[0]",
|
||||||
|
"data": "(length, 5, 0)"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"skip": "not face[0]",
|
||||||
|
"data": "(0, 5, 0)"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"faces": [
|
||||||
|
{
|
||||||
|
"skip": "not face[0]",
|
||||||
|
"texture": "\"FloorTopFlat\"",
|
||||||
|
"indices": [0, 1, 2, 3],
|
||||||
|
"uvs": [
|
||||||
|
"(0, 0)",
|
||||||
|
"(0, length_uv)",
|
||||||
|
"(1, length_uv)",
|
||||||
|
"(1, 0)"
|
||||||
|
],
|
||||||
|
"normals": null
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"instances": [
|
||||||
|
{
|
||||||
|
"identifier": "raw_floor_side",
|
||||||
|
"skip": "not face[2]",
|
||||||
|
"params": {
|
||||||
|
"height": "height",
|
||||||
|
"length": "5",
|
||||||
|
"is_left_sink": "False",
|
||||||
|
"is_right_sink": "False"
|
||||||
|
},
|
||||||
|
"transform": "rot(0, 0, 90) @ scale(1, -1, 1)"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"identifier": "raw_floor_side",
|
||||||
|
"skip": "not face[3]",
|
||||||
|
"params": {
|
||||||
|
"height": "height",
|
||||||
|
"length": "5",
|
||||||
|
"is_left_sink": "False",
|
||||||
|
"is_right_sink": "False"
|
||||||
|
},
|
||||||
|
"transform": "move(length, 0, 0) @ rot(0, 0, 90)"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"identifier": "raw_floor_side",
|
||||||
|
"skip": "not face[4]",
|
||||||
|
"params": {
|
||||||
|
"height": "height",
|
||||||
|
"length": "length",
|
||||||
|
"is_left_sink": "False",
|
||||||
|
"is_right_sink": "False"
|
||||||
|
},
|
||||||
|
"transform": "ident()"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"identifier": "raw_floor_side",
|
||||||
|
"skip": "not face[5]",
|
||||||
|
"params": {
|
||||||
|
"height": "height",
|
||||||
|
"length": "length",
|
||||||
|
"is_left_sink": "False",
|
||||||
|
"is_right_sink": "False"
|
||||||
|
},
|
||||||
|
"transform": "move(0, 5, 0) @ scale(1, -1, 1)"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"identifier": "floor_rectangle_bottom",
|
||||||
|
"skip": "not face[1]",
|
||||||
|
"params": {
|
||||||
|
"length": "length",
|
||||||
|
"width": "5"
|
||||||
|
},
|
||||||
|
"transform": "move(0, 0, -height)"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"identifier": "floor_sink_straight",
|
||||||
|
"showcase": {
|
||||||
|
"title": "Sink Floor",
|
||||||
|
"category": "Floors",
|
||||||
|
"icon": "SinkFloor",
|
||||||
|
"type": "floor",
|
||||||
|
"cfgs": [
|
||||||
|
{
|
||||||
|
"field": "height_",
|
||||||
|
"type": "float",
|
||||||
|
"title": "Height",
|
||||||
|
"desc": "The height of block.",
|
||||||
|
"default": "5.0"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"field": "length_",
|
||||||
|
"type": "float",
|
||||||
|
"title": "Length",
|
||||||
|
"desc": "The length of block.",
|
||||||
|
"default": "2.5"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"field": "face_",
|
||||||
|
"type": "face",
|
||||||
|
"title": "Face",
|
||||||
|
"desc": "Whether has some faces.",
|
||||||
|
"default": "(True, False, False, False, True, True)"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"params": [
|
||||||
|
{
|
||||||
|
"field": "height",
|
||||||
|
"data": "height_"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"field": "length",
|
||||||
|
"data": "length_"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"field": "face",
|
||||||
|
"data": "face_"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"skip": "length == 0",
|
||||||
|
"vars": [
|
||||||
|
{
|
||||||
|
"field": "length_uv",
|
||||||
|
"data": "length / 5.0"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"vertices": [
|
||||||
|
{
|
||||||
|
"skip": "not face[0]",
|
||||||
|
"data": "(0, 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": "(0, 2.5, -0.7)"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"skip": "not face[0]",
|
||||||
|
"data": "(length, 5, 0)"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"skip": "not face[0]",
|
||||||
|
"data": "(0, 5, 0)"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"faces": [
|
||||||
|
{
|
||||||
|
"skip": "not face[0]",
|
||||||
|
"texture": "\"FloorTopProfil\"",
|
||||||
|
"indices": [0, 1, 2, 3],
|
||||||
|
"uvs": [
|
||||||
|
"(0, 0)",
|
||||||
|
"(0, length_uv)",
|
||||||
|
"(0.5, length_uv)",
|
||||||
|
"(0.5, 0)"
|
||||||
|
],
|
||||||
|
"normals": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"skip": "not face[0]",
|
||||||
|
"texture": "\"FloorTopProfil\"",
|
||||||
|
"indices": [3, 2, 4, 5],
|
||||||
|
"uvs": [
|
||||||
|
"(0.5, 0)",
|
||||||
|
"(0.5, length_uv)",
|
||||||
|
"(1, length_uv)",
|
||||||
|
"(1, 0)"
|
||||||
|
],
|
||||||
|
"normals": null
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"instances": [
|
||||||
|
{
|
||||||
|
"identifier": "raw_floor_side",
|
||||||
|
"skip": "not face[2]",
|
||||||
|
"params": {
|
||||||
|
"height": "height",
|
||||||
|
"length": "2.5",
|
||||||
|
"is_left_sink": "False",
|
||||||
|
"is_right_sink": "True"
|
||||||
|
},
|
||||||
|
"transform": "rot(0, 0, 90) @ scale(1, -1, 1)"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"identifier": "raw_floor_side",
|
||||||
|
"skip": "not face[2]",
|
||||||
|
"params": {
|
||||||
|
"height": "height",
|
||||||
|
"length": "2.5",
|
||||||
|
"is_left_sink": "True",
|
||||||
|
"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": {
|
||||||
|
"height": "height",
|
||||||
|
"length": "2.5",
|
||||||
|
"is_left_sink": "False",
|
||||||
|
"is_right_sink": "True"
|
||||||
|
},
|
||||||
|
"transform": "move(length, 0, 0) @ rot(0, 0, 90)"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"identifier": "raw_floor_side",
|
||||||
|
"skip": "not face[3]",
|
||||||
|
"params": {
|
||||||
|
"height": "height",
|
||||||
|
"length": "2.5",
|
||||||
|
"is_left_sink": "True",
|
||||||
|
"is_right_sink": "False"
|
||||||
|
},
|
||||||
|
"transform": "move(length, 2.5, 0) @ rot(0, 0, 90)"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"identifier": "raw_floor_side",
|
||||||
|
"skip": "not face[4]",
|
||||||
|
"params": {
|
||||||
|
"height": "height",
|
||||||
|
"length": "length",
|
||||||
|
"is_left_sink": "False",
|
||||||
|
"is_right_sink": "False"
|
||||||
|
},
|
||||||
|
"transform": "ident()"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"identifier": "raw_floor_side",
|
||||||
|
"skip": "not face[5]",
|
||||||
|
"params": {
|
||||||
|
"height": "height",
|
||||||
|
"length": "length",
|
||||||
|
"is_left_sink": "False",
|
||||||
|
"is_right_sink": "False"
|
||||||
|
},
|
||||||
|
"transform": "move(0, 5, 0) @ scale(1, -1, 1)"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"identifier": "floor_rectangle_bottom",
|
||||||
|
"skip": "not face[1]",
|
||||||
|
"params": {
|
||||||
|
"length": "length",
|
||||||
|
"width": "5"
|
||||||
|
},
|
||||||
|
"transform": "move(0, 0, -height)"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
@@ -0,0 +1,178 @@
|
|||||||
|
[
|
||||||
|
// The shared template prototype used by all floor terminals.
|
||||||
|
{
|
||||||
|
"identifier": "raw_floor_terminal",
|
||||||
|
"showcase": null,
|
||||||
|
"params": [
|
||||||
|
{
|
||||||
|
"field": "height",
|
||||||
|
"data": "5.0"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"field": "face",
|
||||||
|
"data": "(True, False, True, False, True, True)"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"field": "is_sink",
|
||||||
|
"data": "False"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"skip": "False",
|
||||||
|
"vars": [],
|
||||||
|
"vertices": [],
|
||||||
|
"faces": [],
|
||||||
|
"instances": [
|
||||||
|
{
|
||||||
|
"identifier": "cv_trapezoid_side",
|
||||||
|
"skip": "False",
|
||||||
|
"params": {
|
||||||
|
"long_edge_length": "5.0",
|
||||||
|
"short_edge_offset": "2.5",
|
||||||
|
"short_edge_length": "2.5",
|
||||||
|
"height": "height",
|
||||||
|
"face": "(face[0], False, False, face[3], face[4], False)",
|
||||||
|
"is_sink": "is_sink",
|
||||||
|
"is_ribbon": "False"
|
||||||
|
},
|
||||||
|
"transform": "ident()"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"identifier": "cv_trapezoid_side",
|
||||||
|
"skip": "False",
|
||||||
|
"params": {
|
||||||
|
"long_edge_length": "5.0",
|
||||||
|
"short_edge_offset": "2.5",
|
||||||
|
"short_edge_length": "2.5",
|
||||||
|
"height": "height",
|
||||||
|
"face": "(face[0], False, False, face[3], face[5], False)",
|
||||||
|
"is_sink": "is_sink",
|
||||||
|
"is_ribbon": "False"
|
||||||
|
},
|
||||||
|
"transform": "move(0, 5, 0) @ scale(1, -1, 1)"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"identifier": "cv_triangle_side",
|
||||||
|
"skip": "False",
|
||||||
|
"params": {
|
||||||
|
"edge_length": "5",
|
||||||
|
"tip_offset": "2.5",
|
||||||
|
"height": "height",
|
||||||
|
"face": "(face[0], False, False, False, face[2], None)",
|
||||||
|
"is_sink": "is_sink"
|
||||||
|
},
|
||||||
|
"transform": "move(0, 5, 0) @ rot(0, 0, -90)"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"identifier": "floor_rectangle_bottom",
|
||||||
|
"skip": "not face[1]",
|
||||||
|
"params": {
|
||||||
|
"length": "5",
|
||||||
|
"width": "5"
|
||||||
|
},
|
||||||
|
"transform": "move(0, 0, -height)"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"identifier": "floor_normal_terminal",
|
||||||
|
"showcase": {
|
||||||
|
"title": "Normal Floor Terminal",
|
||||||
|
"category": "Floors",
|
||||||
|
"icon": "NormalFloorTerminal",
|
||||||
|
"type": "floor",
|
||||||
|
"cfgs": [
|
||||||
|
{
|
||||||
|
"field": "height_",
|
||||||
|
"type": "float",
|
||||||
|
"title": "Height",
|
||||||
|
"desc": "The height of block.",
|
||||||
|
"default": "5.0"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"field": "face_",
|
||||||
|
"type": "face",
|
||||||
|
"title": "Face",
|
||||||
|
"desc": "Whether has some faces.",
|
||||||
|
"default": "(True, False, True, False, True, True)"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"params": [
|
||||||
|
{
|
||||||
|
"field": "height",
|
||||||
|
"data": "height_"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"field": "face",
|
||||||
|
"data": "face_"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"skip": "False",
|
||||||
|
"vars": [],
|
||||||
|
"vertices": [],
|
||||||
|
"faces": [],
|
||||||
|
"instances": [
|
||||||
|
{
|
||||||
|
"identifier": "raw_floor_terminal",
|
||||||
|
"skip": "False",
|
||||||
|
"params": {
|
||||||
|
"height": "height",
|
||||||
|
"face": "face",
|
||||||
|
"is_sink": "False"
|
||||||
|
},
|
||||||
|
"transform": "ident()"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"identifier": "floor_sink_terminal",
|
||||||
|
"showcase": {
|
||||||
|
"title": "Sink Floor Terminal",
|
||||||
|
"category": "Floors",
|
||||||
|
"icon": "SinkFloorTerminal",
|
||||||
|
"type": "floor",
|
||||||
|
"cfgs": [
|
||||||
|
{
|
||||||
|
"field": "height_",
|
||||||
|
"type": "float",
|
||||||
|
"title": "Height",
|
||||||
|
"desc": "The height of block.",
|
||||||
|
"default": "5.0"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"field": "face_",
|
||||||
|
"type": "face",
|
||||||
|
"title": "Face",
|
||||||
|
"desc": "Whether has some faces.",
|
||||||
|
"default": "(True, False, True, False, True, True)"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"params": [
|
||||||
|
{
|
||||||
|
"field": "height",
|
||||||
|
"data": "height_"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"field": "face",
|
||||||
|
"data": "face_"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"skip": "False",
|
||||||
|
"vars": [],
|
||||||
|
"vertices": [],
|
||||||
|
"faces": [],
|
||||||
|
"instances": [
|
||||||
|
{
|
||||||
|
"identifier": "raw_floor_terminal",
|
||||||
|
"skip": "False",
|
||||||
|
"params": {
|
||||||
|
"height": "height",
|
||||||
|
"face": "face",
|
||||||
|
"is_sink": "True"
|
||||||
|
},
|
||||||
|
"transform": "ident()"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
@@ -0,0 +1,289 @@
|
|||||||
|
[
|
||||||
|
{
|
||||||
|
"identifier": "raw_trafo",
|
||||||
|
"showcase": null,
|
||||||
|
"params": [
|
||||||
|
{
|
||||||
|
"field": "trafo_texture",
|
||||||
|
"data": "\"BallWood\""
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"field": "height",
|
||||||
|
"data": "5.0"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"field": "face",
|
||||||
|
"data": "(True, False, True, True, True, True)"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"skip": "False",
|
||||||
|
"vars": [
|
||||||
|
{
|
||||||
|
"field": "uv_height",
|
||||||
|
"data": "height / 5.0"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"vertices": [
|
||||||
|
{
|
||||||
|
"skip": "False",
|
||||||
|
"data": "(0, 0, 0)"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"skip": "False",
|
||||||
|
"data": "(5, 0, 0)"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"skip": "False",
|
||||||
|
"data": "(5, 5, 0)"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"skip": "False",
|
||||||
|
"data": "(0, 5, 0)"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"skip": "False",
|
||||||
|
"data": "(0, 0, -height)"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"skip": "False",
|
||||||
|
"data": "(5, 0, -height)"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"skip": "False",
|
||||||
|
"data": "(5, 5, -height)"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"skip": "False",
|
||||||
|
"data": "(0, 5, -height)"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"faces": [
|
||||||
|
{
|
||||||
|
"skip": "not face[0]",
|
||||||
|
"texture": "trafo_texture",
|
||||||
|
"indices": [0, 1, 2, 3],
|
||||||
|
"uvs": [
|
||||||
|
"(0, 0)",
|
||||||
|
"(1, 0)",
|
||||||
|
"(1, 1)",
|
||||||
|
"(0, 1)"
|
||||||
|
],
|
||||||
|
"normals": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"skip": "(not face[1]) or height == 0.0",
|
||||||
|
"texture": "trafo_texture",
|
||||||
|
"indices": [5, 4, 7, 6],
|
||||||
|
"uvs": [
|
||||||
|
"(0, 0)",
|
||||||
|
"(1, 0)",
|
||||||
|
"(1, 1)",
|
||||||
|
"(0, 1)"
|
||||||
|
],
|
||||||
|
"normals": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"skip": "(not face[2]) or height == 0.0",
|
||||||
|
"texture": "trafo_texture",
|
||||||
|
"indices": [3, 7, 4, 0],
|
||||||
|
"uvs": [
|
||||||
|
"(0, 0)",
|
||||||
|
"(uv_height, 0)",
|
||||||
|
"(uv_height, 1)",
|
||||||
|
"(0, 1)"
|
||||||
|
],
|
||||||
|
"normals": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"skip": "(not face[3]) or height == 0.0",
|
||||||
|
"texture": "trafo_texture",
|
||||||
|
"indices": [1, 5, 6, 2],
|
||||||
|
"uvs": [
|
||||||
|
"(0, 0)",
|
||||||
|
"(uv_height, 0)",
|
||||||
|
"(uv_height, 1)",
|
||||||
|
"(0, 1)"
|
||||||
|
],
|
||||||
|
"normals": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"skip": "(not face[4]) or height == 0.0",
|
||||||
|
"texture": "trafo_texture",
|
||||||
|
"indices": [0, 4, 5, 1],
|
||||||
|
"uvs": [
|
||||||
|
"(0, 0)",
|
||||||
|
"(uv_height, 0)",
|
||||||
|
"(uv_height, 1)",
|
||||||
|
"(0, 1)"
|
||||||
|
],
|
||||||
|
"normals": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"skip": "(not face[5]) or height == 0.0",
|
||||||
|
"texture": "trafo_texture",
|
||||||
|
"indices": [2, 6, 7, 3],
|
||||||
|
"uvs": [
|
||||||
|
"(0, 0)",
|
||||||
|
"(uv_height, 0)",
|
||||||
|
"(uv_height, 1)",
|
||||||
|
"(0, 1)"
|
||||||
|
],
|
||||||
|
"normals": null
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"instances": []
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"identifier": "wood_trafo",
|
||||||
|
"showcase": {
|
||||||
|
"title": "Wood Trafo",
|
||||||
|
"category": "Trafo",
|
||||||
|
"icon": "WoodTrafo",
|
||||||
|
"type": "floor",
|
||||||
|
"cfgs": [
|
||||||
|
{
|
||||||
|
"field": "height_",
|
||||||
|
"type": "float",
|
||||||
|
"title": "Height",
|
||||||
|
"desc": "The height of block.",
|
||||||
|
"default": "5.0"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"field": "face_",
|
||||||
|
"type": "face",
|
||||||
|
"title": "Face",
|
||||||
|
"desc": "Whether has some faces.",
|
||||||
|
"default": "(True, False, True, True, True, True)"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"params": [
|
||||||
|
{
|
||||||
|
"field": "height",
|
||||||
|
"data": "height_"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"field": "face",
|
||||||
|
"data": "face_"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"skip": "False",
|
||||||
|
"vars": [],
|
||||||
|
"vertices": [],
|
||||||
|
"faces": [],
|
||||||
|
"instances": [
|
||||||
|
{
|
||||||
|
"identifier": "raw_trafo",
|
||||||
|
"skip": "False",
|
||||||
|
"params": {
|
||||||
|
"trafo_texture": "\"BallWood\"",
|
||||||
|
"height": "height",
|
||||||
|
"face": "face"
|
||||||
|
},
|
||||||
|
"transform": "ident()"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"identifier": "stone_trafo",
|
||||||
|
"showcase": {
|
||||||
|
"title": "Stone Trafo",
|
||||||
|
"category": "Trafo",
|
||||||
|
"icon": "StoneTrafo",
|
||||||
|
"type": "floor",
|
||||||
|
"cfgs": [
|
||||||
|
{
|
||||||
|
"field": "height_",
|
||||||
|
"type": "float",
|
||||||
|
"title": "Height",
|
||||||
|
"desc": "The height of block.",
|
||||||
|
"default": "5.0"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"field": "face_",
|
||||||
|
"type": "face",
|
||||||
|
"title": "Face",
|
||||||
|
"desc": "Whether has some faces.",
|
||||||
|
"default": "(True, False, True, True, True, True)"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"params": [
|
||||||
|
{
|
||||||
|
"field": "height",
|
||||||
|
"data": "height_"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"field": "face",
|
||||||
|
"data": "face_"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"skip": "False",
|
||||||
|
"vars": [],
|
||||||
|
"vertices": [],
|
||||||
|
"faces": [],
|
||||||
|
"instances": [
|
||||||
|
{
|
||||||
|
"identifier": "raw_trafo",
|
||||||
|
"skip": "False",
|
||||||
|
"params": {
|
||||||
|
"trafo_texture": "\"BallStone\"",
|
||||||
|
"height": "height",
|
||||||
|
"face": "face"
|
||||||
|
},
|
||||||
|
"transform": "ident()"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"identifier": "paper_trafo",
|
||||||
|
"showcase": {
|
||||||
|
"title": "Paper Trafo",
|
||||||
|
"category": "Trafo",
|
||||||
|
"icon": "PaperTrafo",
|
||||||
|
"type": "floor",
|
||||||
|
"cfgs": [
|
||||||
|
{
|
||||||
|
"field": "height_",
|
||||||
|
"type": "float",
|
||||||
|
"title": "Height",
|
||||||
|
"desc": "The height of block.",
|
||||||
|
"default": "5.0"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"field": "face_",
|
||||||
|
"type": "face",
|
||||||
|
"title": "Face",
|
||||||
|
"desc": "Whether has some faces.",
|
||||||
|
"default": "(True, False, True, True, True, True)"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"params": [
|
||||||
|
{
|
||||||
|
"field": "height",
|
||||||
|
"data": "height_"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"field": "face",
|
||||||
|
"data": "face_"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"skip": "False",
|
||||||
|
"vars": [],
|
||||||
|
"vertices": [],
|
||||||
|
"faces": [],
|
||||||
|
"instances": [
|
||||||
|
{
|
||||||
|
"identifier": "raw_trafo",
|
||||||
|
"skip": "False",
|
||||||
|
"params": {
|
||||||
|
"trafo_texture": "\"BallPaper\"",
|
||||||
|
"height": "height",
|
||||||
|
"face": "face"
|
||||||
|
},
|
||||||
|
"transform": "ident()"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
@@ -0,0 +1,272 @@
|
|||||||
|
[
|
||||||
|
{
|
||||||
|
"identifier": "raw_floor_transition_part",
|
||||||
|
"showcase": null,
|
||||||
|
"params": [
|
||||||
|
{
|
||||||
|
"field": "height",
|
||||||
|
"data": "5.0"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"field": "face_part",
|
||||||
|
"data": "(True, False, False)"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"skip": "False",
|
||||||
|
"vars": [],
|
||||||
|
"vertices": [
|
||||||
|
{
|
||||||
|
"skip": "not face_part[0]",
|
||||||
|
"data": "(0, 0, 0)"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"skip": "not face_part[0]",
|
||||||
|
"data": "(5, 0, 0)"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"skip": "not face_part[0]",
|
||||||
|
"data": "(0, 2.5, -0.7)"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"skip": "not face_part[0]",
|
||||||
|
"data": "(5, 5, 0)"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"skip": "not face_part[0]",
|
||||||
|
"data": "(0, 5, 0)"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"faces": [
|
||||||
|
{
|
||||||
|
"skip": "not face_part[0]",
|
||||||
|
"texture": "\"FloorTopProfilFlat\"",
|
||||||
|
"indices": [0, 1, 2],
|
||||||
|
"uvs": [
|
||||||
|
"(0, 1)",
|
||||||
|
"(0, 0)",
|
||||||
|
"(0.5, 1)"
|
||||||
|
],
|
||||||
|
"normals": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"skip": "not face_part[0]",
|
||||||
|
"texture": "\"FloorTopProfilFlat\"",
|
||||||
|
"indices": [3, 2, 1],
|
||||||
|
"uvs": [
|
||||||
|
"(1, 0)",
|
||||||
|
"(0.5, 1)",
|
||||||
|
"(0, 0)"
|
||||||
|
],
|
||||||
|
"normals": null
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"skip": "not face_part[0]",
|
||||||
|
"texture": "\"FloorTopProfilFlat\"",
|
||||||
|
"indices": [2, 3, 4],
|
||||||
|
"uvs": [
|
||||||
|
"(0.5, 1)",
|
||||||
|
"(1, 0)",
|
||||||
|
"(1, 1)"
|
||||||
|
],
|
||||||
|
"normals": null
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"instances": [
|
||||||
|
{
|
||||||
|
"identifier": "raw_floor_side",
|
||||||
|
"skip": "not face_part[1]",
|
||||||
|
"params": {
|
||||||
|
"height": "height",
|
||||||
|
"length": "2.5",
|
||||||
|
"is_left_sink": "False",
|
||||||
|
"is_right_sink": "True"
|
||||||
|
},
|
||||||
|
"transform": "move(0, 5, 0) @ rot(0, 0, -90)"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"identifier": "raw_floor_side",
|
||||||
|
"skip": "not face_part[1]",
|
||||||
|
"params": {
|
||||||
|
"height": "height",
|
||||||
|
"length": "2.5",
|
||||||
|
"is_left_sink": "True",
|
||||||
|
"is_right_sink": "False"
|
||||||
|
},
|
||||||
|
"transform": "move(0, 2.5, 0) @ rot(0, 0, -90)"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"identifier": "raw_floor_side",
|
||||||
|
"skip": "not face_part[2]",
|
||||||
|
"params": {
|
||||||
|
"height": "height",
|
||||||
|
"length": "5",
|
||||||
|
"is_left_sink": "False",
|
||||||
|
"is_right_sink": "False"
|
||||||
|
},
|
||||||
|
"transform": "move(5, 0, 0) @ rot(0, 0, 90)"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"identifier": "floor_transition",
|
||||||
|
"showcase": {
|
||||||
|
"title": "Transition",
|
||||||
|
"category": "Miscellaneous",
|
||||||
|
"icon": "Transition",
|
||||||
|
"type": "floor",
|
||||||
|
"cfgs": [
|
||||||
|
{
|
||||||
|
"field": "height_",
|
||||||
|
"type": "float",
|
||||||
|
"title": "Height",
|
||||||
|
"desc": "The height of block.",
|
||||||
|
"default": "5.0"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"field": "face_",
|
||||||
|
"type": "face",
|
||||||
|
"title": "Face",
|
||||||
|
"desc": "Whether has some faces.",
|
||||||
|
"default": "(True, False, False, False, True, True)"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"params": [
|
||||||
|
{
|
||||||
|
"field": "height",
|
||||||
|
"data": "height_"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"field": "face",
|
||||||
|
"data": "face_"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"skip": "False",
|
||||||
|
"vars": [],
|
||||||
|
"vertices": [],
|
||||||
|
"faces": [],
|
||||||
|
"instances": [
|
||||||
|
{
|
||||||
|
"identifier": "raw_floor_transition_part",
|
||||||
|
"skip": "False",
|
||||||
|
"params": {
|
||||||
|
"height": "height",
|
||||||
|
"face_part": "(face[0], face[2], face[3])"
|
||||||
|
},
|
||||||
|
"transform": "ident()"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"identifier": "raw_floor_side",
|
||||||
|
"skip": "not face[4]",
|
||||||
|
"params": {
|
||||||
|
"height": "height",
|
||||||
|
"length": "5",
|
||||||
|
"is_left_sink": "False",
|
||||||
|
"is_right_sink": "False"
|
||||||
|
},
|
||||||
|
"transform": "ident()"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"identifier": "raw_floor_side",
|
||||||
|
"skip": "not face[5]",
|
||||||
|
"params": {
|
||||||
|
"height": "height",
|
||||||
|
"length": "5",
|
||||||
|
"is_left_sink": "False",
|
||||||
|
"is_right_sink": "False"
|
||||||
|
},
|
||||||
|
"transform": "move(5, 5, 0) @ rot(0, 0, 180)"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"identifier": "floor_rectangle_bottom",
|
||||||
|
"skip": "not face[1]",
|
||||||
|
"params": {
|
||||||
|
"length": "5",
|
||||||
|
"width": "5"
|
||||||
|
},
|
||||||
|
"transform": "move(0, 0, -height)"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"identifier": "floor_narrow_transition",
|
||||||
|
"showcase": {
|
||||||
|
"title": "Narrow Transition",
|
||||||
|
"category": "Miscellaneous",
|
||||||
|
"icon": "NarrowTransition",
|
||||||
|
"type": "floor",
|
||||||
|
"cfgs": [
|
||||||
|
{
|
||||||
|
"field": "height_",
|
||||||
|
"type": "float",
|
||||||
|
"title": "Height",
|
||||||
|
"desc": "The height of block.",
|
||||||
|
"default": "5.0"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"field": "face_",
|
||||||
|
"type": "face",
|
||||||
|
"title": "Face",
|
||||||
|
"desc": "Whether has some faces.",
|
||||||
|
"default": "(True, False, False, False, False, False)"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"params": [
|
||||||
|
{
|
||||||
|
"field": "height",
|
||||||
|
"data": "height_"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"field": "face",
|
||||||
|
"data": "face_"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"skip": "False",
|
||||||
|
"vars": [],
|
||||||
|
"vertices": [],
|
||||||
|
"faces": [],
|
||||||
|
"instances": [
|
||||||
|
{
|
||||||
|
"identifier": "raw_floor_transition_part",
|
||||||
|
"skip": "False",
|
||||||
|
"params": {
|
||||||
|
"height": "height",
|
||||||
|
"face_part": "(face[0], face[2], face[3])"
|
||||||
|
},
|
||||||
|
"transform": "scale(0.5, 1, 1)"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"identifier": "raw_floor_side",
|
||||||
|
"skip": "not face[4]",
|
||||||
|
"params": {
|
||||||
|
"height": "height",
|
||||||
|
"length": "2.5",
|
||||||
|
"is_left_sink": "False",
|
||||||
|
"is_right_sink": "False"
|
||||||
|
},
|
||||||
|
"transform": "ident()"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"identifier": "raw_floor_side",
|
||||||
|
"skip": "not face[5]",
|
||||||
|
"params": {
|
||||||
|
"height": "height",
|
||||||
|
"length": "2.5",
|
||||||
|
"is_left_sink": "False",
|
||||||
|
"is_right_sink": "False"
|
||||||
|
},
|
||||||
|
"transform": "move(2.5, 5, 0) @ rot(0, 0, 180)"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"identifier": "floor_rectangle_bottom",
|
||||||
|
"skip": "not face[1]",
|
||||||
|
"params": {
|
||||||
|
"length": "2.5",
|
||||||
|
"width": "5"
|
||||||
|
},
|
||||||
|
"transform": "move(0, 0, -height)"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
@@ -0,0 +1,622 @@
|
|||||||
|
[
|
||||||
|
{
|
||||||
|
"identifier": "floor_wide_straight",
|
||||||
|
"showcase": {
|
||||||
|
"title": "Wide Floor",
|
||||||
|
"category": "Wide Floors",
|
||||||
|
"icon": "WideFloor",
|
||||||
|
"type": "floor",
|
||||||
|
"cfgs": [
|
||||||
|
{
|
||||||
|
"field": "length_",
|
||||||
|
"type": "float",
|
||||||
|
"title": "Length",
|
||||||
|
"desc": "The length of wide floor.",
|
||||||
|
"default": "2.5"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"field": "width_",
|
||||||
|
"type": "float",
|
||||||
|
"title": "Width",
|
||||||
|
"desc": "The width of wide floor.",
|
||||||
|
"default": "5.0"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"field": "height_",
|
||||||
|
"type": "float",
|
||||||
|
"title": "Height",
|
||||||
|
"desc": "The height of block.",
|
||||||
|
"default": "5.0"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"field": "face_",
|
||||||
|
"type": "face",
|
||||||
|
"title": "Face",
|
||||||
|
"desc": "Whether has some faces.",
|
||||||
|
"default": "(True, False, False, False, True, True)"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"params": [
|
||||||
|
{
|
||||||
|
"field": "height",
|
||||||
|
"data": "height_"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"field": "length",
|
||||||
|
"data": "length_"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"field": "width",
|
||||||
|
"data": "width_"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"field": "face",
|
||||||
|
"data": "face_"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"skip": "length == 0.0 or width == 0.0",
|
||||||
|
"vars": [],
|
||||||
|
"vertices": [],
|
||||||
|
"faces": [],
|
||||||
|
"instances": [
|
||||||
|
{
|
||||||
|
"identifier": "floor_sink_border",
|
||||||
|
"skip": "False",
|
||||||
|
"params": {
|
||||||
|
"length": "length",
|
||||||
|
"height": "height",
|
||||||
|
"face": "(face[0], False, face[2], face[3], face[4], False)"
|
||||||
|
},
|
||||||
|
"transform": "ident()"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"identifier": "floor_sink_border",
|
||||||
|
"skip": "False",
|
||||||
|
"params": {
|
||||||
|
"length": "length",
|
||||||
|
"height": "height",
|
||||||
|
"face": "(face[0], False, face[2], face[3], face[5], False)"
|
||||||
|
},
|
||||||
|
"transform": "move(0, 5 + width, 0) @ scale(1, -1, 1)"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"identifier": "floor_flat",
|
||||||
|
"skip": "False",
|
||||||
|
"params": {
|
||||||
|
"height": "height",
|
||||||
|
"length": "length",
|
||||||
|
"width": "width",
|
||||||
|
"face": "(face[0], False, face[2], face[3], False, False)",
|
||||||
|
"is_sink": "True"
|
||||||
|
},
|
||||||
|
"transform": "move(0, 2.5, 0)"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"identifier": "floor_rectangle_bottom",
|
||||||
|
"skip": "not face[1]",
|
||||||
|
"params": {
|
||||||
|
"length": "length",
|
||||||
|
"width": "5 + width"
|
||||||
|
},
|
||||||
|
"transform": "move(0, 0, -height)"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"identifier": "floor_wide_terminal",
|
||||||
|
"showcase": {
|
||||||
|
"title": "Wide Floor Terminal",
|
||||||
|
"category": "Wide Floors",
|
||||||
|
"icon": "WideFloorTerminal",
|
||||||
|
"type": "floor",
|
||||||
|
"cfgs": [
|
||||||
|
{
|
||||||
|
"field": "width_",
|
||||||
|
"type": "float",
|
||||||
|
"title": "Width",
|
||||||
|
"desc": "The width of wide floor.",
|
||||||
|
"default": "5.0"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"field": "height_",
|
||||||
|
"type": "float",
|
||||||
|
"title": "Height",
|
||||||
|
"desc": "The height of block.",
|
||||||
|
"default": "5.0"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"field": "face_",
|
||||||
|
"type": "face",
|
||||||
|
"title": "Face",
|
||||||
|
"desc": "Whether has some faces.",
|
||||||
|
"default": "(True, False, True, False, True, True)"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"params": [
|
||||||
|
{
|
||||||
|
"field": "height",
|
||||||
|
"data": "height_"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"field": "width",
|
||||||
|
"data": "width_"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"field": "face",
|
||||||
|
"data": "face_"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"skip": "width == 0.0",
|
||||||
|
"vars": [],
|
||||||
|
"vertices": [],
|
||||||
|
"faces": [],
|
||||||
|
"instances": [
|
||||||
|
{
|
||||||
|
"identifier": "cv_trapezoid_side",
|
||||||
|
"skip": "False",
|
||||||
|
"params": {
|
||||||
|
"long_edge_length": "width + 5",
|
||||||
|
"short_edge_offset": "2.5",
|
||||||
|
"short_edge_length": "width",
|
||||||
|
"height": "height",
|
||||||
|
"face": "(face[0], False, False, False, face[2], face[3])",
|
||||||
|
"is_sink": "True",
|
||||||
|
"is_ribbon": "False"
|
||||||
|
},
|
||||||
|
"transform": "rot(0, 0, 90) @ scale(1, -1, 1)"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"identifier": "cv_trapezoid_side",
|
||||||
|
"skip": "False",
|
||||||
|
"params": {
|
||||||
|
"long_edge_length": "5.0",
|
||||||
|
"short_edge_offset": "2.5",
|
||||||
|
"short_edge_length": "2.5",
|
||||||
|
"height": "height",
|
||||||
|
"face": "(face[0], False, False, face[3], face[4], False)",
|
||||||
|
"is_sink": "True",
|
||||||
|
"is_ribbon": "False"
|
||||||
|
},
|
||||||
|
"transform": "ident()"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"identifier": "cv_trapezoid_side",
|
||||||
|
"skip": "False",
|
||||||
|
"params": {
|
||||||
|
"long_edge_length": "5.0",
|
||||||
|
"short_edge_offset": "2.5",
|
||||||
|
"short_edge_length": "2.5",
|
||||||
|
"height": "height",
|
||||||
|
"face": "(face[0], False, False, face[3], face[5], False)",
|
||||||
|
"is_sink": "True",
|
||||||
|
"is_ribbon": "False"
|
||||||
|
},
|
||||||
|
"transform": "move(0, width + 5, 0) @ scale(1, -1, 1)"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"identifier": "floor_flat",
|
||||||
|
"skip": "False",
|
||||||
|
"params": {
|
||||||
|
"height": "height",
|
||||||
|
"length": "2.5",
|
||||||
|
"width": "width",
|
||||||
|
"face": "(face[0], False, False, face[3], False, False)",
|
||||||
|
"is_sink": "True"
|
||||||
|
},
|
||||||
|
"transform": "move(2.5, 2.5, 0)"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"identifier": "floor_rectangle_bottom",
|
||||||
|
"skip": "not face[1]",
|
||||||
|
"params": {
|
||||||
|
"length": "5",
|
||||||
|
"width": "5 + width"
|
||||||
|
},
|
||||||
|
"transform": "move(0, 0, -height)"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"identifier": "floor_wide_l_crossing",
|
||||||
|
"showcase": {
|
||||||
|
"title": "Wide Floor L Crossing",
|
||||||
|
"category": "Wide Floors",
|
||||||
|
"icon": "WideLCrossing",
|
||||||
|
"type": "floor",
|
||||||
|
"cfgs": [
|
||||||
|
{
|
||||||
|
"field": "width_h_",
|
||||||
|
"type": "float",
|
||||||
|
"title": "Horizontal Width",
|
||||||
|
"desc": "The horizontal floor width of wide floor.",
|
||||||
|
"default": "5.0"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"field": "width_v_",
|
||||||
|
"type": "float",
|
||||||
|
"title": "Vertical Width",
|
||||||
|
"desc": "The vertical floor width of wide floor.",
|
||||||
|
"default": "5.0"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"field": "height_",
|
||||||
|
"type": "float",
|
||||||
|
"title": "Height",
|
||||||
|
"desc": "The height of block.",
|
||||||
|
"default": "5.0"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"field": "face_",
|
||||||
|
"type": "face",
|
||||||
|
"title": "Face",
|
||||||
|
"desc": "Whether has some faces.",
|
||||||
|
"default": "(True, False, True, False, True, False)"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"params": [
|
||||||
|
{
|
||||||
|
"field": "height",
|
||||||
|
"data": "height_"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"field": "width_h",
|
||||||
|
"data": "width_h_"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"field": "width_v",
|
||||||
|
"data": "width_v_"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"field": "face",
|
||||||
|
"data": "face_"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"skip": "width_h == 0.0 or width_v == 0.0",
|
||||||
|
"vars": [],
|
||||||
|
"vertices": [],
|
||||||
|
"faces": [],
|
||||||
|
"instances": [
|
||||||
|
{
|
||||||
|
"identifier": "cv_trapezoid_side",
|
||||||
|
"skip": "False",
|
||||||
|
"params": {
|
||||||
|
"long_edge_length": "width_h + 5",
|
||||||
|
"short_edge_offset": "2.5",
|
||||||
|
"short_edge_length": "width_h + 2.5",
|
||||||
|
"height": "height",
|
||||||
|
"face": "(face[0], False, False, face[3], face[4], False)",
|
||||||
|
"is_sink": "True",
|
||||||
|
"is_ribbon": "False"
|
||||||
|
},
|
||||||
|
"transform": "ident()"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"identifier": "cv_trapezoid_side",
|
||||||
|
"skip": "False",
|
||||||
|
"params": {
|
||||||
|
"long_edge_length": "width_v + 5",
|
||||||
|
"short_edge_offset": "2.5",
|
||||||
|
"short_edge_length": "width_v + 2.5",
|
||||||
|
"height": "height",
|
||||||
|
"face": "(face[0], False, False, face[5], face[2], False)",
|
||||||
|
"is_sink": "True",
|
||||||
|
"is_ribbon": "False"
|
||||||
|
},
|
||||||
|
"transform": "rot(0, 0, 90) @ scale(1, -1, 1)"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"identifier": "floor_sink_inner_corner",
|
||||||
|
"skip": "False",
|
||||||
|
"params": {
|
||||||
|
"height": "height",
|
||||||
|
"face": "(face[0], False, False, face[3], False, face[5])"
|
||||||
|
},
|
||||||
|
"transform": "move(2.5 + width_h, 2.5 + width_v, 0)"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"identifier": "floor_flat",
|
||||||
|
"skip": "False",
|
||||||
|
"params": {
|
||||||
|
"height": "height",
|
||||||
|
"length": "width_h + 2.5",
|
||||||
|
"width": "width_v",
|
||||||
|
"face": "(face[0], False, False, face[3], False, False)",
|
||||||
|
"is_sink": "True"
|
||||||
|
},
|
||||||
|
"transform": "move(2.5, 2.5, 0)"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"identifier": "floor_flat",
|
||||||
|
"skip": "False",
|
||||||
|
"params": {
|
||||||
|
"height": "height",
|
||||||
|
"length": "width_h",
|
||||||
|
"width": "2.5",
|
||||||
|
"face": "(face[0], False, False, False, False, face[5])",
|
||||||
|
"is_sink": "True"
|
||||||
|
},
|
||||||
|
"transform": "move(2.5, 2.5 + width_v, 0)"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"identifier": "floor_rectangle_bottom",
|
||||||
|
"skip": "not face[1]",
|
||||||
|
"params": {
|
||||||
|
"length": "width_h + 5",
|
||||||
|
"width": "width_v + 5"
|
||||||
|
},
|
||||||
|
"transform": "move(0, 0, -height)"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"identifier": "floor_wide_t_crossing",
|
||||||
|
"showcase": {
|
||||||
|
"title": "Wide Floor T Crossing",
|
||||||
|
"category": "Wide Floors",
|
||||||
|
"icon": "WideTCrossing",
|
||||||
|
"type": "floor",
|
||||||
|
"cfgs": [
|
||||||
|
{
|
||||||
|
"field": "width_h_",
|
||||||
|
"type": "float",
|
||||||
|
"title": "Horizontal Width",
|
||||||
|
"desc": "The horizontal floor width of wide floor.",
|
||||||
|
"default": "5.0"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"field": "width_v_",
|
||||||
|
"type": "float",
|
||||||
|
"title": "Vertical Width",
|
||||||
|
"desc": "The vertical floor width of wide floor.",
|
||||||
|
"default": "5.0"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"field": "height_",
|
||||||
|
"type": "float",
|
||||||
|
"title": "Height",
|
||||||
|
"desc": "The height of block.",
|
||||||
|
"default": "5.0"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"field": "face_",
|
||||||
|
"type": "face",
|
||||||
|
"title": "Face",
|
||||||
|
"desc": "Whether has some faces.",
|
||||||
|
"default": "(True, False, True, False, False, False)"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"params": [
|
||||||
|
{
|
||||||
|
"field": "height",
|
||||||
|
"data": "height_"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"field": "width_h",
|
||||||
|
"data": "width_h_"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"field": "width_v",
|
||||||
|
"data": "width_v_"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"field": "face",
|
||||||
|
"data": "face_"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"skip": "width_h == 0.0 or width_v == 0.0",
|
||||||
|
"vars": [],
|
||||||
|
"vertices": [],
|
||||||
|
"faces": [],
|
||||||
|
"instances": [
|
||||||
|
{
|
||||||
|
"identifier": "floor_sink_border",
|
||||||
|
"skip": "False",
|
||||||
|
"params": {
|
||||||
|
"length": "5 + width_v",
|
||||||
|
"height": "height",
|
||||||
|
"face": "(face[0], False, face[5], face[4], face[2], False)"
|
||||||
|
},
|
||||||
|
"transform": "move(0, 5 + width_v, 0) @ rot(0, 0, -90)"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"identifier": "floor_sink_inner_corner",
|
||||||
|
"skip": "False",
|
||||||
|
"params": {
|
||||||
|
"height": "height",
|
||||||
|
"face": "(face[0], False, False, face[4], False, face[3])"
|
||||||
|
},
|
||||||
|
"transform": "move(2.5 + width_h, 2.5, 0) @ rot(0, 0, -90)"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"identifier": "floor_sink_inner_corner",
|
||||||
|
"skip": "False",
|
||||||
|
"params": {
|
||||||
|
"height": "height",
|
||||||
|
"face": "(face[0], False, False, face[3], False, face[5])"
|
||||||
|
},
|
||||||
|
"transform": "move(2.5 + width_h, 2.5 + width_v, 0)"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"identifier": "floor_flat",
|
||||||
|
"skip": "False",
|
||||||
|
"params": {
|
||||||
|
"height": "height",
|
||||||
|
"length": "width_h",
|
||||||
|
"width": "5 + width_v",
|
||||||
|
"face": "(face[0], False, False, False, face[4], face[5])",
|
||||||
|
"is_sink": "True"
|
||||||
|
},
|
||||||
|
"transform": "move(2.5, 0, 0)"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"identifier": "floor_flat",
|
||||||
|
"skip": "False",
|
||||||
|
"params": {
|
||||||
|
"height": "height",
|
||||||
|
"length": "2.5",
|
||||||
|
"width": "width_v",
|
||||||
|
"face": "(face[0], False, False, face[3], False, False)",
|
||||||
|
"is_sink": "True"
|
||||||
|
},
|
||||||
|
"transform": "move(2.5 + width_h, 2.5, 0)"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"identifier": "floor_rectangle_bottom",
|
||||||
|
"skip": "not face[1]",
|
||||||
|
"params": {
|
||||||
|
"length": "width_h + 5",
|
||||||
|
"width": "width_v + 5"
|
||||||
|
},
|
||||||
|
"transform": "move(0, 0, -height)"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"identifier": "floor_wide_x_crossing",
|
||||||
|
"showcase": {
|
||||||
|
"title": "Wide Floor X Crossing",
|
||||||
|
"category": "Wide Floors",
|
||||||
|
"icon": "WideXCrossing",
|
||||||
|
"type": "floor",
|
||||||
|
"cfgs": [
|
||||||
|
{
|
||||||
|
"field": "width_h_",
|
||||||
|
"type": "float",
|
||||||
|
"title": "Horizontal Width",
|
||||||
|
"desc": "The horizontal floor width of wide floor.",
|
||||||
|
"default": "5.0"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"field": "width_v_",
|
||||||
|
"type": "float",
|
||||||
|
"title": "Vertical Width",
|
||||||
|
"desc": "The vertical floor width of wide floor.",
|
||||||
|
"default": "5.0"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"field": "height_",
|
||||||
|
"type": "float",
|
||||||
|
"title": "Height",
|
||||||
|
"desc": "The height of block.",
|
||||||
|
"default": "5.0"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"field": "face_",
|
||||||
|
"type": "face",
|
||||||
|
"title": "Face",
|
||||||
|
"desc": "Whether has some faces.",
|
||||||
|
"default": "(True, False, False, False, False, False)"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"params": [
|
||||||
|
{
|
||||||
|
"field": "height",
|
||||||
|
"data": "height_"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"field": "width_h",
|
||||||
|
"data": "width_h_"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"field": "width_v",
|
||||||
|
"data": "width_v_"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"field": "face",
|
||||||
|
"data": "face_"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"skip": "width_h == 0.0 or width_v == 0.0",
|
||||||
|
"vars": [],
|
||||||
|
"vertices": [],
|
||||||
|
"faces": [],
|
||||||
|
"instances": [
|
||||||
|
{
|
||||||
|
"identifier": "floor_sink_inner_corner",
|
||||||
|
"skip": "False",
|
||||||
|
"params": {
|
||||||
|
"height": "height",
|
||||||
|
"face": "(face[0], False, False, face[5], False, face[2])"
|
||||||
|
},
|
||||||
|
"transform": "move(2.5, 2.5 + width_v, 0) @ rot(0, 0, -270)"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"identifier": "floor_sink_inner_corner",
|
||||||
|
"skip": "False",
|
||||||
|
"params": {
|
||||||
|
"height": "height",
|
||||||
|
"face": "(face[0], False, False, face[2], False, face[4])"
|
||||||
|
},
|
||||||
|
"transform": "move(2.5, 2.5, 0) @ rot(0, 0, -180)"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"identifier": "floor_sink_inner_corner",
|
||||||
|
"skip": "False",
|
||||||
|
"params": {
|
||||||
|
"height": "height",
|
||||||
|
"face": "(face[0], False, False, face[4], False, face[3])"
|
||||||
|
},
|
||||||
|
"transform": "move(2.5 + width_h, 2.5, 0) @ rot(0, 0, -90)"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"identifier": "floor_sink_inner_corner",
|
||||||
|
"skip": "False",
|
||||||
|
"params": {
|
||||||
|
"height": "height",
|
||||||
|
"face": "(face[0], False, False, face[3], False, face[5])"
|
||||||
|
},
|
||||||
|
"transform": "move(2.5 + width_h, 2.5 + width_v, 0)"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"identifier": "floor_flat",
|
||||||
|
"skip": "False",
|
||||||
|
"params": {
|
||||||
|
"height": "height",
|
||||||
|
"length": "width_h",
|
||||||
|
"width": "5 + width_v",
|
||||||
|
"face": "(face[0], False, False, False, face[4], face[5])",
|
||||||
|
"is_sink": "True"
|
||||||
|
},
|
||||||
|
"transform": "move(2.5, 0, 0)"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"identifier": "floor_flat",
|
||||||
|
"skip": "False",
|
||||||
|
"params": {
|
||||||
|
"height": "height",
|
||||||
|
"length": "2.5",
|
||||||
|
"width": "width_v",
|
||||||
|
"face": "(face[0], False, False, face[3], False, False)",
|
||||||
|
"is_sink": "True"
|
||||||
|
},
|
||||||
|
"transform": "move(2.5 + width_h, 2.5, 0)"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"identifier": "floor_flat",
|
||||||
|
"skip": "False",
|
||||||
|
"params": {
|
||||||
|
"height": "height",
|
||||||
|
"length": "2.5",
|
||||||
|
"width": "width_v",
|
||||||
|
"face": "(face[0], False, face[2], False, False, False)",
|
||||||
|
"is_sink": "True"
|
||||||
|
},
|
||||||
|
"transform": "move(0, 2.5, 0)"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"identifier": "floor_rectangle_bottom",
|
||||||
|
"skip": "not face[1]",
|
||||||
|
"params": {
|
||||||
|
"length": "width_h + 5",
|
||||||
|
"width": "width_v + 5"
|
||||||
|
},
|
||||||
|
"transform": "move(0, 0, -height)"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||