Compare commits
211 Commits
v2.0-beta1
...
ab266a07fb
Author | SHA1 | Date | |
---|---|---|---|
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 |
8
.gitattributes
vendored
@ -1,2 +1,6 @@
|
||||
# our generated mesh should be save as binary
|
||||
*.bin binary
|
||||
# All PNG image are 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
|
||||
|
27
.github/workflows/main.yml
vendored
Normal file
@ -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
|
141
.gitignore
vendored
@ -1,138 +1,3 @@
|
||||
# Byte-compiled / optimized / DLL files
|
||||
__pycache__/
|
||||
*.py[cod]
|
||||
*$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/
|
||||
## ===== Personal =====
|
||||
# Disable VSCode
|
||||
.vscode/
|
||||
|
79
README.md
@ -1,80 +1,7 @@
|
||||
# Ballance Blender Helper
|
||||
# BBP NG
|
||||
|
||||
[中文版本](README_ZH.md)
|
||||
|
||||
## Brief introduction
|
||||
|
||||
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).
|
||||
BBP NG, abbr **B**allance **B**lender **P**lugin **N**ext **G**eneration.
|
||||
|
||||
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
|
||||
|
79
README_ZH.md
@ -1,80 +1,7 @@
|
||||
# Ballance Blender Helper
|
||||
# BBP NG
|
||||
|
||||
[English version](README.md)
|
||||
|
||||
## 简介
|
||||
|
||||
这是一个用于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偏好设置中启用即可(记得配置插件设置)。
|
||||
BBP NG,又名**B**allance **B**lender **P**lugin **N**ext **G**eneration(下一代Ballance Blender插件)。
|
||||
|
||||
有关此插件的介绍,安装,编译,汇报错误等,请参阅本项目的GitHub Page页面:https://yyc12345.github.io/BallanceBlenderHelper
|
||||
|
BIN
assets/icons/Empty.png
Normal file
After Width: | Height: | Size: 785 B |
Before Width: | Height: | Size: 6.3 KiB After Width: | Height: | Size: 6.3 KiB |
BIN
assets/icons/bme/NarrowTransition.png
Normal file
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 |
BIN
assets/icons/bme/NormalFloorTerminal.png
Normal file
After Width: | Height: | Size: 16 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 |
BIN
assets/icons/bme/RibbonBorder.png
Normal file
After Width: | Height: | Size: 12 KiB |
BIN
assets/icons/bme/RibbonInnerCorner.png
Normal file
After Width: | Height: | Size: 14 KiB |
BIN
assets/icons/bme/RibbonOutterCorner.png
Normal file
After Width: | Height: | Size: 14 KiB |
BIN
assets/icons/bme/RibbonPlatform.png
Normal file
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 |
BIN
assets/icons/bme/SinkFloorTerminal.png
Normal file
After Width: | Height: | Size: 16 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 |
BIN
assets/icons/bme/SinkPlatform.png
Normal file
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 |
BIN
assets/icons/bme/WideFloor.png
Normal file
After Width: | Height: | Size: 26 KiB |
BIN
assets/icons/bme/WideFloorTerminal.png
Normal file
After Width: | Height: | Size: 20 KiB |
BIN
assets/icons/bme/WideLCrossing.png
Normal file
After Width: | Height: | Size: 58 KiB |
BIN
assets/icons/bme/WideTCrossing.png
Normal file
After Width: | Height: | Size: 32 KiB |
BIN
assets/icons/bme/WideXCrossing.png
Normal file
After Width: | Height: | Size: 43 KiB |
Before Width: | Height: | Size: 27 KiB After Width: | Height: | Size: 27 KiB |
BIN
assets/icons/component/PC_TwoFlames.png
Normal file
After Width: | Height: | Size: 663 B |
BIN
assets/icons/component/PE_Balloon.png
Normal file
After Width: | Height: | Size: 745 B |
BIN
assets/icons/component/PR_Resetpoint.png
Normal file
After Width: | Height: | Size: 945 B |
BIN
assets/icons/component/PS_FourFlames.png
Normal file
After Width: | Height: | Size: 818 B |
BIN
assets/icons/component/P_Ball_Paper.png
Normal file
After Width: | Height: | Size: 2.3 KiB |
BIN
assets/icons/component/P_Ball_Stone.png
Normal file
After Width: | Height: | Size: 2.6 KiB |
BIN
assets/icons/component/P_Ball_Wood.png
Normal file
After Width: | Height: | Size: 2.6 KiB |
BIN
assets/icons/component/P_Box.png
Normal file
After Width: | Height: | Size: 984 B |
BIN
assets/icons/component/P_Dome.png
Normal file
After Width: | Height: | Size: 611 B |
BIN
assets/icons/component/P_Extra_Life.png
Normal file
After Width: | Height: | Size: 1.1 KiB |
BIN
assets/icons/component/P_Extra_Point.png
Normal file
After Width: | Height: | Size: 1.3 KiB |
BIN
assets/icons/component/P_Modul_01.png
Normal file
After Width: | Height: | Size: 1.1 KiB |
BIN
assets/icons/component/P_Modul_03.png
Normal file
After Width: | Height: | Size: 471 B |
BIN
assets/icons/component/P_Modul_08.png
Normal file
After Width: | Height: | Size: 1.1 KiB |
BIN
assets/icons/component/P_Modul_17.png
Normal file
After Width: | Height: | Size: 494 B |
BIN
assets/icons/component/P_Modul_18.png
Normal file
After Width: | Height: | Size: 360 B |
BIN
assets/icons/component/P_Modul_19.png
Normal file
After Width: | Height: | Size: 992 B |
BIN
assets/icons/component/P_Modul_25.png
Normal file
After Width: | Height: | Size: 444 B |
BIN
assets/icons/component/P_Modul_26.png
Normal file
After Width: | Height: | Size: 691 B |
BIN
assets/icons/component/P_Modul_29.png
Normal file
After Width: | Height: | Size: 775 B |
BIN
assets/icons/component/P_Modul_30.png
Normal file
After Width: | Height: | Size: 807 B |
BIN
assets/icons/component/P_Modul_34.png
Normal file
After Width: | Height: | Size: 652 B |
BIN
assets/icons/component/P_Modul_37.png
Normal file
After Width: | Height: | Size: 695 B |
BIN
assets/icons/component/P_Modul_41.png
Normal file
After Width: | Height: | Size: 550 B |
BIN
assets/icons/component/P_Trafo_Paper.png
Normal file
After Width: | Height: | Size: 1.8 KiB |
BIN
assets/icons/component/P_Trafo_Stone.png
Normal file
After Width: | Height: | Size: 1.9 KiB |
BIN
assets/icons/component/P_Trafo_Wood.png
Normal file
After Width: | Height: | Size: 1.9 KiB |
BIN
assets/icons/group/SoundID_01.png
Normal file
After Width: | Height: | Size: 2.2 KiB |
BIN
assets/icons/group/SoundID_02.png
Normal file
After Width: | Height: | Size: 2.5 KiB |
BIN
assets/icons/group/SoundID_03.png
Normal file
After Width: | Height: | Size: 265 B |
183
assets/jsons/1x1.json
Normal file
@ -0,0 +1,183 @@
|
||||
[
|
||||
{
|
||||
"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",
|
||||
"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",
|
||||
"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()"
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
237
assets/jsons/borders.json
Normal file
@ -0,0 +1,237 @@
|
||||
[
|
||||
{
|
||||
"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",
|
||||
"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",
|
||||
"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",
|
||||
"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()"
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
414
assets/jsons/chris_vanilla.json
Normal file
@ -0,0 +1,414 @@
|
||||
[
|
||||
{
|
||||
"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)"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"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)"
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
460
assets/jsons/corners.json
Normal file
@ -0,0 +1,460 @@
|
||||
[
|
||||
{
|
||||
"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",
|
||||
"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",
|
||||
"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",
|
||||
"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",
|
||||
"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",
|
||||
"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",
|
||||
"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()"
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
527
assets/jsons/crossings.json
Normal file
@ -0,0 +1,527 @@
|
||||
[
|
||||
{
|
||||
"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",
|
||||
"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",
|
||||
"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",
|
||||
"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",
|
||||
"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",
|
||||
"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",
|
||||
"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()"
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
171
assets/jsons/flat.json
Normal file
@ -0,0 +1,171 @@
|
||||
[
|
||||
{
|
||||
"identifier": "floor_flat",
|
||||
"showcase": {
|
||||
"title": "Flat",
|
||||
"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": "float",
|
||||
"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)"
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
340
assets/jsons/platforms.json
Normal file
@ -0,0 +1,340 @@
|
||||
[
|
||||
{
|
||||
"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",
|
||||
"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",
|
||||
"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",
|
||||
"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()"
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
324
assets/jsons/sides.json
Normal file
@ -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()"
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
322
assets/jsons/streets.json
Normal file
@ -0,0 +1,322 @@
|
||||
[
|
||||
{
|
||||
"identifier": "floor_normal_straight",
|
||||
"showcase": {
|
||||
"title": "Normal Floor",
|
||||
"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",
|
||||
"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)"
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
171
assets/jsons/terminals.json
Normal file
@ -0,0 +1,171 @@
|
||||
[
|
||||
{
|
||||
"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_triangle_side",
|
||||
"skip": "False",
|
||||
"params": {
|
||||
"edge_length": "2.5",
|
||||
"tip_offset": "2.5",
|
||||
"height": "height",
|
||||
"face": "(face[0], False, False, face[3], face[4], None)",
|
||||
"is_sink": "is_sink"
|
||||
},
|
||||
"transform": "ident()"
|
||||
},
|
||||
{
|
||||
"identifier": "cv_triangle_side",
|
||||
"skip": "False",
|
||||
"params": {
|
||||
"edge_length": "2.5",
|
||||
"tip_offset": "2.5",
|
||||
"height": "height",
|
||||
"face": "(face[0], False, False, face[3], face[5], None)",
|
||||
"is_sink": "is_sink"
|
||||
},
|
||||
"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": "2.5",
|
||||
"width": "5"
|
||||
},
|
||||
"transform": "move(0, 0, -height)"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"identifier": "floor_normal_terminal",
|
||||
"showcase": {
|
||||
"title": "Normal Floor Terminal",
|
||||
"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",
|
||||
"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()"
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
286
assets/jsons/trafos.json
Normal file
@ -0,0 +1,286 @@
|
||||
[
|
||||
{
|
||||
"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",
|
||||
"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",
|
||||
"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",
|
||||
"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()"
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
270
assets/jsons/transitions.json
Normal file
@ -0,0 +1,270 @@
|
||||
[
|
||||
{
|
||||
"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",
|
||||
"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",
|
||||
"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)"
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
601
assets/jsons/wide_floors.json
Normal file
@ -0,0 +1,601 @@
|
||||
[
|
||||
{
|
||||
"identifier": "floor_wide_straight",
|
||||
"showcase": {
|
||||
"title": "Wide Floor",
|
||||
"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",
|
||||
"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_triangle_side",
|
||||
"skip": "False",
|
||||
"params": {
|
||||
"edge_length": "2.5",
|
||||
"tip_offset": "2.5",
|
||||
"height": "height",
|
||||
"face": "(face[0], False, False, face[3], face[4], None)",
|
||||
"is_sink": "True"
|
||||
},
|
||||
"transform": "ident()"
|
||||
},
|
||||
{
|
||||
"identifier": "cv_triangle_side",
|
||||
"skip": "False",
|
||||
"params": {
|
||||
"edge_length": "2.5",
|
||||
"tip_offset": "2.5",
|
||||
"height": "height",
|
||||
"face": "(face[0], False, False, face[3], face[5], None)",
|
||||
"is_sink": "True"
|
||||
},
|
||||
"transform": "move(0, width + 5, 0) @ scale(1, -1, 1)"
|
||||
},
|
||||
{
|
||||
"identifier": "floor_rectangle_bottom",
|
||||
"skip": "not face[1]",
|
||||
"params": {
|
||||
"length": "2.5",
|
||||
"width": "5 + width"
|
||||
},
|
||||
"transform": "move(0, 0, -height)"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"identifier": "floor_wide_l_crossing",
|
||||
"showcase": {
|
||||
"title": "Wide Floor L Crossing",
|
||||
"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",
|
||||
"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",
|
||||
"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)"
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|