├── .gitignore ├── DEMO_PROJECT ├── DEMO │ ├── Demo_Minimal_3x3.tscn │ └── res_2D │ │ ├── Ground.agrid │ │ ├── Ground.meshlib │ │ ├── Ground_MeshLibrary.tscn │ │ ├── dungeon_tiles_ground.png │ │ └── dungeon_tiles_ground.png.import ├── addons │ └── AutoGrid │ │ ├── AutoGrid_Bitmask.tscn │ │ ├── HELP.pdf │ │ ├── activate_button.tscn │ │ ├── bitmask_box.gd │ │ ├── bitmask_holder.gd │ │ ├── core.gd │ │ ├── edit_button.gd │ │ ├── gridmap_button.gd │ │ ├── gridmap_button.tscn │ │ ├── plugin.cfg │ │ └── res │ │ ├── Bitmask_Material.tres │ │ ├── ErrorSign.svg │ │ ├── ErrorSign.svg.import │ │ ├── GridEdit.svg │ │ └── GridEdit.svg.import ├── default_env.tres ├── icon.png ├── icon.png.import └── project.godot ├── LICENSE ├── README.md ├── addons └── AutoGrid │ ├── AutoGrid_Bitmask.tscn │ ├── HELP.pdf │ ├── activate_button.tscn │ ├── bitmask_box.gd │ ├── bitmask_holder.gd │ ├── core.gd │ ├── edit_button.gd │ ├── gridmap_button.gd │ ├── gridmap_button.tscn │ ├── plugin.cfg │ └── res │ ├── Bitmask_Material.tres │ ├── ErrorSign.svg │ ├── ErrorSign.svg.import │ ├── GridEdit.svg │ └── GridEdit.svg.import └── images ├── AutoGrid.png ├── Bitmask.png ├── Edit_Button_Options.png ├── Performance_Mode.png ├── dock_panel.png ├── enable_plugin.GIF └── panel_inside.png /.gitignore: -------------------------------------------------------------------------------- 1 | # Godot 4+ specific ignores 2 | .godot/ 3 | 4 | # Godot-specific ignores 5 | .import/ 6 | export.cfg 7 | export_presets.cfg 8 | 9 | # Mono-specific ignores 10 | .mono/ 11 | data_*/ 12 | 13 | # Specific ignores 14 | HELP.odt 15 | HELP.pdf -------------------------------------------------------------------------------- /DEMO_PROJECT/DEMO/Demo_Minimal_3x3.tscn: -------------------------------------------------------------------------------- 1 | [gd_scene load_steps=2 format=3 uid="uid://dw8b83gerrx8u"] 2 | 3 | [ext_resource type="MeshLibrary" path="res://DEMO/res_2D/Ground.meshlib" id="1"] 4 | 5 | [node name="Node3D" type="Node3D"] 6 | 7 | [node name="GridMap" type="GridMap" parent="."] 8 | mesh_library = ExtResource("1") 9 | cell_center_y = false 10 | -------------------------------------------------------------------------------- /DEMO_PROJECT/DEMO/res_2D/Ground.agrid: -------------------------------------------------------------------------------- 1 | {"3584":"Left_Up_Corner","101888":"Up","98816":"Right_Up_Corner","15872":"Left","130560":"Middle","123392":"Right","14336":"Left_Lower_Corner","63488":"Lower","57344":"Right_Lower_Corner","512":"VLine_Up","8704":"VLine","8192":"VLine_Lower","2048":"HLine_Left","34816":"HLine","32768":"HLine_Right","0":"Single","2560":"Left_Up_Corner_DR","100864":"Up_DR","36352":"Up_DL","33280":"Right_Up_Corner_DL","14848":"Left_DR","129536":"Middle_DR","65024":"Middle_DL","57856":"Right_DL","11776":"Left_UR","126464":"Middle_UR","114176":"Middle_UL","107008":"Right_UL","10240":"Right_Down_Corner_UR","59392":"Down_UR","47104":"Down_UL","40960":"Right_Down_Corner_UL","60928":"LD_RU","113152":"LU_RD","10752":"Left_RB","125440":"RB","48640":"LB","41472":"Right_LB","35328":"Top_DB","64000":"DB","110080":"UB","43008":"Down_UB","44544":"LB_RU","109056":"RB_LU","47616":"LB_RD","59904":"RB_LD","43520":"LB_RB"} -------------------------------------------------------------------------------- /DEMO_PROJECT/DEMO/res_2D/Ground.meshlib: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/XLIVE99/AutoGrid/36223c77efc87bff3b02159eb66410fe5cc9cab5/DEMO_PROJECT/DEMO/res_2D/Ground.meshlib -------------------------------------------------------------------------------- /DEMO_PROJECT/DEMO/res_2D/Ground_MeshLibrary.tscn: -------------------------------------------------------------------------------- 1 | [gd_scene load_steps=106 format=3 uid="uid://ch68knt8r5mqi"] 2 | 3 | [ext_resource type="Texture2D" uid="uid://bogaysehmtnyx" path="res://DEMO/res_2D/dungeon_tiles_ground.png" id="1_m67j4"] 4 | [ext_resource type="PackedScene" uid="uid://d0erc1sce6n6o" path="res://addons/AutoGrid/AutoGrid_Bitmask.tscn" id="3"] 5 | 6 | [sub_resource type="QuadMesh" id="1"] 7 | resource_name = "res://DEMO/res_2D/Ground.agrid" 8 | size = Vector2(2, 2) 9 | 10 | [sub_resource type="StandardMaterial3D" id="StandardMaterial3D_m5bry"] 11 | albedo_texture = ExtResource("1_m67j4") 12 | uv1_scale = Vector3(0.125, 0.125, 0.125) 13 | texture_filter = 0 14 | texture_repeat = false 15 | 16 | [sub_resource type="BoxShape3D" id="3"] 17 | size = Vector3(2, 2, 0.2) 18 | 19 | [sub_resource type="SphereMesh" id="4"] 20 | radial_segments = 8 21 | rings = 4 22 | 23 | [sub_resource type="StandardMaterial3D" id="StandardMaterial3D_8hatl"] 24 | resource_local_to_scene = true 25 | transparency = 1 26 | shading_mode = 2 27 | albedo_color = Color(1, 1, 1, 0.14902) 28 | 29 | [sub_resource type="StandardMaterial3D" id="StandardMaterial3D_pl48d"] 30 | albedo_texture = ExtResource("1_m67j4") 31 | uv1_scale = Vector3(0.125, 0.125, 0.125) 32 | uv1_offset = Vector3(0.125, 0, 0) 33 | texture_filter = 0 34 | texture_repeat = false 35 | 36 | [sub_resource type="StandardMaterial3D" id="StandardMaterial3D_ptfvc"] 37 | resource_local_to_scene = true 38 | transparency = 1 39 | shading_mode = 2 40 | albedo_color = Color(1, 1, 1, 0.14902) 41 | 42 | [sub_resource type="StandardMaterial3D" id="StandardMaterial3D_j8oh4"] 43 | albedo_texture = ExtResource("1_m67j4") 44 | uv1_scale = Vector3(0.125, 0.125, 0.125) 45 | uv1_offset = Vector3(0.25, 0, 0) 46 | texture_filter = 0 47 | texture_repeat = false 48 | 49 | [sub_resource type="StandardMaterial3D" id="StandardMaterial3D_awdfj"] 50 | resource_local_to_scene = true 51 | transparency = 1 52 | shading_mode = 2 53 | albedo_color = Color(1, 1, 1, 0.14902) 54 | 55 | [sub_resource type="StandardMaterial3D" id="StandardMaterial3D_4p2kq"] 56 | albedo_texture = ExtResource("1_m67j4") 57 | uv1_scale = Vector3(0.125, 0.125, 0.125) 58 | uv1_offset = Vector3(0, 0.125, 0) 59 | texture_filter = 0 60 | texture_repeat = false 61 | 62 | [sub_resource type="StandardMaterial3D" id="StandardMaterial3D_aedm7"] 63 | resource_local_to_scene = true 64 | transparency = 1 65 | shading_mode = 2 66 | albedo_color = Color(1, 1, 1, 0.14902) 67 | 68 | [sub_resource type="StandardMaterial3D" id="StandardMaterial3D_w1d11"] 69 | albedo_texture = ExtResource("1_m67j4") 70 | uv1_scale = Vector3(0.125, 0.125, 0.125) 71 | uv1_offset = Vector3(0.125, 0.125, 0) 72 | texture_filter = 0 73 | texture_repeat = false 74 | 75 | [sub_resource type="StandardMaterial3D" id="StandardMaterial3D_3ym1t"] 76 | resource_local_to_scene = true 77 | transparency = 1 78 | shading_mode = 2 79 | albedo_color = Color(1, 1, 1, 0.14902) 80 | 81 | [sub_resource type="StandardMaterial3D" id="StandardMaterial3D_rt31e"] 82 | albedo_texture = ExtResource("1_m67j4") 83 | uv1_scale = Vector3(0.125, 0.125, 0.125) 84 | uv1_offset = Vector3(0.25, 0.125, 0) 85 | texture_filter = 0 86 | texture_repeat = false 87 | 88 | [sub_resource type="StandardMaterial3D" id="StandardMaterial3D_5h857"] 89 | resource_local_to_scene = true 90 | transparency = 1 91 | shading_mode = 2 92 | albedo_color = Color(1, 1, 1, 0.14902) 93 | 94 | [sub_resource type="StandardMaterial3D" id="StandardMaterial3D_7hpcp"] 95 | albedo_texture = ExtResource("1_m67j4") 96 | uv1_scale = Vector3(0.125, 0.125, 0.125) 97 | uv1_offset = Vector3(0, 0.25, 0) 98 | texture_filter = 0 99 | texture_repeat = false 100 | 101 | [sub_resource type="StandardMaterial3D" id="StandardMaterial3D_h0buf"] 102 | resource_local_to_scene = true 103 | transparency = 1 104 | shading_mode = 2 105 | albedo_color = Color(1, 1, 1, 0.14902) 106 | 107 | [sub_resource type="StandardMaterial3D" id="StandardMaterial3D_6q7tn"] 108 | albedo_texture = ExtResource("1_m67j4") 109 | uv1_scale = Vector3(0.125, 0.125, 0.125) 110 | uv1_offset = Vector3(0.125, 0.25, 0) 111 | texture_filter = 0 112 | texture_repeat = false 113 | 114 | [sub_resource type="StandardMaterial3D" id="StandardMaterial3D_x80tw"] 115 | resource_local_to_scene = true 116 | transparency = 1 117 | shading_mode = 2 118 | albedo_color = Color(1, 1, 1, 0.14902) 119 | 120 | [sub_resource type="StandardMaterial3D" id="StandardMaterial3D_undf6"] 121 | albedo_texture = ExtResource("1_m67j4") 122 | uv1_scale = Vector3(0.125, 0.125, 0.125) 123 | uv1_offset = Vector3(0.25, 0.25, 0) 124 | texture_filter = 0 125 | texture_repeat = false 126 | 127 | [sub_resource type="StandardMaterial3D" id="StandardMaterial3D_ylt1k"] 128 | resource_local_to_scene = true 129 | transparency = 1 130 | shading_mode = 2 131 | albedo_color = Color(1, 1, 1, 0.14902) 132 | 133 | [sub_resource type="StandardMaterial3D" id="StandardMaterial3D_datm8"] 134 | albedo_texture = ExtResource("1_m67j4") 135 | uv1_scale = Vector3(0.125, 0.125, 0.125) 136 | uv1_offset = Vector3(0.375, 0, 0) 137 | texture_filter = 0 138 | texture_repeat = false 139 | 140 | [sub_resource type="StandardMaterial3D" id="StandardMaterial3D_1iv7t"] 141 | resource_local_to_scene = true 142 | transparency = 1 143 | shading_mode = 2 144 | albedo_color = Color(1, 1, 1, 0.14902) 145 | 146 | [sub_resource type="StandardMaterial3D" id="StandardMaterial3D_784vo"] 147 | albedo_texture = ExtResource("1_m67j4") 148 | uv1_scale = Vector3(0.125, 0.125, 0.125) 149 | uv1_offset = Vector3(0.375, 0.125, 0) 150 | texture_filter = 0 151 | texture_repeat = false 152 | 153 | [sub_resource type="StandardMaterial3D" id="StandardMaterial3D_8fsvj"] 154 | resource_local_to_scene = true 155 | transparency = 1 156 | shading_mode = 2 157 | albedo_color = Color(1, 1, 1, 0.14902) 158 | 159 | [sub_resource type="StandardMaterial3D" id="StandardMaterial3D_1fgil"] 160 | albedo_texture = ExtResource("1_m67j4") 161 | uv1_scale = Vector3(0.125, 0.125, 0.125) 162 | uv1_offset = Vector3(0.375, 0.25, 0) 163 | texture_filter = 0 164 | texture_repeat = false 165 | 166 | [sub_resource type="StandardMaterial3D" id="StandardMaterial3D_ghsky"] 167 | resource_local_to_scene = true 168 | transparency = 1 169 | shading_mode = 2 170 | albedo_color = Color(1, 1, 1, 0.14902) 171 | 172 | [sub_resource type="StandardMaterial3D" id="StandardMaterial3D_y4hq1"] 173 | albedo_texture = ExtResource("1_m67j4") 174 | uv1_scale = Vector3(0.125, 0.125, 0.125) 175 | uv1_offset = Vector3(0, 0.375, 0) 176 | texture_filter = 0 177 | texture_repeat = false 178 | 179 | [sub_resource type="StandardMaterial3D" id="StandardMaterial3D_1ptao"] 180 | resource_local_to_scene = true 181 | transparency = 1 182 | shading_mode = 2 183 | albedo_color = Color(1, 1, 1, 0.14902) 184 | 185 | [sub_resource type="StandardMaterial3D" id="StandardMaterial3D_ej15h"] 186 | albedo_texture = ExtResource("1_m67j4") 187 | uv1_scale = Vector3(0.125, 0.125, 0.125) 188 | uv1_offset = Vector3(0.125, 0.375, 0) 189 | texture_filter = 0 190 | texture_repeat = false 191 | 192 | [sub_resource type="StandardMaterial3D" id="StandardMaterial3D_j0pvy"] 193 | resource_local_to_scene = true 194 | transparency = 1 195 | shading_mode = 2 196 | albedo_color = Color(1, 1, 1, 0.14902) 197 | 198 | [sub_resource type="StandardMaterial3D" id="StandardMaterial3D_c4ycp"] 199 | albedo_texture = ExtResource("1_m67j4") 200 | uv1_scale = Vector3(0.125, 0.125, 0.125) 201 | uv1_offset = Vector3(0.25, 0.375, 0) 202 | texture_filter = 0 203 | texture_repeat = false 204 | 205 | [sub_resource type="StandardMaterial3D" id="StandardMaterial3D_sehjt"] 206 | resource_local_to_scene = true 207 | transparency = 1 208 | shading_mode = 2 209 | albedo_color = Color(1, 1, 1, 0.14902) 210 | 211 | [sub_resource type="StandardMaterial3D" id="StandardMaterial3D_5flqk"] 212 | albedo_texture = ExtResource("1_m67j4") 213 | uv1_scale = Vector3(0.125, 0.125, 0.125) 214 | uv1_offset = Vector3(0.375, 0.375, 0) 215 | texture_filter = 0 216 | texture_repeat = false 217 | 218 | [sub_resource type="StandardMaterial3D" id="StandardMaterial3D_uedwo"] 219 | resource_local_to_scene = true 220 | transparency = 1 221 | shading_mode = 2 222 | albedo_color = Color(1, 1, 1, 0.14902) 223 | 224 | [sub_resource type="StandardMaterial3D" id="StandardMaterial3D_erhte"] 225 | albedo_texture = ExtResource("1_m67j4") 226 | uv1_scale = Vector3(0.125, 0.125, 0.125) 227 | uv1_offset = Vector3(0.5, 0, 0) 228 | texture_filter = 0 229 | texture_repeat = false 230 | 231 | [sub_resource type="StandardMaterial3D" id="StandardMaterial3D_mtf7s"] 232 | resource_local_to_scene = true 233 | transparency = 1 234 | shading_mode = 2 235 | albedo_color = Color(1, 1, 1, 0.14902) 236 | 237 | [sub_resource type="StandardMaterial3D" id="StandardMaterial3D_fhjye"] 238 | albedo_texture = ExtResource("1_m67j4") 239 | uv1_scale = Vector3(0.125, 0.125, 0.125) 240 | uv1_offset = Vector3(0.625, 0, 0) 241 | texture_filter = 0 242 | texture_repeat = false 243 | 244 | [sub_resource type="StandardMaterial3D" id="StandardMaterial3D_xfvli"] 245 | resource_local_to_scene = true 246 | transparency = 1 247 | shading_mode = 2 248 | albedo_color = Color(1, 1, 1, 0.14902) 249 | 250 | [sub_resource type="StandardMaterial3D" id="StandardMaterial3D_ffbt0"] 251 | albedo_texture = ExtResource("1_m67j4") 252 | uv1_scale = Vector3(0.125, 0.125, 0.125) 253 | uv1_offset = Vector3(0.75, 0, 0) 254 | texture_filter = 0 255 | texture_repeat = false 256 | 257 | [sub_resource type="StandardMaterial3D" id="StandardMaterial3D_wav27"] 258 | resource_local_to_scene = true 259 | transparency = 1 260 | shading_mode = 2 261 | albedo_color = Color(1, 1, 1, 0.14902) 262 | 263 | [sub_resource type="StandardMaterial3D" id="StandardMaterial3D_wuo70"] 264 | albedo_texture = ExtResource("1_m67j4") 265 | uv1_scale = Vector3(0.125, 0.125, 0.125) 266 | uv1_offset = Vector3(0.875, 0, 0) 267 | texture_filter = 0 268 | texture_repeat = false 269 | 270 | [sub_resource type="StandardMaterial3D" id="StandardMaterial3D_i8pqn"] 271 | resource_local_to_scene = true 272 | transparency = 1 273 | shading_mode = 2 274 | albedo_color = Color(1, 1, 1, 0.14902) 275 | 276 | [sub_resource type="StandardMaterial3D" id="StandardMaterial3D_hxu3q"] 277 | albedo_texture = ExtResource("1_m67j4") 278 | uv1_scale = Vector3(0.125, 0.125, 0.125) 279 | uv1_offset = Vector3(0.5, 0.125, 0) 280 | texture_filter = 0 281 | texture_repeat = false 282 | 283 | [sub_resource type="StandardMaterial3D" id="StandardMaterial3D_mayxd"] 284 | resource_local_to_scene = true 285 | transparency = 1 286 | shading_mode = 2 287 | albedo_color = Color(1, 1, 1, 0.14902) 288 | 289 | [sub_resource type="StandardMaterial3D" id="StandardMaterial3D_n2xfn"] 290 | albedo_texture = ExtResource("1_m67j4") 291 | uv1_scale = Vector3(0.125, 0.125, 0.125) 292 | uv1_offset = Vector3(0.625, 0.125, 0) 293 | texture_filter = 0 294 | texture_repeat = false 295 | 296 | [sub_resource type="StandardMaterial3D" id="StandardMaterial3D_ultoy"] 297 | resource_local_to_scene = true 298 | transparency = 1 299 | shading_mode = 2 300 | albedo_color = Color(1, 1, 1, 0.14902) 301 | 302 | [sub_resource type="StandardMaterial3D" id="StandardMaterial3D_8nxkw"] 303 | albedo_texture = ExtResource("1_m67j4") 304 | uv1_scale = Vector3(0.125, 0.125, 0.125) 305 | uv1_offset = Vector3(0.75, 0.125, 0) 306 | texture_filter = 0 307 | texture_repeat = false 308 | 309 | [sub_resource type="StandardMaterial3D" id="StandardMaterial3D_x4rim"] 310 | resource_local_to_scene = true 311 | transparency = 1 312 | shading_mode = 2 313 | albedo_color = Color(1, 1, 1, 0.14902) 314 | 315 | [sub_resource type="StandardMaterial3D" id="StandardMaterial3D_m4jpk"] 316 | albedo_texture = ExtResource("1_m67j4") 317 | uv1_scale = Vector3(0.125, 0.125, 0.125) 318 | uv1_offset = Vector3(0.875, 0.125, 0) 319 | texture_filter = 0 320 | texture_repeat = false 321 | 322 | [sub_resource type="StandardMaterial3D" id="StandardMaterial3D_genfy"] 323 | resource_local_to_scene = true 324 | transparency = 1 325 | shading_mode = 2 326 | albedo_color = Color(1, 1, 1, 0.14902) 327 | 328 | [sub_resource type="StandardMaterial3D" id="StandardMaterial3D_b85f8"] 329 | albedo_texture = ExtResource("1_m67j4") 330 | uv1_scale = Vector3(0.125, 0.125, 0.125) 331 | uv1_offset = Vector3(0.5, 0.25, 0) 332 | texture_filter = 0 333 | texture_repeat = false 334 | 335 | [sub_resource type="StandardMaterial3D" id="StandardMaterial3D_vdyiv"] 336 | resource_local_to_scene = true 337 | transparency = 1 338 | shading_mode = 2 339 | albedo_color = Color(1, 1, 1, 0.14902) 340 | 341 | [sub_resource type="StandardMaterial3D" id="StandardMaterial3D_cdcnu"] 342 | albedo_texture = ExtResource("1_m67j4") 343 | uv1_scale = Vector3(0.125, 0.125, 0.125) 344 | uv1_offset = Vector3(0.625, 0.25, 0) 345 | texture_filter = 0 346 | texture_repeat = false 347 | 348 | [sub_resource type="StandardMaterial3D" id="StandardMaterial3D_8gixc"] 349 | resource_local_to_scene = true 350 | transparency = 1 351 | shading_mode = 2 352 | albedo_color = Color(1, 1, 1, 0.14902) 353 | 354 | [sub_resource type="StandardMaterial3D" id="StandardMaterial3D_70h6g"] 355 | albedo_texture = ExtResource("1_m67j4") 356 | uv1_scale = Vector3(0.125, 0.125, 0.125) 357 | uv1_offset = Vector3(0.75, 0.25, 0) 358 | texture_filter = 0 359 | texture_repeat = false 360 | 361 | [sub_resource type="StandardMaterial3D" id="StandardMaterial3D_bn7uc"] 362 | resource_local_to_scene = true 363 | transparency = 1 364 | shading_mode = 2 365 | albedo_color = Color(1, 1, 1, 0.14902) 366 | 367 | [sub_resource type="StandardMaterial3D" id="StandardMaterial3D_encr8"] 368 | albedo_texture = ExtResource("1_m67j4") 369 | uv1_scale = Vector3(0.125, 0.125, 0.125) 370 | uv1_offset = Vector3(0.875, 0.25, 0) 371 | texture_filter = 0 372 | texture_repeat = false 373 | 374 | [sub_resource type="StandardMaterial3D" id="StandardMaterial3D_u4gf7"] 375 | resource_local_to_scene = true 376 | transparency = 1 377 | shading_mode = 2 378 | albedo_color = Color(1, 1, 1, 0.14902) 379 | 380 | [sub_resource type="StandardMaterial3D" id="StandardMaterial3D_iycuf"] 381 | albedo_texture = ExtResource("1_m67j4") 382 | uv1_scale = Vector3(0.125, 0.125, 0.125) 383 | uv1_offset = Vector3(0.5, 0.375, 0) 384 | texture_filter = 0 385 | texture_repeat = false 386 | 387 | [sub_resource type="StandardMaterial3D" id="StandardMaterial3D_utf2k"] 388 | resource_local_to_scene = true 389 | transparency = 1 390 | shading_mode = 2 391 | albedo_color = Color(1, 1, 1, 0.14902) 392 | 393 | [sub_resource type="StandardMaterial3D" id="StandardMaterial3D_hws0l"] 394 | albedo_texture = ExtResource("1_m67j4") 395 | uv1_scale = Vector3(0.125, 0.125, 0.125) 396 | uv1_offset = Vector3(0.625, 0.375, 0) 397 | texture_filter = 0 398 | texture_repeat = false 399 | 400 | [sub_resource type="StandardMaterial3D" id="StandardMaterial3D_jhke3"] 401 | resource_local_to_scene = true 402 | transparency = 1 403 | shading_mode = 2 404 | albedo_color = Color(1, 1, 1, 0.14902) 405 | 406 | [sub_resource type="StandardMaterial3D" id="StandardMaterial3D_wsvel"] 407 | albedo_texture = ExtResource("1_m67j4") 408 | uv1_scale = Vector3(0.125, 0.125, 0.125) 409 | uv1_offset = Vector3(0.75, 0.375, 0) 410 | texture_filter = 0 411 | texture_repeat = false 412 | 413 | [sub_resource type="StandardMaterial3D" id="StandardMaterial3D_yaadq"] 414 | resource_local_to_scene = true 415 | transparency = 1 416 | shading_mode = 2 417 | albedo_color = Color(1, 1, 1, 0.14902) 418 | 419 | [sub_resource type="StandardMaterial3D" id="StandardMaterial3D_f4x7q"] 420 | albedo_texture = ExtResource("1_m67j4") 421 | uv1_scale = Vector3(0.125, 0.125, 0.125) 422 | uv1_offset = Vector3(0.875, 0.375, 0) 423 | texture_filter = 0 424 | texture_repeat = false 425 | 426 | [sub_resource type="StandardMaterial3D" id="StandardMaterial3D_v3e7a"] 427 | resource_local_to_scene = true 428 | transparency = 1 429 | shading_mode = 2 430 | albedo_color = Color(1, 1, 1, 0.14902) 431 | 432 | [sub_resource type="StandardMaterial3D" id="StandardMaterial3D_2tfam"] 433 | albedo_texture = ExtResource("1_m67j4") 434 | uv1_scale = Vector3(0.125, 0.125, 0.125) 435 | uv1_offset = Vector3(0, 0.5, 0) 436 | texture_filter = 0 437 | texture_repeat = false 438 | 439 | [sub_resource type="StandardMaterial3D" id="StandardMaterial3D_swff7"] 440 | albedo_texture = ExtResource("1_m67j4") 441 | uv1_scale = Vector3(0.125, 0.125, 0.125) 442 | uv1_offset = Vector3(0, 0.625, 0) 443 | texture_filter = 0 444 | texture_repeat = false 445 | 446 | [sub_resource type="StandardMaterial3D" id="StandardMaterial3D_ixcvb"] 447 | albedo_texture = ExtResource("1_m67j4") 448 | uv1_scale = Vector3(0.125, 0.125, 0.125) 449 | uv1_offset = Vector3(0.125, 0.625, 0) 450 | texture_filter = 0 451 | texture_repeat = false 452 | 453 | [sub_resource type="StandardMaterial3D" id="StandardMaterial3D_jbi8u"] 454 | resource_local_to_scene = true 455 | transparency = 1 456 | shading_mode = 2 457 | albedo_color = Color(1, 1, 1, 0.14902) 458 | 459 | [sub_resource type="StandardMaterial3D" id="StandardMaterial3D_o5602"] 460 | albedo_texture = ExtResource("1_m67j4") 461 | uv1_scale = Vector3(0.125, 0.125, 0.125) 462 | uv1_offset = Vector3(0.25, 0.625, 0) 463 | texture_filter = 0 464 | texture_repeat = false 465 | 466 | [sub_resource type="StandardMaterial3D" id="StandardMaterial3D_omms1"] 467 | resource_local_to_scene = true 468 | transparency = 1 469 | shading_mode = 2 470 | albedo_color = Color(1, 1, 1, 0.14902) 471 | 472 | [sub_resource type="StandardMaterial3D" id="StandardMaterial3D_hmwrp"] 473 | transparency = 1 474 | albedo_texture = ExtResource("1_m67j4") 475 | uv1_scale = Vector3(0.125, 0.125, 0.125) 476 | uv1_offset = Vector3(0.125, 0.5, 0) 477 | texture_filter = 0 478 | texture_repeat = false 479 | 480 | [sub_resource type="StandardMaterial3D" id="StandardMaterial3D_3llda"] 481 | albedo_texture = ExtResource("1_m67j4") 482 | uv1_scale = Vector3(0.125, 0.125, 0.125) 483 | uv1_offset = Vector3(0.25, 0.5, 0) 484 | texture_filter = 0 485 | texture_repeat = false 486 | 487 | [sub_resource type="StandardMaterial3D" id="StandardMaterial3D_3qxof"] 488 | albedo_texture = ExtResource("1_m67j4") 489 | uv1_scale = Vector3(0.125, 0.125, 0.125) 490 | uv1_offset = Vector3(0.375, 0.5, 0) 491 | texture_filter = 0 492 | texture_repeat = false 493 | 494 | [sub_resource type="StandardMaterial3D" id="StandardMaterial3D_3wsq3"] 495 | transparency = 1 496 | albedo_texture = ExtResource("1_m67j4") 497 | uv1_scale = Vector3(0.125, 0.125, 0.125) 498 | uv1_offset = Vector3(0.375, 0.625, 0) 499 | texture_filter = 0 500 | texture_repeat = false 501 | 502 | [sub_resource type="StandardMaterial3D" id="StandardMaterial3D_beidl"] 503 | albedo_texture = ExtResource("1_m67j4") 504 | uv1_scale = Vector3(0.125, 0.125, 0.125) 505 | uv1_offset = Vector3(0.5, 0.5, 0) 506 | texture_filter = 0 507 | texture_repeat = false 508 | 509 | [sub_resource type="StandardMaterial3D" id="StandardMaterial3D_1ueyq"] 510 | resource_local_to_scene = true 511 | transparency = 1 512 | shading_mode = 2 513 | albedo_color = Color(1, 1, 1, 0.14902) 514 | 515 | [sub_resource type="StandardMaterial3D" id="StandardMaterial3D_nx42v"] 516 | albedo_texture = ExtResource("1_m67j4") 517 | uv1_scale = Vector3(0.125, 0.125, 0.125) 518 | uv1_offset = Vector3(0.625, 0.5, 0) 519 | texture_filter = 0 520 | texture_repeat = false 521 | 522 | [sub_resource type="StandardMaterial3D" id="StandardMaterial3D_rivhf"] 523 | resource_local_to_scene = true 524 | transparency = 1 525 | shading_mode = 2 526 | albedo_color = Color(1, 1, 1, 0.14902) 527 | 528 | [sub_resource type="StandardMaterial3D" id="StandardMaterial3D_wqbox"] 529 | albedo_texture = ExtResource("1_m67j4") 530 | uv1_scale = Vector3(0.125, 0.125, 0.125) 531 | uv1_offset = Vector3(0.75, 0.5, 0) 532 | texture_filter = 0 533 | texture_repeat = false 534 | 535 | [sub_resource type="StandardMaterial3D" id="StandardMaterial3D_8x34s"] 536 | resource_local_to_scene = true 537 | transparency = 1 538 | shading_mode = 2 539 | albedo_color = Color(1, 1, 1, 0.14902) 540 | 541 | [sub_resource type="StandardMaterial3D" id="StandardMaterial3D_18w3i"] 542 | albedo_texture = ExtResource("1_m67j4") 543 | uv1_scale = Vector3(0.125, 0.125, 0.125) 544 | uv1_offset = Vector3(0.875, 0.5, 0) 545 | texture_filter = 0 546 | texture_repeat = false 547 | 548 | [sub_resource type="StandardMaterial3D" id="StandardMaterial3D_dbvyn"] 549 | resource_local_to_scene = true 550 | transparency = 1 551 | shading_mode = 2 552 | albedo_color = Color(1, 1, 1, 0.14902) 553 | 554 | [sub_resource type="StandardMaterial3D" id="StandardMaterial3D_fulvo"] 555 | albedo_texture = ExtResource("1_m67j4") 556 | uv1_scale = Vector3(0.125, 0.125, 0.125) 557 | uv1_offset = Vector3(0.5, 0.625, 0) 558 | texture_filter = 0 559 | texture_repeat = false 560 | 561 | [sub_resource type="StandardMaterial3D" id="StandardMaterial3D_42xme"] 562 | resource_local_to_scene = true 563 | transparency = 1 564 | shading_mode = 2 565 | albedo_color = Color(1, 1, 1, 0.14902) 566 | 567 | [sub_resource type="StandardMaterial3D" id="StandardMaterial3D_au2qw"] 568 | albedo_texture = ExtResource("1_m67j4") 569 | uv1_scale = Vector3(0.125, 0.125, 0.125) 570 | uv1_offset = Vector3(0.625, 0.625, 0) 571 | texture_filter = 0 572 | texture_repeat = false 573 | 574 | [sub_resource type="StandardMaterial3D" id="StandardMaterial3D_02gaq"] 575 | resource_local_to_scene = true 576 | transparency = 1 577 | shading_mode = 2 578 | albedo_color = Color(1, 1, 1, 0.14902) 579 | 580 | [sub_resource type="StandardMaterial3D" id="StandardMaterial3D_th7ie"] 581 | albedo_texture = ExtResource("1_m67j4") 582 | uv1_scale = Vector3(0.125, 0.125, 0.125) 583 | uv1_offset = Vector3(0.75, 0.625, 0) 584 | texture_filter = 0 585 | texture_repeat = false 586 | 587 | [sub_resource type="StandardMaterial3D" id="StandardMaterial3D_a1d3o"] 588 | resource_local_to_scene = true 589 | transparency = 1 590 | shading_mode = 2 591 | albedo_color = Color(1, 1, 1, 0.14902) 592 | 593 | [sub_resource type="StandardMaterial3D" id="StandardMaterial3D_c8wes"] 594 | albedo_texture = ExtResource("1_m67j4") 595 | uv1_scale = Vector3(0.125, 0.125, 0.125) 596 | uv1_offset = Vector3(0.875, 0.625, 0) 597 | texture_filter = 0 598 | texture_repeat = false 599 | 600 | [sub_resource type="StandardMaterial3D" id="StandardMaterial3D_ydidx"] 601 | resource_local_to_scene = true 602 | transparency = 1 603 | shading_mode = 2 604 | albedo_color = Color(1, 1, 1, 0.14902) 605 | 606 | [sub_resource type="StandardMaterial3D" id="StandardMaterial3D_f1odu"] 607 | albedo_texture = ExtResource("1_m67j4") 608 | uv1_scale = Vector3(0.125, 0.125, 0.125) 609 | uv1_offset = Vector3(0.5, 0.75, 0) 610 | texture_filter = 0 611 | texture_repeat = false 612 | 613 | [sub_resource type="StandardMaterial3D" id="StandardMaterial3D_ccbho"] 614 | resource_local_to_scene = true 615 | transparency = 1 616 | shading_mode = 2 617 | albedo_color = Color(1, 1, 1, 0.14902) 618 | 619 | [sub_resource type="StandardMaterial3D" id="StandardMaterial3D_lclru"] 620 | albedo_texture = ExtResource("1_m67j4") 621 | uv1_scale = Vector3(0.125, 0.125, 0.125) 622 | uv1_offset = Vector3(0.625, 0.75, 0) 623 | texture_filter = 0 624 | texture_repeat = false 625 | 626 | [sub_resource type="StandardMaterial3D" id="StandardMaterial3D_ifvds"] 627 | resource_local_to_scene = true 628 | transparency = 1 629 | shading_mode = 2 630 | albedo_color = Color(1, 1, 1, 0.14902) 631 | 632 | [sub_resource type="StandardMaterial3D" id="StandardMaterial3D_ghsn1"] 633 | albedo_texture = ExtResource("1_m67j4") 634 | uv1_scale = Vector3(0.125, 0.125, 0.125) 635 | uv1_offset = Vector3(0.75, 0.75, 0) 636 | texture_filter = 0 637 | texture_repeat = false 638 | 639 | [sub_resource type="StandardMaterial3D" id="StandardMaterial3D_7hnmo"] 640 | resource_local_to_scene = true 641 | transparency = 1 642 | shading_mode = 2 643 | albedo_color = Color(1, 1, 1, 0.14902) 644 | 645 | [sub_resource type="StandardMaterial3D" id="StandardMaterial3D_s2hek"] 646 | albedo_texture = ExtResource("1_m67j4") 647 | uv1_scale = Vector3(0.125, 0.125, 0.125) 648 | uv1_offset = Vector3(0.875, 0.75, 0) 649 | texture_filter = 0 650 | texture_repeat = false 651 | 652 | [sub_resource type="StandardMaterial3D" id="StandardMaterial3D_e58ig"] 653 | resource_local_to_scene = true 654 | transparency = 1 655 | shading_mode = 2 656 | albedo_color = Color(1, 1, 1, 0.14902) 657 | 658 | [sub_resource type="StandardMaterial3D" id="StandardMaterial3D_jrmt3"] 659 | albedo_texture = ExtResource("1_m67j4") 660 | uv1_scale = Vector3(0.125, 0.125, 0.125) 661 | uv1_offset = Vector3(0.875, 0.875, 0) 662 | texture_filter = 0 663 | texture_repeat = false 664 | 665 | [sub_resource type="StandardMaterial3D" id="StandardMaterial3D_bjhie"] 666 | resource_local_to_scene = true 667 | transparency = 1 668 | shading_mode = 2 669 | albedo_color = Color(1, 1, 1, 0.14902) 670 | 671 | [node name="Node3D" type="Node3D"] 672 | transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -1, 0, 0) 673 | 674 | [node name="Left_Up_Corner" type="MeshInstance3D" parent="."] 675 | transform = Transform3D(1, 0, 0, 0, -1.62921e-07, 1, 0, -1, -1.62921e-07, -17, 0, -12) 676 | mesh = SubResource("1") 677 | surface_material_override/0 = SubResource("StandardMaterial3D_m5bry") 678 | 679 | [node name="StaticBody3D" type="StaticBody3D" parent="Left_Up_Corner"] 680 | transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, -0.1) 681 | 682 | [node name="CollisionShape3D" type="CollisionShape3D" parent="Left_Up_Corner/StaticBody3D"] 683 | shape = SubResource("3") 684 | 685 | [node name="AutoGrid_Bitmask" parent="Left_Up_Corner" instance=ExtResource("3")] 686 | transform = Transform3D(1, 0, 0, 0, -1.62921e-07, -1, 0, 1, -1.62921e-07, 0, 0, 0) 687 | visible = false 688 | mesh = SubResource("4") 689 | surface_material_override/0 = SubResource("StandardMaterial3D_8hatl") 690 | 691 | [node name="Up" type="MeshInstance3D" parent="."] 692 | transform = Transform3D(1, 0, 0, 0, -1.62921e-07, 1, 0, -1, -1.62921e-07, -12, 0, -12) 693 | mesh = SubResource("1") 694 | surface_material_override/0 = SubResource("StandardMaterial3D_pl48d") 695 | 696 | [node name="StaticBody3D" type="StaticBody3D" parent="Up"] 697 | transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, -0.1) 698 | 699 | [node name="CollisionShape3D" type="CollisionShape3D" parent="Up/StaticBody3D"] 700 | shape = SubResource("3") 701 | 702 | [node name="AutoGrid_Bitmask" parent="Up" instance=ExtResource("3")] 703 | transform = Transform3D(1, 0, 0, 0, -1.62921e-07, -1, 0, 1, -1.62921e-07, 0, 0, 0) 704 | visible = false 705 | mesh = SubResource("4") 706 | surface_material_override/0 = SubResource("StandardMaterial3D_ptfvc") 707 | 708 | [node name="Right_Up_Corner" type="MeshInstance3D" parent="."] 709 | transform = Transform3D(1, 0, 0, 0, -1.62921e-07, 1, 0, -1, -1.62921e-07, -7, 0, -12) 710 | mesh = SubResource("1") 711 | surface_material_override/0 = SubResource("StandardMaterial3D_j8oh4") 712 | 713 | [node name="StaticBody3D" type="StaticBody3D" parent="Right_Up_Corner"] 714 | transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, -0.1) 715 | 716 | [node name="CollisionShape3D" type="CollisionShape3D" parent="Right_Up_Corner/StaticBody3D"] 717 | shape = SubResource("3") 718 | 719 | [node name="AutoGrid_Bitmask" parent="Right_Up_Corner" instance=ExtResource("3")] 720 | transform = Transform3D(1, 0, 0, 0, -1.62921e-07, -1, 0, 1, -1.62921e-07, 0, 0, 0) 721 | visible = false 722 | mesh = SubResource("4") 723 | surface_material_override/0 = SubResource("StandardMaterial3D_awdfj") 724 | 725 | [node name="Left" type="MeshInstance3D" parent="."] 726 | transform = Transform3D(1, 0, 0, 0, -1.62921e-07, 1, 0, -1, -1.62921e-07, -17, 0, -8) 727 | mesh = SubResource("1") 728 | surface_material_override/0 = SubResource("StandardMaterial3D_4p2kq") 729 | 730 | [node name="StaticBody3D" type="StaticBody3D" parent="Left"] 731 | transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, -0.1) 732 | 733 | [node name="CollisionShape3D" type="CollisionShape3D" parent="Left/StaticBody3D"] 734 | shape = SubResource("3") 735 | 736 | [node name="AutoGrid_Bitmask" parent="Left" instance=ExtResource("3")] 737 | transform = Transform3D(1, 0, 0, 0, -1.62921e-07, -1, 0, 1, -1.62921e-07, 0, 0, 0) 738 | visible = false 739 | mesh = SubResource("4") 740 | surface_material_override/0 = SubResource("StandardMaterial3D_aedm7") 741 | 742 | [node name="Middle" type="MeshInstance3D" parent="."] 743 | transform = Transform3D(1, 0, 0, 0, -1.62921e-07, 1, 0, -1, -1.62921e-07, -12, 0, -8) 744 | mesh = SubResource("1") 745 | surface_material_override/0 = SubResource("StandardMaterial3D_w1d11") 746 | 747 | [node name="StaticBody3D" type="StaticBody3D" parent="Middle"] 748 | transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, -0.1) 749 | 750 | [node name="CollisionShape3D" type="CollisionShape3D" parent="Middle/StaticBody3D"] 751 | shape = SubResource("3") 752 | 753 | [node name="AutoGrid_Bitmask" parent="Middle" instance=ExtResource("3")] 754 | transform = Transform3D(1, 0, 0, 0, -1.62921e-07, -1, 0, 1, -1.62921e-07, 0, 0, 0) 755 | visible = false 756 | mesh = SubResource("4") 757 | surface_material_override/0 = SubResource("StandardMaterial3D_3ym1t") 758 | 759 | [node name="Right" type="MeshInstance3D" parent="."] 760 | transform = Transform3D(1, 0, 0, 0, -1.62921e-07, 1, 0, -1, -1.62921e-07, -7, 0, -8) 761 | mesh = SubResource("1") 762 | surface_material_override/0 = SubResource("StandardMaterial3D_rt31e") 763 | 764 | [node name="StaticBody3D" type="StaticBody3D" parent="Right"] 765 | transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, -0.1) 766 | 767 | [node name="CollisionShape3D" type="CollisionShape3D" parent="Right/StaticBody3D"] 768 | shape = SubResource("3") 769 | 770 | [node name="AutoGrid_Bitmask" parent="Right" instance=ExtResource("3")] 771 | transform = Transform3D(1, 0, 0, 0, -1.62921e-07, -1, 0, 1, -1.62921e-07, 0, 0, 0) 772 | visible = false 773 | mesh = SubResource("4") 774 | surface_material_override/0 = SubResource("StandardMaterial3D_5h857") 775 | 776 | [node name="Left_Lower_Corner" type="MeshInstance3D" parent="."] 777 | transform = Transform3D(1, 0, 0, 0, -1.62921e-07, 1, 0, -1, -1.62921e-07, -17, 0, -4) 778 | mesh = SubResource("1") 779 | surface_material_override/0 = SubResource("StandardMaterial3D_7hpcp") 780 | 781 | [node name="StaticBody3D" type="StaticBody3D" parent="Left_Lower_Corner"] 782 | transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, -0.1) 783 | 784 | [node name="CollisionShape3D" type="CollisionShape3D" parent="Left_Lower_Corner/StaticBody3D"] 785 | shape = SubResource("3") 786 | 787 | [node name="AutoGrid_Bitmask" parent="Left_Lower_Corner" instance=ExtResource("3")] 788 | transform = Transform3D(1, 0, 0, 0, -1.62921e-07, -1, 0, 1, -1.62921e-07, 0, 0, 0) 789 | visible = false 790 | mesh = SubResource("4") 791 | surface_material_override/0 = SubResource("StandardMaterial3D_h0buf") 792 | 793 | [node name="Lower" type="MeshInstance3D" parent="."] 794 | transform = Transform3D(1, 0, 0, 0, -1.62921e-07, 1, 0, -1, -1.62921e-07, -12, 0, -4) 795 | mesh = SubResource("1") 796 | surface_material_override/0 = SubResource("StandardMaterial3D_6q7tn") 797 | 798 | [node name="StaticBody3D" type="StaticBody3D" parent="Lower"] 799 | transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, -0.1) 800 | 801 | [node name="CollisionShape3D" type="CollisionShape3D" parent="Lower/StaticBody3D"] 802 | shape = SubResource("3") 803 | 804 | [node name="AutoGrid_Bitmask" parent="Lower" instance=ExtResource("3")] 805 | transform = Transform3D(1, 0, 0, 0, -1.62921e-07, -1, 0, 1, -1.62921e-07, 0, 0, 0) 806 | visible = false 807 | mesh = SubResource("4") 808 | surface_material_override/0 = SubResource("StandardMaterial3D_x80tw") 809 | 810 | [node name="Right_Lower_Corner" type="MeshInstance3D" parent="."] 811 | transform = Transform3D(1, 0, 0, 0, -1.62921e-07, 1, 0, -1, -1.62921e-07, -7, 0, -4) 812 | mesh = SubResource("1") 813 | surface_material_override/0 = SubResource("StandardMaterial3D_undf6") 814 | 815 | [node name="StaticBody3D" type="StaticBody3D" parent="Right_Lower_Corner"] 816 | transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, -0.1) 817 | 818 | [node name="CollisionShape3D" type="CollisionShape3D" parent="Right_Lower_Corner/StaticBody3D"] 819 | shape = SubResource("3") 820 | 821 | [node name="AutoGrid_Bitmask" parent="Right_Lower_Corner" instance=ExtResource("3")] 822 | transform = Transform3D(1, 0, 0, 0, -1.62921e-07, -1, 0, 1, -1.62921e-07, 0, 0, 0) 823 | visible = false 824 | mesh = SubResource("4") 825 | surface_material_override/0 = SubResource("StandardMaterial3D_ylt1k") 826 | 827 | [node name="VLine_Up" type="MeshInstance3D" parent="."] 828 | transform = Transform3D(1, 0, 0, 0, -1.62921e-07, 1, 0, -1, -1.62921e-07, -2, 0, -12) 829 | mesh = SubResource("1") 830 | surface_material_override/0 = SubResource("StandardMaterial3D_datm8") 831 | 832 | [node name="StaticBody3D" type="StaticBody3D" parent="VLine_Up"] 833 | transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, -0.1) 834 | 835 | [node name="CollisionShape3D" type="CollisionShape3D" parent="VLine_Up/StaticBody3D"] 836 | shape = SubResource("3") 837 | 838 | [node name="AutoGrid_Bitmask" parent="VLine_Up" instance=ExtResource("3")] 839 | transform = Transform3D(1, 0, 0, 0, -1.62921e-07, -1, 0, 1, -1.62921e-07, 0, 0, 0) 840 | visible = false 841 | mesh = SubResource("4") 842 | surface_material_override/0 = SubResource("StandardMaterial3D_1iv7t") 843 | 844 | [node name="VLine" type="MeshInstance3D" parent="."] 845 | transform = Transform3D(1, 0, 0, 0, -1.62921e-07, 1, 0, -1, -1.62921e-07, -2, 0, -8) 846 | mesh = SubResource("1") 847 | surface_material_override/0 = SubResource("StandardMaterial3D_784vo") 848 | 849 | [node name="StaticBody3D" type="StaticBody3D" parent="VLine"] 850 | transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, -0.1) 851 | 852 | [node name="CollisionShape3D" type="CollisionShape3D" parent="VLine/StaticBody3D"] 853 | shape = SubResource("3") 854 | 855 | [node name="AutoGrid_Bitmask" parent="VLine" instance=ExtResource("3")] 856 | transform = Transform3D(1, 0, 0, 0, -1.62921e-07, -1, 0, 1, -1.62921e-07, 0, 0, 0) 857 | visible = false 858 | mesh = SubResource("4") 859 | surface_material_override/0 = SubResource("StandardMaterial3D_8fsvj") 860 | 861 | [node name="VLine_Lower" type="MeshInstance3D" parent="."] 862 | transform = Transform3D(1, 0, 0, 0, -1.62921e-07, 1, 0, -1, -1.62921e-07, -2, 0, -4) 863 | mesh = SubResource("1") 864 | surface_material_override/0 = SubResource("StandardMaterial3D_1fgil") 865 | 866 | [node name="StaticBody3D" type="StaticBody3D" parent="VLine_Lower"] 867 | transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, -0.1) 868 | 869 | [node name="CollisionShape3D" type="CollisionShape3D" parent="VLine_Lower/StaticBody3D"] 870 | shape = SubResource("3") 871 | 872 | [node name="AutoGrid_Bitmask" parent="VLine_Lower" instance=ExtResource("3")] 873 | transform = Transform3D(1, 0, 0, 0, -1.62921e-07, -1, 0, 1, -1.62921e-07, 0, 0, 0) 874 | visible = false 875 | mesh = SubResource("4") 876 | surface_material_override/0 = SubResource("StandardMaterial3D_ghsky") 877 | 878 | [node name="HLine_Left" type="MeshInstance3D" parent="."] 879 | transform = Transform3D(1, 0, 0, 0, -1.62921e-07, 1, 0, -1, -1.62921e-07, -17, 0, 0) 880 | mesh = SubResource("1") 881 | surface_material_override/0 = SubResource("StandardMaterial3D_y4hq1") 882 | 883 | [node name="StaticBody3D" type="StaticBody3D" parent="HLine_Left"] 884 | transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, -0.1) 885 | 886 | [node name="CollisionShape3D" type="CollisionShape3D" parent="HLine_Left/StaticBody3D"] 887 | shape = SubResource("3") 888 | 889 | [node name="AutoGrid_Bitmask" parent="HLine_Left" instance=ExtResource("3")] 890 | transform = Transform3D(1, 0, 0, 0, -1.62921e-07, -1, 0, 1, -1.62921e-07, 0, 0, 0) 891 | visible = false 892 | mesh = SubResource("4") 893 | surface_material_override/0 = SubResource("StandardMaterial3D_1ptao") 894 | 895 | [node name="HLine" type="MeshInstance3D" parent="."] 896 | transform = Transform3D(1, 0, 0, 0, -1.62921e-07, 1, 0, -1, -1.62921e-07, -12, 0, 0) 897 | mesh = SubResource("1") 898 | surface_material_override/0 = SubResource("StandardMaterial3D_ej15h") 899 | 900 | [node name="StaticBody3D" type="StaticBody3D" parent="HLine"] 901 | transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, -0.1) 902 | 903 | [node name="CollisionShape3D" type="CollisionShape3D" parent="HLine/StaticBody3D"] 904 | shape = SubResource("3") 905 | 906 | [node name="AutoGrid_Bitmask" parent="HLine" instance=ExtResource("3")] 907 | transform = Transform3D(1, 0, 0, 0, -1.62921e-07, -1, 0, 1, -1.62921e-07, 0, 0, 0) 908 | visible = false 909 | mesh = SubResource("4") 910 | surface_material_override/0 = SubResource("StandardMaterial3D_j0pvy") 911 | 912 | [node name="HLine_Right" type="MeshInstance3D" parent="."] 913 | transform = Transform3D(1, 0, 0, 0, -1.62921e-07, 1, 0, -1, -1.62921e-07, -7, 0, 0) 914 | mesh = SubResource("1") 915 | surface_material_override/0 = SubResource("StandardMaterial3D_c4ycp") 916 | 917 | [node name="StaticBody3D" type="StaticBody3D" parent="HLine_Right"] 918 | transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, -0.1) 919 | 920 | [node name="CollisionShape3D" type="CollisionShape3D" parent="HLine_Right/StaticBody3D"] 921 | shape = SubResource("3") 922 | 923 | [node name="AutoGrid_Bitmask" parent="HLine_Right" instance=ExtResource("3")] 924 | transform = Transform3D(1, 0, 0, 0, -1.62921e-07, -1, 0, 1, -1.62921e-07, 0, 0, 0) 925 | visible = false 926 | mesh = SubResource("4") 927 | surface_material_override/0 = SubResource("StandardMaterial3D_sehjt") 928 | 929 | [node name="Single" type="MeshInstance3D" parent="."] 930 | transform = Transform3D(1, 0, 0, 0, -1.62921e-07, 1, 0, -1, -1.62921e-07, -2, 0, 0) 931 | mesh = SubResource("1") 932 | surface_material_override/0 = SubResource("StandardMaterial3D_5flqk") 933 | 934 | [node name="StaticBody3D" type="StaticBody3D" parent="Single"] 935 | transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, -0.1) 936 | 937 | [node name="CollisionShape3D" type="CollisionShape3D" parent="Single/StaticBody3D"] 938 | shape = SubResource("3") 939 | 940 | [node name="AutoGrid_Bitmask" parent="Single" instance=ExtResource("3")] 941 | transform = Transform3D(1, 0, 0, 0, -1.62921e-07, -1, 0, 1, -1.62921e-07, 0, 0, 0) 942 | visible = false 943 | mesh = SubResource("4") 944 | surface_material_override/0 = SubResource("StandardMaterial3D_uedwo") 945 | 946 | [node name="Left_Up_Corner_DR" type="MeshInstance3D" parent="."] 947 | transform = Transform3D(1, 0, 0, 0, -1.62921e-07, 1, 0, -1, -1.62921e-07, 3, 0, -12) 948 | mesh = SubResource("1") 949 | surface_material_override/0 = SubResource("StandardMaterial3D_erhte") 950 | 951 | [node name="StaticBody3D" type="StaticBody3D" parent="Left_Up_Corner_DR"] 952 | transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, -0.1) 953 | 954 | [node name="CollisionShape3D" type="CollisionShape3D" parent="Left_Up_Corner_DR/StaticBody3D"] 955 | shape = SubResource("3") 956 | 957 | [node name="AutoGrid_Bitmask" parent="Left_Up_Corner_DR" instance=ExtResource("3")] 958 | transform = Transform3D(1, 0, 0, 0, -1.62921e-07, -1, 0, 1, -1.62921e-07, 0, 0, 0) 959 | visible = false 960 | mesh = SubResource("4") 961 | surface_material_override/0 = SubResource("StandardMaterial3D_mtf7s") 962 | 963 | [node name="Up_DR" type="MeshInstance3D" parent="."] 964 | transform = Transform3D(1, 0, 0, 0, -1.62921e-07, 1, 0, -1, -1.62921e-07, 8, 0, -12) 965 | mesh = SubResource("1") 966 | surface_material_override/0 = SubResource("StandardMaterial3D_fhjye") 967 | 968 | [node name="StaticBody3D" type="StaticBody3D" parent="Up_DR"] 969 | transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, -0.1) 970 | 971 | [node name="CollisionShape3D" type="CollisionShape3D" parent="Up_DR/StaticBody3D"] 972 | shape = SubResource("3") 973 | 974 | [node name="AutoGrid_Bitmask" parent="Up_DR" instance=ExtResource("3")] 975 | transform = Transform3D(1, 0, 0, 0, -1.62921e-07, -1, 0, 1, -1.62921e-07, 0, 0, 0) 976 | visible = false 977 | mesh = SubResource("4") 978 | surface_material_override/0 = SubResource("StandardMaterial3D_xfvli") 979 | 980 | [node name="Up_DL" type="MeshInstance3D" parent="."] 981 | transform = Transform3D(1, 0, 0, 0, -1.62921e-07, 1, 0, -1, -1.62921e-07, 13, 0, -12) 982 | mesh = SubResource("1") 983 | surface_material_override/0 = SubResource("StandardMaterial3D_ffbt0") 984 | 985 | [node name="StaticBody3D" type="StaticBody3D" parent="Up_DL"] 986 | transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, -0.1) 987 | 988 | [node name="CollisionShape3D" type="CollisionShape3D" parent="Up_DL/StaticBody3D"] 989 | shape = SubResource("3") 990 | 991 | [node name="AutoGrid_Bitmask" parent="Up_DL" instance=ExtResource("3")] 992 | transform = Transform3D(1, 0, 0, 0, -1.62921e-07, -1, 0, 1, -1.62921e-07, 0, 0, 0) 993 | visible = false 994 | mesh = SubResource("4") 995 | surface_material_override/0 = SubResource("StandardMaterial3D_wav27") 996 | 997 | [node name="Right_Up_Corner_DL" type="MeshInstance3D" parent="."] 998 | transform = Transform3D(1, 0, 0, 0, -1.62921e-07, 1, 0, -1, -1.62921e-07, 18, 0, -12) 999 | mesh = SubResource("1") 1000 | surface_material_override/0 = SubResource("StandardMaterial3D_wuo70") 1001 | 1002 | [node name="StaticBody3D" type="StaticBody3D" parent="Right_Up_Corner_DL"] 1003 | transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, -0.1) 1004 | 1005 | [node name="CollisionShape3D" type="CollisionShape3D" parent="Right_Up_Corner_DL/StaticBody3D"] 1006 | shape = SubResource("3") 1007 | 1008 | [node name="AutoGrid_Bitmask" parent="Right_Up_Corner_DL" instance=ExtResource("3")] 1009 | transform = Transform3D(1, 0, 0, 0, -1.62921e-07, -1, 0, 1, -1.62921e-07, 0, 0, 0) 1010 | visible = false 1011 | mesh = SubResource("4") 1012 | surface_material_override/0 = SubResource("StandardMaterial3D_i8pqn") 1013 | 1014 | [node name="Left_DR" type="MeshInstance3D" parent="."] 1015 | transform = Transform3D(1, 0, 0, 0, -1.62921e-07, 1, 0, -1, -1.62921e-07, 3, 0, -8) 1016 | mesh = SubResource("1") 1017 | surface_material_override/0 = SubResource("StandardMaterial3D_hxu3q") 1018 | 1019 | [node name="StaticBody3D" type="StaticBody3D" parent="Left_DR"] 1020 | transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, -0.1) 1021 | 1022 | [node name="CollisionShape3D" type="CollisionShape3D" parent="Left_DR/StaticBody3D"] 1023 | shape = SubResource("3") 1024 | 1025 | [node name="AutoGrid_Bitmask" parent="Left_DR" instance=ExtResource("3")] 1026 | transform = Transform3D(1, 0, 0, 0, -1.62921e-07, -1, 0, 1, -1.62921e-07, 0, 0, 0) 1027 | visible = false 1028 | mesh = SubResource("4") 1029 | surface_material_override/0 = SubResource("StandardMaterial3D_mayxd") 1030 | 1031 | [node name="Middle_DR" type="MeshInstance3D" parent="."] 1032 | transform = Transform3D(1, 0, 0, 0, -1.62921e-07, 1, 0, -1, -1.62921e-07, 8, 0, -8) 1033 | mesh = SubResource("1") 1034 | surface_material_override/0 = SubResource("StandardMaterial3D_n2xfn") 1035 | 1036 | [node name="StaticBody3D" type="StaticBody3D" parent="Middle_DR"] 1037 | transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, -0.1) 1038 | 1039 | [node name="CollisionShape3D" type="CollisionShape3D" parent="Middle_DR/StaticBody3D"] 1040 | shape = SubResource("3") 1041 | 1042 | [node name="AutoGrid_Bitmask" parent="Middle_DR" instance=ExtResource("3")] 1043 | transform = Transform3D(1, 0, 0, 0, -1.62921e-07, -1, 0, 1, -1.62921e-07, 0, 0, 0) 1044 | visible = false 1045 | mesh = SubResource("4") 1046 | surface_material_override/0 = SubResource("StandardMaterial3D_ultoy") 1047 | 1048 | [node name="Middle_DL" type="MeshInstance3D" parent="."] 1049 | transform = Transform3D(1, 0, 0, 0, -1.62921e-07, 1, 0, -1, -1.62921e-07, 13, 0, -8) 1050 | mesh = SubResource("1") 1051 | surface_material_override/0 = SubResource("StandardMaterial3D_8nxkw") 1052 | 1053 | [node name="StaticBody3D" type="StaticBody3D" parent="Middle_DL"] 1054 | transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, -0.1) 1055 | 1056 | [node name="CollisionShape3D" type="CollisionShape3D" parent="Middle_DL/StaticBody3D"] 1057 | shape = SubResource("3") 1058 | 1059 | [node name="AutoGrid_Bitmask" parent="Middle_DL" instance=ExtResource("3")] 1060 | transform = Transform3D(1, 0, 0, 0, -1.62921e-07, -1, 0, 1, -1.62921e-07, 0, 0, 0) 1061 | visible = false 1062 | mesh = SubResource("4") 1063 | surface_material_override/0 = SubResource("StandardMaterial3D_x4rim") 1064 | 1065 | [node name="Right_DL" type="MeshInstance3D" parent="."] 1066 | transform = Transform3D(1, 0, 0, 0, -1.62921e-07, 1, 0, -1, -1.62921e-07, 18, 0, -8) 1067 | mesh = SubResource("1") 1068 | surface_material_override/0 = SubResource("StandardMaterial3D_m4jpk") 1069 | 1070 | [node name="StaticBody3D" type="StaticBody3D" parent="Right_DL"] 1071 | transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, -0.1) 1072 | 1073 | [node name="CollisionShape3D" type="CollisionShape3D" parent="Right_DL/StaticBody3D"] 1074 | shape = SubResource("3") 1075 | 1076 | [node name="AutoGrid_Bitmask" parent="Right_DL" instance=ExtResource("3")] 1077 | transform = Transform3D(1, 0, 0, 0, -1.62921e-07, -1, 0, 1, -1.62921e-07, 0, 0, 0) 1078 | visible = false 1079 | mesh = SubResource("4") 1080 | surface_material_override/0 = SubResource("StandardMaterial3D_genfy") 1081 | 1082 | [node name="Left_UR" type="MeshInstance3D" parent="."] 1083 | transform = Transform3D(1, 0, 0, 0, -1.62921e-07, 1, 0, -1, -1.62921e-07, 3, 0, -4) 1084 | mesh = SubResource("1") 1085 | surface_material_override/0 = SubResource("StandardMaterial3D_b85f8") 1086 | 1087 | [node name="StaticBody3D" type="StaticBody3D" parent="Left_UR"] 1088 | transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, -0.1) 1089 | 1090 | [node name="CollisionShape3D" type="CollisionShape3D" parent="Left_UR/StaticBody3D"] 1091 | shape = SubResource("3") 1092 | 1093 | [node name="AutoGrid_Bitmask" parent="Left_UR" instance=ExtResource("3")] 1094 | transform = Transform3D(1, 0, 0, 0, -1.62921e-07, -1, 0, 1, -1.62921e-07, 0, 0, 0) 1095 | visible = false 1096 | mesh = SubResource("4") 1097 | surface_material_override/0 = SubResource("StandardMaterial3D_vdyiv") 1098 | 1099 | [node name="Middle_UR" type="MeshInstance3D" parent="."] 1100 | transform = Transform3D(1, 0, 0, 0, -1.62921e-07, 1, 0, -1, -1.62921e-07, 8, 0, -4) 1101 | mesh = SubResource("1") 1102 | surface_material_override/0 = SubResource("StandardMaterial3D_cdcnu") 1103 | 1104 | [node name="StaticBody3D" type="StaticBody3D" parent="Middle_UR"] 1105 | transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, -0.1) 1106 | 1107 | [node name="CollisionShape3D" type="CollisionShape3D" parent="Middle_UR/StaticBody3D"] 1108 | shape = SubResource("3") 1109 | 1110 | [node name="AutoGrid_Bitmask" parent="Middle_UR" instance=ExtResource("3")] 1111 | transform = Transform3D(1, 0, 0, 0, -1.62921e-07, -1, 0, 1, -1.62921e-07, 0, 0, 0) 1112 | visible = false 1113 | mesh = SubResource("4") 1114 | surface_material_override/0 = SubResource("StandardMaterial3D_8gixc") 1115 | 1116 | [node name="Middle_UL" type="MeshInstance3D" parent="."] 1117 | transform = Transform3D(1, 0, 0, 0, -1.62921e-07, 1, 0, -1, -1.62921e-07, 13, 0, -4) 1118 | mesh = SubResource("1") 1119 | surface_material_override/0 = SubResource("StandardMaterial3D_70h6g") 1120 | 1121 | [node name="StaticBody3D" type="StaticBody3D" parent="Middle_UL"] 1122 | transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, -0.1) 1123 | 1124 | [node name="CollisionShape3D" type="CollisionShape3D" parent="Middle_UL/StaticBody3D"] 1125 | shape = SubResource("3") 1126 | 1127 | [node name="AutoGrid_Bitmask" parent="Middle_UL" instance=ExtResource("3")] 1128 | transform = Transform3D(1, 0, 0, 0, -1.62921e-07, -1, 0, 1, -1.62921e-07, 0, 0, 0) 1129 | visible = false 1130 | mesh = SubResource("4") 1131 | surface_material_override/0 = SubResource("StandardMaterial3D_bn7uc") 1132 | 1133 | [node name="Right_UL" type="MeshInstance3D" parent="."] 1134 | transform = Transform3D(1, 0, 0, 0, -1.62921e-07, 1, 0, -1, -1.62921e-07, 18, 0, -4) 1135 | mesh = SubResource("1") 1136 | surface_material_override/0 = SubResource("StandardMaterial3D_encr8") 1137 | 1138 | [node name="StaticBody3D" type="StaticBody3D" parent="Right_UL"] 1139 | transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, -0.1) 1140 | 1141 | [node name="CollisionShape3D" type="CollisionShape3D" parent="Right_UL/StaticBody3D"] 1142 | shape = SubResource("3") 1143 | 1144 | [node name="AutoGrid_Bitmask" parent="Right_UL" instance=ExtResource("3")] 1145 | transform = Transform3D(1, 0, 0, 0, -1.62921e-07, -1, 0, 1, -1.62921e-07, 0, 0, 0) 1146 | visible = false 1147 | mesh = SubResource("4") 1148 | surface_material_override/0 = SubResource("StandardMaterial3D_u4gf7") 1149 | 1150 | [node name="Right_Down_Corner_UR" type="MeshInstance3D" parent="."] 1151 | transform = Transform3D(1, 0, 0, 0, -1.62921e-07, 1, 0, -1, -1.62921e-07, 3, 0, 0) 1152 | mesh = SubResource("1") 1153 | surface_material_override/0 = SubResource("StandardMaterial3D_iycuf") 1154 | 1155 | [node name="StaticBody3D" type="StaticBody3D" parent="Right_Down_Corner_UR"] 1156 | transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, -0.1) 1157 | 1158 | [node name="CollisionShape3D" type="CollisionShape3D" parent="Right_Down_Corner_UR/StaticBody3D"] 1159 | shape = SubResource("3") 1160 | 1161 | [node name="AutoGrid_Bitmask" parent="Right_Down_Corner_UR" instance=ExtResource("3")] 1162 | transform = Transform3D(1, 0, 0, 0, -1.62921e-07, -1, 0, 1, -1.62921e-07, 0, 0, 0) 1163 | visible = false 1164 | mesh = SubResource("4") 1165 | surface_material_override/0 = SubResource("StandardMaterial3D_utf2k") 1166 | 1167 | [node name="Down_UR" type="MeshInstance3D" parent="."] 1168 | transform = Transform3D(1, 0, 0, 0, -1.62921e-07, 1, 0, -1, -1.62921e-07, 8, 0, 0) 1169 | mesh = SubResource("1") 1170 | surface_material_override/0 = SubResource("StandardMaterial3D_hws0l") 1171 | 1172 | [node name="StaticBody3D" type="StaticBody3D" parent="Down_UR"] 1173 | transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, -0.1) 1174 | 1175 | [node name="CollisionShape3D" type="CollisionShape3D" parent="Down_UR/StaticBody3D"] 1176 | shape = SubResource("3") 1177 | 1178 | [node name="AutoGrid_Bitmask" parent="Down_UR" instance=ExtResource("3")] 1179 | transform = Transform3D(1, 0, 0, 0, -1.62921e-07, -1, 0, 1, -1.62921e-07, 0, 0, 0) 1180 | visible = false 1181 | mesh = SubResource("4") 1182 | surface_material_override/0 = SubResource("StandardMaterial3D_jhke3") 1183 | 1184 | [node name="Down_UL" type="MeshInstance3D" parent="."] 1185 | transform = Transform3D(1, 0, 0, 0, -1.62921e-07, 1, 0, -1, -1.62921e-07, 13, 0, 0) 1186 | mesh = SubResource("1") 1187 | surface_material_override/0 = SubResource("StandardMaterial3D_wsvel") 1188 | 1189 | [node name="StaticBody3D" type="StaticBody3D" parent="Down_UL"] 1190 | transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, -0.1) 1191 | 1192 | [node name="CollisionShape3D" type="CollisionShape3D" parent="Down_UL/StaticBody3D"] 1193 | shape = SubResource("3") 1194 | 1195 | [node name="AutoGrid_Bitmask" parent="Down_UL" instance=ExtResource("3")] 1196 | transform = Transform3D(1, 0, 0, 0, -1.62921e-07, -1, 0, 1, -1.62921e-07, 0, 0, 0) 1197 | visible = false 1198 | mesh = SubResource("4") 1199 | surface_material_override/0 = SubResource("StandardMaterial3D_yaadq") 1200 | 1201 | [node name="Right_Down_Corner_UL" type="MeshInstance3D" parent="."] 1202 | transform = Transform3D(1, 0, 0, 0, -1.62921e-07, 1, 0, -1, -1.62921e-07, 18, 0, 0) 1203 | mesh = SubResource("1") 1204 | surface_material_override/0 = SubResource("StandardMaterial3D_f4x7q") 1205 | 1206 | [node name="StaticBody3D" type="StaticBody3D" parent="Right_Down_Corner_UL"] 1207 | transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, -0.1) 1208 | 1209 | [node name="CollisionShape3D" type="CollisionShape3D" parent="Right_Down_Corner_UL/StaticBody3D"] 1210 | shape = SubResource("3") 1211 | 1212 | [node name="AutoGrid_Bitmask" parent="Right_Down_Corner_UL" instance=ExtResource("3")] 1213 | transform = Transform3D(1, 0, 0, 0, -1.62921e-07, -1, 0, 1, -1.62921e-07, 0, 0, 0) 1214 | visible = false 1215 | mesh = SubResource("4") 1216 | surface_material_override/0 = SubResource("StandardMaterial3D_v3e7a") 1217 | 1218 | [node name="VBridge" type="MeshInstance3D" parent="."] 1219 | transform = Transform3D(1, 0, 0, 0, -1.62921e-07, 1, 0, -1, -1.62921e-07, -17, 0, 4) 1220 | mesh = SubResource("1") 1221 | surface_material_override/0 = SubResource("StandardMaterial3D_2tfam") 1222 | 1223 | [node name="StaticBody3D" type="StaticBody3D" parent="VBridge"] 1224 | transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, -0.1) 1225 | 1226 | [node name="CollisionShape3D" type="CollisionShape3D" parent="VBridge/StaticBody3D"] 1227 | shape = SubResource("3") 1228 | 1229 | [node name="HBridge" type="MeshInstance3D" parent="."] 1230 | transform = Transform3D(1, 0, 0, 0, -1.62921e-07, 1, 0, -1, -1.62921e-07, -17, 0, 8) 1231 | mesh = SubResource("1") 1232 | surface_material_override/0 = SubResource("StandardMaterial3D_swff7") 1233 | 1234 | [node name="StaticBody3D" type="StaticBody3D" parent="HBridge"] 1235 | transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, -0.1) 1236 | 1237 | [node name="CollisionShape3D" type="CollisionShape3D" parent="HBridge/StaticBody3D"] 1238 | shape = SubResource("3") 1239 | 1240 | [node name="LD_RU" type="MeshInstance3D" parent="."] 1241 | transform = Transform3D(1, 0, 0, 0, -1.62921e-07, 1, 0, -1, -1.62921e-07, -12, 0, 4) 1242 | mesh = SubResource("1") 1243 | surface_material_override/0 = SubResource("StandardMaterial3D_ixcvb") 1244 | 1245 | [node name="StaticBody3D" type="StaticBody3D" parent="LD_RU"] 1246 | transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, -0.1) 1247 | 1248 | [node name="CollisionShape3D" type="CollisionShape3D" parent="LD_RU/StaticBody3D"] 1249 | shape = SubResource("3") 1250 | 1251 | [node name="AutoGrid_Bitmask" parent="LD_RU" instance=ExtResource("3")] 1252 | transform = Transform3D(1, 0, 0, 0, -1.62921e-07, -1, 0, 1, -1.62921e-07, 0, 0, 0) 1253 | visible = false 1254 | mesh = SubResource("4") 1255 | surface_material_override/0 = SubResource("StandardMaterial3D_jbi8u") 1256 | 1257 | [node name="LU_RD" type="MeshInstance3D" parent="."] 1258 | transform = Transform3D(1, 0, 0, 0, -1.62921e-07, 1, 0, -1, -1.62921e-07, -12, 0, 8) 1259 | mesh = SubResource("1") 1260 | surface_material_override/0 = SubResource("StandardMaterial3D_o5602") 1261 | 1262 | [node name="StaticBody3D" type="StaticBody3D" parent="LU_RD"] 1263 | transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, -0.1) 1264 | 1265 | [node name="CollisionShape3D" type="CollisionShape3D" parent="LU_RD/StaticBody3D"] 1266 | shape = SubResource("3") 1267 | 1268 | [node name="AutoGrid_Bitmask" parent="LU_RD" instance=ExtResource("3")] 1269 | transform = Transform3D(1, 0, 0, 0, -1.62921e-07, -1, 0, 1, -1.62921e-07, 0, 0, 0) 1270 | visible = false 1271 | mesh = SubResource("4") 1272 | surface_material_override/0 = SubResource("StandardMaterial3D_omms1") 1273 | 1274 | [node name="Half_Wall" type="MeshInstance3D" parent="."] 1275 | transform = Transform3D(1, 0, 0, 0, -1.62921e-07, 1, 0, -1, -1.62921e-07, -7, 0, 4) 1276 | mesh = SubResource("1") 1277 | surface_material_override/0 = SubResource("StandardMaterial3D_hmwrp") 1278 | 1279 | [node name="StaticBody3D" type="StaticBody3D" parent="Half_Wall"] 1280 | transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, -0.1) 1281 | 1282 | [node name="CollisionShape3D" type="CollisionShape3D" parent="Half_Wall/StaticBody3D"] 1283 | shape = SubResource("3") 1284 | 1285 | [node name="Wall" type="MeshInstance3D" parent="."] 1286 | transform = Transform3D(1, 0, 0, 0, -1.62921e-07, 1, 0, -1, -1.62921e-07, -2, 0, 4) 1287 | mesh = SubResource("1") 1288 | surface_material_override/0 = SubResource("StandardMaterial3D_3llda") 1289 | 1290 | [node name="StaticBody3D" type="StaticBody3D" parent="Wall"] 1291 | transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, -0.1) 1292 | 1293 | [node name="CollisionShape3D" type="CollisionShape3D" parent="Wall/StaticBody3D"] 1294 | shape = SubResource("3") 1295 | 1296 | [node name="Wall_Tall_Top" type="MeshInstance3D" parent="."] 1297 | transform = Transform3D(1, 0, 0, 0, -1.62921e-07, 1, 0, -1, -1.62921e-07, 3, 0, 4) 1298 | mesh = SubResource("1") 1299 | surface_material_override/0 = SubResource("StandardMaterial3D_3qxof") 1300 | 1301 | [node name="StaticBody3D" type="StaticBody3D" parent="Wall_Tall_Top"] 1302 | transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, -0.1) 1303 | 1304 | [node name="CollisionShape3D" type="CollisionShape3D" parent="Wall_Tall_Top/StaticBody3D"] 1305 | shape = SubResource("3") 1306 | 1307 | [node name="Wall_Tall_Down" type="MeshInstance3D" parent="."] 1308 | transform = Transform3D(1, 0, 0, 0, -1.62921e-07, 1, 0, -1, -1.62921e-07, 3, 0, 8) 1309 | mesh = SubResource("1") 1310 | surface_material_override/0 = SubResource("StandardMaterial3D_3wsq3") 1311 | 1312 | [node name="StaticBody3D" type="StaticBody3D" parent="Wall_Tall_Down"] 1313 | transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, -0.1) 1314 | 1315 | [node name="CollisionShape3D" type="CollisionShape3D" parent="Wall_Tall_Down/StaticBody3D"] 1316 | shape = SubResource("3") 1317 | 1318 | [node name="Left_RB" type="MeshInstance3D" parent="."] 1319 | transform = Transform3D(1, 0, 0, 0, -1.62921e-07, 1, 0, -1, -1.62921e-07, -2, 0, 12) 1320 | mesh = SubResource("1") 1321 | surface_material_override/0 = SubResource("StandardMaterial3D_beidl") 1322 | 1323 | [node name="StaticBody3D" type="StaticBody3D" parent="Left_RB"] 1324 | transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, -0.1) 1325 | 1326 | [node name="CollisionShape3D" type="CollisionShape3D" parent="Left_RB/StaticBody3D"] 1327 | shape = SubResource("3") 1328 | 1329 | [node name="AutoGrid_Bitmask" parent="Left_RB" instance=ExtResource("3")] 1330 | transform = Transform3D(1, 0, 0, 0, -1.62921e-07, -1, 0, 1, -1.62921e-07, 0, 0, 0) 1331 | visible = false 1332 | mesh = SubResource("4") 1333 | surface_material_override/0 = SubResource("StandardMaterial3D_1ueyq") 1334 | 1335 | [node name="RB" type="MeshInstance3D" parent="."] 1336 | transform = Transform3D(1, 0, 0, 0, -1.62921e-07, 1, 0, -1, -1.62921e-07, 3, 0, 12) 1337 | mesh = SubResource("1") 1338 | surface_material_override/0 = SubResource("StandardMaterial3D_nx42v") 1339 | 1340 | [node name="StaticBody3D" type="StaticBody3D" parent="RB"] 1341 | transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, -0.1) 1342 | 1343 | [node name="CollisionShape3D" type="CollisionShape3D" parent="RB/StaticBody3D"] 1344 | shape = SubResource("3") 1345 | 1346 | [node name="AutoGrid_Bitmask" parent="RB" instance=ExtResource("3")] 1347 | transform = Transform3D(1, 0, 0, 0, -1.62921e-07, -1, 0, 1, -1.62921e-07, 0, 0, 0) 1348 | visible = false 1349 | mesh = SubResource("4") 1350 | surface_material_override/0 = SubResource("StandardMaterial3D_rivhf") 1351 | 1352 | [node name="LB" type="MeshInstance3D" parent="."] 1353 | transform = Transform3D(1, 0, 0, 0, -1.62921e-07, 1, 0, -1, -1.62921e-07, 8, 0, 12) 1354 | mesh = SubResource("1") 1355 | surface_material_override/0 = SubResource("StandardMaterial3D_wqbox") 1356 | 1357 | [node name="StaticBody3D" type="StaticBody3D" parent="LB"] 1358 | transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, -0.1) 1359 | 1360 | [node name="CollisionShape3D" type="CollisionShape3D" parent="LB/StaticBody3D"] 1361 | shape = SubResource("3") 1362 | 1363 | [node name="AutoGrid_Bitmask" parent="LB" instance=ExtResource("3")] 1364 | transform = Transform3D(1, 0, 0, 0, -1.62921e-07, -1, 0, 1, -1.62921e-07, 0, 0, 0) 1365 | visible = false 1366 | mesh = SubResource("4") 1367 | surface_material_override/0 = SubResource("StandardMaterial3D_8x34s") 1368 | 1369 | [node name="Right_LB" type="MeshInstance3D" parent="."] 1370 | transform = Transform3D(1, 0, 0, 0, -1.62921e-07, 1, 0, -1, -1.62921e-07, 18, 0, 4) 1371 | mesh = SubResource("1") 1372 | surface_material_override/0 = SubResource("StandardMaterial3D_18w3i") 1373 | 1374 | [node name="StaticBody3D" type="StaticBody3D" parent="Right_LB"] 1375 | transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, -0.1) 1376 | 1377 | [node name="CollisionShape3D" type="CollisionShape3D" parent="Right_LB/StaticBody3D"] 1378 | shape = SubResource("3") 1379 | 1380 | [node name="AutoGrid_Bitmask" parent="Right_LB" instance=ExtResource("3")] 1381 | transform = Transform3D(1, 0, 0, 0, -1.62921e-07, -1, 0, 1, -1.62921e-07, 0, 0, 0) 1382 | visible = false 1383 | mesh = SubResource("4") 1384 | surface_material_override/0 = SubResource("StandardMaterial3D_dbvyn") 1385 | 1386 | [node name="Top_DB" type="MeshInstance3D" parent="."] 1387 | transform = Transform3D(1, 0, 0, 0, -1.62921e-07, 1, 0, -1, -1.62921e-07, 13, 0, 4) 1388 | mesh = SubResource("1") 1389 | surface_material_override/0 = SubResource("StandardMaterial3D_fulvo") 1390 | 1391 | [node name="StaticBody3D" type="StaticBody3D" parent="Top_DB"] 1392 | transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, -0.1) 1393 | 1394 | [node name="CollisionShape3D" type="CollisionShape3D" parent="Top_DB/StaticBody3D"] 1395 | shape = SubResource("3") 1396 | 1397 | [node name="AutoGrid_Bitmask" parent="Top_DB" instance=ExtResource("3")] 1398 | transform = Transform3D(1, 0, 0, 0, -1.62921e-07, -1, 0, 1, -1.62921e-07, 0, 0, 0) 1399 | visible = false 1400 | mesh = SubResource("4") 1401 | surface_material_override/0 = SubResource("StandardMaterial3D_42xme") 1402 | 1403 | [node name="DB" type="MeshInstance3D" parent="."] 1404 | transform = Transform3D(1, 0, 0, 0, -1.62921e-07, 1, 0, -1, -1.62921e-07, 8, 0, 8) 1405 | mesh = SubResource("1") 1406 | surface_material_override/0 = SubResource("StandardMaterial3D_au2qw") 1407 | 1408 | [node name="StaticBody3D" type="StaticBody3D" parent="DB"] 1409 | transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, -0.1) 1410 | 1411 | [node name="CollisionShape3D" type="CollisionShape3D" parent="DB/StaticBody3D"] 1412 | shape = SubResource("3") 1413 | 1414 | [node name="AutoGrid_Bitmask" parent="DB" instance=ExtResource("3")] 1415 | transform = Transform3D(1, 0, 0, 0, -1.62921e-07, -1, 0, 1, -1.62921e-07, 0, 0, 0) 1416 | visible = false 1417 | mesh = SubResource("4") 1418 | surface_material_override/0 = SubResource("StandardMaterial3D_02gaq") 1419 | 1420 | [node name="UB" type="MeshInstance3D" parent="."] 1421 | transform = Transform3D(1, 0, 0, 0, -1.62921e-07, 1, 0, -1, -1.62921e-07, -2, 0, 8) 1422 | mesh = SubResource("1") 1423 | surface_material_override/0 = SubResource("StandardMaterial3D_th7ie") 1424 | 1425 | [node name="StaticBody3D" type="StaticBody3D" parent="UB"] 1426 | transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, -0.1) 1427 | 1428 | [node name="CollisionShape3D" type="CollisionShape3D" parent="UB/StaticBody3D"] 1429 | shape = SubResource("3") 1430 | 1431 | [node name="AutoGrid_Bitmask" parent="UB" instance=ExtResource("3")] 1432 | transform = Transform3D(1, 0, 0, 0, -1.62921e-07, -1, 0, 1, -1.62921e-07, 0, 0, 0) 1433 | visible = false 1434 | mesh = SubResource("4") 1435 | surface_material_override/0 = SubResource("StandardMaterial3D_a1d3o") 1436 | 1437 | [node name="Down_UB" type="MeshInstance3D" parent="."] 1438 | transform = Transform3D(1, 0, 0, 0, -1.62921e-07, 1, 0, -1, -1.62921e-07, 8, 0, 4) 1439 | mesh = SubResource("1") 1440 | surface_material_override/0 = SubResource("StandardMaterial3D_c8wes") 1441 | 1442 | [node name="StaticBody3D" type="StaticBody3D" parent="Down_UB"] 1443 | transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, -0.1) 1444 | 1445 | [node name="CollisionShape3D" type="CollisionShape3D" parent="Down_UB/StaticBody3D"] 1446 | shape = SubResource("3") 1447 | 1448 | [node name="AutoGrid_Bitmask" parent="Down_UB" instance=ExtResource("3")] 1449 | transform = Transform3D(1, 0, 0, 0, -1.62921e-07, -1, 0, 1, -1.62921e-07, 0, 0, 0) 1450 | visible = false 1451 | mesh = SubResource("4") 1452 | surface_material_override/0 = SubResource("StandardMaterial3D_ydidx") 1453 | 1454 | [node name="LB_RU" type="MeshInstance3D" parent="."] 1455 | transform = Transform3D(1, 0, 0, 0, -1.62921e-07, 1, 0, -1, -1.62921e-07, 13, 0, 8) 1456 | mesh = SubResource("1") 1457 | surface_material_override/0 = SubResource("StandardMaterial3D_f1odu") 1458 | 1459 | [node name="StaticBody3D" type="StaticBody3D" parent="LB_RU"] 1460 | transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, -0.1) 1461 | 1462 | [node name="CollisionShape3D" type="CollisionShape3D" parent="LB_RU/StaticBody3D"] 1463 | shape = SubResource("3") 1464 | 1465 | [node name="AutoGrid_Bitmask" parent="LB_RU" instance=ExtResource("3")] 1466 | transform = Transform3D(1, 0, 0, 0, -1.62921e-07, -1, 0, 1, -1.62921e-07, 0, 0, 0) 1467 | visible = false 1468 | mesh = SubResource("4") 1469 | surface_material_override/0 = SubResource("StandardMaterial3D_ccbho") 1470 | 1471 | [node name="RB_LU" type="MeshInstance3D" parent="."] 1472 | transform = Transform3D(1, 0, 0, 0, -1.62921e-07, 1, 0, -1, -1.62921e-07, 18, 0, 8) 1473 | mesh = SubResource("1") 1474 | surface_material_override/0 = SubResource("StandardMaterial3D_lclru") 1475 | 1476 | [node name="StaticBody3D" type="StaticBody3D" parent="RB_LU"] 1477 | transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, -0.1) 1478 | 1479 | [node name="CollisionShape3D" type="CollisionShape3D" parent="RB_LU/StaticBody3D"] 1480 | shape = SubResource("3") 1481 | 1482 | [node name="AutoGrid_Bitmask" parent="RB_LU" instance=ExtResource("3")] 1483 | transform = Transform3D(1, 0, 0, 0, -1.62921e-07, -1, 0, 1, -1.62921e-07, 0, 0, 0) 1484 | visible = false 1485 | mesh = SubResource("4") 1486 | surface_material_override/0 = SubResource("StandardMaterial3D_ifvds") 1487 | 1488 | [node name="LB_RD" type="MeshInstance3D" parent="."] 1489 | transform = Transform3D(1, 0, 0, 0, -1.62921e-07, 1, 0, -1, -1.62921e-07, 13, 0, 12) 1490 | mesh = SubResource("1") 1491 | surface_material_override/0 = SubResource("StandardMaterial3D_ghsn1") 1492 | 1493 | [node name="StaticBody3D" type="StaticBody3D" parent="LB_RD"] 1494 | transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, -0.1) 1495 | 1496 | [node name="CollisionShape3D" type="CollisionShape3D" parent="LB_RD/StaticBody3D"] 1497 | shape = SubResource("3") 1498 | 1499 | [node name="AutoGrid_Bitmask" parent="LB_RD" instance=ExtResource("3")] 1500 | transform = Transform3D(1, 0, 0, 0, -1.62921e-07, -1, 0, 1, -1.62921e-07, 0, 0, 0) 1501 | visible = false 1502 | mesh = SubResource("4") 1503 | surface_material_override/0 = SubResource("StandardMaterial3D_7hnmo") 1504 | 1505 | [node name="RB_LD" type="MeshInstance3D" parent="."] 1506 | transform = Transform3D(1, 0, 0, 0, -1.62921e-07, 1, 0, -1, -1.62921e-07, 18, 0, 12) 1507 | mesh = SubResource("1") 1508 | surface_material_override/0 = SubResource("StandardMaterial3D_s2hek") 1509 | 1510 | [node name="StaticBody3D" type="StaticBody3D" parent="RB_LD"] 1511 | transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, -0.1) 1512 | 1513 | [node name="CollisionShape3D" type="CollisionShape3D" parent="RB_LD/StaticBody3D"] 1514 | shape = SubResource("3") 1515 | 1516 | [node name="AutoGrid_Bitmask" parent="RB_LD" instance=ExtResource("3")] 1517 | transform = Transform3D(1, 0, 0, 0, -1.62921e-07, -1, 0, 1, -1.62921e-07, 0, 0, 0) 1518 | visible = false 1519 | mesh = SubResource("4") 1520 | surface_material_override/0 = SubResource("StandardMaterial3D_e58ig") 1521 | 1522 | [node name="LB_RB" type="MeshInstance3D" parent="."] 1523 | transform = Transform3D(1, 0, 0, 0, -1.62921e-07, 1, 0, -1, -1.62921e-07, -7, 0, 8) 1524 | mesh = SubResource("1") 1525 | surface_material_override/0 = SubResource("StandardMaterial3D_jrmt3") 1526 | 1527 | [node name="StaticBody3D" type="StaticBody3D" parent="LB_RB"] 1528 | transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, -0.1) 1529 | 1530 | [node name="CollisionShape3D" type="CollisionShape3D" parent="LB_RB/StaticBody3D"] 1531 | shape = SubResource("3") 1532 | 1533 | [node name="AutoGrid_Bitmask" parent="LB_RB" instance=ExtResource("3")] 1534 | transform = Transform3D(1, 0, 0, 0, -1.62921e-07, -1, 0, 1, -1.62921e-07, 0, 0, 0) 1535 | visible = false 1536 | mesh = SubResource("4") 1537 | surface_material_override/0 = SubResource("StandardMaterial3D_bjhie") 1538 | 1539 | [node name="Ground_agrid" type="MeshInstance3D" parent="."] 1540 | transform = Transform3D(1, 0, 0, 0, -1.62921e-07, 1, 0, -1, -1.62921e-07, -17, 0, -12) 1541 | mesh = SubResource("1") 1542 | -------------------------------------------------------------------------------- /DEMO_PROJECT/DEMO/res_2D/dungeon_tiles_ground.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/XLIVE99/AutoGrid/36223c77efc87bff3b02159eb66410fe5cc9cab5/DEMO_PROJECT/DEMO/res_2D/dungeon_tiles_ground.png -------------------------------------------------------------------------------- /DEMO_PROJECT/DEMO/res_2D/dungeon_tiles_ground.png.import: -------------------------------------------------------------------------------- 1 | [remap] 2 | 3 | importer="texture" 4 | type="CompressedTexture2D" 5 | uid="uid://bogaysehmtnyx" 6 | path.s3tc="res://.godot/imported/dungeon_tiles_ground.png-e7e6d5fd02e0a783ff37352053445eac.s3tc.ctex" 7 | metadata={ 8 | "imported_formats": ["s3tc_bptc"], 9 | "vram_texture": true 10 | } 11 | 12 | [deps] 13 | 14 | source_file="res://DEMO/res_2D/dungeon_tiles_ground.png" 15 | dest_files=["res://.godot/imported/dungeon_tiles_ground.png-e7e6d5fd02e0a783ff37352053445eac.s3tc.ctex"] 16 | 17 | [params] 18 | 19 | compress/mode=2 20 | compress/high_quality=false 21 | compress/lossy_quality=0.7 22 | compress/hdr_compression=1 23 | compress/normal_map=0 24 | compress/channel_pack=0 25 | mipmaps/generate=true 26 | mipmaps/limit=-1 27 | roughness/mode=0 28 | roughness/src_normal="" 29 | process/fix_alpha_border=true 30 | process/premult_alpha=false 31 | process/normal_map_invert_y=false 32 | process/hdr_as_srgb=false 33 | process/hdr_clamp_exposure=false 34 | process/size_limit=0 35 | detect_3d/compress_to=0 36 | -------------------------------------------------------------------------------- /DEMO_PROJECT/addons/AutoGrid/AutoGrid_Bitmask.tscn: -------------------------------------------------------------------------------- 1 | [gd_scene load_steps=33 format=3 uid="uid://d0erc1sce6n6o"] 2 | 3 | [ext_resource type="Script" path="res://addons/AutoGrid/bitmask_box.gd" id="1"] 4 | [ext_resource type="Script" path="res://addons/AutoGrid/bitmask_holder.gd" id="2"] 5 | 6 | [sub_resource type="SphereMesh" id="1"] 7 | radial_segments = 8 8 | rings = 4 9 | 10 | [sub_resource type="StandardMaterial3D" id="StandardMaterial3D_p4s0r"] 11 | resource_local_to_scene = true 12 | transparency = 1 13 | shading_mode = 2 14 | albedo_color = Color(0, 0, 0.345098, 0) 15 | 16 | [sub_resource type="BoxMesh" id="3"] 17 | 18 | [sub_resource type="StandardMaterial3D" id="StandardMaterial3D_225ob"] 19 | resource_local_to_scene = true 20 | transparency = 1 21 | shading_mode = 2 22 | albedo_color = Color(1, 1, 1, 0.14902) 23 | 24 | [sub_resource type="BoxShape3D" id="5"] 25 | 26 | [sub_resource type="StandardMaterial3D" id="StandardMaterial3D_u0r7i"] 27 | resource_local_to_scene = true 28 | transparency = 1 29 | shading_mode = 2 30 | albedo_color = Color(1, 1, 1, 0.14902) 31 | 32 | [sub_resource type="StandardMaterial3D" id="StandardMaterial3D_bflln"] 33 | resource_local_to_scene = true 34 | transparency = 1 35 | shading_mode = 2 36 | albedo_color = Color(1, 1, 1, 0.14902) 37 | 38 | [sub_resource type="StandardMaterial3D" id="StandardMaterial3D_7dlun"] 39 | resource_local_to_scene = true 40 | transparency = 1 41 | shading_mode = 2 42 | albedo_color = Color(1, 1, 1, 0.14902) 43 | 44 | [sub_resource type="StandardMaterial3D" id="StandardMaterial3D_c4b7m"] 45 | resource_local_to_scene = true 46 | transparency = 1 47 | shading_mode = 2 48 | albedo_color = Color(1, 1, 1, 0.14902) 49 | 50 | [sub_resource type="StandardMaterial3D" id="StandardMaterial3D_yugxh"] 51 | resource_local_to_scene = true 52 | transparency = 1 53 | shading_mode = 2 54 | albedo_color = Color(1, 1, 1, 0.14902) 55 | 56 | [sub_resource type="StandardMaterial3D" id="StandardMaterial3D_w3usl"] 57 | resource_local_to_scene = true 58 | transparency = 1 59 | shading_mode = 2 60 | albedo_color = Color(1, 1, 1, 0.14902) 61 | 62 | [sub_resource type="StandardMaterial3D" id="StandardMaterial3D_7bsy5"] 63 | resource_local_to_scene = true 64 | transparency = 1 65 | shading_mode = 2 66 | albedo_color = Color(1, 1, 1, 0.14902) 67 | 68 | [sub_resource type="StandardMaterial3D" id="StandardMaterial3D_ehlfk"] 69 | resource_local_to_scene = true 70 | transparency = 1 71 | shading_mode = 2 72 | albedo_color = Color(1, 1, 1, 0.14902) 73 | 74 | [sub_resource type="StandardMaterial3D" id="StandardMaterial3D_sy1vq"] 75 | resource_local_to_scene = true 76 | transparency = 1 77 | shading_mode = 2 78 | albedo_color = Color(1, 1, 1, 0.14902) 79 | 80 | [sub_resource type="StandardMaterial3D" id="StandardMaterial3D_d8uas"] 81 | resource_local_to_scene = true 82 | transparency = 1 83 | shading_mode = 2 84 | albedo_color = Color(1, 1, 1, 0.14902) 85 | 86 | [sub_resource type="StandardMaterial3D" id="StandardMaterial3D_bbsmk"] 87 | resource_local_to_scene = true 88 | transparency = 1 89 | shading_mode = 2 90 | albedo_color = Color(1, 1, 1, 0.14902) 91 | 92 | [sub_resource type="StandardMaterial3D" id="StandardMaterial3D_srmd3"] 93 | resource_local_to_scene = true 94 | transparency = 1 95 | shading_mode = 2 96 | albedo_color = Color(1, 1, 1, 0.14902) 97 | 98 | [sub_resource type="StandardMaterial3D" id="StandardMaterial3D_2edq1"] 99 | resource_local_to_scene = true 100 | transparency = 1 101 | shading_mode = 2 102 | albedo_color = Color(1, 1, 1, 0.14902) 103 | 104 | [sub_resource type="StandardMaterial3D" id="StandardMaterial3D_55lbw"] 105 | resource_local_to_scene = true 106 | transparency = 1 107 | shading_mode = 2 108 | albedo_color = Color(1, 1, 1, 0.14902) 109 | 110 | [sub_resource type="StandardMaterial3D" id="StandardMaterial3D_1d1lm"] 111 | resource_local_to_scene = true 112 | transparency = 1 113 | shading_mode = 2 114 | albedo_color = Color(1, 1, 1, 0.14902) 115 | 116 | [sub_resource type="StandardMaterial3D" id="StandardMaterial3D_xju05"] 117 | resource_local_to_scene = true 118 | transparency = 1 119 | shading_mode = 2 120 | albedo_color = Color(1, 1, 1, 0.14902) 121 | 122 | [sub_resource type="StandardMaterial3D" id="StandardMaterial3D_gq4vg"] 123 | resource_local_to_scene = true 124 | transparency = 1 125 | shading_mode = 2 126 | albedo_color = Color(1, 1, 1, 0.14902) 127 | 128 | [sub_resource type="StandardMaterial3D" id="StandardMaterial3D_aiqti"] 129 | resource_local_to_scene = true 130 | transparency = 1 131 | shading_mode = 2 132 | albedo_color = Color(1, 1, 1, 0.14902) 133 | 134 | [sub_resource type="StandardMaterial3D" id="StandardMaterial3D_km4en"] 135 | resource_local_to_scene = true 136 | transparency = 1 137 | shading_mode = 2 138 | albedo_color = Color(1, 1, 1, 0.14902) 139 | 140 | [sub_resource type="StandardMaterial3D" id="StandardMaterial3D_f56y6"] 141 | resource_local_to_scene = true 142 | transparency = 1 143 | shading_mode = 2 144 | albedo_color = Color(1, 1, 1, 0.14902) 145 | 146 | [sub_resource type="StandardMaterial3D" id="StandardMaterial3D_i8bol"] 147 | resource_local_to_scene = true 148 | transparency = 1 149 | shading_mode = 2 150 | albedo_color = Color(1, 1, 1, 0.14902) 151 | 152 | [sub_resource type="StandardMaterial3D" id="StandardMaterial3D_hgko1"] 153 | resource_local_to_scene = true 154 | transparency = 1 155 | shading_mode = 2 156 | albedo_color = Color(1, 1, 1, 0.14902) 157 | 158 | [sub_resource type="StandardMaterial3D" id="StandardMaterial3D_ppnlm"] 159 | resource_local_to_scene = true 160 | transparency = 1 161 | shading_mode = 2 162 | albedo_color = Color(1, 1, 1, 0.14902) 163 | 164 | [sub_resource type="StandardMaterial3D" id="StandardMaterial3D_fxw3k"] 165 | resource_local_to_scene = true 166 | transparency = 1 167 | shading_mode = 2 168 | albedo_color = Color(1, 1, 1, 0.14902) 169 | 170 | [sub_resource type="StandardMaterial3D" id="StandardMaterial3D_njsqk"] 171 | resource_local_to_scene = true 172 | transparency = 1 173 | shading_mode = 2 174 | albedo_color = Color(1, 1, 1, 0.14902) 175 | 176 | [node name="AutoGrid_Bitmask" type="MeshInstance3D"] 177 | cast_shadow = 0 178 | gi_mode = 0 179 | mesh = SubResource("1") 180 | surface_material_override/0 = SubResource("StandardMaterial3D_p4s0r") 181 | script = ExtResource("2") 182 | 183 | [node name="Bitmask_Box" type="StaticBody3D" parent="."] 184 | transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -2, 2) 185 | collision_layer = 0 186 | collision_mask = 0 187 | script = ExtResource("1") 188 | 189 | [node name="MeshInstance3D" type="MeshInstance3D" parent="Bitmask_Box"] 190 | cast_shadow = 0 191 | gi_mode = 0 192 | mesh = SubResource("3") 193 | surface_material_override/0 = SubResource("StandardMaterial3D_225ob") 194 | 195 | [node name="CollisionShape3D" type="CollisionShape3D" parent="Bitmask_Box"] 196 | shape = SubResource("5") 197 | 198 | [node name="Bitmask_Box2" type="StaticBody3D" parent="."] 199 | transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 2, -2, 2) 200 | collision_layer = 0 201 | collision_mask = 0 202 | script = ExtResource("1") 203 | 204 | [node name="MeshInstance3D" type="MeshInstance3D" parent="Bitmask_Box2"] 205 | cast_shadow = 0 206 | gi_mode = 0 207 | mesh = SubResource("3") 208 | surface_material_override/0 = SubResource("StandardMaterial3D_u0r7i") 209 | 210 | [node name="CollisionShape3D" type="CollisionShape3D" parent="Bitmask_Box2"] 211 | shape = SubResource("5") 212 | 213 | [node name="Bitmask_Box3" type="StaticBody3D" parent="."] 214 | transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 2, -2, 0) 215 | collision_layer = 0 216 | collision_mask = 0 217 | script = ExtResource("1") 218 | 219 | [node name="MeshInstance3D" type="MeshInstance3D" parent="Bitmask_Box3"] 220 | cast_shadow = 0 221 | gi_mode = 0 222 | mesh = SubResource("3") 223 | surface_material_override/0 = SubResource("StandardMaterial3D_bflln") 224 | 225 | [node name="CollisionShape3D" type="CollisionShape3D" parent="Bitmask_Box3"] 226 | shape = SubResource("5") 227 | 228 | [node name="Bitmask_Box4" type="StaticBody3D" parent="."] 229 | transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 2, -2, -2) 230 | collision_layer = 0 231 | collision_mask = 0 232 | script = ExtResource("1") 233 | 234 | [node name="MeshInstance3D" type="MeshInstance3D" parent="Bitmask_Box4"] 235 | cast_shadow = 0 236 | gi_mode = 0 237 | mesh = SubResource("3") 238 | surface_material_override/0 = SubResource("StandardMaterial3D_7dlun") 239 | 240 | [node name="CollisionShape3D" type="CollisionShape3D" parent="Bitmask_Box4"] 241 | shape = SubResource("5") 242 | 243 | [node name="Bitmask_Box5" type="StaticBody3D" parent="."] 244 | transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -2, -2) 245 | collision_layer = 0 246 | collision_mask = 0 247 | script = ExtResource("1") 248 | 249 | [node name="MeshInstance3D" type="MeshInstance3D" parent="Bitmask_Box5"] 250 | cast_shadow = 0 251 | gi_mode = 0 252 | mesh = SubResource("3") 253 | surface_material_override/0 = SubResource("StandardMaterial3D_c4b7m") 254 | 255 | [node name="CollisionShape3D" type="CollisionShape3D" parent="Bitmask_Box5"] 256 | shape = SubResource("5") 257 | 258 | [node name="Bitmask_Box6" type="StaticBody3D" parent="."] 259 | transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -2, -2, -2) 260 | collision_layer = 0 261 | collision_mask = 0 262 | script = ExtResource("1") 263 | 264 | [node name="MeshInstance3D" type="MeshInstance3D" parent="Bitmask_Box6"] 265 | cast_shadow = 0 266 | gi_mode = 0 267 | mesh = SubResource("3") 268 | surface_material_override/0 = SubResource("StandardMaterial3D_yugxh") 269 | 270 | [node name="CollisionShape3D" type="CollisionShape3D" parent="Bitmask_Box6"] 271 | shape = SubResource("5") 272 | 273 | [node name="Bitmask_Box7" type="StaticBody3D" parent="."] 274 | transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -2, -2, 0) 275 | collision_layer = 0 276 | collision_mask = 0 277 | script = ExtResource("1") 278 | 279 | [node name="MeshInstance3D" type="MeshInstance3D" parent="Bitmask_Box7"] 280 | cast_shadow = 0 281 | gi_mode = 0 282 | mesh = SubResource("3") 283 | surface_material_override/0 = SubResource("StandardMaterial3D_w3usl") 284 | 285 | [node name="CollisionShape3D" type="CollisionShape3D" parent="Bitmask_Box7"] 286 | shape = SubResource("5") 287 | 288 | [node name="Bitmask_Box8" type="StaticBody3D" parent="."] 289 | transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -2, -2, 2) 290 | collision_layer = 0 291 | collision_mask = 0 292 | script = ExtResource("1") 293 | 294 | [node name="MeshInstance3D" type="MeshInstance3D" parent="Bitmask_Box8"] 295 | cast_shadow = 0 296 | gi_mode = 0 297 | mesh = SubResource("3") 298 | surface_material_override/0 = SubResource("StandardMaterial3D_7bsy5") 299 | 300 | [node name="CollisionShape3D" type="CollisionShape3D" parent="Bitmask_Box8"] 301 | shape = SubResource("5") 302 | 303 | [node name="Bitmask_Box9" type="StaticBody3D" parent="."] 304 | transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -2, 0) 305 | collision_layer = 0 306 | collision_mask = 0 307 | script = ExtResource("1") 308 | 309 | [node name="MeshInstance3D" type="MeshInstance3D" parent="Bitmask_Box9"] 310 | cast_shadow = 0 311 | gi_mode = 0 312 | mesh = SubResource("3") 313 | surface_material_override/0 = SubResource("StandardMaterial3D_ehlfk") 314 | 315 | [node name="CollisionShape3D" type="CollisionShape3D" parent="Bitmask_Box9"] 316 | shape = SubResource("5") 317 | 318 | [node name="Bitmask_Box10" type="StaticBody3D" parent="."] 319 | transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 2) 320 | collision_layer = 0 321 | collision_mask = 0 322 | script = ExtResource("1") 323 | 324 | [node name="MeshInstance3D" type="MeshInstance3D" parent="Bitmask_Box10"] 325 | cast_shadow = 0 326 | gi_mode = 0 327 | mesh = SubResource("3") 328 | surface_material_override/0 = SubResource("StandardMaterial3D_sy1vq") 329 | 330 | [node name="CollisionShape3D" type="CollisionShape3D" parent="Bitmask_Box10"] 331 | shape = SubResource("5") 332 | 333 | [node name="Bitmask_Box11" type="StaticBody3D" parent="."] 334 | transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 2, 0, 2) 335 | collision_layer = 0 336 | collision_mask = 0 337 | script = ExtResource("1") 338 | 339 | [node name="MeshInstance3D" type="MeshInstance3D" parent="Bitmask_Box11"] 340 | cast_shadow = 0 341 | gi_mode = 0 342 | mesh = SubResource("3") 343 | surface_material_override/0 = SubResource("StandardMaterial3D_d8uas") 344 | 345 | [node name="CollisionShape3D" type="CollisionShape3D" parent="Bitmask_Box11"] 346 | shape = SubResource("5") 347 | 348 | [node name="Bitmask_Box12" type="StaticBody3D" parent="."] 349 | transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 2, 0, 0) 350 | collision_layer = 0 351 | collision_mask = 0 352 | script = ExtResource("1") 353 | 354 | [node name="MeshInstance3D" type="MeshInstance3D" parent="Bitmask_Box12"] 355 | cast_shadow = 0 356 | gi_mode = 0 357 | mesh = SubResource("3") 358 | surface_material_override/0 = SubResource("StandardMaterial3D_bbsmk") 359 | 360 | [node name="CollisionShape3D" type="CollisionShape3D" parent="Bitmask_Box12"] 361 | shape = SubResource("5") 362 | 363 | [node name="Bitmask_Box13" type="StaticBody3D" parent="."] 364 | transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 2, 0, -2) 365 | collision_layer = 0 366 | collision_mask = 0 367 | script = ExtResource("1") 368 | 369 | [node name="MeshInstance3D" type="MeshInstance3D" parent="Bitmask_Box13"] 370 | cast_shadow = 0 371 | gi_mode = 0 372 | mesh = SubResource("3") 373 | surface_material_override/0 = SubResource("StandardMaterial3D_srmd3") 374 | 375 | [node name="CollisionShape3D" type="CollisionShape3D" parent="Bitmask_Box13"] 376 | shape = SubResource("5") 377 | 378 | [node name="Bitmask_Box14" type="StaticBody3D" parent="."] 379 | transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, -2) 380 | collision_layer = 0 381 | collision_mask = 0 382 | script = ExtResource("1") 383 | 384 | [node name="MeshInstance3D" type="MeshInstance3D" parent="Bitmask_Box14"] 385 | cast_shadow = 0 386 | gi_mode = 0 387 | mesh = SubResource("3") 388 | surface_material_override/0 = SubResource("StandardMaterial3D_2edq1") 389 | 390 | [node name="CollisionShape3D" type="CollisionShape3D" parent="Bitmask_Box14"] 391 | shape = SubResource("5") 392 | 393 | [node name="Bitmask_Box15" type="StaticBody3D" parent="."] 394 | transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -2, 0, -2) 395 | collision_layer = 0 396 | collision_mask = 0 397 | script = ExtResource("1") 398 | 399 | [node name="MeshInstance3D" type="MeshInstance3D" parent="Bitmask_Box15"] 400 | cast_shadow = 0 401 | gi_mode = 0 402 | mesh = SubResource("3") 403 | surface_material_override/0 = SubResource("StandardMaterial3D_55lbw") 404 | 405 | [node name="CollisionShape3D" type="CollisionShape3D" parent="Bitmask_Box15"] 406 | shape = SubResource("5") 407 | 408 | [node name="Bitmask_Box16" type="StaticBody3D" parent="."] 409 | transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -2, 0, 0) 410 | collision_layer = 0 411 | collision_mask = 0 412 | script = ExtResource("1") 413 | 414 | [node name="MeshInstance3D" type="MeshInstance3D" parent="Bitmask_Box16"] 415 | cast_shadow = 0 416 | gi_mode = 0 417 | mesh = SubResource("3") 418 | surface_material_override/0 = SubResource("StandardMaterial3D_1d1lm") 419 | 420 | [node name="CollisionShape3D" type="CollisionShape3D" parent="Bitmask_Box16"] 421 | shape = SubResource("5") 422 | 423 | [node name="Bitmask_Box17" type="StaticBody3D" parent="."] 424 | transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -2, 0, 2) 425 | collision_layer = 0 426 | collision_mask = 0 427 | script = ExtResource("1") 428 | 429 | [node name="MeshInstance3D" type="MeshInstance3D" parent="Bitmask_Box17"] 430 | cast_shadow = 0 431 | gi_mode = 0 432 | mesh = SubResource("3") 433 | surface_material_override/0 = SubResource("StandardMaterial3D_xju05") 434 | 435 | [node name="CollisionShape3D" type="CollisionShape3D" parent="Bitmask_Box17"] 436 | shape = SubResource("5") 437 | 438 | [node name="Bitmask_Box18" type="StaticBody3D" parent="."] 439 | transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 2, 2) 440 | collision_layer = 0 441 | collision_mask = 0 442 | script = ExtResource("1") 443 | 444 | [node name="MeshInstance3D" type="MeshInstance3D" parent="Bitmask_Box18"] 445 | cast_shadow = 0 446 | gi_mode = 0 447 | mesh = SubResource("3") 448 | surface_material_override/0 = SubResource("StandardMaterial3D_gq4vg") 449 | 450 | [node name="CollisionShape3D" type="CollisionShape3D" parent="Bitmask_Box18"] 451 | shape = SubResource("5") 452 | 453 | [node name="Bitmask_Box19" type="StaticBody3D" parent="."] 454 | transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 2, 2, 2) 455 | collision_layer = 0 456 | collision_mask = 0 457 | script = ExtResource("1") 458 | 459 | [node name="MeshInstance3D" type="MeshInstance3D" parent="Bitmask_Box19"] 460 | cast_shadow = 0 461 | gi_mode = 0 462 | mesh = SubResource("3") 463 | surface_material_override/0 = SubResource("StandardMaterial3D_aiqti") 464 | 465 | [node name="CollisionShape3D" type="CollisionShape3D" parent="Bitmask_Box19"] 466 | shape = SubResource("5") 467 | 468 | [node name="Bitmask_Box20" type="StaticBody3D" parent="."] 469 | transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 2, 2, 0) 470 | collision_layer = 0 471 | collision_mask = 0 472 | script = ExtResource("1") 473 | 474 | [node name="MeshInstance3D" type="MeshInstance3D" parent="Bitmask_Box20"] 475 | cast_shadow = 0 476 | gi_mode = 0 477 | mesh = SubResource("3") 478 | surface_material_override/0 = SubResource("StandardMaterial3D_km4en") 479 | 480 | [node name="CollisionShape3D" type="CollisionShape3D" parent="Bitmask_Box20"] 481 | shape = SubResource("5") 482 | 483 | [node name="Bitmask_Box21" type="StaticBody3D" parent="."] 484 | transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 2, 2, -2) 485 | collision_layer = 0 486 | collision_mask = 0 487 | script = ExtResource("1") 488 | 489 | [node name="MeshInstance3D" type="MeshInstance3D" parent="Bitmask_Box21"] 490 | cast_shadow = 0 491 | gi_mode = 0 492 | mesh = SubResource("3") 493 | surface_material_override/0 = SubResource("StandardMaterial3D_f56y6") 494 | 495 | [node name="CollisionShape3D" type="CollisionShape3D" parent="Bitmask_Box21"] 496 | shape = SubResource("5") 497 | 498 | [node name="Bitmask_Box22" type="StaticBody3D" parent="."] 499 | transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 2, -2) 500 | collision_layer = 0 501 | collision_mask = 0 502 | script = ExtResource("1") 503 | 504 | [node name="MeshInstance3D" type="MeshInstance3D" parent="Bitmask_Box22"] 505 | cast_shadow = 0 506 | gi_mode = 0 507 | mesh = SubResource("3") 508 | surface_material_override/0 = SubResource("StandardMaterial3D_i8bol") 509 | 510 | [node name="CollisionShape3D" type="CollisionShape3D" parent="Bitmask_Box22"] 511 | shape = SubResource("5") 512 | 513 | [node name="Bitmask_Box23" type="StaticBody3D" parent="."] 514 | transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -2, 2, -2) 515 | collision_layer = 0 516 | collision_mask = 0 517 | script = ExtResource("1") 518 | 519 | [node name="MeshInstance3D" type="MeshInstance3D" parent="Bitmask_Box23"] 520 | cast_shadow = 0 521 | gi_mode = 0 522 | mesh = SubResource("3") 523 | surface_material_override/0 = SubResource("StandardMaterial3D_hgko1") 524 | 525 | [node name="CollisionShape3D" type="CollisionShape3D" parent="Bitmask_Box23"] 526 | shape = SubResource("5") 527 | 528 | [node name="Bitmask_Box24" type="StaticBody3D" parent="."] 529 | transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -2, 2, 0) 530 | collision_layer = 0 531 | collision_mask = 0 532 | script = ExtResource("1") 533 | 534 | [node name="MeshInstance3D" type="MeshInstance3D" parent="Bitmask_Box24"] 535 | cast_shadow = 0 536 | gi_mode = 0 537 | mesh = SubResource("3") 538 | surface_material_override/0 = SubResource("StandardMaterial3D_ppnlm") 539 | 540 | [node name="CollisionShape3D" type="CollisionShape3D" parent="Bitmask_Box24"] 541 | shape = SubResource("5") 542 | 543 | [node name="Bitmask_Box25" type="StaticBody3D" parent="."] 544 | transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -2, 2, 2) 545 | collision_layer = 0 546 | collision_mask = 0 547 | script = ExtResource("1") 548 | 549 | [node name="MeshInstance3D" type="MeshInstance3D" parent="Bitmask_Box25"] 550 | cast_shadow = 0 551 | gi_mode = 0 552 | mesh = SubResource("3") 553 | surface_material_override/0 = SubResource("StandardMaterial3D_fxw3k") 554 | 555 | [node name="CollisionShape3D" type="CollisionShape3D" parent="Bitmask_Box25"] 556 | shape = SubResource("5") 557 | 558 | [node name="Bitmask_Box26" type="StaticBody3D" parent="."] 559 | transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 2, 0) 560 | collision_layer = 0 561 | collision_mask = 0 562 | script = ExtResource("1") 563 | 564 | [node name="MeshInstance3D" type="MeshInstance3D" parent="Bitmask_Box26"] 565 | cast_shadow = 0 566 | gi_mode = 0 567 | mesh = SubResource("3") 568 | surface_material_override/0 = SubResource("StandardMaterial3D_njsqk") 569 | 570 | [node name="CollisionShape3D" type="CollisionShape3D" parent="Bitmask_Box26"] 571 | shape = SubResource("5") 572 | -------------------------------------------------------------------------------- /DEMO_PROJECT/addons/AutoGrid/HELP.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/XLIVE99/AutoGrid/36223c77efc87bff3b02159eb66410fe5cc9cab5/DEMO_PROJECT/addons/AutoGrid/HELP.pdf -------------------------------------------------------------------------------- /DEMO_PROJECT/addons/AutoGrid/activate_button.tscn: -------------------------------------------------------------------------------- 1 | [gd_scene load_steps=3 format=3 uid="uid://q1yc6xlhs6v1"] 2 | 3 | [ext_resource type="Script" path="res://addons/AutoGrid/edit_button.gd" id="2"] 4 | [ext_resource type="Texture2D" uid="uid://dbqfwhscvlu6s" path="res://addons/AutoGrid/res/GridEdit.svg" id="2_qo3u6"] 5 | 6 | [node name="Edit_Mode" type="Control"] 7 | layout_mode = 3 8 | anchors_preset = 15 9 | anchor_right = 1.0 10 | anchor_bottom = 1.0 11 | grow_horizontal = 2 12 | grow_vertical = 2 13 | script = ExtResource("2") 14 | 15 | [node name="MenuButton" type="MenuButton" parent="."] 16 | custom_minimum_size = Vector2(85, 24) 17 | layout_mode = 0 18 | offset_right = 120.0 19 | offset_bottom = 24.0 20 | text = "AutoGrid" 21 | icon = ExtResource("2_qo3u6") 22 | expand_icon = true 23 | switch_on_hover = true 24 | item_count = 11 25 | popup/item_0/text = "Create Bitmask" 26 | popup/item_0/id = 0 27 | popup/item_1/text = "Remove Bitmask" 28 | popup/item_1/id = 1 29 | popup/item_2/text = "Expand Bitmask" 30 | popup/item_2/id = 2 31 | popup/item_3/text = "Shrink Bitmask" 32 | popup/item_3/id = 3 33 | popup/item_4/text = "" 34 | popup/item_4/id = 4 35 | popup/item_4/separator = true 36 | popup/item_5/text = "All Axises" 37 | popup/item_5/id = 5 38 | popup/item_6/text = "Y & Z Axises" 39 | popup/item_6/id = 6 40 | popup/item_7/text = "X & Z Axises" 41 | popup/item_7/id = 7 42 | popup/item_8/text = "X & Y Axises" 43 | popup/item_8/id = 8 44 | popup/item_9/text = "" 45 | popup/item_9/id = 9 46 | popup/item_9/separator = true 47 | popup/item_10/text = "Set Icon" 48 | popup/item_10/id = 10 49 | -------------------------------------------------------------------------------- /DEMO_PROJECT/addons/AutoGrid/bitmask_box.gd: -------------------------------------------------------------------------------- 1 | @tool 2 | extends StaticBody3D 3 | 4 | var enabled : bool: set = enabled_changed 5 | 6 | func toggle_box(): 7 | self.enabled = !enabled 8 | 9 | func enabled_changed(val): 10 | enabled = val 11 | if enabled: 12 | $MeshInstance3D.get_surface_override_material(0).albedo_color = Color.RED 13 | else: 14 | $MeshInstance3D.get_surface_override_material(0).albedo_color = Color.WHITE 15 | 16 | func activate(): 17 | collision_layer = 524288 18 | $MeshInstance3D.get_surface_override_material(0).albedo_color.a = 1.0 19 | 20 | func deactivate(): 21 | collision_layer = 0 22 | $MeshInstance3D.get_surface_override_material(0).albedo_color.a = 0.15 23 | 24 | func is_active() -> bool: 25 | return collision_layer == 524288 26 | -------------------------------------------------------------------------------- /DEMO_PROJECT/addons/AutoGrid/bitmask_holder.gd: -------------------------------------------------------------------------------- 1 | @tool 2 | extends MeshInstance3D 3 | 4 | var bit_value : int = 0 5 | var is_icon : bool = false 6 | 7 | var is_active : bool = false 8 | 9 | enum { All, AxisX, AxisY, AxisZ} 10 | var currentAxis = All 11 | 12 | func calculate_bit_value() -> int: 13 | var i = 0 14 | for child in get_children(): 15 | if child.visible && child.enabled: 16 | bit_value |= 1 << i 17 | i += 1 18 | 19 | return bit_value 20 | 21 | func set_axis(axis : int, forceActive : bool = false): 22 | if axis == 0: 23 | if currentAxis != All: 24 | set_child_from_bit(9223372036854775807, forceActive) 25 | currentAxis = All 26 | elif axis == 1: 27 | if currentAxis != AxisX: 28 | set_child_from_bit(35791633, forceActive) 29 | currentAxis = AxisX 30 | elif axis == 2: 31 | if currentAxis != AxisY: 32 | set_child_from_bit(130560, forceActive) 33 | currentAxis = AxisY 34 | elif axis == 3: 35 | if currentAxis != AxisZ: 36 | set_child_from_bit(42502468, forceActive) 37 | currentAxis = AxisZ 38 | else: 39 | print("Invalid axis.") 40 | 41 | func set_child_from_bit(mask : int, forceActive : bool = false): 42 | for child in get_children(): 43 | if mask & 1 == 1: 44 | if child.is_active() || forceActive: 45 | child.activate() 46 | child.visible = true 47 | else: 48 | child.deactivate() 49 | child.visible = false 50 | mask = mask >> 1 51 | 52 | func enable_from_bit(mask : int): 53 | for child in get_children(): 54 | child.enabled = mask & 1 == 1 55 | mask = mask >> 1 56 | if !is_active: 57 | deactivate() 58 | 59 | is_icon = get_surface_override_material(0).albedo_color.a > 0.3 60 | 61 | func set_for_icon(): 62 | is_icon = true 63 | get_surface_override_material(0).albedo_color.a = 0.7 64 | 65 | func disable_icon(): 66 | is_icon = false 67 | get_surface_override_material(0).albedo_color.a = 0.0 68 | 69 | func activate(): 70 | is_active = true 71 | for child in get_children(): 72 | if child.visible: 73 | child.activate() 74 | 75 | func deactivate(): 76 | is_active = false 77 | for child in get_children(): 78 | if child.visible: 79 | child.deactivate() 80 | 81 | func set_size(size : float): 82 | var new_size = Vector3.ONE * size 83 | mesh.radius = size 84 | mesh.height = size * 2 85 | for child in get_children(): 86 | var dir = child.position 87 | child.position = dir.normalized().round() * size * 2 88 | child.scale = new_size 89 | -------------------------------------------------------------------------------- /DEMO_PROJECT/addons/AutoGrid/edit_button.gd: -------------------------------------------------------------------------------- 1 | @tool 2 | extends Control 3 | 4 | var popup : PopupMenu 5 | var core 6 | 7 | var auto_bitmask : PackedScene 8 | 9 | func _enter_tree(): 10 | #Assign controls 11 | popup = get_node("MenuButton").get_popup() 12 | 13 | #Set popup 14 | popup.set_item_accelerator(0, KEY_T | KEY_MASK_SHIFT) 15 | popup.set_item_accelerator(1, KEY_Q | KEY_MASK_SHIFT) 16 | popup.set_item_accelerator(2, KEY_1 | KEY_MASK_SHIFT) 17 | popup.set_item_accelerator(3, KEY_2 | KEY_MASK_SHIFT) 18 | if !popup.is_connected("id_pressed", Callable(self, "popup_pressed")): 19 | popup.connect("id_pressed", Callable(self, "popup_pressed")) 20 | 21 | auto_bitmask = preload("res://addons/AutoGrid/AutoGrid_Bitmask.tscn") 22 | 23 | func popup_pressed(id): 24 | if id == 0: 25 | create_bitmask() 26 | if id == 1: 27 | remove_bitmask() 28 | if id == 2: 29 | increase_size() 30 | if id == 3: 31 | decrease_size() 32 | if id > 4 && id < 9: 33 | core.editAxis = id - 5 34 | if id == 10: 35 | set_icon() 36 | 37 | func create_bitmask(): 38 | var selecteds = core.get_selection_list() 39 | if selecteds == null: 40 | print("--- AUTOGRID ERROR --- Please select MeshInstance3D.") 41 | return 42 | 43 | var activeness : bool = selecteds.size() == 1 44 | 45 | for selected in selecteds: 46 | 47 | if !(selected is MeshInstance3D): 48 | continue 49 | # Skip autogrid nodes, detecting with string is very bad! (Need improvement) 50 | elif selected.name.begins_with("AutoGrid"): 51 | continue 52 | 53 | # if selected.has_node("AutoGrid_Bitmask"): 54 | # print("--- AUTOGRID WARNING --- Selected node already has a bitmask.") 55 | if !selected.has_node("AutoGrid_Bitmask"): 56 | var bitmask = auto_bitmask.instantiate() 57 | selected.add_child(bitmask) 58 | bitmask.set_owner(get_tree().edited_scene_root) 59 | core.set_bitmask(bitmask) 60 | bitmask.global_transform.basis = Basis() 61 | 62 | if activeness: 63 | bitmask.activate() 64 | else: 65 | bitmask.deactivate() 66 | 67 | func remove_bitmask(): 68 | var selecteds = core.get_selection_list() 69 | if selecteds == null: 70 | print("--- AUTOGRID ERROR --- Please select MeshInstance3D.") 71 | return 72 | 73 | for selected in selecteds: 74 | 75 | if !(selected is MeshInstance3D): 76 | continue 77 | 78 | if selected.has_node("AutoGrid_Bitmask"): 79 | var bitmask = selected.get_node("AutoGrid_Bitmask") 80 | selected.remove_child(bitmask) 81 | bitmask.queue_free() 82 | 83 | func increase_size(): 84 | core.increase_bitmasks_size() 85 | 86 | func decrease_size(): 87 | core.decrease_bitmasks_size() 88 | 89 | func set_icon(): 90 | var selected = core.get_selection() 91 | if selected == null: 92 | print("--- AUTOGRID ERROR --- Please select MeshInstance3D.") 93 | return 94 | if selected.has_node("AutoGrid_Bitmask"): 95 | core.change_icon(selected) 96 | -------------------------------------------------------------------------------- /DEMO_PROJECT/addons/AutoGrid/gridmap_button.gd: -------------------------------------------------------------------------------- 1 | @tool 2 | extends Control 3 | 4 | var popup : PopupMenu 5 | 6 | var core 7 | 8 | func _on_OptionButton_item_selected(index): 9 | core.bitmaskMode = index 10 | 11 | func _on_Github_Rich_meta_clicked(meta): 12 | OS.shell_open(meta) 13 | 14 | func _on_Autotile_Check_toggled(button_pressed): 15 | core.autotileEnabled = button_pressed 16 | 17 | func _on_Edit_Mode_Checked_toggled(button_pressed): 18 | core.editMode = button_pressed 19 | $VBoxContainer/Buttons.visible = button_pressed 20 | 21 | func _on_Create_Autotile_pressed(): 22 | core.create_autotile_pressed() 23 | 24 | func _on_Reload_Autotile_pressed(): 25 | core.reload_autotile_info(true) 26 | 27 | func _on_CheckBox_toggled(button_pressed): 28 | core.performanceMode = button_pressed 29 | 30 | func _on_Auto_Axis_Opt_item_selected(index): 31 | core.autoAxis = index 32 | 33 | func _on_Auto_Scan_Axis_Opt_item_selected(index): 34 | core.scanAxis = index 35 | -------------------------------------------------------------------------------- /DEMO_PROJECT/addons/AutoGrid/gridmap_button.tscn: -------------------------------------------------------------------------------- 1 | [gd_scene load_steps=5 format=3 uid="uid://bj8vtrhikitn4"] 2 | 3 | [ext_resource type="Script" path="res://addons/AutoGrid/gridmap_button.gd" id="2"] 4 | [ext_resource type="Texture2D" uid="uid://dbiw3nviwl7vk" path="res://addons/AutoGrid/res/ErrorSign.svg" id="2_k6g13"] 5 | 6 | [sub_resource type="StyleBoxEmpty" id="1"] 7 | 8 | [sub_resource type="StyleBoxEmpty" id="2"] 9 | 10 | [node name="AutoGrid" type="Control"] 11 | layout_mode = 3 12 | anchors_preset = 15 13 | anchor_right = 1.0 14 | anchor_bottom = 1.0 15 | grow_horizontal = 2 16 | grow_vertical = 2 17 | script = ExtResource("2") 18 | 19 | [node name="VBoxContainer" type="VBoxContainer" parent="."] 20 | layout_mode = 0 21 | anchor_right = 1.0 22 | anchor_bottom = 1.0 23 | 24 | [node name="Label" type="Label" parent="VBoxContainer"] 25 | layout_mode = 2 26 | size_flags_horizontal = 5 27 | size_flags_vertical = 1 28 | text = "AutoGrid 29 | By XLIVE99" 30 | horizontal_alignment = 1 31 | 32 | [node name="HSeparator" type="HSeparator" parent="VBoxContainer"] 33 | custom_minimum_size = Vector2(0, 15) 34 | layout_mode = 2 35 | 36 | [node name="Label2" type="Label" parent="VBoxContainer"] 37 | layout_mode = 2 38 | size_flags_vertical = 1 39 | text = "Please read HELP.pdf for usage 40 | Thank you for downloading" 41 | horizontal_alignment = 1 42 | 43 | [node name="HSeparator2" type="HSeparator" parent="VBoxContainer"] 44 | custom_minimum_size = Vector2(0, 15) 45 | layout_mode = 2 46 | 47 | [node name="VBox" type="VBoxContainer" parent="VBoxContainer"] 48 | layout_mode = 2 49 | size_flags_horizontal = 3 50 | size_flags_vertical = 3 51 | 52 | [node name="Autotile" type="HBoxContainer" parent="VBoxContainer/VBox"] 53 | layout_mode = 2 54 | 55 | [node name="Autotile" type="Label" parent="VBoxContainer/VBox/Autotile"] 56 | custom_minimum_size = Vector2(0, 20) 57 | layout_mode = 2 58 | size_flags_horizontal = 3 59 | mouse_filter = 1 60 | text = "Autotile" 61 | 62 | [node name="Autotile_Check" type="CheckBox" parent="VBoxContainer/VBox/Autotile"] 63 | layout_mode = 2 64 | size_flags_horizontal = 3 65 | button_pressed = true 66 | shortcut_in_tooltip = false 67 | text = "On" 68 | 69 | [node name="Auto_Mode" type="HBoxContainer" parent="VBoxContainer/VBox"] 70 | layout_mode = 2 71 | 72 | [node name="Auto_Mode" type="Label" parent="VBoxContainer/VBox/Auto_Mode"] 73 | custom_minimum_size = Vector2(0, 20) 74 | layout_mode = 2 75 | size_flags_horizontal = 3 76 | text = "Autotile Mode" 77 | 78 | [node name="Auto_Mode_Opt" type="OptionButton" parent="VBoxContainer/VBox/Auto_Mode"] 79 | custom_minimum_size = Vector2(0, 20) 80 | layout_mode = 2 81 | size_flags_horizontal = 3 82 | shortcut_in_tooltip = false 83 | item_count = 2 84 | selected = 0 85 | popup/item_0/text = "Full 3x3" 86 | popup/item_0/id = 0 87 | popup/item_1/text = "Minimal 3x3" 88 | popup/item_1/id = 1 89 | 90 | [node name="Auto_Axis" type="HBoxContainer" parent="VBoxContainer/VBox"] 91 | layout_mode = 2 92 | 93 | [node name="Label" type="Label" parent="VBoxContainer/VBox/Auto_Axis"] 94 | layout_mode = 2 95 | size_flags_horizontal = 3 96 | tooltip_text = "Only uses selected axises while checking surroundings. 97 | If you are using only 2 axises (For example X & Z for top 98 | down games) then leaving this as \"All\" or \"X & Z Axis\" 99 | will be fine. If you are planning to create different 100 | height tiles than using \"All\" might cause problem if 101 | that tile has a bottom or top neighbour." 102 | mouse_filter = 1 103 | text = "Autotile Axis" 104 | 105 | [node name="Auto_Axis_Opt" type="OptionButton" parent="VBoxContainer/VBox/Auto_Axis"] 106 | layout_mode = 2 107 | size_flags_horizontal = 3 108 | item_count = 4 109 | selected = 0 110 | popup/item_0/text = "All" 111 | popup/item_0/id = 0 112 | popup/item_1/text = "Y & Z Axises" 113 | popup/item_1/id = 1 114 | popup/item_2/text = "X & Z Axises" 115 | popup/item_2/id = 2 116 | popup/item_3/text = "X & Y Axises" 117 | popup/item_3/id = 3 118 | 119 | [node name="Auto_Scan_Axis" type="HBoxContainer" parent="VBoxContainer/VBox"] 120 | layout_mode = 2 121 | 122 | [node name="Label" type="Label" parent="VBoxContainer/VBox/Auto_Scan_Axis"] 123 | layout_mode = 2 124 | size_flags_horizontal = 3 125 | tooltip_text = "Uses selected axis as normal of the tile. Select which 126 | axis direction your tile is facing (or which direction is 127 | considered ground). For example, the ground will use 128 | \"Y axis\" while background wall will use \"Z axis\" in 129 | 2.5D games." 130 | mouse_filter = 1 131 | text = "Tile Normal Axis" 132 | 133 | [node name="Auto_Scan_Axis_Opt" type="OptionButton" parent="VBoxContainer/VBox/Auto_Scan_Axis"] 134 | layout_mode = 2 135 | size_flags_horizontal = 3 136 | item_count = 3 137 | selected = 1 138 | popup/item_0/text = "X Axis" 139 | popup/item_0/id = 0 140 | popup/item_1/text = "Y Axis" 141 | popup/item_1/id = 1 142 | popup/item_2/text = "Z Axis" 143 | popup/item_2/id = 2 144 | 145 | [node name="Control" type="Control" parent="VBoxContainer/VBox"] 146 | custom_minimum_size = Vector2(0, 15) 147 | layout_mode = 2 148 | 149 | [node name="Edit_Mode" type="HBoxContainer" parent="VBoxContainer/VBox"] 150 | layout_mode = 2 151 | 152 | [node name="Edit_Mode" type="Label" parent="VBoxContainer/VBox/Edit_Mode"] 153 | custom_minimum_size = Vector2(0, 20) 154 | layout_mode = 2 155 | size_flags_horizontal = 3 156 | text = "Edit Mode" 157 | 158 | [node name="Edit_Mode_Checked" type="CheckBox" parent="VBoxContainer/VBox/Edit_Mode"] 159 | layout_mode = 2 160 | size_flags_horizontal = 3 161 | shortcut_in_tooltip = false 162 | text = "On" 163 | 164 | [node name="Performance_Mode" type="HBoxContainer" parent="VBoxContainer/VBox"] 165 | custom_minimum_size = Vector2(0, 24) 166 | layout_mode = 2 167 | 168 | [node name="Performance_Mode" type="Label" parent="VBoxContainer/VBox/Performance_Mode"] 169 | layout_mode = 2 170 | size_flags_horizontal = 3 171 | text = "Performance Mode" 172 | 173 | [node name="CheckBox" type="CheckBox" parent="VBoxContainer/VBox/Performance_Mode"] 174 | layout_mode = 2 175 | size_flags_horizontal = 3 176 | button_pressed = true 177 | shortcut_in_tooltip = false 178 | text = "On" 179 | 180 | [node name="Buttons" type="HBoxContainer" parent="VBoxContainer"] 181 | visible = false 182 | layout_mode = 2 183 | alignment = 1 184 | 185 | [node name="Control" type="CenterContainer" parent="VBoxContainer/Buttons"] 186 | custom_minimum_size = Vector2(0, 20) 187 | layout_mode = 2 188 | size_flags_horizontal = 3 189 | 190 | [node name="Reload_Autotile" type="Button" parent="VBoxContainer/Buttons/Control"] 191 | layout_mode = 2 192 | text = "Reload Autotile Info" 193 | 194 | [node name="Control2" type="CenterContainer" parent="VBoxContainer/Buttons"] 195 | custom_minimum_size = Vector2(0, 20) 196 | layout_mode = 2 197 | size_flags_horizontal = 3 198 | 199 | [node name="Create_Autotile" type="Button" parent="VBoxContainer/Buttons/Control2"] 200 | layout_mode = 2 201 | shortcut_in_tooltip = false 202 | text = "Create Autotile Info" 203 | 204 | [node name="HSeparator3" type="HSeparator" parent="VBoxContainer"] 205 | custom_minimum_size = Vector2(0, 15) 206 | layout_mode = 2 207 | 208 | [node name="Warning" type="HBoxContainer" parent="VBoxContainer"] 209 | layout_mode = 2 210 | 211 | [node name="TextureRect" type="TextureRect" parent="VBoxContainer/Warning"] 212 | custom_minimum_size = Vector2(64, 64) 213 | layout_mode = 2 214 | texture = ExtResource("2_k6g13") 215 | expand_mode = 1 216 | 217 | [node name="Label" type="Label" parent="VBoxContainer/Warning"] 218 | custom_minimum_size = Vector2(100, 0) 219 | layout_mode = 2 220 | size_flags_horizontal = 3 221 | text = "Please DO NOT change automatically created node names! And do not change .agrid file paths!" 222 | autowrap_mode = 2 223 | 224 | [node name="HSeparator4" type="HSeparator" parent="VBoxContainer"] 225 | custom_minimum_size = Vector2(0, 15) 226 | layout_mode = 2 227 | 228 | [node name="Bug_Report" type="VBoxContainer" parent="VBoxContainer"] 229 | custom_minimum_size = Vector2(0, 28) 230 | layout_mode = 2 231 | size_flags_horizontal = 3 232 | 233 | [node name="Github_Rich" type="RichTextLabel" parent="VBoxContainer/Bug_Report"] 234 | custom_minimum_size = Vector2(0, 15) 235 | layout_mode = 2 236 | theme_override_styles/normal = SubResource("1") 237 | bbcode_enabled = true 238 | text = "For [color=62ED53]feature request[/color] or [color=EF2D3A]bug report[/color], you can open issue from [url=https://github.com/XLIVE99/AutoGrid]github repo[/url]" 239 | fit_content = true 240 | scroll_active = false 241 | 242 | [node name="Github_Rich2" type="RichTextLabel" parent="VBoxContainer/Bug_Report"] 243 | custom_minimum_size = Vector2(0, 15) 244 | layout_mode = 2 245 | theme_override_styles/normal = SubResource("2") 246 | bbcode_enabled = true 247 | text = "Also you can see my other works from my [url=https://www.linkedin.com/in/burak-idilmek-856669175/]LinkedIn[/url] (Feel free to message me)" 248 | fit_content = true 249 | scroll_active = false 250 | 251 | [node name="Version_label" type="Label" parent="VBoxContainer"] 252 | layout_mode = 2 253 | size_flags_vertical = 1 254 | theme_override_colors/font_color = Color(0.568627, 0.568627, 0.568627, 1) 255 | text = "Version 1.3" 256 | horizontal_alignment = 2 257 | 258 | [connection signal="toggled" from="VBoxContainer/VBox/Autotile/Autotile_Check" to="." method="_on_Autotile_Check_toggled"] 259 | [connection signal="item_selected" from="VBoxContainer/VBox/Auto_Mode/Auto_Mode_Opt" to="." method="_on_OptionButton_item_selected"] 260 | [connection signal="item_selected" from="VBoxContainer/VBox/Auto_Axis/Auto_Axis_Opt" to="." method="_on_Auto_Axis_Opt_item_selected"] 261 | [connection signal="item_selected" from="VBoxContainer/VBox/Auto_Scan_Axis/Auto_Scan_Axis_Opt" to="." method="_on_Auto_Scan_Axis_Opt_item_selected"] 262 | [connection signal="toggled" from="VBoxContainer/VBox/Edit_Mode/Edit_Mode_Checked" to="." method="_on_Edit_Mode_Checked_toggled"] 263 | [connection signal="toggled" from="VBoxContainer/VBox/Performance_Mode/CheckBox" to="." method="_on_CheckBox_toggled"] 264 | [connection signal="pressed" from="VBoxContainer/Buttons/Control/Reload_Autotile" to="." method="_on_Reload_Autotile_pressed"] 265 | [connection signal="pressed" from="VBoxContainer/Buttons/Control2/Create_Autotile" to="." method="_on_Create_Autotile_pressed"] 266 | [connection signal="meta_clicked" from="VBoxContainer/Bug_Report/Github_Rich" to="." method="_on_Github_Rich_meta_clicked"] 267 | [connection signal="meta_clicked" from="VBoxContainer/Bug_Report/Github_Rich2" to="." method="_on_Github_Rich_meta_clicked"] 268 | -------------------------------------------------------------------------------- /DEMO_PROJECT/addons/AutoGrid/plugin.cfg: -------------------------------------------------------------------------------- 1 | [plugin] 2 | 3 | name="AutoGrid" 4 | description="Autotile system for gridmap" 5 | author="XLIVE99" 6 | version="1.3" 7 | script="core.gd" 8 | -------------------------------------------------------------------------------- /DEMO_PROJECT/addons/AutoGrid/res/Bitmask_Material.tres: -------------------------------------------------------------------------------- 1 | [gd_resource type="StandardMaterial3D" format=3 uid="uid://bloj5n02v4184"] 2 | 3 | [resource] 4 | resource_local_to_scene = true 5 | shading_mode = 2 6 | -------------------------------------------------------------------------------- /DEMO_PROJECT/addons/AutoGrid/res/ErrorSign.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /DEMO_PROJECT/addons/AutoGrid/res/ErrorSign.svg.import: -------------------------------------------------------------------------------- 1 | [remap] 2 | 3 | importer="texture" 4 | type="CompressedTexture2D" 5 | uid="uid://dbiw3nviwl7vk" 6 | path="res://.godot/imported/ErrorSign.svg-2941aa11eb99a28b29252bf3a6f737f5.ctex" 7 | metadata={ 8 | "vram_texture": false 9 | } 10 | 11 | [deps] 12 | 13 | source_file="res://addons/AutoGrid/res/ErrorSign.svg" 14 | dest_files=["res://.godot/imported/ErrorSign.svg-2941aa11eb99a28b29252bf3a6f737f5.ctex"] 15 | 16 | [params] 17 | 18 | compress/mode=0 19 | compress/high_quality=false 20 | compress/lossy_quality=0.7 21 | compress/hdr_compression=1 22 | compress/normal_map=0 23 | compress/channel_pack=0 24 | mipmaps/generate=false 25 | mipmaps/limit=-1 26 | roughness/mode=0 27 | roughness/src_normal="" 28 | process/fix_alpha_border=false 29 | process/premult_alpha=false 30 | process/normal_map_invert_y=false 31 | process/hdr_as_srgb=false 32 | process/hdr_clamp_exposure=false 33 | process/size_limit=0 34 | detect_3d/compress_to=1 35 | svg/scale=5.0 36 | editor/scale_with_editor_scale=false 37 | editor/convert_colors_with_editor_theme=false 38 | -------------------------------------------------------------------------------- /DEMO_PROJECT/addons/AutoGrid/res/GridEdit.svg: -------------------------------------------------------------------------------- 1 | 2 | 17 | 19 | 20 | 22 | image/svg+xml 23 | 25 | 26 | 27 | 28 | 30 | 50 | 53 | 54 | 58 | 62 | 63 | 68 | 69 | -------------------------------------------------------------------------------- /DEMO_PROJECT/addons/AutoGrid/res/GridEdit.svg.import: -------------------------------------------------------------------------------- 1 | [remap] 2 | 3 | importer="texture" 4 | type="CompressedTexture2D" 5 | uid="uid://dbqfwhscvlu6s" 6 | path="res://.godot/imported/GridEdit.svg-49a1a02c247064f95091adb9ab3fe622.ctex" 7 | metadata={ 8 | "vram_texture": false 9 | } 10 | 11 | [deps] 12 | 13 | source_file="res://addons/AutoGrid/res/GridEdit.svg" 14 | dest_files=["res://.godot/imported/GridEdit.svg-49a1a02c247064f95091adb9ab3fe622.ctex"] 15 | 16 | [params] 17 | 18 | compress/mode=0 19 | compress/high_quality=false 20 | compress/lossy_quality=0.7 21 | compress/hdr_compression=1 22 | compress/normal_map=0 23 | compress/channel_pack=0 24 | mipmaps/generate=false 25 | mipmaps/limit=-1 26 | roughness/mode=0 27 | roughness/src_normal="" 28 | process/fix_alpha_border=false 29 | process/premult_alpha=false 30 | process/normal_map_invert_y=false 31 | process/hdr_as_srgb=false 32 | process/hdr_clamp_exposure=false 33 | process/size_limit=0 34 | detect_3d/compress_to=1 35 | svg/scale=5.0 36 | editor/scale_with_editor_scale=false 37 | editor/convert_colors_with_editor_theme=false 38 | -------------------------------------------------------------------------------- /DEMO_PROJECT/default_env.tres: -------------------------------------------------------------------------------- 1 | [gd_resource type="Environment" load_steps=2 format=3 uid="uid://db0iwy58mr8gw"] 2 | 3 | [sub_resource type="Sky" id="1"] 4 | 5 | [resource] 6 | background_mode = 2 7 | sky = SubResource("1") 8 | -------------------------------------------------------------------------------- /DEMO_PROJECT/icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/XLIVE99/AutoGrid/36223c77efc87bff3b02159eb66410fe5cc9cab5/DEMO_PROJECT/icon.png -------------------------------------------------------------------------------- /DEMO_PROJECT/icon.png.import: -------------------------------------------------------------------------------- 1 | [remap] 2 | 3 | importer="texture" 4 | type="CompressedTexture2D" 5 | uid="uid://qvnt4f5yjr80" 6 | path="res://.godot/imported/icon.png-487276ed1e3a0c39cad0279d744ee560.ctex" 7 | metadata={ 8 | "vram_texture": false 9 | } 10 | 11 | [deps] 12 | 13 | source_file="res://icon.png" 14 | dest_files=["res://.godot/imported/icon.png-487276ed1e3a0c39cad0279d744ee560.ctex"] 15 | 16 | [params] 17 | 18 | compress/mode=0 19 | compress/high_quality=false 20 | compress/lossy_quality=0.7 21 | compress/hdr_compression=1 22 | compress/normal_map=0 23 | compress/channel_pack=0 24 | mipmaps/generate=false 25 | mipmaps/limit=-1 26 | roughness/mode=0 27 | roughness/src_normal="" 28 | process/fix_alpha_border=true 29 | process/premult_alpha=false 30 | process/normal_map_invert_y=false 31 | process/hdr_as_srgb=false 32 | process/hdr_clamp_exposure=false 33 | process/size_limit=0 34 | detect_3d/compress_to=1 35 | -------------------------------------------------------------------------------- /DEMO_PROJECT/project.godot: -------------------------------------------------------------------------------- 1 | ; Engine configuration file. 2 | ; It's best edited using the editor UI and not directly, 3 | ; since the parameters that go here are not all obvious. 4 | ; 5 | ; Format: 6 | ; [section] ; section goes between [] 7 | ; param=value ; assign values to parameters 8 | 9 | config_version=5 10 | 11 | [application] 12 | 13 | config/name="Gridmap_AT" 14 | run/main_scene="res://DEMO/Demo_Minimal_3x3.tscn" 15 | config/features=PackedStringArray("4.2") 16 | config/icon="res://icon.png" 17 | 18 | [editor_plugins] 19 | 20 | enabled=PackedStringArray("res://addons/AutoGrid/plugin.cfg") 21 | 22 | [rendering] 23 | 24 | environment/defaults/default_environment="res://default_env.tres" 25 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2021 Burak 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # AutoGrid 2 | ###### Version 1.3 3 | AutoGrid is an autotile system for the GridMap node in the Godot Engine. AutoGrid works similar to the TileMap node. 4 | 5 | ## **Installation** 6 | 1. Copy the "addons/AutoGrid" folder to your "addons" folder in the project directory. If you don't have any "addons" folder you can create it.
7 | 2. Set the AutoGrid as active in "Project>Project Settings>Plugins".
8 | ![](images/enable_plugin.GIF) 9 | ## **Usage** 10 | All AutoGrid settings are in the AutoGrid dock panel which is in same tab as the inspector panel.
11 | ![](images/dock_panel.png) 12 | ### **Setting the bitmasks** 13 | 1. Set the scene as shown in [Creating a MeshLibrary](https://docs.godotengine.org/en/stable/tutorials/3d/using_gridmaps.html).
14 | 2. Enable the "Edit Mode" from the AutoGrid panel then select a MeshInstance you want to create the bitmask of it.
15 | ![](images/Edit_Button_Options.png) 16 | 3. You will see a button named "AutoGrid" on top of the scene panel. 17 | - Create Bitmask: Creates a bitmask for the selected MeshInstance. 18 | - Remove Bitmask: Deletes the bitmask of the selected MeshInstance. 19 | - Expand Bitmask: Expands the bitmasks. 20 | - Shrink Bitmask: Shrinks the bitmasks. 21 | - All Axises: Shows the full bitmask. 22 | - Y & Z Axises: Shows Y & Z axises of the bitmask (Global X). 23 | - X & Z Axises: Shows X & Z axises of the bitmask (Global Y). 24 | - X & Y Axises: Shows X & Y axises of the bitmask (Global Z). 25 | - Set Icon: Sets the icon for the AutoGrid tile to be created (Default is the first child of the scene, selected icon will be shown as blue transparent sphere). 26 | 4. After creating the bitmask you can simply paint it by clicking on white cubes, painted cubes will become red. Click on the cube again to disable it.
27 | ![](images/Bitmask.png) 28 | ### **Creating autotile info** 29 | After setting all the bitmasks. Click to "Create Autotile Info" button located in the AutoGrid panel. Then create MeshLibrary again and you are ready to go! The autotile system will work now.
30 | 31 | ***Read "addons>AutoGrid>HELP.pdf" for more information*** 32 | 33 | ### **Settings** 34 | ![](images/panel_inside.png) 35 | - Autotile: Enables autotile system. 36 | - Autotile Mode: 37 | - Full 3x3: Checks every corner for fit the perfect tile for that place (Same as tilemap). 38 | - Minimal 3x3: Checks the corners three by three (Same as tilemap). 39 | - Autotile Axis: Limits the autotile check axis. Useful when gridmap uses multiple floors 40 | - All: Checks all directions to fit the tile. 41 | - Y & Z Axises: Checks only Y & Z Axises (up-down, forward-back). 42 | - X & Z Axises: Checks only X & Z axises (right-left, forward-back). Useful for top-down games. 43 | - X & Y Axises: Checks only X & Y axises (right-left, up-down). Same as 2D tilemap, useful for side-scroller games. 44 | - Tile Normal Axis: Select the tile's facing direction. Changes autotile scan orientation. 45 | - X Axis: Tile's facing direction is global X axis. 46 | - Y Axis: Tile's facing direction is global Y axis. Useful for ground tiles. 47 | - Z Axis: Tile's facing direction is global Z axis. Useful for wall (or background) tiles. 48 | - Edit Mode: Enables the bitmap edit button. 49 | - Performance Mode: If enabled only checks for new tiles, do not check for repainted tiles (If map is too big, enabling this might increase the performance). 50 | - Reload Autotile Info: Reloads the bitmasks value. (Will shown if Edit mode is enabled) 51 | - Create Autotile Info: Creates the autotile file. (Will shown if Edit mode is enabled) 52 | ![](images/Performance_Mode.png) 53 | 54 | ## **Demo project** 55 | Demo project is designed for ***only Y axis*** and ***minimal 3x3*** mode, make sure you selected "Minimal 3x3" from the "Autotile Mode" and "Only Y" from the "Autotile Axis".
56 | You can open the "Demo_Scene.tscn" and start painting. **For better visual you can rotate the tile to look upward by pressing "A".** 57 | ### **Resources used at demo** 58 | - "Dungeon Tileset" by buch (https://opengameart.org/users/buch) is licensed under Creative Commons Attribution (https://creativecommons.org/publicdomain/zero/1.0/). 59 | 60 | ## **Limitations** 61 | - AutoGrid doesn't provide extended MeshLibrary, therefore all limitations on the MeshLibrary will remain. 62 | - You need to move your cursor to the scene while using edit mode shortcuts. 63 | - Re-open the Godot Engine will set all the bitmasks as active (If no need to edit the bitmasks then you can ignore this). However, reloading the autotile info (if any available) will solve this. 64 | - Since the GridMap node doesn't have a last edited cell variable, performance cost will increase with the cell count. 65 | - Gridmap's selection operations don't work with the AutoGrid. 66 | - AutoGrid uses global axis. Therefore rotated tiles doesn't change anything. 67 | -------------------------------------------------------------------------------- /addons/AutoGrid/AutoGrid_Bitmask.tscn: -------------------------------------------------------------------------------- 1 | [gd_scene load_steps=33 format=3 uid="uid://d0erc1sce6n6o"] 2 | 3 | [ext_resource type="Script" path="res://addons/AutoGrid/bitmask_box.gd" id="1"] 4 | [ext_resource type="Script" path="res://addons/AutoGrid/bitmask_holder.gd" id="2"] 5 | 6 | [sub_resource type="SphereMesh" id="1"] 7 | radial_segments = 8 8 | rings = 4 9 | 10 | [sub_resource type="StandardMaterial3D" id="StandardMaterial3D_p4s0r"] 11 | resource_local_to_scene = true 12 | transparency = 1 13 | shading_mode = 2 14 | albedo_color = Color(0, 0, 0.345098, 0) 15 | 16 | [sub_resource type="BoxMesh" id="3"] 17 | 18 | [sub_resource type="StandardMaterial3D" id="StandardMaterial3D_225ob"] 19 | resource_local_to_scene = true 20 | transparency = 1 21 | shading_mode = 2 22 | albedo_color = Color(1, 1, 1, 0.14902) 23 | 24 | [sub_resource type="BoxShape3D" id="5"] 25 | 26 | [sub_resource type="StandardMaterial3D" id="StandardMaterial3D_u0r7i"] 27 | resource_local_to_scene = true 28 | transparency = 1 29 | shading_mode = 2 30 | albedo_color = Color(1, 1, 1, 0.14902) 31 | 32 | [sub_resource type="StandardMaterial3D" id="StandardMaterial3D_bflln"] 33 | resource_local_to_scene = true 34 | transparency = 1 35 | shading_mode = 2 36 | albedo_color = Color(1, 1, 1, 0.14902) 37 | 38 | [sub_resource type="StandardMaterial3D" id="StandardMaterial3D_7dlun"] 39 | resource_local_to_scene = true 40 | transparency = 1 41 | shading_mode = 2 42 | albedo_color = Color(1, 1, 1, 0.14902) 43 | 44 | [sub_resource type="StandardMaterial3D" id="StandardMaterial3D_c4b7m"] 45 | resource_local_to_scene = true 46 | transparency = 1 47 | shading_mode = 2 48 | albedo_color = Color(1, 1, 1, 0.14902) 49 | 50 | [sub_resource type="StandardMaterial3D" id="StandardMaterial3D_yugxh"] 51 | resource_local_to_scene = true 52 | transparency = 1 53 | shading_mode = 2 54 | albedo_color = Color(1, 1, 1, 0.14902) 55 | 56 | [sub_resource type="StandardMaterial3D" id="StandardMaterial3D_w3usl"] 57 | resource_local_to_scene = true 58 | transparency = 1 59 | shading_mode = 2 60 | albedo_color = Color(1, 1, 1, 0.14902) 61 | 62 | [sub_resource type="StandardMaterial3D" id="StandardMaterial3D_7bsy5"] 63 | resource_local_to_scene = true 64 | transparency = 1 65 | shading_mode = 2 66 | albedo_color = Color(1, 1, 1, 0.14902) 67 | 68 | [sub_resource type="StandardMaterial3D" id="StandardMaterial3D_ehlfk"] 69 | resource_local_to_scene = true 70 | transparency = 1 71 | shading_mode = 2 72 | albedo_color = Color(1, 1, 1, 0.14902) 73 | 74 | [sub_resource type="StandardMaterial3D" id="StandardMaterial3D_sy1vq"] 75 | resource_local_to_scene = true 76 | transparency = 1 77 | shading_mode = 2 78 | albedo_color = Color(1, 1, 1, 0.14902) 79 | 80 | [sub_resource type="StandardMaterial3D" id="StandardMaterial3D_d8uas"] 81 | resource_local_to_scene = true 82 | transparency = 1 83 | shading_mode = 2 84 | albedo_color = Color(1, 1, 1, 0.14902) 85 | 86 | [sub_resource type="StandardMaterial3D" id="StandardMaterial3D_bbsmk"] 87 | resource_local_to_scene = true 88 | transparency = 1 89 | shading_mode = 2 90 | albedo_color = Color(1, 1, 1, 0.14902) 91 | 92 | [sub_resource type="StandardMaterial3D" id="StandardMaterial3D_srmd3"] 93 | resource_local_to_scene = true 94 | transparency = 1 95 | shading_mode = 2 96 | albedo_color = Color(1, 1, 1, 0.14902) 97 | 98 | [sub_resource type="StandardMaterial3D" id="StandardMaterial3D_2edq1"] 99 | resource_local_to_scene = true 100 | transparency = 1 101 | shading_mode = 2 102 | albedo_color = Color(1, 1, 1, 0.14902) 103 | 104 | [sub_resource type="StandardMaterial3D" id="StandardMaterial3D_55lbw"] 105 | resource_local_to_scene = true 106 | transparency = 1 107 | shading_mode = 2 108 | albedo_color = Color(1, 1, 1, 0.14902) 109 | 110 | [sub_resource type="StandardMaterial3D" id="StandardMaterial3D_1d1lm"] 111 | resource_local_to_scene = true 112 | transparency = 1 113 | shading_mode = 2 114 | albedo_color = Color(1, 1, 1, 0.14902) 115 | 116 | [sub_resource type="StandardMaterial3D" id="StandardMaterial3D_xju05"] 117 | resource_local_to_scene = true 118 | transparency = 1 119 | shading_mode = 2 120 | albedo_color = Color(1, 1, 1, 0.14902) 121 | 122 | [sub_resource type="StandardMaterial3D" id="StandardMaterial3D_gq4vg"] 123 | resource_local_to_scene = true 124 | transparency = 1 125 | shading_mode = 2 126 | albedo_color = Color(1, 1, 1, 0.14902) 127 | 128 | [sub_resource type="StandardMaterial3D" id="StandardMaterial3D_aiqti"] 129 | resource_local_to_scene = true 130 | transparency = 1 131 | shading_mode = 2 132 | albedo_color = Color(1, 1, 1, 0.14902) 133 | 134 | [sub_resource type="StandardMaterial3D" id="StandardMaterial3D_km4en"] 135 | resource_local_to_scene = true 136 | transparency = 1 137 | shading_mode = 2 138 | albedo_color = Color(1, 1, 1, 0.14902) 139 | 140 | [sub_resource type="StandardMaterial3D" id="StandardMaterial3D_f56y6"] 141 | resource_local_to_scene = true 142 | transparency = 1 143 | shading_mode = 2 144 | albedo_color = Color(1, 1, 1, 0.14902) 145 | 146 | [sub_resource type="StandardMaterial3D" id="StandardMaterial3D_i8bol"] 147 | resource_local_to_scene = true 148 | transparency = 1 149 | shading_mode = 2 150 | albedo_color = Color(1, 1, 1, 0.14902) 151 | 152 | [sub_resource type="StandardMaterial3D" id="StandardMaterial3D_hgko1"] 153 | resource_local_to_scene = true 154 | transparency = 1 155 | shading_mode = 2 156 | albedo_color = Color(1, 1, 1, 0.14902) 157 | 158 | [sub_resource type="StandardMaterial3D" id="StandardMaterial3D_ppnlm"] 159 | resource_local_to_scene = true 160 | transparency = 1 161 | shading_mode = 2 162 | albedo_color = Color(1, 1, 1, 0.14902) 163 | 164 | [sub_resource type="StandardMaterial3D" id="StandardMaterial3D_fxw3k"] 165 | resource_local_to_scene = true 166 | transparency = 1 167 | shading_mode = 2 168 | albedo_color = Color(1, 1, 1, 0.14902) 169 | 170 | [sub_resource type="StandardMaterial3D" id="StandardMaterial3D_njsqk"] 171 | resource_local_to_scene = true 172 | transparency = 1 173 | shading_mode = 2 174 | albedo_color = Color(1, 1, 1, 0.14902) 175 | 176 | [node name="AutoGrid_Bitmask" type="MeshInstance3D"] 177 | cast_shadow = 0 178 | gi_mode = 0 179 | mesh = SubResource("1") 180 | surface_material_override/0 = SubResource("StandardMaterial3D_p4s0r") 181 | script = ExtResource("2") 182 | 183 | [node name="Bitmask_Box" type="StaticBody3D" parent="."] 184 | transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -2, 2) 185 | collision_layer = 0 186 | collision_mask = 0 187 | script = ExtResource("1") 188 | 189 | [node name="MeshInstance3D" type="MeshInstance3D" parent="Bitmask_Box"] 190 | cast_shadow = 0 191 | gi_mode = 0 192 | mesh = SubResource("3") 193 | surface_material_override/0 = SubResource("StandardMaterial3D_225ob") 194 | 195 | [node name="CollisionShape3D" type="CollisionShape3D" parent="Bitmask_Box"] 196 | shape = SubResource("5") 197 | 198 | [node name="Bitmask_Box2" type="StaticBody3D" parent="."] 199 | transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 2, -2, 2) 200 | collision_layer = 0 201 | collision_mask = 0 202 | script = ExtResource("1") 203 | 204 | [node name="MeshInstance3D" type="MeshInstance3D" parent="Bitmask_Box2"] 205 | cast_shadow = 0 206 | gi_mode = 0 207 | mesh = SubResource("3") 208 | surface_material_override/0 = SubResource("StandardMaterial3D_u0r7i") 209 | 210 | [node name="CollisionShape3D" type="CollisionShape3D" parent="Bitmask_Box2"] 211 | shape = SubResource("5") 212 | 213 | [node name="Bitmask_Box3" type="StaticBody3D" parent="."] 214 | transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 2, -2, 0) 215 | collision_layer = 0 216 | collision_mask = 0 217 | script = ExtResource("1") 218 | 219 | [node name="MeshInstance3D" type="MeshInstance3D" parent="Bitmask_Box3"] 220 | cast_shadow = 0 221 | gi_mode = 0 222 | mesh = SubResource("3") 223 | surface_material_override/0 = SubResource("StandardMaterial3D_bflln") 224 | 225 | [node name="CollisionShape3D" type="CollisionShape3D" parent="Bitmask_Box3"] 226 | shape = SubResource("5") 227 | 228 | [node name="Bitmask_Box4" type="StaticBody3D" parent="."] 229 | transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 2, -2, -2) 230 | collision_layer = 0 231 | collision_mask = 0 232 | script = ExtResource("1") 233 | 234 | [node name="MeshInstance3D" type="MeshInstance3D" parent="Bitmask_Box4"] 235 | cast_shadow = 0 236 | gi_mode = 0 237 | mesh = SubResource("3") 238 | surface_material_override/0 = SubResource("StandardMaterial3D_7dlun") 239 | 240 | [node name="CollisionShape3D" type="CollisionShape3D" parent="Bitmask_Box4"] 241 | shape = SubResource("5") 242 | 243 | [node name="Bitmask_Box5" type="StaticBody3D" parent="."] 244 | transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -2, -2) 245 | collision_layer = 0 246 | collision_mask = 0 247 | script = ExtResource("1") 248 | 249 | [node name="MeshInstance3D" type="MeshInstance3D" parent="Bitmask_Box5"] 250 | cast_shadow = 0 251 | gi_mode = 0 252 | mesh = SubResource("3") 253 | surface_material_override/0 = SubResource("StandardMaterial3D_c4b7m") 254 | 255 | [node name="CollisionShape3D" type="CollisionShape3D" parent="Bitmask_Box5"] 256 | shape = SubResource("5") 257 | 258 | [node name="Bitmask_Box6" type="StaticBody3D" parent="."] 259 | transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -2, -2, -2) 260 | collision_layer = 0 261 | collision_mask = 0 262 | script = ExtResource("1") 263 | 264 | [node name="MeshInstance3D" type="MeshInstance3D" parent="Bitmask_Box6"] 265 | cast_shadow = 0 266 | gi_mode = 0 267 | mesh = SubResource("3") 268 | surface_material_override/0 = SubResource("StandardMaterial3D_yugxh") 269 | 270 | [node name="CollisionShape3D" type="CollisionShape3D" parent="Bitmask_Box6"] 271 | shape = SubResource("5") 272 | 273 | [node name="Bitmask_Box7" type="StaticBody3D" parent="."] 274 | transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -2, -2, 0) 275 | collision_layer = 0 276 | collision_mask = 0 277 | script = ExtResource("1") 278 | 279 | [node name="MeshInstance3D" type="MeshInstance3D" parent="Bitmask_Box7"] 280 | cast_shadow = 0 281 | gi_mode = 0 282 | mesh = SubResource("3") 283 | surface_material_override/0 = SubResource("StandardMaterial3D_w3usl") 284 | 285 | [node name="CollisionShape3D" type="CollisionShape3D" parent="Bitmask_Box7"] 286 | shape = SubResource("5") 287 | 288 | [node name="Bitmask_Box8" type="StaticBody3D" parent="."] 289 | transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -2, -2, 2) 290 | collision_layer = 0 291 | collision_mask = 0 292 | script = ExtResource("1") 293 | 294 | [node name="MeshInstance3D" type="MeshInstance3D" parent="Bitmask_Box8"] 295 | cast_shadow = 0 296 | gi_mode = 0 297 | mesh = SubResource("3") 298 | surface_material_override/0 = SubResource("StandardMaterial3D_7bsy5") 299 | 300 | [node name="CollisionShape3D" type="CollisionShape3D" parent="Bitmask_Box8"] 301 | shape = SubResource("5") 302 | 303 | [node name="Bitmask_Box9" type="StaticBody3D" parent="."] 304 | transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -2, 0) 305 | collision_layer = 0 306 | collision_mask = 0 307 | script = ExtResource("1") 308 | 309 | [node name="MeshInstance3D" type="MeshInstance3D" parent="Bitmask_Box9"] 310 | cast_shadow = 0 311 | gi_mode = 0 312 | mesh = SubResource("3") 313 | surface_material_override/0 = SubResource("StandardMaterial3D_ehlfk") 314 | 315 | [node name="CollisionShape3D" type="CollisionShape3D" parent="Bitmask_Box9"] 316 | shape = SubResource("5") 317 | 318 | [node name="Bitmask_Box10" type="StaticBody3D" parent="."] 319 | transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 2) 320 | collision_layer = 0 321 | collision_mask = 0 322 | script = ExtResource("1") 323 | 324 | [node name="MeshInstance3D" type="MeshInstance3D" parent="Bitmask_Box10"] 325 | cast_shadow = 0 326 | gi_mode = 0 327 | mesh = SubResource("3") 328 | surface_material_override/0 = SubResource("StandardMaterial3D_sy1vq") 329 | 330 | [node name="CollisionShape3D" type="CollisionShape3D" parent="Bitmask_Box10"] 331 | shape = SubResource("5") 332 | 333 | [node name="Bitmask_Box11" type="StaticBody3D" parent="."] 334 | transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 2, 0, 2) 335 | collision_layer = 0 336 | collision_mask = 0 337 | script = ExtResource("1") 338 | 339 | [node name="MeshInstance3D" type="MeshInstance3D" parent="Bitmask_Box11"] 340 | cast_shadow = 0 341 | gi_mode = 0 342 | mesh = SubResource("3") 343 | surface_material_override/0 = SubResource("StandardMaterial3D_d8uas") 344 | 345 | [node name="CollisionShape3D" type="CollisionShape3D" parent="Bitmask_Box11"] 346 | shape = SubResource("5") 347 | 348 | [node name="Bitmask_Box12" type="StaticBody3D" parent="."] 349 | transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 2, 0, 0) 350 | collision_layer = 0 351 | collision_mask = 0 352 | script = ExtResource("1") 353 | 354 | [node name="MeshInstance3D" type="MeshInstance3D" parent="Bitmask_Box12"] 355 | cast_shadow = 0 356 | gi_mode = 0 357 | mesh = SubResource("3") 358 | surface_material_override/0 = SubResource("StandardMaterial3D_bbsmk") 359 | 360 | [node name="CollisionShape3D" type="CollisionShape3D" parent="Bitmask_Box12"] 361 | shape = SubResource("5") 362 | 363 | [node name="Bitmask_Box13" type="StaticBody3D" parent="."] 364 | transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 2, 0, -2) 365 | collision_layer = 0 366 | collision_mask = 0 367 | script = ExtResource("1") 368 | 369 | [node name="MeshInstance3D" type="MeshInstance3D" parent="Bitmask_Box13"] 370 | cast_shadow = 0 371 | gi_mode = 0 372 | mesh = SubResource("3") 373 | surface_material_override/0 = SubResource("StandardMaterial3D_srmd3") 374 | 375 | [node name="CollisionShape3D" type="CollisionShape3D" parent="Bitmask_Box13"] 376 | shape = SubResource("5") 377 | 378 | [node name="Bitmask_Box14" type="StaticBody3D" parent="."] 379 | transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, -2) 380 | collision_layer = 0 381 | collision_mask = 0 382 | script = ExtResource("1") 383 | 384 | [node name="MeshInstance3D" type="MeshInstance3D" parent="Bitmask_Box14"] 385 | cast_shadow = 0 386 | gi_mode = 0 387 | mesh = SubResource("3") 388 | surface_material_override/0 = SubResource("StandardMaterial3D_2edq1") 389 | 390 | [node name="CollisionShape3D" type="CollisionShape3D" parent="Bitmask_Box14"] 391 | shape = SubResource("5") 392 | 393 | [node name="Bitmask_Box15" type="StaticBody3D" parent="."] 394 | transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -2, 0, -2) 395 | collision_layer = 0 396 | collision_mask = 0 397 | script = ExtResource("1") 398 | 399 | [node name="MeshInstance3D" type="MeshInstance3D" parent="Bitmask_Box15"] 400 | cast_shadow = 0 401 | gi_mode = 0 402 | mesh = SubResource("3") 403 | surface_material_override/0 = SubResource("StandardMaterial3D_55lbw") 404 | 405 | [node name="CollisionShape3D" type="CollisionShape3D" parent="Bitmask_Box15"] 406 | shape = SubResource("5") 407 | 408 | [node name="Bitmask_Box16" type="StaticBody3D" parent="."] 409 | transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -2, 0, 0) 410 | collision_layer = 0 411 | collision_mask = 0 412 | script = ExtResource("1") 413 | 414 | [node name="MeshInstance3D" type="MeshInstance3D" parent="Bitmask_Box16"] 415 | cast_shadow = 0 416 | gi_mode = 0 417 | mesh = SubResource("3") 418 | surface_material_override/0 = SubResource("StandardMaterial3D_1d1lm") 419 | 420 | [node name="CollisionShape3D" type="CollisionShape3D" parent="Bitmask_Box16"] 421 | shape = SubResource("5") 422 | 423 | [node name="Bitmask_Box17" type="StaticBody3D" parent="."] 424 | transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -2, 0, 2) 425 | collision_layer = 0 426 | collision_mask = 0 427 | script = ExtResource("1") 428 | 429 | [node name="MeshInstance3D" type="MeshInstance3D" parent="Bitmask_Box17"] 430 | cast_shadow = 0 431 | gi_mode = 0 432 | mesh = SubResource("3") 433 | surface_material_override/0 = SubResource("StandardMaterial3D_xju05") 434 | 435 | [node name="CollisionShape3D" type="CollisionShape3D" parent="Bitmask_Box17"] 436 | shape = SubResource("5") 437 | 438 | [node name="Bitmask_Box18" type="StaticBody3D" parent="."] 439 | transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 2, 2) 440 | collision_layer = 0 441 | collision_mask = 0 442 | script = ExtResource("1") 443 | 444 | [node name="MeshInstance3D" type="MeshInstance3D" parent="Bitmask_Box18"] 445 | cast_shadow = 0 446 | gi_mode = 0 447 | mesh = SubResource("3") 448 | surface_material_override/0 = SubResource("StandardMaterial3D_gq4vg") 449 | 450 | [node name="CollisionShape3D" type="CollisionShape3D" parent="Bitmask_Box18"] 451 | shape = SubResource("5") 452 | 453 | [node name="Bitmask_Box19" type="StaticBody3D" parent="."] 454 | transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 2, 2, 2) 455 | collision_layer = 0 456 | collision_mask = 0 457 | script = ExtResource("1") 458 | 459 | [node name="MeshInstance3D" type="MeshInstance3D" parent="Bitmask_Box19"] 460 | cast_shadow = 0 461 | gi_mode = 0 462 | mesh = SubResource("3") 463 | surface_material_override/0 = SubResource("StandardMaterial3D_aiqti") 464 | 465 | [node name="CollisionShape3D" type="CollisionShape3D" parent="Bitmask_Box19"] 466 | shape = SubResource("5") 467 | 468 | [node name="Bitmask_Box20" type="StaticBody3D" parent="."] 469 | transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 2, 2, 0) 470 | collision_layer = 0 471 | collision_mask = 0 472 | script = ExtResource("1") 473 | 474 | [node name="MeshInstance3D" type="MeshInstance3D" parent="Bitmask_Box20"] 475 | cast_shadow = 0 476 | gi_mode = 0 477 | mesh = SubResource("3") 478 | surface_material_override/0 = SubResource("StandardMaterial3D_km4en") 479 | 480 | [node name="CollisionShape3D" type="CollisionShape3D" parent="Bitmask_Box20"] 481 | shape = SubResource("5") 482 | 483 | [node name="Bitmask_Box21" type="StaticBody3D" parent="."] 484 | transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 2, 2, -2) 485 | collision_layer = 0 486 | collision_mask = 0 487 | script = ExtResource("1") 488 | 489 | [node name="MeshInstance3D" type="MeshInstance3D" parent="Bitmask_Box21"] 490 | cast_shadow = 0 491 | gi_mode = 0 492 | mesh = SubResource("3") 493 | surface_material_override/0 = SubResource("StandardMaterial3D_f56y6") 494 | 495 | [node name="CollisionShape3D" type="CollisionShape3D" parent="Bitmask_Box21"] 496 | shape = SubResource("5") 497 | 498 | [node name="Bitmask_Box22" type="StaticBody3D" parent="."] 499 | transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 2, -2) 500 | collision_layer = 0 501 | collision_mask = 0 502 | script = ExtResource("1") 503 | 504 | [node name="MeshInstance3D" type="MeshInstance3D" parent="Bitmask_Box22"] 505 | cast_shadow = 0 506 | gi_mode = 0 507 | mesh = SubResource("3") 508 | surface_material_override/0 = SubResource("StandardMaterial3D_i8bol") 509 | 510 | [node name="CollisionShape3D" type="CollisionShape3D" parent="Bitmask_Box22"] 511 | shape = SubResource("5") 512 | 513 | [node name="Bitmask_Box23" type="StaticBody3D" parent="."] 514 | transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -2, 2, -2) 515 | collision_layer = 0 516 | collision_mask = 0 517 | script = ExtResource("1") 518 | 519 | [node name="MeshInstance3D" type="MeshInstance3D" parent="Bitmask_Box23"] 520 | cast_shadow = 0 521 | gi_mode = 0 522 | mesh = SubResource("3") 523 | surface_material_override/0 = SubResource("StandardMaterial3D_hgko1") 524 | 525 | [node name="CollisionShape3D" type="CollisionShape3D" parent="Bitmask_Box23"] 526 | shape = SubResource("5") 527 | 528 | [node name="Bitmask_Box24" type="StaticBody3D" parent="."] 529 | transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -2, 2, 0) 530 | collision_layer = 0 531 | collision_mask = 0 532 | script = ExtResource("1") 533 | 534 | [node name="MeshInstance3D" type="MeshInstance3D" parent="Bitmask_Box24"] 535 | cast_shadow = 0 536 | gi_mode = 0 537 | mesh = SubResource("3") 538 | surface_material_override/0 = SubResource("StandardMaterial3D_ppnlm") 539 | 540 | [node name="CollisionShape3D" type="CollisionShape3D" parent="Bitmask_Box24"] 541 | shape = SubResource("5") 542 | 543 | [node name="Bitmask_Box25" type="StaticBody3D" parent="."] 544 | transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -2, 2, 2) 545 | collision_layer = 0 546 | collision_mask = 0 547 | script = ExtResource("1") 548 | 549 | [node name="MeshInstance3D" type="MeshInstance3D" parent="Bitmask_Box25"] 550 | cast_shadow = 0 551 | gi_mode = 0 552 | mesh = SubResource("3") 553 | surface_material_override/0 = SubResource("StandardMaterial3D_fxw3k") 554 | 555 | [node name="CollisionShape3D" type="CollisionShape3D" parent="Bitmask_Box25"] 556 | shape = SubResource("5") 557 | 558 | [node name="Bitmask_Box26" type="StaticBody3D" parent="."] 559 | transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 2, 0) 560 | collision_layer = 0 561 | collision_mask = 0 562 | script = ExtResource("1") 563 | 564 | [node name="MeshInstance3D" type="MeshInstance3D" parent="Bitmask_Box26"] 565 | cast_shadow = 0 566 | gi_mode = 0 567 | mesh = SubResource("3") 568 | surface_material_override/0 = SubResource("StandardMaterial3D_njsqk") 569 | 570 | [node name="CollisionShape3D" type="CollisionShape3D" parent="Bitmask_Box26"] 571 | shape = SubResource("5") 572 | -------------------------------------------------------------------------------- /addons/AutoGrid/HELP.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/XLIVE99/AutoGrid/36223c77efc87bff3b02159eb66410fe5cc9cab5/addons/AutoGrid/HELP.pdf -------------------------------------------------------------------------------- /addons/AutoGrid/activate_button.tscn: -------------------------------------------------------------------------------- 1 | [gd_scene load_steps=3 format=3 uid="uid://q1yc6xlhs6v1"] 2 | 3 | [ext_resource type="Script" path="res://addons/AutoGrid/edit_button.gd" id="2"] 4 | [ext_resource type="Texture2D" uid="uid://dbqfwhscvlu6s" path="res://addons/AutoGrid/res/GridEdit.svg" id="2_qo3u6"] 5 | 6 | [node name="Edit_Mode" type="Control"] 7 | layout_mode = 3 8 | anchors_preset = 15 9 | anchor_right = 1.0 10 | anchor_bottom = 1.0 11 | grow_horizontal = 2 12 | grow_vertical = 2 13 | script = ExtResource("2") 14 | 15 | [node name="MenuButton" type="MenuButton" parent="."] 16 | custom_minimum_size = Vector2(85, 24) 17 | layout_mode = 0 18 | offset_right = 120.0 19 | offset_bottom = 24.0 20 | text = "AutoGrid" 21 | icon = ExtResource("2_qo3u6") 22 | expand_icon = true 23 | switch_on_hover = true 24 | item_count = 11 25 | popup/item_0/text = "Create Bitmask" 26 | popup/item_0/id = 0 27 | popup/item_1/text = "Remove Bitmask" 28 | popup/item_1/id = 1 29 | popup/item_2/text = "Expand Bitmask" 30 | popup/item_2/id = 2 31 | popup/item_3/text = "Shrink Bitmask" 32 | popup/item_3/id = 3 33 | popup/item_4/text = "" 34 | popup/item_4/id = 4 35 | popup/item_4/separator = true 36 | popup/item_5/text = "All Axises" 37 | popup/item_5/id = 5 38 | popup/item_6/text = "Y & Z Axises" 39 | popup/item_6/id = 6 40 | popup/item_7/text = "X & Z Axises" 41 | popup/item_7/id = 7 42 | popup/item_8/text = "X & Y Axises" 43 | popup/item_8/id = 8 44 | popup/item_9/text = "" 45 | popup/item_9/id = 9 46 | popup/item_9/separator = true 47 | popup/item_10/text = "Set Icon" 48 | popup/item_10/id = 10 49 | -------------------------------------------------------------------------------- /addons/AutoGrid/bitmask_box.gd: -------------------------------------------------------------------------------- 1 | @tool 2 | extends StaticBody3D 3 | 4 | var enabled : bool: set = enabled_changed 5 | 6 | func toggle_box(): 7 | self.enabled = !enabled 8 | 9 | func enabled_changed(val): 10 | enabled = val 11 | if enabled: 12 | $MeshInstance3D.get_surface_override_material(0).albedo_color = Color.RED 13 | else: 14 | $MeshInstance3D.get_surface_override_material(0).albedo_color = Color.WHITE 15 | 16 | func activate(): 17 | collision_layer = 524288 18 | $MeshInstance3D.get_surface_override_material(0).albedo_color.a = 1.0 19 | 20 | func deactivate(): 21 | collision_layer = 0 22 | $MeshInstance3D.get_surface_override_material(0).albedo_color.a = 0.15 23 | 24 | func is_active() -> bool: 25 | return collision_layer == 524288 26 | -------------------------------------------------------------------------------- /addons/AutoGrid/bitmask_holder.gd: -------------------------------------------------------------------------------- 1 | @tool 2 | extends MeshInstance3D 3 | 4 | var bit_value : int = 0 5 | var is_icon : bool = false 6 | 7 | var is_active : bool = false 8 | 9 | enum { All, AxisX, AxisY, AxisZ} 10 | var currentAxis = All 11 | 12 | func calculate_bit_value() -> int: 13 | var i = 0 14 | for child in get_children(): 15 | if child.visible && child.enabled: 16 | bit_value |= 1 << i 17 | i += 1 18 | 19 | return bit_value 20 | 21 | func set_axis(axis : int, forceActive : bool = false): 22 | if axis == 0: 23 | if currentAxis != All: 24 | set_child_from_bit(9223372036854775807, forceActive) 25 | currentAxis = All 26 | elif axis == 1: 27 | if currentAxis != AxisX: 28 | set_child_from_bit(35791633, forceActive) 29 | currentAxis = AxisX 30 | elif axis == 2: 31 | if currentAxis != AxisY: 32 | set_child_from_bit(130560, forceActive) 33 | currentAxis = AxisY 34 | elif axis == 3: 35 | if currentAxis != AxisZ: 36 | set_child_from_bit(42502468, forceActive) 37 | currentAxis = AxisZ 38 | else: 39 | print("Invalid axis.") 40 | 41 | func set_child_from_bit(mask : int, forceActive : bool = false): 42 | for child in get_children(): 43 | if mask & 1 == 1: 44 | if child.is_active() || forceActive: 45 | child.activate() 46 | child.visible = true 47 | else: 48 | child.deactivate() 49 | child.visible = false 50 | mask = mask >> 1 51 | 52 | func enable_from_bit(mask : int): 53 | for child in get_children(): 54 | child.enabled = mask & 1 == 1 55 | mask = mask >> 1 56 | if !is_active: 57 | deactivate() 58 | 59 | is_icon = get_surface_override_material(0).albedo_color.a > 0.3 60 | 61 | func set_for_icon(): 62 | is_icon = true 63 | get_surface_override_material(0).albedo_color.a = 0.7 64 | 65 | func disable_icon(): 66 | is_icon = false 67 | get_surface_override_material(0).albedo_color.a = 0.0 68 | 69 | func activate(): 70 | is_active = true 71 | for child in get_children(): 72 | if child.visible: 73 | child.activate() 74 | 75 | func deactivate(): 76 | is_active = false 77 | for child in get_children(): 78 | if child.visible: 79 | child.deactivate() 80 | 81 | func set_size(size : float): 82 | var new_size = Vector3.ONE * size 83 | mesh.radius = size 84 | mesh.height = size * 2 85 | for child in get_children(): 86 | var dir = child.position 87 | child.position = dir.normalized().round() * size * 2 88 | child.scale = new_size 89 | -------------------------------------------------------------------------------- /addons/AutoGrid/edit_button.gd: -------------------------------------------------------------------------------- 1 | @tool 2 | extends Control 3 | 4 | var popup : PopupMenu 5 | var core 6 | 7 | var auto_bitmask : PackedScene 8 | 9 | func _enter_tree(): 10 | #Assign controls 11 | popup = get_node("MenuButton").get_popup() 12 | 13 | #Set popup 14 | popup.set_item_accelerator(0, KEY_T | KEY_MASK_SHIFT) 15 | popup.set_item_accelerator(1, KEY_Q | KEY_MASK_SHIFT) 16 | popup.set_item_accelerator(2, KEY_1 | KEY_MASK_SHIFT) 17 | popup.set_item_accelerator(3, KEY_2 | KEY_MASK_SHIFT) 18 | if !popup.is_connected("id_pressed", Callable(self, "popup_pressed")): 19 | popup.connect("id_pressed", Callable(self, "popup_pressed")) 20 | 21 | auto_bitmask = preload("res://addons/AutoGrid/AutoGrid_Bitmask.tscn") 22 | 23 | func popup_pressed(id): 24 | if id == 0: 25 | create_bitmask() 26 | if id == 1: 27 | remove_bitmask() 28 | if id == 2: 29 | increase_size() 30 | if id == 3: 31 | decrease_size() 32 | if id > 4 && id < 9: 33 | core.editAxis = id - 5 34 | if id == 10: 35 | set_icon() 36 | 37 | func create_bitmask(): 38 | var selecteds = core.get_selection_list() 39 | if selecteds == null: 40 | print("--- AUTOGRID ERROR --- Please select MeshInstance3D.") 41 | return 42 | 43 | var activeness : bool = selecteds.size() == 1 44 | 45 | for selected in selecteds: 46 | 47 | if !(selected is MeshInstance3D): 48 | continue 49 | # Skip autogrid nodes, detecting with string is very bad! (Need improvement) 50 | elif selected.name.begins_with("AutoGrid"): 51 | continue 52 | 53 | # if selected.has_node("AutoGrid_Bitmask"): 54 | # print("--- AUTOGRID WARNING --- Selected node already has a bitmask.") 55 | if !selected.has_node("AutoGrid_Bitmask"): 56 | var bitmask = auto_bitmask.instance() 57 | selected.add_child(bitmask) 58 | core.set_bitmask(bitmask) 59 | bitmask.global_transform.basis = Basis() 60 | 61 | if activeness: 62 | bitmask.activate() 63 | else: 64 | bitmask.deactivate() 65 | 66 | func remove_bitmask(): 67 | var selecteds = core.get_selection_list() 68 | if selecteds == null: 69 | print("--- AUTOGRID ERROR --- Please select MeshInstance3D.") 70 | return 71 | 72 | for selected in selecteds: 73 | 74 | if !(selected is MeshInstance3D): 75 | continue 76 | 77 | if selected.has_node("AutoGrid_Bitmask"): 78 | var bitmask = selected.get_node("AutoGrid_Bitmask") 79 | selected.remove_child(bitmask) 80 | bitmask.queue_free() 81 | 82 | func increase_size(): 83 | core.increase_bitmasks_size() 84 | 85 | func decrease_size(): 86 | core.decrease_bitmasks_size() 87 | 88 | func set_icon(): 89 | var selected = core.get_selection() 90 | if selected == null: 91 | print("--- AUTOGRID ERROR --- Please select MeshInstance3D.") 92 | return 93 | if selected.has_node("AutoGrid_Bitmask"): 94 | core.change_icon(selected) 95 | -------------------------------------------------------------------------------- /addons/AutoGrid/gridmap_button.gd: -------------------------------------------------------------------------------- 1 | @tool 2 | extends Control 3 | 4 | var popup : PopupMenu 5 | 6 | var core 7 | 8 | func _on_OptionButton_item_selected(index): 9 | core.bitmaskMode = index 10 | 11 | func _on_Github_Rich_meta_clicked(meta): 12 | OS.shell_open(meta) 13 | 14 | func _on_Autotile_Check_toggled(button_pressed): 15 | core.autotileEnabled = button_pressed 16 | 17 | func _on_Edit_Mode_Checked_toggled(button_pressed): 18 | core.editMode = button_pressed 19 | $VBoxContainer/Buttons.visible = button_pressed 20 | 21 | func _on_Create_Autotile_pressed(): 22 | core.create_autotile_pressed() 23 | 24 | func _on_Reload_Autotile_pressed(): 25 | core.reload_autotile_info(true) 26 | 27 | func _on_CheckBox_toggled(button_pressed): 28 | core.performanceMode = button_pressed 29 | 30 | func _on_Auto_Axis_Opt_item_selected(index): 31 | core.autoAxis = index 32 | 33 | func _on_Auto_Scan_Axis_Opt_item_selected(index): 34 | core.scanAxis = index 35 | -------------------------------------------------------------------------------- /addons/AutoGrid/gridmap_button.tscn: -------------------------------------------------------------------------------- 1 | [gd_scene load_steps=5 format=3 uid="uid://bj8vtrhikitn4"] 2 | 3 | [ext_resource type="Script" path="res://addons/AutoGrid/gridmap_button.gd" id="2"] 4 | [ext_resource type="Texture2D" uid="uid://dbiw3nviwl7vk" path="res://addons/AutoGrid/res/ErrorSign.svg" id="2_k6g13"] 5 | 6 | [sub_resource type="StyleBoxEmpty" id="1"] 7 | 8 | [sub_resource type="StyleBoxEmpty" id="2"] 9 | 10 | [node name="AutoGrid" type="Control"] 11 | layout_mode = 3 12 | anchors_preset = 15 13 | anchor_right = 1.0 14 | anchor_bottom = 1.0 15 | grow_horizontal = 2 16 | grow_vertical = 2 17 | script = ExtResource("2") 18 | 19 | [node name="VBoxContainer" type="VBoxContainer" parent="."] 20 | layout_mode = 0 21 | anchor_right = 1.0 22 | anchor_bottom = 1.0 23 | 24 | [node name="Label" type="Label" parent="VBoxContainer"] 25 | layout_mode = 2 26 | size_flags_horizontal = 5 27 | size_flags_vertical = 1 28 | text = "AutoGrid 29 | By XLIVE99" 30 | horizontal_alignment = 1 31 | 32 | [node name="HSeparator" type="HSeparator" parent="VBoxContainer"] 33 | custom_minimum_size = Vector2(0, 15) 34 | layout_mode = 2 35 | 36 | [node name="Label2" type="Label" parent="VBoxContainer"] 37 | layout_mode = 2 38 | size_flags_vertical = 1 39 | text = "Please read HELP.pdf for usage 40 | Thank you for downloading" 41 | horizontal_alignment = 1 42 | 43 | [node name="HSeparator2" type="HSeparator" parent="VBoxContainer"] 44 | custom_minimum_size = Vector2(0, 15) 45 | layout_mode = 2 46 | 47 | [node name="VBox" type="VBoxContainer" parent="VBoxContainer"] 48 | layout_mode = 2 49 | size_flags_horizontal = 3 50 | size_flags_vertical = 3 51 | 52 | [node name="Autotile" type="HBoxContainer" parent="VBoxContainer/VBox"] 53 | layout_mode = 2 54 | 55 | [node name="Autotile" type="Label" parent="VBoxContainer/VBox/Autotile"] 56 | custom_minimum_size = Vector2(0, 20) 57 | layout_mode = 2 58 | size_flags_horizontal = 3 59 | mouse_filter = 1 60 | text = "Autotile" 61 | 62 | [node name="Autotile_Check" type="CheckBox" parent="VBoxContainer/VBox/Autotile"] 63 | layout_mode = 2 64 | size_flags_horizontal = 3 65 | button_pressed = true 66 | shortcut_in_tooltip = false 67 | text = "On" 68 | 69 | [node name="Auto_Mode" type="HBoxContainer" parent="VBoxContainer/VBox"] 70 | layout_mode = 2 71 | 72 | [node name="Auto_Mode" type="Label" parent="VBoxContainer/VBox/Auto_Mode"] 73 | custom_minimum_size = Vector2(0, 20) 74 | layout_mode = 2 75 | size_flags_horizontal = 3 76 | text = "Autotile Mode" 77 | 78 | [node name="Auto_Mode_Opt" type="OptionButton" parent="VBoxContainer/VBox/Auto_Mode"] 79 | custom_minimum_size = Vector2(0, 20) 80 | layout_mode = 2 81 | size_flags_horizontal = 3 82 | shortcut_in_tooltip = false 83 | item_count = 2 84 | selected = 0 85 | popup/item_0/text = "Full 3x3" 86 | popup/item_0/id = 0 87 | popup/item_1/text = "Minimal 3x3" 88 | popup/item_1/id = 1 89 | 90 | [node name="Auto_Axis" type="HBoxContainer" parent="VBoxContainer/VBox"] 91 | layout_mode = 2 92 | 93 | [node name="Label" type="Label" parent="VBoxContainer/VBox/Auto_Axis"] 94 | layout_mode = 2 95 | size_flags_horizontal = 3 96 | tooltip_text = "Only uses selected axises while checking surroundings. 97 | If you are using only 2 axises (For example X & Z for top 98 | down games) then leaving this as \"All\" or \"X & Z Axis\" 99 | will be fine. If you are planning to create different 100 | height tiles than using \"All\" might cause problem if 101 | that tile has a bottom or top neighbour." 102 | mouse_filter = 1 103 | text = "Autotile Axis" 104 | 105 | [node name="Auto_Axis_Opt" type="OptionButton" parent="VBoxContainer/VBox/Auto_Axis"] 106 | layout_mode = 2 107 | size_flags_horizontal = 3 108 | item_count = 4 109 | selected = 0 110 | popup/item_0/text = "All" 111 | popup/item_0/id = 0 112 | popup/item_1/text = "Y & Z Axises" 113 | popup/item_1/id = 1 114 | popup/item_2/text = "X & Z Axises" 115 | popup/item_2/id = 2 116 | popup/item_3/text = "X & Y Axises" 117 | popup/item_3/id = 3 118 | 119 | [node name="Auto_Scan_Axis" type="HBoxContainer" parent="VBoxContainer/VBox"] 120 | layout_mode = 2 121 | 122 | [node name="Label" type="Label" parent="VBoxContainer/VBox/Auto_Scan_Axis"] 123 | layout_mode = 2 124 | size_flags_horizontal = 3 125 | tooltip_text = "Uses selected axis as normal of the tile. Select which 126 | axis direction your tile is facing (or which direction is 127 | considered ground). For example, the ground will use 128 | \"Y axis\" while background wall will use \"Z axis\" in 129 | 2.5D games." 130 | mouse_filter = 1 131 | text = "Tile Normal Axis" 132 | 133 | [node name="Auto_Scan_Axis_Opt" type="OptionButton" parent="VBoxContainer/VBox/Auto_Scan_Axis"] 134 | layout_mode = 2 135 | size_flags_horizontal = 3 136 | item_count = 3 137 | selected = 1 138 | popup/item_0/text = "X Axis" 139 | popup/item_0/id = 0 140 | popup/item_1/text = "Y Axis" 141 | popup/item_1/id = 1 142 | popup/item_2/text = "Z Axis" 143 | popup/item_2/id = 2 144 | 145 | [node name="Control" type="Control" parent="VBoxContainer/VBox"] 146 | custom_minimum_size = Vector2(0, 15) 147 | layout_mode = 2 148 | 149 | [node name="Edit_Mode" type="HBoxContainer" parent="VBoxContainer/VBox"] 150 | layout_mode = 2 151 | 152 | [node name="Edit_Mode" type="Label" parent="VBoxContainer/VBox/Edit_Mode"] 153 | custom_minimum_size = Vector2(0, 20) 154 | layout_mode = 2 155 | size_flags_horizontal = 3 156 | text = "Edit Mode" 157 | 158 | [node name="Edit_Mode_Checked" type="CheckBox" parent="VBoxContainer/VBox/Edit_Mode"] 159 | layout_mode = 2 160 | size_flags_horizontal = 3 161 | shortcut_in_tooltip = false 162 | text = "On" 163 | 164 | [node name="Performance_Mode" type="HBoxContainer" parent="VBoxContainer/VBox"] 165 | custom_minimum_size = Vector2(0, 24) 166 | layout_mode = 2 167 | 168 | [node name="Performance_Mode" type="Label" parent="VBoxContainer/VBox/Performance_Mode"] 169 | layout_mode = 2 170 | size_flags_horizontal = 3 171 | text = "Performance Mode" 172 | 173 | [node name="CheckBox" type="CheckBox" parent="VBoxContainer/VBox/Performance_Mode"] 174 | layout_mode = 2 175 | size_flags_horizontal = 3 176 | button_pressed = true 177 | shortcut_in_tooltip = false 178 | text = "On" 179 | 180 | [node name="Buttons" type="HBoxContainer" parent="VBoxContainer"] 181 | visible = false 182 | layout_mode = 2 183 | alignment = 1 184 | 185 | [node name="Control" type="CenterContainer" parent="VBoxContainer/Buttons"] 186 | custom_minimum_size = Vector2(0, 20) 187 | layout_mode = 2 188 | size_flags_horizontal = 3 189 | 190 | [node name="Reload_Autotile" type="Button" parent="VBoxContainer/Buttons/Control"] 191 | layout_mode = 2 192 | text = "Reload Autotile Info" 193 | 194 | [node name="Control2" type="CenterContainer" parent="VBoxContainer/Buttons"] 195 | custom_minimum_size = Vector2(0, 20) 196 | layout_mode = 2 197 | size_flags_horizontal = 3 198 | 199 | [node name="Create_Autotile" type="Button" parent="VBoxContainer/Buttons/Control2"] 200 | layout_mode = 2 201 | shortcut_in_tooltip = false 202 | text = "Create Autotile Info" 203 | 204 | [node name="HSeparator3" type="HSeparator" parent="VBoxContainer"] 205 | custom_minimum_size = Vector2(0, 15) 206 | layout_mode = 2 207 | 208 | [node name="Warning" type="HBoxContainer" parent="VBoxContainer"] 209 | layout_mode = 2 210 | 211 | [node name="TextureRect" type="TextureRect" parent="VBoxContainer/Warning"] 212 | custom_minimum_size = Vector2(64, 64) 213 | layout_mode = 2 214 | texture = ExtResource("2_k6g13") 215 | expand_mode = 1 216 | 217 | [node name="Label" type="Label" parent="VBoxContainer/Warning"] 218 | custom_minimum_size = Vector2(100, 0) 219 | layout_mode = 2 220 | size_flags_horizontal = 3 221 | text = "Please DO NOT change automatically created node names! And do not change .agrid file paths!" 222 | autowrap_mode = 2 223 | 224 | [node name="HSeparator4" type="HSeparator" parent="VBoxContainer"] 225 | custom_minimum_size = Vector2(0, 15) 226 | layout_mode = 2 227 | 228 | [node name="Bug_Report" type="VBoxContainer" parent="VBoxContainer"] 229 | custom_minimum_size = Vector2(0, 28) 230 | layout_mode = 2 231 | size_flags_horizontal = 3 232 | 233 | [node name="Github_Rich" type="RichTextLabel" parent="VBoxContainer/Bug_Report"] 234 | custom_minimum_size = Vector2(0, 15) 235 | layout_mode = 2 236 | theme_override_styles/normal = SubResource("1") 237 | bbcode_enabled = true 238 | text = "For [color=62ED53]feature request[/color] or [color=EF2D3A]bug report[/color], you can open issue from [url=https://github.com/XLIVE99/AutoGrid]github repo[/url]" 239 | fit_content = true 240 | scroll_active = false 241 | 242 | [node name="Github_Rich2" type="RichTextLabel" parent="VBoxContainer/Bug_Report"] 243 | custom_minimum_size = Vector2(0, 15) 244 | layout_mode = 2 245 | theme_override_styles/normal = SubResource("2") 246 | bbcode_enabled = true 247 | text = "Also you can see my other works from my [url=https://www.linkedin.com/in/burak-idilmek-856669175/]LinkedIn[/url] (Feel free to message me)" 248 | fit_content = true 249 | scroll_active = false 250 | 251 | [node name="Version_label" type="Label" parent="VBoxContainer"] 252 | layout_mode = 2 253 | size_flags_vertical = 1 254 | theme_override_colors/font_color = Color(0.568627, 0.568627, 0.568627, 1) 255 | text = "Version 1.3" 256 | horizontal_alignment = 2 257 | 258 | [connection signal="toggled" from="VBoxContainer/VBox/Autotile/Autotile_Check" to="." method="_on_Autotile_Check_toggled"] 259 | [connection signal="item_selected" from="VBoxContainer/VBox/Auto_Mode/Auto_Mode_Opt" to="." method="_on_OptionButton_item_selected"] 260 | [connection signal="item_selected" from="VBoxContainer/VBox/Auto_Axis/Auto_Axis_Opt" to="." method="_on_Auto_Axis_Opt_item_selected"] 261 | [connection signal="item_selected" from="VBoxContainer/VBox/Auto_Scan_Axis/Auto_Scan_Axis_Opt" to="." method="_on_Auto_Scan_Axis_Opt_item_selected"] 262 | [connection signal="toggled" from="VBoxContainer/VBox/Edit_Mode/Edit_Mode_Checked" to="." method="_on_Edit_Mode_Checked_toggled"] 263 | [connection signal="toggled" from="VBoxContainer/VBox/Performance_Mode/CheckBox" to="." method="_on_CheckBox_toggled"] 264 | [connection signal="pressed" from="VBoxContainer/Buttons/Control/Reload_Autotile" to="." method="_on_Reload_Autotile_pressed"] 265 | [connection signal="pressed" from="VBoxContainer/Buttons/Control2/Create_Autotile" to="." method="_on_Create_Autotile_pressed"] 266 | [connection signal="meta_clicked" from="VBoxContainer/Bug_Report/Github_Rich" to="." method="_on_Github_Rich_meta_clicked"] 267 | [connection signal="meta_clicked" from="VBoxContainer/Bug_Report/Github_Rich2" to="." method="_on_Github_Rich_meta_clicked"] 268 | -------------------------------------------------------------------------------- /addons/AutoGrid/plugin.cfg: -------------------------------------------------------------------------------- 1 | [plugin] 2 | 3 | name="AutoGrid" 4 | description="Autotile system for gridmap" 5 | author="XLIVE99" 6 | version="1.3" 7 | script="core.gd" 8 | -------------------------------------------------------------------------------- /addons/AutoGrid/res/Bitmask_Material.tres: -------------------------------------------------------------------------------- 1 | [gd_resource type="StandardMaterial3D" format=3 uid="uid://bloj5n02v4184"] 2 | 3 | [resource] 4 | resource_local_to_scene = true 5 | shading_mode = 2 6 | -------------------------------------------------------------------------------- /addons/AutoGrid/res/ErrorSign.svg: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /addons/AutoGrid/res/ErrorSign.svg.import: -------------------------------------------------------------------------------- 1 | [remap] 2 | 3 | importer="texture" 4 | type="CompressedTexture2D" 5 | uid="uid://dbiw3nviwl7vk" 6 | path="res://.godot/imported/ErrorSign.svg-2941aa11eb99a28b29252bf3a6f737f5.ctex" 7 | metadata={ 8 | "vram_texture": false 9 | } 10 | 11 | [deps] 12 | 13 | source_file="res://addons/AutoGrid/res/ErrorSign.svg" 14 | dest_files=["res://.godot/imported/ErrorSign.svg-2941aa11eb99a28b29252bf3a6f737f5.ctex"] 15 | 16 | [params] 17 | 18 | compress/mode=0 19 | compress/high_quality=false 20 | compress/lossy_quality=0.7 21 | compress/hdr_compression=1 22 | compress/normal_map=0 23 | compress/channel_pack=0 24 | mipmaps/generate=false 25 | mipmaps/limit=-1 26 | roughness/mode=0 27 | roughness/src_normal="" 28 | process/fix_alpha_border=false 29 | process/premult_alpha=false 30 | process/normal_map_invert_y=false 31 | process/hdr_as_srgb=false 32 | process/hdr_clamp_exposure=false 33 | process/size_limit=0 34 | detect_3d/compress_to=1 35 | svg/scale=5.0 36 | editor/scale_with_editor_scale=false 37 | editor/convert_colors_with_editor_theme=false 38 | -------------------------------------------------------------------------------- /addons/AutoGrid/res/GridEdit.svg: -------------------------------------------------------------------------------- 1 | 2 | 17 | 19 | 20 | 22 | image/svg+xml 23 | 25 | 26 | 27 | 28 | 30 | 50 | 53 | 54 | 58 | 62 | 63 | 68 | 69 | -------------------------------------------------------------------------------- /addons/AutoGrid/res/GridEdit.svg.import: -------------------------------------------------------------------------------- 1 | [remap] 2 | 3 | importer="texture" 4 | type="CompressedTexture2D" 5 | uid="uid://dbqfwhscvlu6s" 6 | path="res://.godot/imported/GridEdit.svg-49a1a02c247064f95091adb9ab3fe622.ctex" 7 | metadata={ 8 | "vram_texture": false 9 | } 10 | 11 | [deps] 12 | 13 | source_file="res://addons/AutoGrid/res/GridEdit.svg" 14 | dest_files=["res://.godot/imported/GridEdit.svg-49a1a02c247064f95091adb9ab3fe622.ctex"] 15 | 16 | [params] 17 | 18 | compress/mode=0 19 | compress/high_quality=false 20 | compress/lossy_quality=0.7 21 | compress/hdr_compression=1 22 | compress/normal_map=0 23 | compress/channel_pack=0 24 | mipmaps/generate=false 25 | mipmaps/limit=-1 26 | roughness/mode=0 27 | roughness/src_normal="" 28 | process/fix_alpha_border=false 29 | process/premult_alpha=false 30 | process/normal_map_invert_y=false 31 | process/hdr_as_srgb=false 32 | process/hdr_clamp_exposure=false 33 | process/size_limit=0 34 | detect_3d/compress_to=1 35 | svg/scale=5.0 36 | editor/scale_with_editor_scale=false 37 | editor/convert_colors_with_editor_theme=false 38 | -------------------------------------------------------------------------------- /images/AutoGrid.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/XLIVE99/AutoGrid/36223c77efc87bff3b02159eb66410fe5cc9cab5/images/AutoGrid.png -------------------------------------------------------------------------------- /images/Bitmask.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/XLIVE99/AutoGrid/36223c77efc87bff3b02159eb66410fe5cc9cab5/images/Bitmask.png -------------------------------------------------------------------------------- /images/Edit_Button_Options.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/XLIVE99/AutoGrid/36223c77efc87bff3b02159eb66410fe5cc9cab5/images/Edit_Button_Options.png -------------------------------------------------------------------------------- /images/Performance_Mode.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/XLIVE99/AutoGrid/36223c77efc87bff3b02159eb66410fe5cc9cab5/images/Performance_Mode.png -------------------------------------------------------------------------------- /images/dock_panel.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/XLIVE99/AutoGrid/36223c77efc87bff3b02159eb66410fe5cc9cab5/images/dock_panel.png -------------------------------------------------------------------------------- /images/enable_plugin.GIF: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/XLIVE99/AutoGrid/36223c77efc87bff3b02159eb66410fe5cc9cab5/images/enable_plugin.GIF -------------------------------------------------------------------------------- /images/panel_inside.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/XLIVE99/AutoGrid/36223c77efc87bff3b02159eb66410fe5cc9cab5/images/panel_inside.png --------------------------------------------------------------------------------