Updated func godot to latest dev

This commit is contained in:
Marco 2025-06-20 10:52:08 +02:00
commit d41eaf5164
26 changed files with 682 additions and 6069 deletions

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

File diff suppressed because one or more lines are too long

View file

@ -1429,14 +1429,6 @@
} }
// brush 158 // brush 158
{ {
( 336 432 16 ) ( 336 432 32 ) ( 336 400 16 ) Floors/Floor102 [ 0 -1 0 16 ] [ 0 0 -1 0 ] 90 1 1
( 336 432 32 ) ( 352 432 32 ) ( 352 400 16 ) Floors/Floor102 [ 1 0 0 24 ] [ 0 -1 0 16 ] 90 1 1
( 352 400 16 ) ( 352 432 16 ) ( 336 432 16 ) Floors/Floor102 [ -1 0 0 -24 ] [ 0 -1 0 16 ] 90 1 1
( 352 432 16 ) ( 352 432 32 ) ( 336 432 32 ) Floors/Floor102 [ -1 0 0 -24 ] [ 0 0 -1 0 ] 90 1 1
( 352 400 16 ) ( 352 432 32 ) ( 352 432 16 ) Floors/Floor102 [ 0 1 0 -16 ] [ 0 0 -1 0 ] 90 1 1
}
// brush 159
{
( 448 560 16 ) ( 448 560 17 ) ( 448 559 16 ) Walls/Wall0 [ 0 1 0 0 ] [ 0 0 -1 0 ] 0 -1 1 ( 448 560 16 ) ( 448 560 17 ) ( 448 559 16 ) Walls/Wall0 [ 0 1 0 0 ] [ 0 0 -1 0 ] 0 -1 1
( 464 464 32 ) ( 464 464 33 ) ( 465 464 32 ) Walls/Wall0 [ 1 0 0 0 ] [ 0 0 -1 0 ] 180 1 1 ( 464 464 32 ) ( 464 464 33 ) ( 465 464 32 ) Walls/Wall0 [ 1 0 0 0 ] [ 0 0 -1 0 ] 180 1 1
( 448 560 0 ) ( 448 559 0 ) ( 449 560 0 ) Walls/Wall0 [ 0 -1 0 0 ] [ -1 0 0 0 ] 270 1 1 ( 448 560 0 ) ( 448 559 0 ) ( 449 560 0 ) Walls/Wall0 [ 0 -1 0 0 ] [ -1 0 0 0 ] 270 1 1
@ -1444,7 +1436,7 @@
( 448 560 16 ) ( 449 560 16 ) ( 448 560 17 ) Walls/Wall0 [ 1 0 0 0 ] [ 0 0 -1 0 ] 0 1 1 ( 448 560 16 ) ( 449 560 16 ) ( 448 560 17 ) Walls/Wall0 [ 1 0 0 0 ] [ 0 0 -1 0 ] 0 1 1
( 456 432 32 ) ( 456 431 32 ) ( 456 432 33 ) Manual/Black [ 0 1 0 0 ] [ 0 0 -1 0 ] 0 -1 1 ( 456 432 32 ) ( 456 431 32 ) ( 456 432 33 ) Manual/Black [ 0 1 0 0 ] [ 0 0 -1 0 ] 0 -1 1
} }
// brush 160 // brush 159
{ {
( 520 232 16 ) ( 520 232 17 ) ( 520 231 16 ) Walls/Wall0 [ 0 1 0 8 ] [ 0 0 -1 0 ] 0 -1 1 ( 520 232 16 ) ( 520 232 17 ) ( 520 231 16 ) Walls/Wall0 [ 0 1 0 8 ] [ 0 0 -1 0 ] 0 -1 1
( 536 216 32 ) ( 536 216 33 ) ( 537 216 32 ) Walls/Wall0 [ 1 0 0 8 ] [ 0 0 -1 0 ] 0 1 1 ( 536 216 32 ) ( 536 216 33 ) ( 537 216 32 ) Walls/Wall0 [ 1 0 0 8 ] [ 0 0 -1 0 ] 0 1 1
@ -1453,7 +1445,7 @@
( 520 224 16 ) ( 521 224 16 ) ( 520 224 17 ) Walls/Wall0 [ 1 0 0 8 ] [ 0 0 -1 0 ] 0 1 1 ( 520 224 16 ) ( 521 224 16 ) ( 520 224 17 ) Walls/Wall0 [ 1 0 0 8 ] [ 0 0 -1 0 ] 0 1 1
( 536 104 32 ) ( 536 103 32 ) ( 536 104 33 ) Walls/Wall0 [ 0 1 0 8 ] [ 0 0 -1 0 ] 180 -1 1 ( 536 104 32 ) ( 536 103 32 ) ( 536 104 33 ) Walls/Wall0 [ 0 1 0 8 ] [ 0 0 -1 0 ] 180 -1 1
} }
// brush 161 // brush 160
{ {
( 320 352 16 ) ( 320 352 17 ) ( 320 351 16 ) Walls/Wall0 [ 0 1 0 0 ] [ 0 0 -1 0 ] 0 -1 1 ( 320 352 16 ) ( 320 352 17 ) ( 320 351 16 ) Walls/Wall0 [ 0 1 0 0 ] [ 0 0 -1 0 ] 0 -1 1
( 176 344 32 ) ( 176 344 33 ) ( 177 344 32 ) Walls/Wall0 [ 1 0 0 0 ] [ 0 0 -1 0 ] 0 1 1 ( 176 344 32 ) ( 176 344 33 ) ( 177 344 32 ) Walls/Wall0 [ 1 0 0 0 ] [ 0 0 -1 0 ] 0 1 1
@ -1462,7 +1454,7 @@
( 160 352 16 ) ( 161 352 16 ) ( 160 352 17 ) Walls/Wall0 [ 1 0 0 0 ] [ 0 0 -1 0 ] 0 1 1 ( 160 352 16 ) ( 161 352 16 ) ( 160 352 17 ) Walls/Wall0 [ 1 0 0 0 ] [ 0 0 -1 0 ] 0 1 1
( 376 224 32 ) ( 376 223 32 ) ( 376 224 33 ) Walls/Wall0 [ 0 1 0 0 ] [ 0 0 -1 0 ] 270 -1 1 ( 376 224 32 ) ( 376 223 32 ) ( 376 224 33 ) Walls/Wall0 [ 0 1 0 0 ] [ 0 0 -1 0 ] 270 -1 1
} }
// brush 162 // brush 161
{ {
( 424 352 16 ) ( 424 352 17 ) ( 424 351 16 ) Walls/Wall0 [ 0 1 0 0 ] [ 0 0 -1 0 ] 90 -1 1 ( 424 352 16 ) ( 424 352 17 ) ( 424 351 16 ) Walls/Wall0 [ 0 1 0 0 ] [ 0 0 -1 0 ] 90 -1 1
( 448 344 32 ) ( 448 344 33 ) ( 449 344 32 ) Walls/Wall0 [ 1 0 0 0 ] [ 0 0 -1 0 ] 0 1 1 ( 448 344 32 ) ( 448 344 33 ) ( 449 344 32 ) Walls/Wall0 [ 1 0 0 0 ] [ 0 0 -1 0 ] 0 1 1
@ -1471,7 +1463,7 @@
( 432 352 16 ) ( 433 352 16 ) ( 432 352 17 ) Walls/Wall0 [ 1 0 0 0 ] [ 0 0 -1 0 ] 0 1 1 ( 432 352 16 ) ( 433 352 16 ) ( 432 352 17 ) Walls/Wall0 [ 1 0 0 0 ] [ 0 0 -1 0 ] 0 1 1
( 448 224 32 ) ( 448 223 32 ) ( 448 224 33 ) Walls/Wall0 [ 0 1 0 0 ] [ 0 0 -1 0 ] 0 -1 1 ( 448 224 32 ) ( 448 223 32 ) ( 448 224 33 ) Walls/Wall0 [ 0 1 0 0 ] [ 0 0 -1 0 ] 0 -1 1
} }
// brush 163 // brush 162
{ {
( 336 864 40 ) ( 336 864 41 ) ( 336 863 40 ) special/clip [ 0 1 0 0 ] [ 0 0 -1 24 ] 0 -1 1 ( 336 864 40 ) ( 336 864 41 ) ( 336 863 40 ) special/clip [ 0 1 0 0 ] [ 0 0 -1 24 ] 0 -1 1
( 344 744 56 ) ( 344 744 57 ) ( 345 744 56 ) special/clip [ 1 0 0 8 ] [ 0 0 -1 24 ] 270 1 1 ( 344 744 56 ) ( 344 744 57 ) ( 345 744 56 ) special/clip [ 1 0 0 8 ] [ 0 0 -1 24 ] 270 1 1
@ -1480,7 +1472,7 @@
( 328 808 40 ) ( 329 808 40 ) ( 328 808 41 ) special/clip [ 1 0 0 8 ] [ 0 0 -1 24 ] 180 1 1 ( 328 808 40 ) ( 329 808 40 ) ( 328 808 41 ) special/clip [ 1 0 0 8 ] [ 0 0 -1 24 ] 180 1 1
( 344 736 56 ) ( 344 735 56 ) ( 344 736 57 ) special/clip [ 0 -1 0 0 ] [ 0 0 1 0 ] 180 1 -1 ( 344 736 56 ) ( 344 735 56 ) ( 344 736 57 ) special/clip [ 0 -1 0 0 ] [ 0 0 1 0 ] 180 1 -1
} }
// brush 164 // brush 163
{ {
( 232 920 40 ) ( 232 920 41 ) ( 232 919 40 ) special/clip [ 0 1 0 -8 ] [ 0 0 -1 24 ] 270 -1 1 ( 232 920 40 ) ( 232 920 41 ) ( 232 919 40 ) special/clip [ 0 1 0 -8 ] [ 0 0 -1 24 ] 270 -1 1
( 336 800 56 ) ( 336 800 57 ) ( 337 800 56 ) special/clip [ 1 0 0 -16 ] [ 0 0 -1 24 ] 90 1 1 ( 336 800 56 ) ( 336 800 57 ) ( 337 800 56 ) special/clip [ 1 0 0 -16 ] [ 0 0 -1 24 ] 90 1 1
@ -1489,7 +1481,7 @@
( 320 808 40 ) ( 321 808 40 ) ( 320 808 41 ) special/clip [ 1 0 0 -16 ] [ 0 0 -1 24 ] 90 1 1 ( 320 808 40 ) ( 321 808 40 ) ( 320 808 41 ) special/clip [ 1 0 0 -16 ] [ 0 0 -1 24 ] 90 1 1
( 336 792 56 ) ( 336 791 56 ) ( 336 792 57 ) special/clip [ 0 -1 0 -8 ] [ 0 0 1 0 ] 0 1 -1 ( 336 792 56 ) ( 336 791 56 ) ( 336 792 57 ) special/clip [ 0 -1 0 -8 ] [ 0 0 1 0 ] 0 1 -1
} }
// brush 165 // brush 164
{ {
( 336 856 40 ) ( 336 856 41 ) ( 336 855 40 ) special/clip [ 0 1 0 -8 ] [ 0 0 -1 24 ] 180 -1 1 ( 336 856 40 ) ( 336 856 41 ) ( 336 855 40 ) special/clip [ 0 1 0 -8 ] [ 0 0 -1 24 ] 180 -1 1
( 400 736 56 ) ( 400 736 57 ) ( 401 736 56 ) special/clip [ 1 0 0 -16 ] [ 0 0 -1 24 ] 270 1 1 ( 400 736 56 ) ( 400 736 57 ) ( 401 736 56 ) special/clip [ 1 0 0 -16 ] [ 0 0 -1 24 ] 270 1 1
@ -1498,7 +1490,7 @@
( 384 744 40 ) ( 385 744 40 ) ( 384 744 41 ) special/clip [ 1 0 0 -16 ] [ 0 0 -1 24 ] 270 1 1 ( 384 744 40 ) ( 385 744 40 ) ( 384 744 41 ) special/clip [ 1 0 0 -16 ] [ 0 0 -1 24 ] 270 1 1
( 400 728 56 ) ( 400 727 56 ) ( 400 728 57 ) special/clip [ 0 -1 0 -8 ] [ 0 0 1 0 ] 180 1 -1 ( 400 728 56 ) ( 400 727 56 ) ( 400 728 57 ) special/clip [ 0 -1 0 -8 ] [ 0 0 1 0 ] 180 1 -1
} }
// brush 166 // brush 165
{ {
( 160 372 20 ) ( 160 372 21 ) ( 160 371 20 ) Floors/Floor26 [ -1.9600538592723536e-15 -1 0 -8 ] [ 0 0 -1 4 ] 90 1 1 ( 160 372 20 ) ( 160 372 21 ) ( 160 371 20 ) Floors/Floor26 [ -1.9600538592723536e-15 -1 0 -8 ] [ 0 0 -1 4 ] 90 1 1
( 236 368 24 ) ( 236 368 25 ) ( 237 368 24 ) Floors/Floor26 [ 1 -1.9600538592723536e-15 0 0 ] [ 0 0 -1 4 ] 90 1 1 ( 236 368 24 ) ( 236 368 25 ) ( 237 368 24 ) Floors/Floor26 [ 1 -1.9600538592723536e-15 0 0 ] [ 0 0 -1 4 ] 90 1 1
@ -1507,7 +1499,7 @@
( 160 372 20 ) ( 161 372 20 ) ( 160 372 21 ) Floors/Floor26 [ 1 -1.9600538592723536e-15 0 0 ] [ 0 0 -1 4 ] 270 1 1 ( 160 372 20 ) ( 161 372 20 ) ( 160 372 21 ) Floors/Floor26 [ 1 -1.9600538592723536e-15 0 0 ] [ 0 0 -1 4 ] 270 1 1
( 192 368 24 ) ( 192 367 24 ) ( 192 368 25 ) Floors/Floor26 [ -1.9600538592723536e-15 -1 0 -8 ] [ 0 0 -1 4 ] 90 1 1 ( 192 368 24 ) ( 192 367 24 ) ( 192 368 25 ) Floors/Floor26 [ -1.9600538592723536e-15 -1 0 -8 ] [ 0 0 -1 4 ] 90 1 1
} }
// brush 167 // brush 166
{ {
( 156 368 16 ) ( 156 369 16 ) ( 156 368 17 ) Floors/Floor26 [ 0 1 0 -4 ] [ 0 0 -1 0 ] 0 1 1 ( 156 368 16 ) ( 156 369 16 ) ( 156 368 17 ) Floors/Floor26 [ 0 1 0 -4 ] [ 0 0 -1 0 ] 0 1 1
( 156 368 16 ) ( 156 368 17 ) ( 157 368 16 ) Floors/Floor26 [ 1 0 0 4 ] [ 0 0 -1 0 ] 0 1 1 ( 156 368 16 ) ( 156 368 17 ) ( 157 368 16 ) Floors/Floor26 [ 1 0 0 4 ] [ 0 0 -1 0 ] 0 1 1
@ -1516,7 +1508,7 @@
( 160 372 20 ) ( 161 372 20 ) ( 160 372 21 ) Floors/Floor26 [ 1 0 0 4 ] [ 0 0 -1 0 ] 0 1 1 ( 160 372 20 ) ( 161 372 20 ) ( 160 372 21 ) Floors/Floor26 [ 1 0 0 4 ] [ 0 0 -1 0 ] 0 1 1
( 160 372 20 ) ( 160 372 21 ) ( 160 373 20 ) Floors/Floor26 [ 0 1 0 -4 ] [ 0 0 -1 0 ] 0 1 1 ( 160 372 20 ) ( 160 372 21 ) ( 160 373 20 ) Floors/Floor26 [ 0 1 0 -4 ] [ 0 0 -1 0 ] 0 1 1
} }
// brush 168 // brush 167
{ {
( 192 368 16 ) ( 192 369 16 ) ( 192 368 17 ) Floors/Floor26 [ 0 1 0 -4 ] [ 0 0 -1 0 ] 270 1 1 ( 192 368 16 ) ( 192 369 16 ) ( 192 368 17 ) Floors/Floor26 [ 0 1 0 -4 ] [ 0 0 -1 0 ] 270 1 1
( 192 368 16 ) ( 192 368 17 ) ( 193 368 16 ) Floors/Floor26 [ 1 0 0 0 ] [ 0 0 -1 0 ] 90 1 1 ( 192 368 16 ) ( 192 368 17 ) ( 193 368 16 ) Floors/Floor26 [ 1 0 0 0 ] [ 0 0 -1 0 ] 90 1 1
@ -2045,7 +2037,7 @@
// entity 37 // entity 37
{ {
"classname" "actor_barrel_1" "classname" "actor_barrel_1"
"origin" "432 480 24" "origin" "256 504 24"
"targetname" "actor_elevator_test" "targetname" "actor_elevator_test"
} }
// entity 38 // entity 38
@ -2290,425 +2282,406 @@
} }
// entity 77 // entity 77
{ {
"classname" "actor_box_red" "classname" "actor_box_blue"
"origin" "392 448 20" "origin" "360 488 20"
"angle" "45"
"targetname" "actor_elevator_test" "targetname" "actor_elevator_test"
} }
// entity 78 // entity 78
{ {
"classname" "actor_box_blue" "classname" "actor_box_blue"
"origin" "360 488 20" "origin" "360 488 28"
"targetname" "actor_elevator_test" "targetname" "actor_elevator_test"
} }
// entity 79 // entity 79
{ {
"classname" "actor_box_blue" "classname" "actor_box_blue"
"origin" "360 488 28" "origin" "360 456 28"
"targetname" "actor_elevator_test" "targetname" "actor_elevator_test"
} }
// entity 80 // entity 80
{ {
"classname" "actor_box_blue" "classname" "actor_box_blue"
"origin" "360 456 28" "origin" "344 440 28"
"targetname" "actor_elevator_test" "targetname" "actor_elevator_test"
} }
// entity 81 // entity 81
{ {
"classname" "actor_box_blue" "classname" "actor_box_blue"
"origin" "344 440 28"
"targetname" "actor_elevator_test"
}
// entity 82
{
"classname" "actor_box_blue"
"origin" "136 456 20" "origin" "136 456 20"
"targetname" "actor_elevator_test" "targetname" "actor_elevator_test"
} }
// entity 83 // entity 82
{ {
"classname" "actor_box_wood" "classname" "actor_box_wood"
"origin" "268 192 20" "origin" "268 192 20"
"targetname" "actor_elevator_test" "targetname" "actor_elevator_test"
} }
// entity 84 // entity 83
{ {
"classname" "actor_box_wood" "classname" "actor_box_wood"
"origin" "276 192 20" "origin" "276 192 20"
"targetname" "actor_elevator_test" "targetname" "actor_elevator_test"
} }
// entity 85 // entity 84
{ {
"classname" "actor_box_wood" "classname" "actor_box_wood"
"origin" "268 208 20" "origin" "268 208 20"
"targetname" "actor_elevator_test" "targetname" "actor_elevator_test"
} }
// entity 86 // entity 85
{ {
"classname" "actor_box_wood" "classname" "actor_box_wood"
"origin" "268 192 28" "origin" "268 192 28"
"targetname" "actor_elevator_test" "targetname" "actor_elevator_test"
} }
// entity 87 // entity 86
{ {
"classname" "actor_box_wood" "classname" "actor_box_wood"
"origin" "268 272 20" "origin" "268 272 20"
"targetname" "actor_elevator_test" "targetname" "actor_elevator_test"
} }
// entity 88 // entity 87
{ {
"classname" "actor_box_wood" "classname" "actor_box_wood"
"origin" "276 272 20" "origin" "276 272 20"
"targetname" "actor_elevator_test" "targetname" "actor_elevator_test"
} }
// entity 89 // entity 88
{ {
"classname" "actor_box_wood" "classname" "actor_box_wood"
"origin" "268 256 20" "origin" "268 256 20"
"targetname" "actor_elevator_test" "targetname" "actor_elevator_test"
} }
// entity 90 // entity 89
{ {
"classname" "actor_box_wood" "classname" "actor_box_wood"
"origin" "268 272 28" "origin" "268 272 28"
"targetname" "actor_elevator_test" "targetname" "actor_elevator_test"
} }
// entity 91 // entity 90
{ {
"classname" "actor_box_wood" "classname" "actor_box_wood"
"origin" "356 272 20" "origin" "356 272 20"
"targetname" "actor_elevator_test" "targetname" "actor_elevator_test"
} }
// entity 92 // entity 91
{ {
"classname" "actor_box_wood" "classname" "actor_box_wood"
"origin" "356 184 20" "origin" "356 184 20"
"targetname" "actor_elevator_test" "targetname" "actor_elevator_test"
} }
// entity 93 // entity 92
{ {
"classname" "actor_box_wood" "classname" "actor_box_wood"
"origin" "356 272 28" "origin" "356 272 28"
"targetname" "actor_elevator_test" "targetname" "actor_elevator_test"
} }
// entity 94 // entity 93
{ {
"classname" "actor_box_wood" "classname" "actor_box_wood"
"origin" "356 184 28" "origin" "356 184 28"
"targetname" "actor_elevator_test" "targetname" "actor_elevator_test"
} }
// entity 95 // entity 94
{ {
"classname" "actor_box_wood" "classname" "actor_box_wood"
"origin" "364 184 20" "origin" "364 184 20"
"targetname" "actor_elevator_test" "targetname" "actor_elevator_test"
} }
// entity 96 // entity 95
{ {
"classname" "actor_box_wood" "classname" "actor_box_wood"
"origin" "364 272 20" "origin" "364 272 20"
"targetname" "actor_elevator_test" "targetname" "actor_elevator_test"
} }
// entity 97 // entity 96
{ {
"classname" "actor_table" "classname" "actor_table"
"origin" "272 232 20" "origin" "272 232 20"
"targetname" "actor_elevator_test" "targetname" "actor_elevator_test"
} }
// entity 98 // entity 97
{ {
"classname" "actor_box_blue" "classname" "actor_box_blue"
"origin" "336 192 20" "origin" "336 192 20"
"targetname" "actor_elevator_test" "targetname" "actor_elevator_test"
} }
// entity 99 // entity 98
{ {
"classname" "actor_box_red" "classname" "actor_box_red"
"origin" "336 192 28" "origin" "336 192 28"
"targetname" "actor_elevator_test" "targetname" "actor_elevator_test"
} }
// entity 100 // entity 99
{ {
"classname" "actor_box_blue" "classname" "actor_box_blue"
"origin" "336 272 20" "origin" "336 272 20"
"targetname" "actor_elevator_test" "targetname" "actor_elevator_test"
} }
// entity 101 // entity 100
{ {
"classname" "actor_box_blue" "classname" "actor_box_blue"
"origin" "336 272 28" "origin" "336 272 28"
"targetname" "actor_elevator_test" "targetname" "actor_elevator_test"
} }
// entity 102 // entity 101
{ {
"classname" "actor_barrel_1" "classname" "actor_barrel_1"
"origin" "248 360 24" "origin" "248 360 24"
"targetname" "actor_elevator_test" "targetname" "actor_elevator_test"
} }
// entity 103 // entity 102
{ {
"classname" "actor_barrel_1" "classname" "actor_barrel_1"
"origin" "232 360 24" "origin" "232 360 24"
"targetname" "actor_elevator_test" "targetname" "actor_elevator_test"
} }
// entity 104 // entity 103
{ {
"classname" "actor_barrel_1" "classname" "actor_barrel_1"
"origin" "232 360 32" "origin" "232 360 32"
"targetname" "actor_elevator_test" "targetname" "actor_elevator_test"
} }
// entity 105 // entity 104
{ {
"classname" "actor_tank" "classname" "actor_tank"
"origin" "432 544 24" "origin" "432 544 24"
"targetname" "actor_elevator_test" "targetname" "actor_elevator_test"
"angle" "90"
} }
// entity 106 // entity 105
{ {
"classname" "actor_ac_unit" "classname" "actor_ac_unit"
"origin" "312 360 24" "origin" "312 360 24"
"angle" "270" "angle" "270"
"targetname" "actor_elevator_test" "targetname" "actor_elevator_test"
} }
// entity 107 // entity 106
{ {
"classname" "actor_ac_unit" "classname" "actor_ac_unit"
"origin" "168 552 24" "origin" "168 552 24"
"angle" "180" "angle" "180"
"targetname" "actor_elevator_test" "targetname" "actor_elevator_test"
} }
// entity 108 // entity 107
{ {
"classname" "actor_terminal" "classname" "actor_terminal"
"origin" "272 232 28" "origin" "272 232 28"
"targetname" "actor_elevator_test" "targetname" "actor_elevator_test"
} }
// entity 109 // entity 108
{ {
"classname" "actor_ac_unit" "classname" "actor_ac_unit"
"origin" "304 188 24" "origin" "304 188 24"
"angle" "270" "angle" "270"
"targetname" "actor_elevator_test" "targetname" "actor_elevator_test"
} }
// entity 110 // entity 109
{ {
"classname" "actor_tube_corner" "classname" "actor_tube_corner"
"origin" "208 488 24" "origin" "208 488 24"
"angle" "270" "angle" "270"
"targetname" "actor_elevator_test" "targetname" "actor_elevator_test"
} }
// entity 111 // entity 110
{ {
"classname" "actor_tube_corner" "classname" "actor_tube_corner"
"origin" "208 440 24" "origin" "208 440 24"
"angle" "180" "angle" "180"
"targetname" "actor_elevator_test" "targetname" "actor_elevator_test"
} }
// entity 112 // entity 111
{ {
"classname" "actor_box_green" "classname" "actor_box_green"
"origin" "328 472 20" "origin" "328 472 20"
"targetname" "actor_elevator_test" "targetname" "actor_elevator_test"
} }
// entity 113 // entity 112
{ {
"classname" "actor_box_green" "classname" "actor_box_green"
"origin" "344 472 20" "origin" "344 472 20"
"targetname" "actor_elevator_test" "targetname" "actor_elevator_test"
} }
// entity 114 // entity 113
{ {
"classname" "actor_box_yellow" "classname" "actor_box_yellow"
"origin" "344 488 20" "origin" "344 488 20"
"targetname" "actor_elevator_test" "targetname" "actor_elevator_test"
} }
// entity 115 // entity 114
{ {
"classname" "actor_box_green" "classname" "actor_box_green"
"origin" "328 488 28" "origin" "328 488 28"
"targetname" "actor_elevator_test" "targetname" "actor_elevator_test"
} }
// entity 116 // entity 115
{ {
"classname" "actor_box_yellow" "classname" "actor_box_yellow"
"origin" "328 440 28" "origin" "328 440 28"
"targetname" "actor_elevator_test" "targetname" "actor_elevator_test"
} }
// entity 117 // entity 116
{ {
"classname" "actor_box_yellow" "classname" "actor_box_yellow"
"origin" "360 472 20" "origin" "360 472 20"
"targetname" "actor_elevator_test" "targetname" "actor_elevator_test"
} }
// entity 118 // entity 117
{ {
"classname" "actor_capacitor" "classname" "actor_capacitor"
"origin" "528 136 28" "origin" "528 136 28"
"targetname" "actor_elevator_test" "targetname" "actor_elevator_test"
} }
// entity 119 // entity 118
{ {
"classname" "actor_capacitor" "classname" "actor_capacitor"
"origin" "496 136 28" "origin" "496 136 28"
"targetname" "actor_elevator_test" "targetname" "actor_elevator_test"
} }
// entity 120 // entity 119
{ {
"classname" "actor_box_green" "classname" "actor_box_green"
"origin" "248 712 20" "origin" "248 712 20"
"targetname" "actor_elevator_test" "targetname" "actor_elevator_test"
} }
// entity 121 // entity 120
{ {
"classname" "actor_box_wood" "classname" "actor_box_wood"
"origin" "244 792 28" "origin" "244 792 28"
"targetname" "actor_elevator_test" "targetname" "actor_elevator_test"
} }
// entity 122 // entity 121
{ {
"classname" "actor_box_wood" "classname" "actor_box_wood"
"origin" "244 792 20" "origin" "244 792 20"
"targetname" "actor_elevator_test" "targetname" "actor_elevator_test"
} }
// entity 123 // entity 122
{ {
"classname" "actor_table" "classname" "actor_table"
"origin" "248 732 20" "origin" "248 732 20"
"targetname" "actor_elevator_test" "targetname" "actor_elevator_test"
} }
// entity 124 // entity 123
{ {
"classname" "actor_box_green" "classname" "actor_box_green"
"origin" "280 792 20" "origin" "280 792 20"
"targetname" "actor_elevator_test" "targetname" "actor_elevator_test"
} }
// entity 125 // entity 124
{ {
"classname" "actor_box_red" "classname" "actor_box_red"
"origin" "296 784 20" "origin" "296 784 20"
"targetname" "actor_elevator_test" "targetname" "actor_elevator_test"
} }
// entity 126 // entity 125
{ {
"classname" "actor_box_blue" "classname" "actor_box_blue"
"origin" "312 760 20" "origin" "312 760 20"
"targetname" "actor_elevator_test" "targetname" "actor_elevator_test"
} }
// entity 127 // entity 126
{ {
"classname" "actor_box_yellow" "classname" "actor_box_yellow"
"origin" "320 792 20" "origin" "320 792 20"
"targetname" "actor_elevator_test" "targetname" "actor_elevator_test"
} }
// entity 128 // entity 127
{ {
"classname" "actor_box_blue" "classname" "actor_box_blue"
"origin" "248 712 28" "origin" "248 712 28"
"targetname" "actor_elevator_test" "targetname" "actor_elevator_test"
} }
// entity 129 // entity 128
{ {
"classname" "actor_box_wood" "classname" "actor_box_wood"
"origin" "244 776 20" "origin" "244 776 20"
"targetname" "actor_elevator_test" "targetname" "actor_elevator_test"
} }
// entity 130 // entity 129
{ {
"classname" "actor_box_wood" "classname" "actor_box_wood"
"origin" "252 792 20" "origin" "252 792 20"
"targetname" "actor_elevator_test" "targetname" "actor_elevator_test"
} }
// entity 131 // entity 130
{ {
"classname" "actor_box_wood" "classname" "actor_box_wood"
"origin" "308 792 20" "origin" "308 792 20"
"targetname" "actor_elevator_test" "targetname" "actor_elevator_test"
} }
// entity 132 // entity 131
{ {
"classname" "actor_ac_unit" "classname" "actor_ac_unit"
"origin" "284 708 24" "origin" "284 708 24"
"angle" "270" "angle" "270"
"targetname" "actor_elevator_test" "targetname" "actor_elevator_test"
} }
// entity 133 // entity 132
{ {
"classname" "actor_vendingmachine" "classname" "actor_vendingmachine"
"origin" "248 760 28" "origin" "248 760 28"
"targetname" "actor_elevator_test" "targetname" "actor_elevator_test"
} }
// entity 134 // entity 133
{ {
"classname" "actor_vendingmachine" "classname" "actor_vendingmachine"
"origin" "280 744 28" "origin" "280 744 28"
"angle" "270" "angle" "270"
"targetname" "actor_elevator_test" "targetname" "actor_elevator_test"
} }
// entity 135 // entity 134
{
"classname" "actor_elevator_1"
"origin" "376 416 18"
"targetname" "actor_elevator_test"
}
// entity 136
{
"classname" "actor_controlpad"
"origin" "420 356 28"
"targetname" ""
"target" "actor_elevator_test"
}
// entity 137
{ {
"classname" "actor_terminal_big" "classname" "actor_terminal_big"
"origin" "168 532 28" "origin" "168 532 28"
} }
// entity 138 // entity 135
{ {
"classname" "actor_box_green" "classname" "actor_box_green"
"origin" "376 456 20" "origin" "376 456 20"
} }
// entity 139 // entity 136
{ {
"classname" "actor_box_green" "classname" "actor_box_green"
"origin" "376 456 28" "origin" "376 456 28"
} }
// entity 140 // entity 137
{ {
"classname" "actor_capacitor_mini" "classname" "actor_capacitor_mini"
"origin" "184 360 24" "origin" "184 360 24"
} }
// entity 141 // entity 138
{ {
"classname" "actor_capacitor_mini" "classname" "actor_capacitor_mini"
"origin" "168 360 24" "origin" "168 360 24"
} }
// entity 142 // entity 139
{ {
"classname" "actor_table" "classname" "actor_table"
"origin" "168 396 20" "origin" "168 396 20"
} }
// entity 143 // entity 140
{ {
"classname" "actor_terminal" "classname" "actor_terminal"
"origin" "168 396 28" "origin" "168 396 28"
} }
// entity 144 // entity 141
{ {
"classname" "actor_box_wood" "classname" "actor_box_wood"
"origin" "168 376 20" "origin" "168 376 20"
"angle" "90" "angle" "90"
} }
// entity 145 // entity 142
{ {
"classname" "actor_box_blue" "classname" "actor_box_blue"
"origin" "136 456 28" "origin" "136 456 28"
} }
// entity 146 // entity 143
{ {
"classname" "actor_box_red" "classname" "actor_box_red"
"origin" "148 456 20" "origin" "148 456 20"
} }
// entity 147 // entity 144
{ {
"classname" "func_group" "classname" "func_group"
"_tb_type" "_tb_group" "_tb_type" "_tb_group"
@ -2725,7 +2698,7 @@
( 140 444 20 ) ( 140 444 21 ) ( 140 445 20 ) Manual/Wall_Light_Test [ 0 1 0 4 ] [ 0 0 -1 0 ] 90 1 1 ( 140 444 20 ) ( 140 444 21 ) ( 140 445 20 ) Manual/Wall_Light_Test [ 0 1 0 4 ] [ 0 0 -1 0 ] 90 1 1
} }
} }
// entity 148 // entity 145
{ {
"classname" "func_group" "classname" "func_group"
"_tb_type" "_tb_group" "_tb_type" "_tb_group"
@ -2743,7 +2716,7 @@
( 220 396 20 ) ( 220 396 21 ) ( 220 397 20 ) Manual/Wall_Light_Test [ 0 1 0 4 ] [ 0 0 -1 0 ] 270 1 1 ( 220 396 20 ) ( 220 396 21 ) ( 220 397 20 ) Manual/Wall_Light_Test [ 0 1 0 4 ] [ 0 0 -1 0 ] 270 1 1
} }
} }
// entity 149 // entity 146
{ {
"classname" "func_group" "classname" "func_group"
"_tb_type" "_tb_group" "_tb_type" "_tb_group"
@ -2761,7 +2734,7 @@
( 220 412 20 ) ( 220 412 21 ) ( 220 413 20 ) Manual/Wall_Light_Test [ 0 1 0 4 ] [ 0 0 -1 0 ] 90 1 1 ( 220 412 20 ) ( 220 412 21 ) ( 220 413 20 ) Manual/Wall_Light_Test [ 0 1 0 4 ] [ 0 0 -1 0 ] 90 1 1
} }
} }
// entity 150 // entity 147
{ {
"classname" "func_group" "classname" "func_group"
"_tb_type" "_tb_group" "_tb_type" "_tb_group"
@ -2779,7 +2752,7 @@
( 268 396 20 ) ( 268 396 21 ) ( 268 397 20 ) Manual/Wall_Light_Test [ 0 1 0 -12 ] [ 0 0 -1 0 ] 0 1 1 ( 268 396 20 ) ( 268 396 21 ) ( 268 397 20 ) Manual/Wall_Light_Test [ 0 1 0 -12 ] [ 0 0 -1 0 ] 0 1 1
} }
} }
// entity 151 // entity 148
{ {
"classname" "func_group" "classname" "func_group"
"_tb_type" "_tb_group" "_tb_type" "_tb_group"
@ -2797,13 +2770,14 @@
( 300 748 20 ) ( 300 748 21 ) ( 300 749 20 ) Manual/Wall_Light_Test [ 0 1 0 4 ] [ 0 0 -1 0 ] 0 1 1 ( 300 748 20 ) ( 300 748 21 ) ( 300 749 20 ) Manual/Wall_Light_Test [ 0 1 0 4 ] [ 0 0 -1 0 ] 0 1 1
} }
} }
// entity 152 // entity 149
{ {
"classname" "actor_tank_large" "classname" "actor_tank_large"
"origin" "336 544 32" "origin" "336 544 32"
} }
// entity 153 // entity 150
{ {
"classname" "actor_tank_large" "classname" "actor_tank_large"
"origin" "424 440 32" "origin" "432 464 32"
"angle" "90"
} }

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

View file

@ -10,6 +10,7 @@ target_map_editor = 0
models_sub_folder = "" models_sub_folder = ""
scale_expression = "" scale_expression = ""
generate_size_property = false generate_size_property = false
rotation_offset = Vector3(0, 180, 0)
generate_gd_ignore_file = false generate_gd_ignore_file = false
scene_file = ExtResource("2_frb07") scene_file = ExtResource("2_frb07")
apply_rotation_on_map_build = true apply_rotation_on_map_build = true
@ -23,7 +24,7 @@ class_property_descriptions = {}
auto_apply_to_matching_node_properties = false auto_apply_to_matching_node_properties = false
meta_properties = { meta_properties = {
"size": AABB(-8, -8, -8, 8, 8, 8), "size": AABB(-8, -8, -8, 8, 8, 8),
"studio": "\"3D\\MapModels/actor_capacitor_mini.glb\"" "studio": "\"3D/MapModels/actor_capacitor_mini.glb\""
} }
node_class = "" node_class = ""
name_property = "" name_property = ""

View file

@ -10,12 +10,13 @@ target_map_editor = 0
models_sub_folder = "" models_sub_folder = ""
scale_expression = "" scale_expression = ""
generate_size_property = false generate_size_property = false
rotation_offset = Vector3(0, 180, 0)
generate_gd_ignore_file = false generate_gd_ignore_file = false
scene_file = ExtResource("2_0u3k1") scene_file = ExtResource("2_0u3k1")
apply_rotation_on_map_build = true apply_rotation_on_map_build = true
apply_scale_on_map_build = false apply_scale_on_map_build = false
classname = "actor_tank_large" classname = "actor_tank_large"
description = "Vending Machine" description = "Large Tank"
func_godot_internal = false func_godot_internal = false
base_classes = Array[Resource]([ExtResource("1_0u3k1")]) base_classes = Array[Resource]([ExtResource("1_0u3k1")])
class_properties = {} class_properties = {}

View file

@ -10,6 +10,7 @@ target_map_editor = 0
models_sub_folder = "" models_sub_folder = ""
scale_expression = "" scale_expression = ""
generate_size_property = false generate_size_property = false
rotation_offset = Vector3(0, 180, 0)
generate_gd_ignore_file = false generate_gd_ignore_file = false
scene_file = ExtResource("2_2x8yp") scene_file = ExtResource("2_2x8yp")
apply_rotation_on_map_build = true apply_rotation_on_map_build = true

View file

@ -10,6 +10,7 @@ target_map_editor = 0
models_sub_folder = "" models_sub_folder = ""
scale_expression = "" scale_expression = ""
generate_size_property = false generate_size_property = false
rotation_offset = Vector3(0, 180, 0)
generate_gd_ignore_file = false generate_gd_ignore_file = false
scene_file = ExtResource("2_6p0lm") scene_file = ExtResource("2_6p0lm")
apply_rotation_on_map_build = true apply_rotation_on_map_build = true
@ -23,7 +24,8 @@ class_property_descriptions = {}
auto_apply_to_matching_node_properties = false auto_apply_to_matching_node_properties = false
meta_properties = { meta_properties = {
"model": "\"3D/MapModels/Barrel3DModel.glb\"", "model": "\"3D/MapModels/Barrel3DModel.glb\"",
"size": AABB(-8, -8, -8, 8, 8, 8) "size": AABB(-8, -8, -8, 8, 8, 8),
"studio": "\"3D/MapModels/actor_chest_1.glb\""
} }
node_class = "" node_class = ""
name_property = "" name_property = ""

View file

@ -11,6 +11,7 @@ target_map_editor = 0
models_sub_folder = "" models_sub_folder = ""
scale_expression = "" scale_expression = ""
generate_size_property = false generate_size_property = false
rotation_offset = Vector3(0, 180, 0)
generate_gd_ignore_file = false generate_gd_ignore_file = false
scene_file = ExtResource("2_5ms1a") scene_file = ExtResource("2_5ms1a")
apply_rotation_on_map_build = true apply_rotation_on_map_build = true
@ -24,7 +25,7 @@ class_property_descriptions = {}
auto_apply_to_matching_node_properties = false auto_apply_to_matching_node_properties = false
meta_properties = { meta_properties = {
"size": AABB(-4, -4, -4, 4, 4, 4), "size": AABB(-4, -4, -4, 4, 4, 4),
"studio": "\"3D/MapModels/actor_vendingmachine.glb\"" "studio": "\"3D/MapModels/actor_controlpad.glb\""
} }
node_class = "" node_class = ""
name_property = "" name_property = ""

View file

@ -10,6 +10,7 @@ target_map_editor = 0
models_sub_folder = "" models_sub_folder = ""
scale_expression = "" scale_expression = ""
generate_size_property = false generate_size_property = false
rotation_offset = Vector3(0, 180, 0)
generate_gd_ignore_file = false generate_gd_ignore_file = false
scene_file = ExtResource("2_tvwfa") scene_file = ExtResource("2_tvwfa")
apply_rotation_on_map_build = true apply_rotation_on_map_build = true
@ -23,7 +24,7 @@ class_property_descriptions = {}
auto_apply_to_matching_node_properties = false auto_apply_to_matching_node_properties = false
meta_properties = { meta_properties = {
"size": AABB(-8, -12, -12, 8, 12, 12), "size": AABB(-8, -12, -12, 8, 12, 12),
"studio": "\"3D/MapModels/Terminal_Big.glb\"" "studio": "\"3D/MapModels/actor_terminal_big.glb\""
} }
node_class = "" node_class = ""
name_property = "" name_property = ""

View file

@ -1,10 +1,10 @@
[gd_resource type="Resource" script_class="TrenchBroomGameConfig" load_steps=7 format=3 uid="uid://b44ah5b2000wa"] [gd_resource type="Resource" script_class="TrenchBroomGameConfig" load_steps=7 format=3 uid="uid://b44ah5b2000wa"]
[ext_resource type="Resource" uid="uid://crgpdahjaj" path="res://addons/func_godot/fgd/func_godot_fgd.tres" id="1_8u1vq"]
[ext_resource type="Resource" uid="uid://b4xhdj0e16lop" path="res://addons/func_godot/game_config/trenchbroom/tb_face_tag_clip.tres" id="1_rsp20"] [ext_resource type="Resource" uid="uid://b4xhdj0e16lop" path="res://addons/func_godot/game_config/trenchbroom/tb_face_tag_clip.tres" id="1_rsp20"]
[ext_resource type="Resource" uid="uid://ca7377sfgj074" path="res://addons/func_godot/game_config/trenchbroom/tb_face_tag_skip.tres" id="2_166i2"] [ext_resource type="Resource" uid="uid://ca7377sfgj074" path="res://addons/func_godot/game_config/trenchbroom/tb_face_tag_skip.tres" id="2_166i2"]
[ext_resource type="Script" uid="uid://cfpnvyygr4pb5" path="res://addons/func_godot/src/trenchbroom/trenchbroom_game_config.gd" id="2_ns6ah"] [ext_resource type="Script" path="res://addons/func_godot/src/trenchbroom/trenchbroom_game_config.gd" id="2_ns6ah"]
[ext_resource type="Resource" uid="uid://bkjxc54mmdhbo" path="res://addons/func_godot/game_config/trenchbroom/tb_face_tag_origin.tres" id="3_stisi"] [ext_resource type="Resource" uid="uid://bkjxc54mmdhbo" path="res://addons/func_godot/game_config/trenchbroom/tb_face_tag_origin.tres" id="3_stisi"]
[ext_resource type="Resource" uid="uid://cxqi6r6nblcn3" path="res://3D/TrenchBroom/fgd_main.tres" id="4_4rf4d"]
[ext_resource type="Texture2D" uid="uid://decwujsyhj0qy" path="res://addons/func_godot/icon32.png" id="6_tex5j"] [ext_resource type="Texture2D" uid="uid://decwujsyhj0qy" path="res://addons/func_godot/icon32.png" id="6_tex5j"]
[resource] [resource]
@ -27,8 +27,8 @@ map_formats = Array[Dictionary]([{
textures_root_folder = "textures" textures_root_folder = "textures"
texture_exclusion_patterns = Array[String](["*_albedo", "*_ao", "*_emission", "*_height", "*_metallic", "*_normal", "*_orm", "*_roughness", "*_sss"]) texture_exclusion_patterns = Array[String](["*_albedo", "*_ao", "*_emission", "*_height", "*_metallic", "*_normal", "*_orm", "*_roughness", "*_sss"])
palette_path = "textures/palette.lmp" palette_path = "textures/palette.lmp"
fgd_file = ExtResource("4_4rf4d") fgd_file = ExtResource("1_8u1vq")
entity_scale = "16" entity_scale = "32"
brush_tags = Array[Resource]([]) brush_tags = Array[Resource]([])
brushface_tags = Array[Resource]([ExtResource("1_rsp20"), ExtResource("2_166i2"), ExtResource("3_stisi")]) brushface_tags = Array[Resource]([ExtResource("1_rsp20"), ExtResource("2_166i2"), ExtResource("3_stisi")])
default_uv_scale = Vector2(1, 1) default_uv_scale = Vector2(1, 1)

View file

@ -178,7 +178,7 @@ func build_def_text(target_editor: FuncGodotFGDFile.FuncGodotTargetMapEditors =
prop_val = "\"\"" prop_val = "\"\""
TYPE_OBJECT: TYPE_OBJECT:
if value is Resource: if value is Resource:
prop_val = value.resource_path prop_val = "\"" + value.resource_path + "\""
if value is Material: if value is Material:
if target_editor != FuncGodotFGDFile.FuncGodotTargetMapEditors.JACK: if target_editor != FuncGodotFGDFile.FuncGodotTargetMapEditors.JACK:
prop_type = "material" prop_type = "material"

View file

@ -17,6 +17,8 @@ enum TargetMapEditor {
@export var scale_expression : String = "" @export var scale_expression : String = ""
## Model Point Class can override the 'size' meta property by auto-generating a value from the meshes' [AABB]. Proper generation requires 'scale_expression' set to a float or [Vector3]. **WARNING:** Generated size property unlikely to align cleanly to grid! ## Model Point Class can override the 'size' meta property by auto-generating a value from the meshes' [AABB]. Proper generation requires 'scale_expression' set to a float or [Vector3]. **WARNING:** Generated size property unlikely to align cleanly to grid!
@export var generate_size_property : bool = false @export var generate_size_property : bool = false
## Degrees to rotate model prior to export. Different editors may handdle GLTF transformations differently. If your model isn't oriented correctly, try modifying this property.
@export var rotation_offset: Vector3 = Vector3(0.0, 0.0, 0.0)
## Creates a .gdignore file in the model export folder to prevent Godot importing the display models. Only needs to be generated once. ## Creates a .gdignore file in the model export folder to prevent Godot importing the display models. Only needs to be generated once.
@export var generate_gd_ignore_file : bool = false : @export var generate_gd_ignore_file : bool = false :
get: get:
@ -97,7 +99,9 @@ func _create_gltf_file(gltf_state: GLTFState, path: String, node: Node3D) -> boo
var gltf_document := GLTFDocument.new() var gltf_document := GLTFDocument.new()
gltf_state.create_animations = false gltf_state.create_animations = false
node.rotate_y(deg_to_rad(-90)) node.rotate_x(deg_to_rad(rotation_offset.x))
node.rotate_y(deg_to_rad(rotation_offset.y))
node.rotate_z(deg_to_rad(rotation_offset.z))
# With TrenchBroom we can specify a scale expression, but for other editors we need to scale our models manually. # With TrenchBroom we can specify a scale expression, but for other editors we need to scale our models manually.
if target_map_editor != TargetMapEditor.TRENCHBROOM: if target_map_editor != TargetMapEditor.TRENCHBROOM:

View file

@ -47,15 +47,17 @@ func _enter_tree() -> void:
add_custom_type("FuncGodotMap", "Node3D", preload("res://addons/func_godot/src/map/func_godot_map.gd"), null) add_custom_type("FuncGodotMap", "Node3D", preload("res://addons/func_godot/src/map/func_godot_map.gd"), null)
ProjectSettings.set("func_godot/default_map_settings", "res://addons/func_godot/func_godot_default_map_settings.tres") if not ProjectSettings.has_setting("func_godot/default_map_settings"):
var property_info = { ProjectSettings.set_setting("func_godot/default_map_settings", "res://addons/func_godot/func_godot_default_map_settings.tres")
"name": "func_godot/default_map_settings", var property_info = {
"type": TYPE_STRING, "name": "func_godot/default_map_settings",
"hint": PROPERTY_HINT_FILE, "type": TYPE_STRING,
"hint_string": "*.tres" "hint": PROPERTY_HINT_FILE,
} "hint_string": "*.tres"
ProjectSettings.add_property_info(property_info) }
ProjectSettings.set_initial_value("func_godot/default_map_settings", "res://addons/func_godot/func_godot_default_map_settings.tres") ProjectSettings.add_property_info(property_info)
ProjectSettings.set_as_basic("func_godot/default_map_settings", true)
ProjectSettings.set_initial_value("func_godot/default_map_settings", "res://addons/func_godot/func_godot_default_map_settings.tres")
func _exit_tree() -> void: func _exit_tree() -> void:
remove_custom_type("FuncGodotMap") remove_custom_type("FuncGodotMap")

View file

@ -352,6 +352,18 @@ func build_texture_size_dict() -> Dictionary:
texture_size_dict[tex_key] = Vector2.ONE texture_size_dict[tex_key] = Vector2.ONE
return texture_size_dict return texture_size_dict
static func get_script_by_class_name(name_of_class : String) -> Script:
if ResourceLoader.exists(name_of_class, "Script"):
return load(name_of_class) as Script
for global_class in ProjectSettings.get_global_class_list():
var found_name_of_class : String = global_class["class"]
var found_path : String = global_class["path"]
if found_name_of_class == name_of_class:
return load(found_path) as Script
return null
## Build nodes from the entities in [member entity_dicts] ## Build nodes from the entities in [member entity_dicts]
func build_entity_nodes() -> Array: func build_entity_nodes() -> Array:
@ -423,7 +435,12 @@ func build_entity_nodes() -> Array:
entity_nodes[entity_idx] = null entity_nodes[entity_idx] = null
continue continue
if entity_definition.node_class != "": if entity_definition.node_class != "":
node = ClassDB.instantiate(entity_definition.node_class) if ClassDB.class_exists(entity_definition.node_class):
node = ClassDB.instantiate(entity_definition.node_class)
else:
var script : Script = get_script_by_class_name(entity_definition.node_class)
if script is GDScript:
node = (script as GDScript).new()
elif entity_definition is FuncGodotFGDPointClass: elif entity_definition is FuncGodotFGDPointClass:
if entity_definition.scene_file: if entity_definition.scene_file:
var flag: PackedScene.GenEditState = PackedScene.GEN_EDIT_STATE_DISABLED var flag: PackedScene.GenEditState = PackedScene.GEN_EDIT_STATE_DISABLED
@ -431,7 +448,12 @@ func build_entity_nodes() -> Array:
flag = PackedScene.GEN_EDIT_STATE_INSTANCE flag = PackedScene.GEN_EDIT_STATE_INSTANCE
node = entity_definition.scene_file.instantiate(flag) node = entity_definition.scene_file.instantiate(flag)
elif entity_definition.node_class != "": elif entity_definition.node_class != "":
node = ClassDB.instantiate(entity_definition.node_class) if ClassDB.class_exists(entity_definition.node_class):
node = ClassDB.instantiate(entity_definition.node_class)
else:
var script : Script = get_script_by_class_name(entity_definition.node_class)
if script is GDScript:
node = (script as GDScript).new()
if 'rotation_degrees' in node and entity_definition.apply_rotation_on_map_build: if 'rotation_degrees' in node and entity_definition.apply_rotation_on_map_build:
var angles := Vector3.ZERO var angles := Vector3.ZERO
if 'angles' in properties or 'mangle' in properties: if 'angles' in properties or 'mangle' in properties:

View file

@ -4,6 +4,11 @@
class_name NetRadiantCustomGamePackConfig class_name NetRadiantCustomGamePackConfig
extends Resource extends Resource
enum NetRadiantCustomMapType {
QUAKE_1,
QUAKE_3
}
## Button to export / update this gamepack's configuration in the NetRadiant Custom Gamepacks Folder. ## Button to export / update this gamepack's configuration in the NetRadiant Custom Gamepacks Folder.
@export var export_file: bool: @export var export_file: bool:
get: get:
@ -50,6 +55,12 @@ extends Resource
## Skip texture path that gets applied to caulk and nodrawnonsolid shaders. ## Skip texture path that gets applied to caulk and nodrawnonsolid shaders.
@export var skip_texture: String = "textures/special/skip" @export var skip_texture: String = "textures/special/skip"
## Quake map type NetRadiant will filter the map for.
## By default, will specify Quake 1 limitations. This will remove patches.
## mapq3 will allow saving patches.
## @warning Toggling this option may be destructive!
@export var map_type: NetRadiantCustomMapType = NetRadiantCustomMapType.QUAKE_1
## Variables to include in the exported gamepack's [code]default_build_menu.xml[/code].[br][br] ## Variables to include in the exported gamepack's [code]default_build_menu.xml[/code].[br][br]
## Each [String] key defines a variable name, and its corresponding [String] value as the literal command-line string to execute in place of this variable identifier[br][br] ## Each [String] key defines a variable name, and its corresponding [String] value as the literal command-line string to execute in place of this variable identifier[br][br]
## Entries may be referred to by key in [member default_build_menu_commands] values. ## Entries may be referred to by key in [member default_build_menu_commands] values.
@ -92,6 +103,13 @@ func build_gamepack_text() -> String:
soundtypes_str += sound_type soundtypes_str += sound_type
if sound_type != sound_types[-1]: if sound_type != sound_types[-1]:
soundtypes_str += " " soundtypes_str += " "
var maptype_str: String
if map_type == NetRadiantCustomMapType.QUAKE_3:
maptype_str = "mapq3"
else:
maptype_str = "mapq1"
var gamepack_text: String = """<?xml version="1.0"?> var gamepack_text: String = """<?xml version="1.0"?>
<game <game
@ -110,7 +128,7 @@ func build_gamepack_text() -> String:
texturetypes="%s" texturetypes="%s"
modeltypes="%s" modeltypes="%s"
soundtypes="%s" soundtypes="%s"
maptypes="mapq1" maptypes="%s"
shaders="quake3" shaders="quake3"
entityclass="halflife" entityclass="halflife"
entityclasstype="fgd" entityclasstype="fgd"
@ -140,6 +158,7 @@ func build_gamepack_text() -> String:
texturetypes_str, texturetypes_str,
modeltypes_str, modeltypes_str,
soundtypes_str, soundtypes_str,
maptype_str,
default_scale, default_scale,
clip_texture, clip_texture,
skip_texture, skip_texture,
@ -149,7 +168,8 @@ func build_gamepack_text() -> String:
## Exports or updates a folder in the /games directory, with an icon, .cfg, and all accompanying FGDs. ## Exports or updates a folder in the /games directory, with an icon, .cfg, and all accompanying FGDs.
func do_export_file() -> void: func do_export_file() -> void:
if (FuncGodotLocalConfig.get_setting(FuncGodotLocalConfig.PROPERTY.MAP_EDITOR_GAME_PATH) as String).is_empty(): var game_path: String = FuncGodotLocalConfig.get_setting(FuncGodotLocalConfig.PROPERTY.MAP_EDITOR_GAME_PATH) as String
if game_path.is_empty():
printerr("Skipping export: Map Editor Game Path not set in Project Configuration") printerr("Skipping export: Map Editor Game Path not set in Project Configuration")
return return
@ -172,7 +192,8 @@ func do_export_file() -> void:
var gamepack_dir_paths: Array = [ var gamepack_dir_paths: Array = [
gamepacks_folder + "/" + gamepack_name + ".game", gamepacks_folder + "/" + gamepack_name + ".game",
gamepacks_folder + "/" + gamepack_name + ".game/" + base_game_path, gamepacks_folder + "/" + gamepack_name + ".game/" + base_game_path,
gamepacks_folder + "/" + gamepack_name + ".game/scripts" gamepacks_folder + "/" + gamepack_name + ".game/scripts",
game_path + "/scripts"
] ]
var err: Error var err: Error
@ -198,18 +219,44 @@ func do_export_file() -> void:
printerr("Error: Could not modify " + target_file_path) printerr("Error: Could not modify " + target_file_path)
# .shader # .shader
# NOTE: To work properly, this should go in the game path. For now, I'm leaving the export to NRC as well, so it can easily
# be repackaged for distribution. However, I believe in the end, it shouldn't exist there.
# We'll need to make a decision for this. - Vera
var shader_text: String = build_shader_text()
# build to <gamepack path>/scripts/
target_file_path = gamepacks_folder + "/" + gamepack_name + ".game/scripts/" + gamepack_name + ".shader" target_file_path = gamepacks_folder + "/" + gamepack_name + ".game/scripts/" + gamepack_name + ".shader"
print("Exporting NetRadiant Custom Shader to ", target_file_path) print("Exporting NetRadiant Custom shader definitions to ", target_file_path)
file = FileAccess.open(target_file_path, FileAccess.WRITE) file = FileAccess.open(target_file_path, FileAccess.WRITE)
if file != null: if file != null:
file.store_string(build_shader_text()) file.store_string(shader_text)
file.close()
else:
printerr("Error: Could not modify " + target_file_path)
# build to <game path>/scripts/
target_file_path = game_path.path_join("scripts/%s.shader" % gamepack_name)
print("Exporting NetRadiant Custom shader definitions to ", target_file_path)
file = FileAccess.open(target_file_path, FileAccess.WRITE)
if file != null:
file.store_string(shader_text)
file.close()
else:
printerr("Error: could not modify " + target_file_path)
# shaderlist.txt - see above NOTE regarding duplication
target_file_path = gamepacks_folder + "/" + gamepack_name + ".game/scripts/shaderlist.txt"
print("Exporting NetRadiant Custom shader list to ", target_file_path)
file = FileAccess.open(target_file_path, FileAccess.WRITE)
if file != null:
file.store_string(gamepack_name)
file.close() file.close()
else: else:
printerr("Error: Could not modify " + target_file_path) printerr("Error: Could not modify " + target_file_path)
# shaderlist.txt # game path/scripts/shaderlist.txt
target_file_path = gamepacks_folder + "/" + gamepack_name + ".game/scripts/shaderlist.txt" target_file_path = game_path.path_join("scripts/shaderlist.txt")
print("Exporting NetRadiant Custom Default Buld Menu to ", target_file_path) print("Exporting NetRadiant Custom shader list to ", target_file_path)
file = FileAccess.open(target_file_path, FileAccess.WRITE) file = FileAccess.open(target_file_path, FileAccess.WRITE)
if file != null: if file != null:
file.store_string(gamepack_name) file.store_string(gamepack_name)
@ -219,7 +266,7 @@ func do_export_file() -> void:
# default_build_menu.xml # default_build_menu.xml
target_file_path = gamepacks_folder + "/" + gamepack_name + ".game/default_build_menu.xml" target_file_path = gamepacks_folder + "/" + gamepack_name + ".game/default_build_menu.xml"
print("Exporting NetRadiant Custom Default Buld Menu to ", target_file_path) print("Exporting NetRadiant Custom default build menu to ", target_file_path)
file = FileAccess.open(target_file_path, FileAccess.WRITE) file = FileAccess.open(target_file_path, FileAccess.WRITE)
if file != null: if file != null:

View file

@ -15,10 +15,8 @@ enum PROPERTY {
DEFAULT_INVERSE_SCALE DEFAULT_INVERSE_SCALE
} }
@export var export_func_godot_settings: bool: set = _save_settings @export_tool_button("Export func_godot settings", "Save") var export_func_godot_settings = _save_settings
@export var reload_func_godot_settings: bool = false : @export_tool_button("Reload func_godot settings", "Reload") var reload_func_godot_settings = _load_settings
set(value):
_load_settings()
const CONFIG_PROPERTIES: Array[Dictionary] = [ const CONFIG_PROPERTIES: Array[Dictionary] = [
{ {

View file

@ -144,6 +144,7 @@ func create_material(texture_name: String) -> Material:
if (map_settings.save_generated_materials and material if (map_settings.save_generated_materials and material
and texture_name != map_settings.clip_texture and texture_name != map_settings.clip_texture
and texture_name != map_settings.skip_texture and texture_name != map_settings.skip_texture
and texture_name != map_settings.origin_texture
and texture.resource_path != "res://addons/func_godot/textures/default_texture.png"): and texture.resource_path != "res://addons/func_godot/textures/default_texture.png"):
ResourceSaver.save(material, material_path) ResourceSaver.save(material, material_path)