├── .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 |
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 | 
9 | ## **Usage**
10 | All AutoGrid settings are in the AutoGrid dock panel which is in same tab as the inspector panel.
11 | 
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 | 
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 | 
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 | 
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 | 
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 |
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
--------------------------------------------------------------------------------