feat: update BME structure
This commit is contained in:
		@ -22,52 +22,53 @@
 | 
			
		||||
        "faces": [],
 | 
			
		||||
        "instances": [
 | 
			
		||||
            {
 | 
			
		||||
                "identifier": "raw_floor_corner",
 | 
			
		||||
                "identifier": "cv_triangle_side",
 | 
			
		||||
                "skip": "False",
 | 
			
		||||
                "params": {
 | 
			
		||||
                    "height": "height",
 | 
			
		||||
                    "face": "(face[0], face[1], face[4], False, face[3], False)",
 | 
			
		||||
                    "is_sink": "is_sink",
 | 
			
		||||
                    "is_inner": "False",
 | 
			
		||||
                    "is_ribbon": "False"
 | 
			
		||||
                    "face": "(face[0], False, False, False, face[3], None)",
 | 
			
		||||
                    "is_sink": "is_sink"
 | 
			
		||||
                },
 | 
			
		||||
                "transform": "move(5, 0, 0) @ rot(0, 0, -270)"
 | 
			
		||||
                "transform": "move(5, 0, 0) @ rot(0, 0, 90)"
 | 
			
		||||
            },
 | 
			
		||||
            {
 | 
			
		||||
                "identifier": "raw_floor_corner",
 | 
			
		||||
                "identifier": "cv_triangle_side",
 | 
			
		||||
                "skip": "False",
 | 
			
		||||
                "params": {
 | 
			
		||||
                    "height": "height",
 | 
			
		||||
                    "face": "(face[0], face[1], face[3], False, face[5], False)",
 | 
			
		||||
                    "is_sink": "is_sink",
 | 
			
		||||
                    "is_inner": "False",
 | 
			
		||||
                    "is_ribbon": "False"
 | 
			
		||||
                    "face": "(face[0], False, False, False, face[5], None)",
 | 
			
		||||
                    "is_sink": "is_sink"
 | 
			
		||||
                },
 | 
			
		||||
                "transform": "move(5, 5, 0) @ rot(0, 0, -180)"
 | 
			
		||||
                "transform": "move(5, 5, 0) @ rot(0, 0, 180)"
 | 
			
		||||
            },
 | 
			
		||||
            {
 | 
			
		||||
                "identifier": "raw_floor_corner",
 | 
			
		||||
                "identifier": "cv_triangle_side",
 | 
			
		||||
                "skip": "False",
 | 
			
		||||
                "params": {
 | 
			
		||||
                    "height": "height",
 | 
			
		||||
                    "face": "(face[0], face[1], face[5], False, face[2], False)",
 | 
			
		||||
                    "is_sink": "is_sink",
 | 
			
		||||
                    "is_inner": "False",
 | 
			
		||||
                    "is_ribbon": "False"
 | 
			
		||||
                    "face": "(face[0], False, False, False, face[2], None)",
 | 
			
		||||
                    "is_sink": "is_sink"
 | 
			
		||||
                },
 | 
			
		||||
                "transform": "move(0, 5, 0) @ rot(0, 0, -90)"
 | 
			
		||||
                "transform": "move(0, 5, 0) @ rot(0, 0, 270)"
 | 
			
		||||
            },
 | 
			
		||||
            {
 | 
			
		||||
                "identifier": "raw_floor_corner",
 | 
			
		||||
                "identifier": "cv_triangle_side",
 | 
			
		||||
                "skip": "False",
 | 
			
		||||
                "params": {
 | 
			
		||||
                    "height": "height",
 | 
			
		||||
                    "face": "(face[0], face[1], face[2], False, face[4], False)",
 | 
			
		||||
                    "is_sink": "is_sink",
 | 
			
		||||
                    "is_inner": "False",
 | 
			
		||||
                    "is_ribbon": "False"
 | 
			
		||||
                    "face": "(face[0], False, False, False, face[4], None)",
 | 
			
		||||
                    "is_sink": "is_sink"
 | 
			
		||||
                },
 | 
			
		||||
                "transform": "move(0, 0, 0)"
 | 
			
		||||
                "transform": "ident()"
 | 
			
		||||
            },
 | 
			
		||||
            {
 | 
			
		||||
                "identifier": "floor_rectangle_bottom",
 | 
			
		||||
                "skip": "not face[1]",
 | 
			
		||||
                "params": {
 | 
			
		||||
                    "length": "5",
 | 
			
		||||
                    "width": "5"
 | 
			
		||||
                },
 | 
			
		||||
                "transform": "move(0, 0, -height)"
 | 
			
		||||
            }
 | 
			
		||||
        ]
 | 
			
		||||
    },
 | 
			
		||||
 | 
			
		||||
@ -25,105 +25,23 @@
 | 
			
		||||
            }
 | 
			
		||||
        ],
 | 
			
		||||
        "skip": "length == 0.0",
 | 
			
		||||
        "vars": [
 | 
			
		||||
            {
 | 
			
		||||
                "field": "uv_length",
 | 
			
		||||
                "data": "length / 5.0"
 | 
			
		||||
            },
 | 
			
		||||
            {
 | 
			
		||||
                "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": "(0, 2.5, -sink)"
 | 
			
		||||
            },
 | 
			
		||||
            {
 | 
			
		||||
                "skip": "not face[0]",
 | 
			
		||||
                "data": "(length, 0, 0)"
 | 
			
		||||
            },
 | 
			
		||||
            {
 | 
			
		||||
                "skip": "not face[0]",
 | 
			
		||||
                "data": "(length, 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, uv_length)",
 | 
			
		||||
                    "(uv_border_texture, uv_length)",
 | 
			
		||||
                    "(uv_border_texture, 0)"
 | 
			
		||||
                ],
 | 
			
		||||
                "normals": null
 | 
			
		||||
            }
 | 
			
		||||
        ],
 | 
			
		||||
        "vars": [],
 | 
			
		||||
        "vertices": [],
 | 
			
		||||
        "faces": [],
 | 
			
		||||
        "instances": [
 | 
			
		||||
            {
 | 
			
		||||
                "identifier": "raw_floor_side",
 | 
			
		||||
                "skip": "not face[4]",
 | 
			
		||||
                "identifier": "cv_trapezoid_side",
 | 
			
		||||
                "skip": "False",
 | 
			
		||||
                "params": {
 | 
			
		||||
                    "long_edge_length": "length",
 | 
			
		||||
                    "short_edge_offset": "0",
 | 
			
		||||
                    "short_edge_length": "length",
 | 
			
		||||
                    "height": "height",
 | 
			
		||||
                    "length": "length",
 | 
			
		||||
                    "is_left_sink": "False",
 | 
			
		||||
                    "is_right_sink": "False"
 | 
			
		||||
                    "face": "face",
 | 
			
		||||
                    "is_sink": "is_sink",
 | 
			
		||||
                    "is_ribbon": "is_ribbon"
 | 
			
		||||
                },
 | 
			
		||||
                "transform": "ident()"
 | 
			
		||||
            },
 | 
			
		||||
            {
 | 
			
		||||
                "identifier": "raw_floor_side",
 | 
			
		||||
                "skip": "not face[2]",
 | 
			
		||||
                "params": {
 | 
			
		||||
                    "height": "height",
 | 
			
		||||
                    "length": "2.5",
 | 
			
		||||
                    "is_left_sink": "is_sink",
 | 
			
		||||
                    "is_right_sink": "False"
 | 
			
		||||
                },
 | 
			
		||||
                "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": "False",
 | 
			
		||||
                    "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, 2.5, 0) @ rot(0, 0, 180)"
 | 
			
		||||
            },
 | 
			
		||||
            {
 | 
			
		||||
                "identifier": "floor_bottom",
 | 
			
		||||
                "skip": "not face[1]",
 | 
			
		||||
                "params": {
 | 
			
		||||
                    "length": "length",
 | 
			
		||||
                    "width": "2.5"
 | 
			
		||||
                },
 | 
			
		||||
                "transform": "move(0, 0, -height)"
 | 
			
		||||
            }
 | 
			
		||||
        ]
 | 
			
		||||
    },
 | 
			
		||||
 | 
			
		||||
@ -260,7 +260,7 @@
 | 
			
		||||
            },
 | 
			
		||||
            {
 | 
			
		||||
                "field": "face",
 | 
			
		||||
                "data": "(True, False, False, None, False, False)"
 | 
			
		||||
                "data": "(True, False, False, False, True, None)"
 | 
			
		||||
            },
 | 
			
		||||
            {
 | 
			
		||||
                "field": "is_sink",
 | 
			
		||||
@ -281,48 +281,48 @@
 | 
			
		||||
            },
 | 
			
		||||
            {
 | 
			
		||||
                "skip": "not face[0]",
 | 
			
		||||
                "data": "(0, 5, 0)"
 | 
			
		||||
                "data": "(5, 0, 0)"
 | 
			
		||||
            },
 | 
			
		||||
            {
 | 
			
		||||
                "skip": "not face[0]",
 | 
			
		||||
                "data": "(2.5, 2.5, -sink)"
 | 
			
		||||
            },
 | 
			
		||||
            {
 | 
			
		||||
                "skip": "(not face[0]) and is_sink",
 | 
			
		||||
                "data": "(0, 2.5, -sink)"
 | 
			
		||||
                "skip": "(not face[0]) or (not is_sink)",
 | 
			
		||||
                "data": "(2.5, 0, -sink)"
 | 
			
		||||
            }
 | 
			
		||||
        ],
 | 
			
		||||
        "faces": [
 | 
			
		||||
            {
 | 
			
		||||
                "skip": "(not face[0]) and (not is_sink)",
 | 
			
		||||
                "skip": "(not face[0]) or is_sink",
 | 
			
		||||
                "texture": "\"FloorTopFlat\"",
 | 
			
		||||
                "indices": [0, 2, 1],
 | 
			
		||||
                "indices": [0, 1, 2],
 | 
			
		||||
                "uvs": [
 | 
			
		||||
                    "(0, 0)",
 | 
			
		||||
                    "(0.5, 0.5)",
 | 
			
		||||
                    "(1, 0)"
 | 
			
		||||
                    "(1, 0)",
 | 
			
		||||
                    "(0.5, 0.5)"
 | 
			
		||||
                ],
 | 
			
		||||
                "normals": null
 | 
			
		||||
            },
 | 
			
		||||
            {
 | 
			
		||||
                "skip": "(not face[0]) and is_sink",
 | 
			
		||||
                "texture": "\"FloorTopFlat\"",
 | 
			
		||||
                "indices": [0, 2, 3],
 | 
			
		||||
                "skip": "(not face[0]) or (not is_sink)",
 | 
			
		||||
                "texture": "\"FloorTopProfil\"",
 | 
			
		||||
                "indices": [0, 3, 2],
 | 
			
		||||
                "uvs": [
 | 
			
		||||
                    "(0, 0)",
 | 
			
		||||
                    "(0.5, 0.5)",
 | 
			
		||||
                    "(0.5, 0)"
 | 
			
		||||
                    "(0.5, 0)",
 | 
			
		||||
                    "(0.5, 0.5)"
 | 
			
		||||
                ],
 | 
			
		||||
                "normals": null
 | 
			
		||||
            },
 | 
			
		||||
            {
 | 
			
		||||
                "skip": "(not face[0]) and is_sink",
 | 
			
		||||
                "texture": "\"FloorTopFlat\"",
 | 
			
		||||
                "indices": [3, 2, 1],
 | 
			
		||||
                "skip": "(not face[0]) or (not is_sink)",
 | 
			
		||||
                "texture": "\"FloorTopProfil\"",
 | 
			
		||||
                "indices": [3, 1, 2],
 | 
			
		||||
                "uvs": [
 | 
			
		||||
                    "(0.5, 0)",
 | 
			
		||||
                    "(0.5, 0.5)",
 | 
			
		||||
                    "(1, 0)"
 | 
			
		||||
                    "(1, 0)",
 | 
			
		||||
                    "(0.5, 0.5)"
 | 
			
		||||
                ],
 | 
			
		||||
                "normals": null
 | 
			
		||||
            }
 | 
			
		||||
@ -330,7 +330,7 @@
 | 
			
		||||
        "instances": [
 | 
			
		||||
            {
 | 
			
		||||
                "identifier": "raw_floor_side",
 | 
			
		||||
                "skip": "not face[4]",
 | 
			
		||||
                "skip": "not face[2]",
 | 
			
		||||
                "params": {
 | 
			
		||||
                    "height": "height",
 | 
			
		||||
                    "length": "distance(0, 0, 2.5, 2.5)",
 | 
			
		||||
@ -341,47 +341,47 @@
 | 
			
		||||
            },
 | 
			
		||||
            {
 | 
			
		||||
                "identifier": "raw_floor_side",
 | 
			
		||||
                "skip": "not face[5]",
 | 
			
		||||
                "skip": "not face[3]",
 | 
			
		||||
                "params": {
 | 
			
		||||
                    "height": "height",
 | 
			
		||||
                    "length": "distance(5, 0, 2.5, 2.5)",
 | 
			
		||||
                    "is_left_sink": "is_sink",
 | 
			
		||||
                    "is_right_sink": "False"
 | 
			
		||||
                    "is_left_sink": "False",
 | 
			
		||||
                    "is_right_sink": "is_sink"
 | 
			
		||||
                },
 | 
			
		||||
                "transform": "move(2.5, 2.5, 0) @ rot(0, 0, 135)"
 | 
			
		||||
                "transform": "move(5, 0, 0) @ rot(0, 0, 135)"
 | 
			
		||||
            },
 | 
			
		||||
            {
 | 
			
		||||
                "identifier": "raw_floor_side",
 | 
			
		||||
                "skip": "(not face[2]) and is_sink",
 | 
			
		||||
                "skip": "(not face[4]) or (not is_sink)",
 | 
			
		||||
                "params": {
 | 
			
		||||
                    "height": "height",
 | 
			
		||||
                    "length": "2.5",
 | 
			
		||||
                    "is_left_sink": "False",
 | 
			
		||||
                    "is_right_sink": "True"
 | 
			
		||||
                },
 | 
			
		||||
                "transform": "rot(0, 0, 90) @ scale(1, -1 , 1)"
 | 
			
		||||
                "transform": "ident()"
 | 
			
		||||
            },
 | 
			
		||||
            {
 | 
			
		||||
                "identifier": "raw_floor_side",
 | 
			
		||||
                "skip": "(not face[2]) and is_sink",
 | 
			
		||||
                "skip": "(not face[4]) or (not is_sink)",
 | 
			
		||||
                "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)"
 | 
			
		||||
                "transform": "move(2.5, 0, 0)"
 | 
			
		||||
            },
 | 
			
		||||
            {
 | 
			
		||||
                "identifier": "raw_floor_side",
 | 
			
		||||
                "skip": "(not face[2]) and (not is_sink)",
 | 
			
		||||
                "skip": "(not face[4]) or is_sink",
 | 
			
		||||
                "params": {
 | 
			
		||||
                    "height": "height",
 | 
			
		||||
                    "length": "5",
 | 
			
		||||
                    "is_left_sink": "False",
 | 
			
		||||
                    "is_right_sink": "False"
 | 
			
		||||
                },
 | 
			
		||||
                "transform": "rot(0, 0, 90) @ scale(1, -1 , 1)"
 | 
			
		||||
                "transform": "ident()"
 | 
			
		||||
            },
 | 
			
		||||
            {
 | 
			
		||||
                "identifier": "floor_triangle_bottom",
 | 
			
		||||
@ -391,7 +391,7 @@
 | 
			
		||||
                    "width": "2.5",
 | 
			
		||||
                    "tip_offset": "2.5"
 | 
			
		||||
                },
 | 
			
		||||
                "transform": "move(0, 5, -height) @ rot(0, 0, -90)"
 | 
			
		||||
                "transform": "move(0, 0, -height)"
 | 
			
		||||
            }
 | 
			
		||||
        ]
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
@ -135,7 +135,7 @@
 | 
			
		||||
                "transform": "move(2.5, 2.5, 0) @ rot(0, 0, 180)"
 | 
			
		||||
            },
 | 
			
		||||
            {
 | 
			
		||||
                "identifier": "floor_bottom",
 | 
			
		||||
                "identifier": "floor_rectangle_bottom",
 | 
			
		||||
                "skip": "not face[1]",
 | 
			
		||||
                "params": {
 | 
			
		||||
                    "length": "2.5",
 | 
			
		||||
 | 
			
		||||
@ -22,52 +22,53 @@
 | 
			
		||||
        "faces": [],
 | 
			
		||||
        "instances": [
 | 
			
		||||
            {
 | 
			
		||||
                "identifier": "raw_floor_corner",
 | 
			
		||||
                "identifier": "cv_triangle_side",
 | 
			
		||||
                "skip": "False",
 | 
			
		||||
                "params": {
 | 
			
		||||
                    "height": "height",
 | 
			
		||||
                    "face": "(face[0], face[1], face[2], False, face[4], False)",
 | 
			
		||||
                    "is_sink": "is_sink",
 | 
			
		||||
                    "is_inner": "False",
 | 
			
		||||
                    "is_ribbon": "False"
 | 
			
		||||
                    "face": "(face[0], False, False, False, face[4], None)",
 | 
			
		||||
                    "is_sink": "is_sink"
 | 
			
		||||
                },
 | 
			
		||||
                "transform": "ident()"
 | 
			
		||||
            },
 | 
			
		||||
            {
 | 
			
		||||
                "identifier": "raw_floor_border",
 | 
			
		||||
                "identifier": "cv_triangle_center",
 | 
			
		||||
                "skip": "False",
 | 
			
		||||
                "params": {
 | 
			
		||||
                    "length": "2.5",
 | 
			
		||||
                    "height": "height",
 | 
			
		||||
                    "face": "(face[0], face[1], False, face[3], face[4], False)",
 | 
			
		||||
                    "is_sink": "is_sink",
 | 
			
		||||
                    "is_ribbon": "False"
 | 
			
		||||
                    "face": "(face[0], False, False, False, face[3], None)",
 | 
			
		||||
                    "is_sink": "is_sink"
 | 
			
		||||
                },
 | 
			
		||||
                "transform": "move(2.5, 0, 0)"
 | 
			
		||||
                "transform": "move(5, 0, 0) @ rot(0, 0, 90)"
 | 
			
		||||
            },
 | 
			
		||||
            {
 | 
			
		||||
                "identifier": "raw_floor_border",
 | 
			
		||||
                "identifier": "cv_triangle_center",
 | 
			
		||||
                "skip": "False",
 | 
			
		||||
                "params": {
 | 
			
		||||
                    "length": "2.5",
 | 
			
		||||
                    "height": "height",
 | 
			
		||||
                    "face": "(face[0], face[1], face[5], False, face[2], False)",
 | 
			
		||||
                    "is_sink": "is_sink",
 | 
			
		||||
                    "is_ribbon": "False"
 | 
			
		||||
                    "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": {
 | 
			
		||||
                    "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": "raw_floor_corner",
 | 
			
		||||
                "skip": "False",
 | 
			
		||||
                "identifier": "floor_rectangle_bottom",
 | 
			
		||||
                "skip": "not face[1]",
 | 
			
		||||
                "params": {
 | 
			
		||||
                    "height": "height",
 | 
			
		||||
                    "face": "(face[0], face[1], False, face[3], False, face[5])",
 | 
			
		||||
                    "is_sink": "is_sink",
 | 
			
		||||
                    "is_inner": "True",
 | 
			
		||||
                    "is_ribbon": "False"
 | 
			
		||||
                    "length": "5",
 | 
			
		||||
                    "width": "5"
 | 
			
		||||
                },
 | 
			
		||||
                "transform": "move(2.5, 2.5, 0)"
 | 
			
		||||
                "transform": "move(0, 0, -height)"
 | 
			
		||||
            }
 | 
			
		||||
        ]
 | 
			
		||||
    },
 | 
			
		||||
@ -94,40 +95,53 @@
 | 
			
		||||
        "faces": [],
 | 
			
		||||
        "instances": [
 | 
			
		||||
            {
 | 
			
		||||
                "identifier": "raw_floor_border",
 | 
			
		||||
                "identifier": "cv_triangle_center",
 | 
			
		||||
                "skip": "False",
 | 
			
		||||
                "params": {
 | 
			
		||||
                    "length": "5",
 | 
			
		||||
                    "height": "height",
 | 
			
		||||
                    "face": "(face[0], face[1], face[5], face[4], face[2], False)",
 | 
			
		||||
                    "is_sink": "is_sink",
 | 
			
		||||
                    "is_ribbon": "False"
 | 
			
		||||
                    "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": {
 | 
			
		||||
                    "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": "raw_floor_corner",
 | 
			
		||||
                "skip": "False",
 | 
			
		||||
                "identifier": "floor_rectangle_bottom",
 | 
			
		||||
                "skip": "not face[1]",
 | 
			
		||||
                "params": {
 | 
			
		||||
                    "height": "height",
 | 
			
		||||
                    "face": "(face[0], face[1], False, face[4], False, face[3])",
 | 
			
		||||
                    "is_sink": "is_sink",
 | 
			
		||||
                    "is_inner": "True",
 | 
			
		||||
                    "is_ribbon": "False"
 | 
			
		||||
                    "length": "5",
 | 
			
		||||
                    "width": "5"
 | 
			
		||||
                },
 | 
			
		||||
                "transform": "move(2.5, 2.5, 0) @ rot(0, 0, -90)"
 | 
			
		||||
            },
 | 
			
		||||
            {
 | 
			
		||||
                "identifier": "raw_floor_corner",
 | 
			
		||||
                "skip": "False",
 | 
			
		||||
                "params": {
 | 
			
		||||
                    "height": "height",
 | 
			
		||||
                    "face": "(face[0], face[1], False, face[3], False, face[5])",
 | 
			
		||||
                    "is_sink": "is_sink",
 | 
			
		||||
                    "is_inner": "True",
 | 
			
		||||
                    "is_ribbon": "False"
 | 
			
		||||
                },
 | 
			
		||||
                "transform": "move(2.5, 2.5, 0)"
 | 
			
		||||
                "transform": "move(0, 0, -height)"
 | 
			
		||||
            }
 | 
			
		||||
        ]
 | 
			
		||||
    },
 | 
			
		||||
@ -154,52 +168,53 @@
 | 
			
		||||
        "faces": [],
 | 
			
		||||
        "instances": [
 | 
			
		||||
            {
 | 
			
		||||
                "identifier": "raw_floor_corner",
 | 
			
		||||
                "identifier": "cv_triangle_center",
 | 
			
		||||
                "skip": "False",
 | 
			
		||||
                "params": {
 | 
			
		||||
                    "height": "height",
 | 
			
		||||
                    "face": "(face[0], face[1], False, face[5], False, face[2])",
 | 
			
		||||
                    "is_sink": "is_sink",
 | 
			
		||||
                    "is_inner": "True",
 | 
			
		||||
                    "is_ribbon": "False"
 | 
			
		||||
                    "face": "(face[0], False, False, False, face[4], None)",
 | 
			
		||||
                    "is_sink": "is_sink"
 | 
			
		||||
                },
 | 
			
		||||
                "transform": "move(2.5, 2.5, 0) @ rot(0, 0, -270)"
 | 
			
		||||
                "transform": "ident()"
 | 
			
		||||
            },
 | 
			
		||||
            {
 | 
			
		||||
                "identifier": "raw_floor_corner",
 | 
			
		||||
                "identifier": "cv_triangle_center",
 | 
			
		||||
                "skip": "False",
 | 
			
		||||
                "params": {
 | 
			
		||||
                    "height": "height",
 | 
			
		||||
                    "face": "(face[0], face[1], False, face[2], False, face[4])",
 | 
			
		||||
                    "is_sink": "is_sink",
 | 
			
		||||
                    "is_inner": "True",
 | 
			
		||||
                    "is_ribbon": "False"
 | 
			
		||||
                    "face": "(face[0], False, False, False, face[3], None)",
 | 
			
		||||
                    "is_sink": "is_sink"
 | 
			
		||||
                },
 | 
			
		||||
                "transform": "move(2.5, 2.5, 0) @ rot(0, 0, -180)"
 | 
			
		||||
                "transform": "move(5, 0, 0) @ rot(0, 0, 90)"
 | 
			
		||||
            },
 | 
			
		||||
            {
 | 
			
		||||
                "identifier": "raw_floor_corner",
 | 
			
		||||
                "identifier": "cv_triangle_center",
 | 
			
		||||
                "skip": "False",
 | 
			
		||||
                "params": {
 | 
			
		||||
                    "height": "height",
 | 
			
		||||
                    "face": "(face[0], face[1], False, face[4], False, face[3])",
 | 
			
		||||
                    "is_sink": "is_sink",
 | 
			
		||||
                    "is_inner": "True",
 | 
			
		||||
                    "is_ribbon": "False"
 | 
			
		||||
                    "face": "(face[0], False, False, False, face[5], None)",
 | 
			
		||||
                    "is_sink": "is_sink"
 | 
			
		||||
                },
 | 
			
		||||
                "transform": "move(2.5, 2.5, 0) @ rot(0, 0, -90)"
 | 
			
		||||
                "transform": "move(5, 5, 0) @ rot(0, 0, 180)"
 | 
			
		||||
            },
 | 
			
		||||
            {
 | 
			
		||||
                "identifier": "raw_floor_corner",
 | 
			
		||||
                "identifier": "cv_triangle_center",
 | 
			
		||||
                "skip": "False",
 | 
			
		||||
                "params": {
 | 
			
		||||
                    "height": "height",
 | 
			
		||||
                    "face": "(face[0], face[1], False, face[3], False, face[5])",
 | 
			
		||||
                    "is_sink": "is_sink",
 | 
			
		||||
                    "is_inner": "True",
 | 
			
		||||
                    "is_ribbon": "False"
 | 
			
		||||
                    "face": "(face[0], False, False, False, face[2], None)",
 | 
			
		||||
                    "is_sink": "is_sink"
 | 
			
		||||
                },
 | 
			
		||||
                "transform": "move(2.5, 2.5, 0)"
 | 
			
		||||
                "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)"
 | 
			
		||||
            }
 | 
			
		||||
        ]
 | 
			
		||||
    },
 | 
			
		||||
 | 
			
		||||
@ -158,7 +158,7 @@
 | 
			
		||||
                "transform": "move(length, width, 0) @ rot(0, 0, 180)"
 | 
			
		||||
            },
 | 
			
		||||
            {
 | 
			
		||||
                "identifier": "floor_bottom",
 | 
			
		||||
                "identifier": "floor_rectangle_bottom",
 | 
			
		||||
                "skip": "not face[1]",
 | 
			
		||||
                "params": {
 | 
			
		||||
                    "length": "length",
 | 
			
		||||
 | 
			
		||||
@ -34,53 +34,61 @@
 | 
			
		||||
        "faces": [],
 | 
			
		||||
        "instances": [
 | 
			
		||||
            {
 | 
			
		||||
                "identifier": "raw_floor_corner",
 | 
			
		||||
                "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], face[1], face[4], False, face[3], False)",
 | 
			
		||||
                    "face": "(face[0], False, False, False, face[4], False)",
 | 
			
		||||
                    "is_sink": "is_sink",
 | 
			
		||||
                    "is_inner": "False",
 | 
			
		||||
                    "is_ribbon": "is_ribbon"
 | 
			
		||||
                },
 | 
			
		||||
                "transform": "move(5 + length, 0, 0) @ rot(0, 0, -270)"
 | 
			
		||||
            },
 | 
			
		||||
            {
 | 
			
		||||
                "identifier": "raw_floor_corner",
 | 
			
		||||
                "skip": "False",
 | 
			
		||||
                "params": {
 | 
			
		||||
                    "height": "height",
 | 
			
		||||
                    "face": "(face[0], face[1], face[3], False, face[5], False)",
 | 
			
		||||
                    "is_sink": "is_sink",
 | 
			
		||||
                    "is_inner": "False",
 | 
			
		||||
                    "is_ribbon": "is_ribbon"
 | 
			
		||||
                },
 | 
			
		||||
                "transform": "move(5 + length, 5 + width, 0) @ rot(0, 0, -180)"
 | 
			
		||||
            },
 | 
			
		||||
            {
 | 
			
		||||
                "identifier": "raw_floor_corner",
 | 
			
		||||
                "skip": "False",
 | 
			
		||||
                "params": {
 | 
			
		||||
                    "height": "height",
 | 
			
		||||
                    "face": "(face[0], face[1], face[5], False, face[2], False)",
 | 
			
		||||
                    "is_sink": "is_sink",
 | 
			
		||||
                    "is_inner": "False",
 | 
			
		||||
                    "is_ribbon": "is_ribbon"
 | 
			
		||||
                },
 | 
			
		||||
                "transform": "move(0, 5 + width, 0) @ rot(0, 0, -90)"
 | 
			
		||||
            },
 | 
			
		||||
            {
 | 
			
		||||
                "identifier": "raw_floor_corner",
 | 
			
		||||
                "skip": "False",
 | 
			
		||||
                "params": {
 | 
			
		||||
                    "height": "height",
 | 
			
		||||
                    "face": "(face[0], face[1], face[2], False, face[4], False)",
 | 
			
		||||
                    "is_sink": "is_sink",
 | 
			
		||||
                    "is_inner": "False",
 | 
			
		||||
                    "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",
 | 
			
		||||
@ -88,58 +96,19 @@
 | 
			
		||||
                    "height": "height",
 | 
			
		||||
                    "length": "length",
 | 
			
		||||
                    "width": "width",
 | 
			
		||||
                    "face": "(face[0], face[1], False, False, False, False)",
 | 
			
		||||
                    "face": "(face[0], False, False, False, False, False)",
 | 
			
		||||
                    "is_sink": "is_sink"
 | 
			
		||||
                },
 | 
			
		||||
                "transform": "move(2.5, 2.5, 0)"
 | 
			
		||||
            },
 | 
			
		||||
            {
 | 
			
		||||
                "identifier": "raw_floor_border",
 | 
			
		||||
                "skip": "False",
 | 
			
		||||
                "identifier": "floor_rectangle_bottom",
 | 
			
		||||
                "skip": "not face[1]",
 | 
			
		||||
                "params": {
 | 
			
		||||
                    "height": "height",
 | 
			
		||||
                    "length": "length",
 | 
			
		||||
                    "face": "(face[0], face[1], False, False, face[4], False)",
 | 
			
		||||
                    "is_sink": "is_sink",
 | 
			
		||||
                    "is_ribbon": "is_ribbon"
 | 
			
		||||
                    "length": "5 + length",
 | 
			
		||||
                    "width": "5 + width"
 | 
			
		||||
                },
 | 
			
		||||
                "transform": "move(2.5, 0, 0)"
 | 
			
		||||
            },
 | 
			
		||||
            {
 | 
			
		||||
                "identifier": "raw_floor_border",
 | 
			
		||||
                "skip": "False",
 | 
			
		||||
                "params": {
 | 
			
		||||
                    "height": "height",
 | 
			
		||||
                    "length": "width",
 | 
			
		||||
                    "face": "(face[0], face[1], False, False, face[2], False)",
 | 
			
		||||
                    "is_sink": "is_sink",
 | 
			
		||||
                    "is_ribbon": "is_ribbon"
 | 
			
		||||
                },
 | 
			
		||||
                "transform": "move(0, 2.5 + width, 0) @ rot(0, 0, -90)"
 | 
			
		||||
            },
 | 
			
		||||
            {
 | 
			
		||||
                "identifier": "raw_floor_border",
 | 
			
		||||
                "skip": "False",
 | 
			
		||||
                "params": {
 | 
			
		||||
                    "height": "height",
 | 
			
		||||
                    "length": "length",
 | 
			
		||||
                    "face": "(face[0], face[1], False, False, face[5], False)",
 | 
			
		||||
                    "is_sink": "is_sink",
 | 
			
		||||
                    "is_ribbon": "is_ribbon"
 | 
			
		||||
                },
 | 
			
		||||
                "transform": "move(2.5 + length, 5 + width, 0) @ rot(0, 0, -180)"
 | 
			
		||||
            },
 | 
			
		||||
            {
 | 
			
		||||
                "identifier": "raw_floor_border",
 | 
			
		||||
                "skip": "False",
 | 
			
		||||
                "params": {
 | 
			
		||||
                    "height": "height",
 | 
			
		||||
                    "length": "width",
 | 
			
		||||
                    "face": "(face[0], face[1], False, False, face[3], False)",
 | 
			
		||||
                    "is_sink": "is_sink",
 | 
			
		||||
                    "is_ribbon": "is_ribbon"
 | 
			
		||||
                },
 | 
			
		||||
                "transform": "move(5 + length, 2.5, 0) @ rot(0, 0, -270)"
 | 
			
		||||
                "transform": "move(0, 0, -height)"
 | 
			
		||||
            }
 | 
			
		||||
        ]
 | 
			
		||||
    },
 | 
			
		||||
 | 
			
		||||
@ -1,56 +1,4 @@
 | 
			
		||||
[
 | 
			
		||||
    {
 | 
			
		||||
        "identifier": "raw_floor_straight",
 | 
			
		||||
        "showcase": null,
 | 
			
		||||
        "params": [
 | 
			
		||||
            {
 | 
			
		||||
                "field": "height",
 | 
			
		||||
                "data": "5.0"
 | 
			
		||||
            },
 | 
			
		||||
            {
 | 
			
		||||
                "field": "length",
 | 
			
		||||
                "data": "5.0"
 | 
			
		||||
            },
 | 
			
		||||
            {
 | 
			
		||||
                "field": "face",
 | 
			
		||||
                "data": "(True, False, False, False, True, True)"
 | 
			
		||||
            },
 | 
			
		||||
            {
 | 
			
		||||
                "field": "is_sink",
 | 
			
		||||
                "data": "False"
 | 
			
		||||
            }
 | 
			
		||||
        ],
 | 
			
		||||
        "skip": "length == 0.0",
 | 
			
		||||
        "vars": [],
 | 
			
		||||
        "vertices": [],
 | 
			
		||||
        "faces": [],
 | 
			
		||||
        "instances": [
 | 
			
		||||
            {
 | 
			
		||||
                "identifier": "raw_floor_border",
 | 
			
		||||
                "skip": "False",
 | 
			
		||||
                "params": {
 | 
			
		||||
                    "length": "length",
 | 
			
		||||
                    "height": "height",
 | 
			
		||||
                    "face": "(face[0], face[1], face[2], face[3], face[4], False)",
 | 
			
		||||
                    "is_sink": "is_sink",
 | 
			
		||||
                    "is_ribbon": "False"
 | 
			
		||||
                },
 | 
			
		||||
                "transform": "ident()"
 | 
			
		||||
            },
 | 
			
		||||
            {
 | 
			
		||||
                "identifier": "raw_floor_border",
 | 
			
		||||
                "skip": "False",
 | 
			
		||||
                "params": {
 | 
			
		||||
                    "length": "length",
 | 
			
		||||
                    "height": "height",
 | 
			
		||||
                    "face": "(face[0], face[1], face[2], face[3], face[5], False)",
 | 
			
		||||
                    "is_sink": "is_sink",
 | 
			
		||||
                    "is_ribbon": "False"
 | 
			
		||||
                },
 | 
			
		||||
                "transform": "move(0, 5, 0) @ scale(1, -1, 1)"
 | 
			
		||||
            }
 | 
			
		||||
        ]
 | 
			
		||||
    },
 | 
			
		||||
    {
 | 
			
		||||
        "identifier": "floor_normal_straight",
 | 
			
		||||
        "showcase": {
 | 
			
		||||
@ -95,21 +43,98 @@
 | 
			
		||||
                "data": "face_"
 | 
			
		||||
            }
 | 
			
		||||
        ],
 | 
			
		||||
        "skip": "False",
 | 
			
		||||
        "vars": [],
 | 
			
		||||
        "vertices": [],
 | 
			
		||||
        "faces": [],
 | 
			
		||||
        "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_straight",
 | 
			
		||||
                "skip": "False",
 | 
			
		||||
                "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",
 | 
			
		||||
                    "face": "face",
 | 
			
		||||
                    "is_sink": "False"
 | 
			
		||||
                    "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)"
 | 
			
		||||
            }
 | 
			
		||||
        ]
 | 
			
		||||
    },
 | 
			
		||||
@ -157,21 +182,140 @@
 | 
			
		||||
                "data": "face_"
 | 
			
		||||
            }
 | 
			
		||||
        ],
 | 
			
		||||
        "skip": "False",
 | 
			
		||||
        "vars": [],
 | 
			
		||||
        "vertices": [],
 | 
			
		||||
        "faces": [],
 | 
			
		||||
        "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_straight",
 | 
			
		||||
                "skip": "False",
 | 
			
		||||
                "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",
 | 
			
		||||
                    "face": "face",
 | 
			
		||||
                    "is_sink": "True"
 | 
			
		||||
                    "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)"
 | 
			
		||||
            }
 | 
			
		||||
        ]
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
@ -22,28 +22,53 @@
 | 
			
		||||
        "faces": [],
 | 
			
		||||
        "instances": [
 | 
			
		||||
            {
 | 
			
		||||
                "identifier": "raw_floor_corner",
 | 
			
		||||
                "identifier": "cv_triangle_side",
 | 
			
		||||
                "skip": "False",
 | 
			
		||||
                "params": {
 | 
			
		||||
                    "height": "height",
 | 
			
		||||
                    "face": "(face[0], face[1], face[2], face[3], face[4], False)",
 | 
			
		||||
                    "is_sink": "is_sink",
 | 
			
		||||
                    "is_inner": "False",
 | 
			
		||||
                    "is_ribbon": "False"
 | 
			
		||||
                    "face": "(face[0], False, False, False, face[4], None)",
 | 
			
		||||
                    "is_sink": "is_sink"
 | 
			
		||||
                },
 | 
			
		||||
                "transform": "ident()"
 | 
			
		||||
            },
 | 
			
		||||
            {
 | 
			
		||||
                "identifier": "raw_floor_corner",
 | 
			
		||||
                "identifier": "cv_triangle_center",
 | 
			
		||||
                "skip": "False",
 | 
			
		||||
                "params": {
 | 
			
		||||
                    "height": "height",
 | 
			
		||||
                    "face": "(face[0], face[1], face[5], False, face[2], face[3])",
 | 
			
		||||
                    "is_sink": "is_sink",
 | 
			
		||||
                    "is_inner": "False",
 | 
			
		||||
                    "is_ribbon": "False"
 | 
			
		||||
                    "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": {
 | 
			
		||||
                    "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": {
 | 
			
		||||
                    "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)"
 | 
			
		||||
            }
 | 
			
		||||
        ]
 | 
			
		||||
    },
 | 
			
		||||
 | 
			
		||||
@ -177,7 +177,7 @@
 | 
			
		||||
                "transform": "move(5, 5, 0) @ rot(0, 0, 180)"
 | 
			
		||||
            },
 | 
			
		||||
            {
 | 
			
		||||
                "identifier": "floor_bottom",
 | 
			
		||||
                "identifier": "floor_rectangle_bottom",
 | 
			
		||||
                "skip": "not face[1]",
 | 
			
		||||
                "params": {
 | 
			
		||||
                    "length": "5",
 | 
			
		||||
@ -257,7 +257,7 @@
 | 
			
		||||
                "transform": "move(2.5, 5, 0) @ rot(0, 0, 180)"
 | 
			
		||||
            },
 | 
			
		||||
            {
 | 
			
		||||
                "identifier": "floor_bottom",
 | 
			
		||||
                "identifier": "floor_rectangle_bottom",
 | 
			
		||||
                "skip": "not face[1]",
 | 
			
		||||
                "params": {
 | 
			
		||||
                    "length": "2.5",
 | 
			
		||||
 | 
			
		||||
		Reference in New Issue
	
	Block a user