Make Main, Settings, ChooseScene, and gameplay run in Godot 4.6

Catch-all commit for everything the --convert-3to4 tool missed during a
manual playtest of the game. All errors raised by clicking through Main
-> Puzzles -> level were fixed.

GDScript:
- PackedScene.instance() -> instantiate() (ChooseScene.gd)
- String(x) constructor doesn't exist -> str(x) (MBase, MScene,
  MLevel, Animation, Levels)
- 'x as int/String/bool' doesn't parse strings -> explicit
  int()/str()/bool(int()) (MScene, MLevel, MSetting)
- BaseButton.pressed (property) -> button_pressed; set_pressed() ->
  direct assignment (Settings.gd)
- AnimationPlayer.add_animation() removed -> go through
  AnimationLibrary (Levels.gd)
- PhysicsDirectSpaceState3D.intersect_ray(from, to, ...) ->
  PhysicsRayQueryParameters3D.create() (Levels.gd)
- @export with type-hint-in-comment ('# (String, ...)') -> explicit
  @export_enum (candle.gd)
- Get effective material with get_active_material() instead of
  get_surface_override_material(), with null guard (Levels.gd)
- get_node() -> get_node_or_null() so missing items from ahog.json
  (e.g. sm_super_dager in Home) don't crash (Levels.gd)

Scenes/resources:
- Remove 14 Tween nodes from WarCraft.tscn — Tween is no longer a
  Node in Godot 4. Rewrite Animation.start_dissolve to use
  create_tween().tween_method().
- Rename property material/N -> surface_material_override/N in every
  .tscn (10 files) — Godot 3 -> 4 rename that --convert-3to4 missed.
  Without this, MeshInstance3D.get_active_material(0) returned the
  glTF-imported StandardMaterial3D instead of the project's custom
  dissolve ShaderMaterial.

Shaders:
- One-shot scripts/migrate_shaders.gd walks every .material under
  assets/ and fixes Godot 3 -> 4 shader code in-place. Fixed 17
  materials: depth_draw_alpha_prepass -> depth_prepass_alpha,
  hint_color -> source_color, NORMALMAP -> NORMAL_MAP.

Result: Main, Settings, ChooseScene, and the WarCraft level all run
without script or shader errors. Remaining noise is non-blocking
(visual_shader graph in text_outline.material, baked lightmap binary
format from Godot 3, and empty animation tracks).

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
Vaillant Jeremy
2026-05-16 19:40:03 +02:00
parent 770434482d
commit 4d5db7bb61
68 changed files with 274 additions and 253 deletions
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
+1 -1
View File
@@ -7,4 +7,4 @@
[node name="sm_book-lod1" type="MeshInstance3D" parent="."]
use_in_baked_light = true
mesh = ExtResource( 2 )
material/0 = null
surface_material_override/0 = null
@@ -24,7 +24,7 @@ compress/rdo_quality_loss=0.0
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=false
mipmaps/generate=true
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
@@ -38,4 +38,4 @@ process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=1
detect_3d/compress_to=0
@@ -24,7 +24,7 @@ compress/rdo_quality_loss=0.0
compress/hdr_compression=1
compress/normal_map=1
compress/channel_pack=0
mipmaps/generate=false
mipmaps/generate=true
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
@@ -38,4 +38,4 @@ process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=1
detect_3d/compress_to=0
@@ -24,7 +24,7 @@ compress/rdo_quality_loss=0.0
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=false
mipmaps/generate=true
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
@@ -38,4 +38,4 @@ process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=1
detect_3d/compress_to=0
@@ -24,7 +24,7 @@ compress/rdo_quality_loss=0.0
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=false
mipmaps/generate=true
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
@@ -38,4 +38,4 @@ process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=1
detect_3d/compress_to=0
@@ -24,7 +24,7 @@ compress/rdo_quality_loss=0.0
compress/hdr_compression=1
compress/normal_map=1
compress/channel_pack=0
mipmaps/generate=false
mipmaps/generate=true
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
@@ -38,4 +38,4 @@ process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=1
detect_3d/compress_to=0
@@ -24,7 +24,7 @@ compress/rdo_quality_loss=0.0
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=false
mipmaps/generate=true
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
@@ -38,4 +38,4 @@ process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=1
detect_3d/compress_to=0
+1 -1
View File
@@ -3,7 +3,7 @@ extends Node3D
@export var activate_candlestick: bool = false: set = activateCandlestick
@export var activate_candle: bool = false: set = activateCandle
@export var list_candles # (String, "Candle Top", "Candle A", "Candle B", "Candle C", "Candle D")
@export_enum("Candle Top", "Candle A", "Candle B", "Candle C", "Candle D") var list_candles: String = "Candle Top"
func activateCandlestick(_newCandlestick):
pass
+2 -2
View File
@@ -9,13 +9,13 @@ script = ExtResource( 2 )
[node name="sm_candlestick_lod1" type="MeshInstance3D" parent="."]
mesh = ExtResource( 1 )
material/0 = null
surface_material_override/0 = null
[node name="candles" type="MeshInstance3D" parent="sm_candlestick_lod1"]
transform = Transform3D( 1, 0, 0, 0, 1, 0, 0, 0, 1, 0.000981584, 0.150082, 0 )
use_in_baked_light = true
mesh = ExtResource( 3 )
material/0 = null
surface_material_override/0 = null
[node name="OmniLight3D" type="OmniLight3D" parent="sm_candlestick_lod1/candles"]
transform = Transform3D( 1, 5.5022e-09, 1.96774e-13, -5.5022e-09, 1, 1.08271e-21, -1.96774e-13, -2.1654e-21, 1, 1.3737e-08, 0.0619183, -2.98023e-08 )
@@ -24,7 +24,7 @@ compress/rdo_quality_loss=0.0
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=false
mipmaps/generate=true
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
@@ -38,4 +38,4 @@ process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=1
detect_3d/compress_to=0
@@ -24,7 +24,7 @@ compress/rdo_quality_loss=0.0
compress/hdr_compression=1
compress/normal_map=1
compress/channel_pack=0
mipmaps/generate=false
mipmaps/generate=true
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
@@ -38,4 +38,4 @@ process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=1
detect_3d/compress_to=0
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -24,7 +24,7 @@ compress/rdo_quality_loss=0.0
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=false
mipmaps/generate=true
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
@@ -38,4 +38,4 @@ process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=1
detect_3d/compress_to=0
Binary file not shown.
Binary file not shown.
Binary file not shown.
+1 -1
View File
@@ -7,4 +7,4 @@
[node name="sm_godet_lod1" type="MeshInstance3D" parent="."]
use_in_baked_light = true
mesh = ExtResource( 1 )
material/0 = null
surface_material_override/0 = null
@@ -24,7 +24,7 @@ compress/rdo_quality_loss=0.0
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=false
mipmaps/generate=true
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
@@ -38,4 +38,4 @@ process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=1
detect_3d/compress_to=0
@@ -24,7 +24,7 @@ compress/rdo_quality_loss=0.0
compress/hdr_compression=1
compress/normal_map=1
compress/channel_pack=0
mipmaps/generate=false
mipmaps/generate=true
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
@@ -38,4 +38,4 @@ process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=1
detect_3d/compress_to=0
@@ -24,7 +24,7 @@ compress/rdo_quality_loss=0.0
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=false
mipmaps/generate=true
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
@@ -38,4 +38,4 @@ process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=1
detect_3d/compress_to=0
+1 -1
View File
@@ -7,4 +7,4 @@
[node name="sm_growler_lod1" type="MeshInstance3D" parent="."]
use_in_baked_light = true
mesh = ExtResource( 1 )
material/0 = null
surface_material_override/0 = null
@@ -24,7 +24,7 @@ compress/rdo_quality_loss=0.0
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=false
mipmaps/generate=true
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
@@ -38,4 +38,4 @@ process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=1
detect_3d/compress_to=0
@@ -24,7 +24,7 @@ compress/rdo_quality_loss=0.0
compress/hdr_compression=1
compress/normal_map=1
compress/channel_pack=0
mipmaps/generate=false
mipmaps/generate=true
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
@@ -38,4 +38,4 @@ process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=1
detect_3d/compress_to=0
@@ -24,7 +24,7 @@ compress/rdo_quality_loss=0.0
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=false
mipmaps/generate=true
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
@@ -38,4 +38,4 @@ process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=1
detect_3d/compress_to=0
+2 -2
View File
@@ -10,10 +10,10 @@ script = ExtResource( 2 )
[node name="sm_wood_parchment_lod1" type="MeshInstance3D" parent="."]
use_in_baked_light = true
mesh = ExtResource( 1 )
material/0 = null
surface_material_override/0 = null
[node name="paper" type="MeshInstance3D" parent="."]
visible = false
use_in_baked_light = true
mesh = ExtResource( 3 )
material/0 = null
surface_material_override/0 = null
@@ -24,7 +24,7 @@ compress/rdo_quality_loss=0.0
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=false
mipmaps/generate=true
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
@@ -38,4 +38,4 @@ process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=1
detect_3d/compress_to=0
@@ -24,7 +24,7 @@ compress/rdo_quality_loss=0.0
compress/hdr_compression=1
compress/normal_map=1
compress/channel_pack=0
mipmaps/generate=false
mipmaps/generate=true
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
@@ -38,4 +38,4 @@ process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=1
detect_3d/compress_to=0
@@ -24,7 +24,7 @@ compress/rdo_quality_loss=0.0
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=false
mipmaps/generate=true
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
@@ -38,4 +38,4 @@ process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=1
detect_3d/compress_to=0
@@ -24,7 +24,7 @@ compress/rdo_quality_loss=0.0
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=false
mipmaps/generate=true
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
@@ -38,4 +38,4 @@ process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=1
detect_3d/compress_to=0
@@ -24,7 +24,7 @@ compress/rdo_quality_loss=0.0
compress/hdr_compression=1
compress/normal_map=1
compress/channel_pack=0
mipmaps/generate=false
mipmaps/generate=true
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
@@ -38,4 +38,4 @@ process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=1
detect_3d/compress_to=0
@@ -24,7 +24,7 @@ compress/rdo_quality_loss=0.0
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=false
mipmaps/generate=true
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
@@ -38,4 +38,4 @@ process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=1
detect_3d/compress_to=0
@@ -24,7 +24,7 @@ compress/rdo_quality_loss=0.0
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=false
mipmaps/generate=true
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
@@ -38,4 +38,4 @@ process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=1
detect_3d/compress_to=0
@@ -24,7 +24,7 @@ compress/rdo_quality_loss=0.0
compress/hdr_compression=1
compress/normal_map=1
compress/channel_pack=0
mipmaps/generate=false
mipmaps/generate=true
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
@@ -38,4 +38,4 @@ process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=1
detect_3d/compress_to=0
@@ -24,7 +24,7 @@ compress/rdo_quality_loss=0.0
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=false
mipmaps/generate=true
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
@@ -38,4 +38,4 @@ process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=1
detect_3d/compress_to=0
Binary file not shown.
@@ -24,7 +24,7 @@ compress/rdo_quality_loss=0.0
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=false
mipmaps/generate=true
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
@@ -38,4 +38,4 @@ process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=1
detect_3d/compress_to=0
Binary file not shown.
Binary file not shown.
Binary file not shown.
+1 -1
View File
@@ -7,4 +7,4 @@
[node name="sm_stool_2_lod1" type="MeshInstance3D" parent="."]
use_in_baked_light = true
mesh = ExtResource( 1 )
material/0 = null
surface_material_override/0 = null
@@ -24,7 +24,7 @@ compress/rdo_quality_loss=0.0
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=false
mipmaps/generate=true
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
@@ -38,4 +38,4 @@ process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=1
detect_3d/compress_to=0
@@ -24,7 +24,7 @@ compress/rdo_quality_loss=0.0
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=false
mipmaps/generate=true
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
@@ -38,4 +38,4 @@ process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=1
detect_3d/compress_to=0
@@ -24,7 +24,7 @@ compress/rdo_quality_loss=0.0
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=false
mipmaps/generate=true
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
@@ -38,4 +38,4 @@ process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=1
detect_3d/compress_to=0
+1 -1
View File
@@ -7,4 +7,4 @@
[node name="sm_table_lod1" type="MeshInstance3D" parent="."]
use_in_baked_light = true
mesh = ExtResource( 1 )
material/0 = null
surface_material_override/0 = null
@@ -24,7 +24,7 @@ compress/rdo_quality_loss=0.0
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=false
mipmaps/generate=true
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
@@ -38,4 +38,4 @@ process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=1
detect_3d/compress_to=0
@@ -24,7 +24,7 @@ compress/rdo_quality_loss=0.0
compress/hdr_compression=1
compress/normal_map=1
compress/channel_pack=0
mipmaps/generate=false
mipmaps/generate=true
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
@@ -38,4 +38,4 @@ process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=1
detect_3d/compress_to=0
@@ -24,7 +24,7 @@ compress/rdo_quality_loss=0.0
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=false
mipmaps/generate=true
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
@@ -38,4 +38,4 @@ process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=1
detect_3d/compress_to=0
+1 -1
View File
@@ -6,6 +6,6 @@ func _get_data(datas, index):
return datas[index].get_data()
func _set_data(prop_id, row_id, data):
table.edit_data(prop_id, row_id, String(data))
table.edit_data(prop_id, row_id, str(data))
Global.database.save_db()
return data
+10 -10
View File
@@ -15,12 +15,12 @@ func _init(row_idx):
func object_to_find():
var count = 0
var datas = _scenes().get_data_by_prop_name_and_data("level", String(m_level))
var datas = _scenes().get_data_by_prop_name_and_data("level", str(m_level))
if datas.size() != 0:
count = datas.size()
return count as String
return str(count)
func reset():
var scene_detail = null
@@ -36,12 +36,12 @@ func _scenes():
func object_finding():
var count = 0
for datas in _scenes().get_dictionary_by_prop_name_and_data("level", String(m_level)):
for datas in _scenes().get_dictionary_by_prop_name_and_data("level", str(m_level)):
if int(datas['lock']) == 1:
count = count + 1
return count as String
return str(count)
func name():
return m_name
@@ -51,7 +51,7 @@ func thumbnail():
## PRIVATE
func _get_name(datas):
return _get_data(datas, 0) as String
return str(_get_data(datas, 0))
func _get_thumb(datas):
return _get_data(datas, 1) as String
return str(_get_data(datas, 1))
+7 -7
View File
@@ -78,22 +78,22 @@ func counter():
## PRIVATE
func _get_lock(datas):
return int(_get_data(datas, LOCK_ID)) as bool
return bool(int(_get_data(datas, LOCK_ID)))
func _get_label(datas):
return _get_data(datas, LABEL_ID) as String
return str(_get_data(datas, LABEL_ID))
func _get_key(datas):
return _get_data(datas, KEY_ID) as String
return str(_get_data(datas, KEY_ID))
func _get_level(datas):
return _get_data(datas, LEVEL_ID) as int
return int(_get_data(datas, LEVEL_ID))
func _get_mesh(datas):
return "HiddenObjectsItems/" + String(_get_data(datas, MESH_ID))
return "HiddenObjectsItems/" + str(_get_data(datas, MESH_ID))
func _get_label_counter(datas):
return _get_data(datas, LABEL_COUNTER) as String
return str(_get_data(datas, LABEL_COUNTER))
func _get_counter(datas):
return _get_data(datas, COUNTER_ID) as int
return int(_get_data(datas, COUNTER_ID))
+5 -5
View File
@@ -27,22 +27,22 @@ func _init():
m_version = _get_data(datas, VERSION)
func get_langue():
return m_langue as int
return int(m_langue)
func get_gyroscope():
return int(m_gyroscope) as bool
return bool(int(m_gyroscope))
func get_ambient_sound():
return int(m_ambient_sound) as bool
return bool(int(m_ambient_sound))
func get_resolution():
return m_resolution.split(" x ")
func get_fullscreen():
return int(m_fullscreen) as bool
return bool(int(m_fullscreen))
func get_version():
return "v"+String(m_version)
return "v" + str(m_version)
func set_langue(value):
m_langue = _set_data(LANGUE_ID, ROW_ID, value)
+1 -39
View File
@@ -1,39 +1 @@
{
"GDDB_ver":"2.0",
"db_name":"ahog",
"tables":[
{
"table_name":"settings",
"props":[
{"name":"langue","type":"1","auto_increment":"0"},
{"name":"gyroscope","type":"0","auto_increment":"0"},
{"name":"ambient_sound","type":"0","auto_increment":"0"},
{"name":"resolution","type":"3","auto_increment":"0"},
{"name":"fullscreen","type":"0","auto_increment":"0"},
{"name":"version","type":"0","auto_increment":"0"}
],
"data":["0","0","0","1280 x 720","0","1.0.0"]
},
{
"table_name":"levels",
"props":[
{"name":"name","type":"3","auto_increment":"0"},
{"name":"thumb","type":"4","auto_increment":"0"}
],
"data":["WarCraft","res://assets/levels/warcraft.jpg","Home","res://assets/levels/home.jpg"]
},
{
"table_name":"scenes",
"props":[
{"name":"lock","type":"0","auto_increment":"0"},
{"name":"label","type":"3","auto_increment":"0"},
{"name":"key","type":"3","auto_increment":"0"},
{"name":"level","type":"table","table_name":"levels","auto_increment":"0"},
{"name":"mesh","type":"3","auto_increment":"0"},
{"name":"label_counter","type":"1","auto_increment":"0"},
{"name":"counter","type":"1","auto_increment":"0"}
],
"data":["0","Dagger","Dagger","0","Dagger","0","1","0","Fiole","Fiole1","0","Fioles/Fiole1","1","3","0","Fiole","Fiole2","0","Fioles/Fiole2","1","3","0","Fiole","Fiole3","0","Fioles/FioleSocle/Fiole3","1","3","0","Spyglass","Spyglass","0","Spyglass","2","1","0","Coins","Coin1","0","Coins/Coin1","3","3","0","Coins","Coin2","0","Coins/Coin2","3","3","0","Coins","Coin3","0","Coins/Coin3","3","3","0","Weapon Gun","Weapon","0","Weapon","4","1","0","Apple","Apple1","0","Apples/Apple1","5","4","0","Apple","Apple2","0","Apples/Apple2","5","4","0","Apple","Apple3","0","Apples/Apple3","5","4","0","Apple","Apple4","0","Apples/Apple4","5","4","0","Beer","Beer","0","Beer","6","1","0","SuperDagger","Gadder","1","sm_super_dager","0","1"]
}
]
}
{"GDDB_ver":"2.0","db_name":"ahog","tables":[{"data":["0","0","0","1280 x 720","0","1.0.0"],"props":[{"auto_increment":"0","name":"langue","type":"1"},{"auto_increment":"0","name":"gyroscope","type":"0"},{"auto_increment":"0","name":"ambient_sound","type":"0"},{"auto_increment":"0","name":"resolution","type":"3"},{"auto_increment":"0","name":"fullscreen","type":"0"},{"auto_increment":"0","name":"version","type":"0"}],"table_name":"settings"},{"data":["WarCraft","res://assets/levels/warcraft.jpg","Home","res://assets/levels/home.jpg"],"props":[{"auto_increment":"0","name":"name","type":"3"},{"auto_increment":"0","name":"thumb","type":"4"}],"table_name":"levels"},{"data":["0","Dagger","Dagger","0","Dagger","0","1","0","Fiole","Fiole1","0","Fioles/Fiole1","1","3","0","Fiole","Fiole2","0","Fioles/Fiole2","1","3","1","Fiole","Fiole3","0","Fioles/FioleSocle/Fiole3","1","3","1","Spyglass","Spyglass","0","Spyglass","2","1","0","Coins","Coin1","0","Coins/Coin1","3","3","1","Coins","Coin2","0","Coins/Coin2","3","3","0","Coins","Coin3","0","Coins/Coin3","3","3","1","Weapon Gun","Weapon","0","Weapon","4","1","0","Apple","Apple1","0","Apples/Apple1","5","4","0","Apple","Apple2","0","Apples/Apple2","5","4","0","Apple","Apple3","0","Apples/Apple3","5","4","0","Apple","Apple4","0","Apples/Apple4","5","4","1","Beer","Beer","0","Beer","6","1","0","SuperDagger","Gadder","1","sm_super_dager","0","1"],"props":[{"auto_increment":"0","name":"lock","type":"0"},{"auto_increment":"0","name":"label","type":"3"},{"auto_increment":"0","name":"key","type":"3"},{"auto_increment":"0","name":"level","table_name":"levels","type":"table"},{"auto_increment":"0","name":"mesh","type":"3"},{"auto_increment":"0","name":"label_counter","type":"1"},{"auto_increment":"0","name":"counter","type":"1"}],"table_name":"scenes"}]}
+35 -35
View File
@@ -43,7 +43,7 @@ transform = Transform3D( 0.089016, -0.715663, 0.692751, 0, 0.695512, 0.718515, -
transform = Transform3D( 8.39917, 0, 0, 0, 1, 0, 0, 0, 11.9516, -0.796654, 0, -1.7752 )
use_in_baked_light = true
mesh = ExtResource( 4 )
material/0 = null
surface_material_override/0 = null
[node name="Lighting" type="Node3D" parent="."]
@@ -267,71 +267,71 @@ spot_angle = 15.0
transform = Transform3D( 1, 0, 0, 0, 1, 0, 0, 0, 1, 0.743055, 0.0414186, 1.03485 )
use_in_baked_light = true
mesh = ExtResource( 1 )
material/0 = null
surface_material_override/0 = null
[node name="sm_book5" type="MeshInstance3D" parent="Books"]
transform = Transform3D( 1, 0, 0, 0, 1, 0, 0, 0, 1, 0.0423009, 0.0414186, 1.05613 )
use_in_baked_light = true
lightmap_scale = 3
mesh = ExtResource( 1 )
material/0 = null
surface_material_override/0 = null
[node name="sm_book11" type="MeshInstance3D" parent="Books"]
transform = Transform3D( 1, 0, 0, 0, 1, 0, 0, 0, 1, 0.0423009, 0.0414186, 1.52165 )
use_in_baked_light = true
mesh = ExtResource( 1 )
material/0 = null
surface_material_override/0 = null
[node name="sm_book6" type="MeshInstance3D" parent="Books"]
transform = Transform3D( 1, 0, 0, 0, 1, 0, 0, 0, 1, -0.293967, 0.0414186, 1.03485 )
use_in_baked_light = true
mesh = ExtResource( 1 )
material/0 = null
surface_material_override/0 = null
[node name="sm_book7" type="MeshInstance3D" parent="Books"]
transform = Transform3D( 1, 0, 0, 0, 1, 0, 0, 0, 1, 0.743055, 0.0414186, 1.51383 )
use_in_baked_light = true
mesh = ExtResource( 1 )
material/0 = null
surface_material_override/0 = null
[node name="sm_book8" type="MeshInstance3D" parent="Books"]
transform = Transform3D( 1, 0, 0, 0, 1, 0, 0, 0, 1, -0.293967, 0.0414186, 1.51383 )
use_in_baked_light = true
mesh = ExtResource( 1 )
material/0 = null
surface_material_override/0 = null
[node name="sm_book" type="MeshInstance3D" parent="Books"]
transform = Transform3D( 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.0435888, 0.106022 )
use_in_baked_light = true
lightmap_scale = 1
mesh = ExtResource( 1 )
material/0 = null
surface_material_override/0 = null
[node name="sm_book2" type="MeshInstance3D" parent="Books"]
transform = Transform3D( 0.276862, 0, 0.96091, 0, 1, 0, -0.96091, 0, 0.276862, -0.104465, 0.0414188, 0.547756 )
use_in_baked_light = true
lightmap_scale = 1
mesh = ExtResource( 1 )
material/0 = null
surface_material_override/0 = null
[node name="sm_book3" type="MeshInstance3D" parent="Books"]
transform = Transform3D( 1, 0, 0, 0, 1, 0, 0, 0, 1, 0.381911, 0.0414187, 1.03881 )
use_in_baked_light = true
lightmap_scale = 1
mesh = ExtResource( 1 )
material/0 = null
surface_material_override/0 = null
[node name="sm_book10" type="MeshInstance3D" parent="Books"]
transform = Transform3D( 1, 0, 0, 0, 1, 0, 0, 0, 1, 0.381911, 0.0414187, 0.331732 )
use_in_baked_light = true
mesh = ExtResource( 1 )
material/0 = null
surface_material_override/0 = null
[node name="sm_book9" type="MeshInstance3D" parent="Books"]
transform = Transform3D( 1, 0, 0, 0, 1, 0, 0, 0, 1, 0.381911, 0.0414187, 1.53911 )
use_in_baked_light = true
mesh = ExtResource( 1 )
material/0 = null
surface_material_override/0 = null
[node name="Candle" type="Node3D" parent="."]
@@ -340,137 +340,137 @@ transform = Transform3D( 1, 0, 0, 0, 1, 0, 0, 0, 1, 0.26949, -0.000247162, -0.19
use_in_baked_light = true
lightmap_scale = 1
mesh = ExtResource( 5 )
material/0 = null
surface_material_override/0 = null
[node name="sm_candlestick2" type="MeshInstance3D" parent="Candle"]
transform = Transform3D( 1, 0, 0, 0, 1, 0, 0, 0, 1, 0.477435, -0.000247162, -0.190021 )
use_in_baked_light = true
lightmap_scale = 1
mesh = ExtResource( 5 )
material/0 = null
surface_material_override/0 = null
[node name="sm_candle_a" type="MeshInstance3D" parent="Candle"]
transform = Transform3D( 1, 0, 0, 0, 1, 0, 0, 0, 1, 0.460123, 0.0295914, 0.0291587 )
use_in_baked_light = true
mesh = ExtResource( 9 )
material/0 = null
surface_material_override/0 = null
[node name="sm_candle_a2" type="MeshInstance3D" parent="Candle"]
transform = Transform3D( 3, 0, 0, 0, 3, 0, 0, 0, 3, 0.291979, 0.0295914, 0.0291587 )
use_in_baked_light = true
mesh = ExtResource( 9 )
material/0 = null
surface_material_override/0 = null
[node name="sm_candle_b" type="MeshInstance3D" parent="Candle"]
transform = Transform3D( 1, 0, 0, 0, 1, 0, 0, 0, 1, 0.469327, 0.0330793, -0.387681 )
use_in_baked_light = true
mesh = ExtResource( 7 )
material/0 = null
surface_material_override/0 = null
[node name="sm_candle_b2" type="MeshInstance3D" parent="Candle"]
transform = Transform3D( 1.83922, 0, 0, 0, 1.83922, 0, 0, 0, 1.83922, 0.271941, 0.0630442, -0.414322 )
use_in_baked_light = true
mesh = ExtResource( 7 )
material/0 = null
surface_material_override/0 = null
[node name="sm_candle_d" type="MeshInstance3D" parent="Candle"]
transform = Transform3D( 2.21301, 0, 0, 0, 2.21301, 0, 0, 0, 2.21301, 0.470213, 0.0446767, -0.844206 )
use_in_baked_light = true
mesh = ExtResource( 11 )
material/0 = null
surface_material_override/0 = null
[node name="sm_candle_d2" type="MeshInstance3D" parent="Candle"]
transform = Transform3D( 3.61366, 0, 0, 0, 3.61366, 0, 0, 0, 3.61366, 0.199182, 0.12495, -0.844578 )
use_in_baked_light = true
mesh = ExtResource( 11 )
material/0 = null
surface_material_override/0 = null
[node name="sm_candle_c" type="MeshInstance3D" parent="Candle"]
transform = Transform3D( 1, 0, 0, 0, 1, 0, 0, 0, 1, 0.473356, 0.0278057, -0.559005 )
use_in_baked_light = true
mesh = ExtResource( 8 )
material/0 = null
surface_material_override/0 = null
[node name="sm_candle_c2" type="MeshInstance3D" parent="Candle"]
transform = Transform3D( 2.21301, 0, 0, 0, 2.21301, 0, 0, 0, 2.21301, 0.283916, 0.0534962, -0.597519 )
use_in_baked_light = true
mesh = ExtResource( 8 )
material/0 = null
surface_material_override/0 = null
[node name="sm_candle_top" type="MeshInstance3D" parent="Candle"]
transform = Transform3D( 1, 0, 0, 0, 1, 0, 0, 0, 1, 0.502775, 0.0267428, -1.04497 )
use_in_baked_light = true
mesh = ExtResource( 12 )
material/0 = null
surface_material_override/0 = null
[node name="sm_candle_top2" type="MeshInstance3D" parent="Candle"]
transform = Transform3D( 3.02964, 0, 0, 0, 3.02964, 0, 0, 0, 3.02964, 0.323108, 0.0842445, -1.08129 )
use_in_baked_light = true
mesh = ExtResource( 12 )
material/0 = null
surface_material_override/0 = null
[node name="sm_godet" type="MeshInstance3D" parent="."]
transform = Transform3D( 1, 0, 0, 0, 1, 0, 0, 0, 1, 0.496689, 0.0078643, -1.39236 )
use_in_baked_light = true
mesh = ExtResource( 13 )
material/0 = null
surface_material_override/0 = null
[node name="sm_wood_parchment" type="MeshInstance3D" parent="."]
transform = Transform3D( -0.582776, 0, -0.812633, 0, 1, 0, 0.812633, 0, -0.582776, 0.56408, 0.0561891, -3.02517 )
use_in_baked_light = true
mesh = ExtResource( 16 )
material/0 = null
surface_material_override/0 = null
[node name="sm_wood_parchment2" type="MeshInstance3D" parent="."]
transform = Transform3D( -1.33197, 0, -0.568074, 0, 1.53487, 0, 0.762673, 0, -0.992113, 0.315509, 0.0907792, -3.01831 )
use_in_baked_light = true
mesh = ExtResource( 16 )
material/0 = null
surface_material_override/0 = null
[node name="sm_paper_parcment" type="MeshInstance3D" parent="."]
transform = Transform3D( 0.00464255, 0, -0.999989, 0, 1, 0, 0.999989, 0, 0.00464255, 0.602608, -0.0039514, -2.28984 )
use_in_baked_light = true
mesh = ExtResource( 15 )
material/0 = null
surface_material_override/0 = null
[node name="sm_paper_parcment2" type="MeshInstance3D" parent="."]
transform = Transform3D( 0.164983, 0, 1.25894, 0, 1.26971, 0, -1.25894, 0, 0.164983, 0.21995, -0.00395134, -2.34543 )
use_in_baked_light = true
mesh = ExtResource( 15 )
material/0 = null
surface_material_override/0 = null
[node name="sm_growler" type="MeshInstance3D" parent="."]
transform = Transform3D( 0.605072, 0, 0.796171, 0, 1, 0, -0.796171, 0, 0.605072, 0.506431, 0, -1.78796 )
use_in_baked_light = true
mesh = ExtResource( 14 )
material/0 = null
surface_material_override/0 = null
[node name="sm_growler2" type="MeshInstance3D" parent="."]
transform = Transform3D( -0.881676, 0, -1.078, 0, 1.39264, 0, 1.078, 0, -0.881676, 0.162736, -0.000296712, -1.78636 )
use_in_baked_light = true
mesh = ExtResource( 14 )
material/0 = null
surface_material_override/0 = null
[node name="sm_godet2" type="MeshInstance3D" parent="."]
transform = Transform3D( 1.74966, 0, 0, 0, 1.74966, 0, 0, 0, 1.74966, 0.277748, 0.0325533, -1.39477 )
use_in_baked_light = true
mesh = ExtResource( 13 )
material/0 = null
surface_material_override/0 = null
[node name="sm_floor" type="MeshInstance3D" parent="."]
transform = Transform3D( 1, 0, 0, 0, 1, 0, 0, 0, 1, 0.39092, 0.0131278, -4.30235 )
use_in_baked_light = true
mesh = ExtResource( 17 )
material/0 = null
surface_material_override/0 = null
[node name="sm_table" type="MeshInstance3D" parent="."]
transform = Transform3D( 1, 0, 0, 0, 1, 0, 0, 0, 1, -1.60057, 0.781203, -0.818648 )
use_in_baked_light = true
mesh = ExtResource( 19 )
material/0 = null
surface_material_override/0 = null
[node name="sm_stool_b" type="MeshInstance3D" parent="."]
transform = Transform3D( 1, 0, 0, 0, 1, 0, 0, 0, 1, -1.71977, -3.03984e-06, -2.63978 )
use_in_baked_light = true
mesh = ExtResource( 18 )
material/0 = null
surface_material_override/0 = null
+7 -5
View File
@@ -13,12 +13,13 @@ config_version=5
config/name="Puzzle Quest"
config/description="A treasure chest fill with any Jiggsaw !"
run/main_scene="res://scenes/Main.tscn"
config/quit_on_go_back=false
config/features=PackedStringArray("4.6")
boot_splash/stretch_mode=0
boot_splash/image="res://releases/splash-screen.png"
boot_splash/fullsize=false
config/icon="res://icon.png"
config/macos_native_icon="res://releases/mac/project.icns"
config/windows_native_icon="res://releases/windows/project.ico"
config/quit_on_go_back=false
[autoload]
@@ -33,10 +34,9 @@ GlobalAnimation="*res://scripts/Animation.gd"
window/size/viewport_width=1280
window/size/viewport_height=720
window/size/resizable=false
window/dpi/allow_hidpi=true
window/handheld/orientation="sensor_landscape"
window/stretch/mode="2d"
window/stretch/aspect="expand"
window/handheld/orientation="sensor_landscape"
[editor_plugins]
@@ -58,7 +58,9 @@ scene={
ui_end={
"deadzone": 0.5,
"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":4194318,"physical_keycode":0,"unicode":0,"echo":false,"script":null), Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":4194305,"physical_keycode":0,"unicode":0,"echo":false,"script":null)]
"events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":4194318,"physical_keycode":0,"key_label":0,"unicode":0,"location":0,"echo":false,"script":null)
, Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":4194305,"physical_keycode":0,"key_label":0,"unicode":0,"location":0,"echo":false,"script":null)
]
}
[locale]
+1 -1
View File
@@ -19,7 +19,7 @@ func _apply_scene(level, index):
configure_counter(level, node)
func _load_scene(name):
var template_instance = template.instance()
var template_instance = template.instantiate()
template_instance.set_name(name)
return template_instance
+6 -6
View File
@@ -22,10 +22,10 @@ func _apply_settings_language():
data.select(Setting.get_setting_language())
func _apply_settings_gyroscope():
$VBoxContainer/gyroscope/HBoxContainer/data.set_pressed(Setting.get_setting_gyrosocpe())
$VBoxContainer/gyroscope/HBoxContainer/data.button_pressed = Setting.get_setting_gyrosocpe()
func _apply_settings_sound_ambient():
$VBoxContainer/ambient_sound/HBoxContainer/data.set_pressed(Setting.get_setting_ambient_sound())
$VBoxContainer/ambient_sound/HBoxContainer/data.button_pressed = Setting.get_setting_ambient_sound()
func _apply_settings_resolution():
var data = $VBoxContainer/resolution/VBoxContainer/data
@@ -40,13 +40,13 @@ func _apply_settings_resolution():
data.select(index)
func _apply_settings_fullscreen():
$VBoxContainer/fullscreen/HBoxContainer/data.set_pressed(Setting.get_setting_fullscreen())
$VBoxContainer/fullscreen/HBoxContainer/data.button_pressed = Setting.get_setting_fullscreen()
func _on_gyroscope_pressed():
Setting.set_setting_gyroscope(int($VBoxContainer/gyroscope/HBoxContainer/data.pressed))
Setting.set_setting_gyroscope(int($VBoxContainer/gyroscope/HBoxContainer/data.button_pressed))
func _on_ambient_sound_pressed():
Setting.set_setting_ambient_sound(int($VBoxContainer/ambient_sound/HBoxContainer/data.pressed))
Setting.set_setting_ambient_sound(int($VBoxContainer/ambient_sound/HBoxContainer/data.button_pressed))
func _on_langue_item_selected(index):
Setting.set_setting_language(index)
@@ -55,4 +55,4 @@ func _on_resolution_item_selected(index):
Setting.set_setting_resolution($VBoxContainer/resolution/VBoxContainer/data.get_item_text(index))
func _on_fullscreen_item_selected():
Setting.set_setting_fullscreen(int($VBoxContainer/fullscreen/HBoxContainer/data.pressed))
Setting.set_setting_fullscreen(int($VBoxContainer/fullscreen/HBoxContainer/data.button_pressed))
+30 -12
View File
@@ -73,7 +73,7 @@ func _create_button_info(scene, counter, label_counter):
var name = scene.label()
if label_counter != null and label_counter == scene.label_counter():
name = last_button.get_node("Label").text + " " + String(scene.counter())
name = last_button.get_node("Label").text + " " + str(scene.counter())
_configure_button_object(last_button, scene, name)
_create_animation_warning(_get_node_animated().get_node("Label"), name)
else:
@@ -102,10 +102,18 @@ func _configure_button_object(button, scene, label):
button.set_meta("counted", 0)
func _create_animation_slide(node, name):
$ListObjects/AnimationPlayer.add_animation(name, GlobalAnimation.level_hud_slide(node))
_add_animation_to_player(name, GlobalAnimation.level_hud_slide(node))
func _create_animation_warning(node, name):
$ListObjects/AnimationPlayer.add_animation(name, GlobalAnimation.level_hud_warning(node))
_add_animation_to_player(name, GlobalAnimation.level_hud_warning(node))
func _add_animation_to_player(name: String, anim: Animation) -> void:
var player = $ListObjects/AnimationPlayer
var lib = player.get_animation_library("")
if lib == null:
lib = AnimationLibrary.new()
player.add_animation_library("", lib)
lib.add_animation(name, anim)
func _process(_delta):
_check_dissolve_mesh()
@@ -113,16 +121,25 @@ func _process(_delta):
_check_victory_condition()
func create_dissolve_mesh(key):
_node_to_mesh(key).get_surface_override_material(0).set_shader_parameter("dissolve_amount", 0.0)
var mesh = _node_to_mesh(key)
if mesh == null:
return
var material = mesh.get_active_material(0)
if material == null:
return
material.set_shader_parameter("dissolve_amount", 0.0)
func _check_dissolve_mesh():
# Event dissolve in object searched by gamer
for key in meshes:
if bool(meshes[key].lock()) == true and meshes[key].mesh() != null:
var mesh = _node_to_mesh(key)
if mesh == null:
continue
if meshes[key].tick_reference() == 0:
meshes[key].set_tick_reference(Time.get_ticks_msec())
_node_object_list(key)
GlobalAnimation.start_dissolve(_node_to_tween(key), _node_to_mesh(key).get_surface_override_material(0))
GlobalAnimation.start_dissolve(mesh, mesh.get_active_material(0))
if Time.get_ticks_msec() < meshes[key].tick_reference() + TIME_MAX:
meshes[key].set_value(meshes[key].value() + 0.01)
@@ -209,13 +226,10 @@ func _check_victory_condition():
Global.goto_scene("res://scenes/UI/ending/Ending.tscn")
func _node_to_mesh(key):
return get_node(meshes[key].mesh())
func _node_to_tween(key):
return get_node(meshes[key].tween())
return get_node_or_null(meshes[key].mesh())
func _node_to_area(key):
return get_node(meshes[key].mesh()+"/Area3D")
return get_node_or_null(meshes[key].mesh() + "/Area3D")
func _node_object_list(key):
var animation_played = null
@@ -232,7 +246,7 @@ func _node_object_list(key):
var diff = child.get_meta("counter") - child.get_meta("counted")
var txt = child.get_meta("name")
if diff != 1:
txt = txt + " " + String(diff)
txt = txt + " " + str(diff)
animation_played = child.get_meta("animation")
child.get_node("Label").set_text(txt)
@@ -250,7 +264,11 @@ func _physics_process(_delta):
_check_collider(space_state)
func _check_collider(space_state):
var result = space_state.intersect_ray(from, to, [], 1, false, true)
var query = PhysicsRayQueryParameters3D.create(from, to)
query.collision_mask = 1
query.collide_with_bodies = false
query.collide_with_areas = true
var result = space_state.intersect_ray(query)
from = null
to = null
if result.has("collider"):
+28 -56
View File
@@ -176,7 +176,7 @@ collide_with_bodies = false
transform = Transform3D( -0.210773, -0.635682, 0.742619, 0.949185, -0.314721, 0, 0.233718, 0.704883, 0.669714, 0.0481223, 0, -0.094099 )
use_in_baked_light = true
mesh = ExtResource( 12 )
material/0 = ExtResource( 13 )
surface_material_override/0 = ExtResource( 13 )
[node name="Area3D" type="Area3D" parent="HiddenObjectsItems/Fioles/Fiole1" index="0"]
collision_mask = 2
@@ -185,13 +185,11 @@ collision_mask = 2
transform = Transform3D( 1, 2.98023e-08, -4.47035e-08, -2.98023e-08, -8.9407e-08, 1, -1.19209e-07, -1, -1.49012e-07, 0, 0.0801148, -2.98023e-08 )
shape = SubResource( 3 )
[node name="Tween" type="Tween" parent="HiddenObjectsItems/Fioles/Fiole1" index="1"]
[node name="Fiole2" type="MeshInstance3D" parent="HiddenObjectsItems/Fioles" index="1"]
transform = Transform3D( 0.655275, 0.636944, -0.4061, 0.670978, -0.243833, 0.700239, 0.346993, -0.731333, -0.587153, -4.19531, -0.894133, 2.66915 )
use_in_baked_light = true
mesh = ExtResource( 12 )
material/0 = ExtResource( 19 )
surface_material_override/0 = ExtResource( 19 )
[node name="Area3D" type="Area3D" parent="HiddenObjectsItems/Fioles/Fiole2" index="0"]
transform = Transform3D( 1, -2.98023e-08, 0, -2.98023e-08, 1, 0, 1.49012e-08, -1.19209e-07, 1, -2.38419e-07, -0.0202575, 0 )
@@ -201,19 +199,17 @@ collision_mask = 2
transform = Transform3D( 1, 5.96046e-08, -8.9407e-08, 2.98023e-08, -8.9407e-08, 1, -8.9407e-08, -1, 0, 2.38419e-07, 0.0823998, -1.19209e-07 )
shape = SubResource( 4 )
[node name="Tween" type="Tween" parent="HiddenObjectsItems/Fioles/Fiole2" index="1"]
[node name="FioleSocle" type="MeshInstance3D" parent="HiddenObjectsItems/Fioles" index="2"]
transform = Transform3D( 0.6773, -1.86265e-09, 0.735707, -0.0293841, 0.999202, 0.0270513, -0.73512, -0.03994, 0.67676, -2.27881, -0.11528, -1.23929 )
use_in_baked_light = true
mesh = ExtResource( 3 )
material/0 = null
surface_material_override/0 = null
[node name="Fiole3" type="MeshInstance3D" parent="HiddenObjectsItems/Fioles/FioleSocle" index="0"]
transform = Transform3D( 0.919703, -0.349433, -0.179005, 0.316708, 0.929754, -0.187758, 0.232039, 0.115989, 0.965766, -1.19209e-07, 0.1147, 0.00100636 )
use_in_baked_light = true
mesh = ExtResource( 12 )
material/0 = ExtResource( 21 )
surface_material_override/0 = ExtResource( 21 )
[node name="Area3D" type="Area3D" parent="HiddenObjectsItems/Fioles/FioleSocle/Fiole3" index="0"]
collision_mask = 2
@@ -222,13 +218,11 @@ collision_mask = 2
transform = Transform3D( 1, 2.08616e-07, -7.45058e-08, -5.96046e-08, -1.49012e-07, 1, 5.96046e-08, -1, -1.04308e-07, -1.78814e-07, 0.0560231, 0 )
shape = SubResource( 5 )
[node name="Tween" type="Tween" parent="HiddenObjectsItems/Fioles/FioleSocle/Fiole3" index="1"]
[node name="Dagger" type="MeshInstance3D" parent="HiddenObjectsItems" index="1"]
transform = Transform3D( -0.625025, -0.777847, 0.0655765, 0, 0.0840072, 0.996466, -0.780606, 0.622816, -0.0525065, 0.69073, -0.117415, 0.830941 )
use_in_baked_light = true
mesh = ExtResource( 17 )
material/0 = ExtResource( 14 )
surface_material_override/0 = ExtResource( 14 )
[node name="Area3D" type="Area3D" parent="HiddenObjectsItems/Dagger" index="0"]
collision_mask = 2
@@ -237,13 +231,11 @@ collision_mask = 2
transform = Transform3D( 1, 0, 0, 0, -4.37114e-08, 1, 0, -1, -4.37114e-08, 0, 0.0802139, 0 )
shape = SubResource( 6 )
[node name="Tween" type="Tween" parent="HiddenObjectsItems/Dagger" index="1"]
[node name="Spyglass" type="MeshInstance3D" parent="HiddenObjectsItems" index="2"]
transform = Transform3D( 0.652362, 0.137749, 0.63579, -0.234678, 0.889605, 0.0480562, -0.606736, -0.195981, 0.665013, -2.884, -0.292075, -0.429783 )
use_in_baked_light = true
mesh = ExtResource( 23 )
material/0 = ExtResource( 24 )
surface_material_override/0 = ExtResource( 24 )
[node name="Area3D" type="Area3D" parent="HiddenObjectsItems/Spyglass" index="0"]
collision_mask = 2
@@ -252,13 +244,11 @@ collision_mask = 2
transform = Transform3D( 1, 0, 2.98023e-08, 1.86265e-09, 1, 3.72529e-09, 0, 5.58794e-09, 1, 2.38419e-07, -1.19209e-07, 0.0177531 )
shape = SubResource( 7 )
[node name="Tween" type="Tween" parent="HiddenObjectsItems/Spyglass" index="1"]
[node name="Beer" type="MeshInstance3D" parent="HiddenObjectsItems" index="3"]
transform = Transform3D( 0.996658, -0.053142, 0.0620432, 0.0548108, 0.998171, -0.0255105, -0.060574, 0.0288258, 0.997748, -2.8842, 0.173697, 1.98168 )
use_in_baked_light = true
mesh = ExtResource( 22 )
material/0 = ExtResource( 5 )
surface_material_override/0 = ExtResource( 5 )
[node name="Area3D" type="Area3D" parent="HiddenObjectsItems/Beer" index="0"]
transform = Transform3D( 1, 0, 7.45058e-09, -1.16415e-10, 1, -1.86265e-09, 0, 0, 1, -2.38419e-07, -0.21161, -1.19209e-07 )
@@ -268,13 +258,11 @@ collision_mask = 2
transform = Transform3D( 1, 0, -1.61817e-08, 1.83936e-08, -4.28408e-08, 1, 0, -1, -4.65661e-08, 9.53674e-07, 0.0746492, 2.38419e-07 )
shape = SubResource( 8 )
[node name="Tween" type="Tween" parent="HiddenObjectsItems/Beer" index="1"]
[node name="Weapon" type="MeshInstance3D" parent="HiddenObjectsItems" index="4"]
transform = Transform3D( 0.540284, -0.813497, 0.215212, -0.009216, 0.250018, 0.968198, -0.841432, -0.525085, 0.127583, -2.7508, -0.359206, 1.19589 )
use_in_baked_light = true
mesh = ExtResource( 7 )
material/0 = ExtResource( 8 )
surface_material_override/0 = ExtResource( 8 )
[node name="Area3D" type="Area3D" parent="HiddenObjectsItems/Weapon" index="0"]
collision_mask = 2
@@ -283,15 +271,13 @@ collision_mask = 2
transform = Transform3D( -1.49012e-07, 0, 1, -1, -1.49012e-08, 0, 3.72529e-08, -1, -5.21541e-08, 0.0388942, 0.0484145, -8.19564e-08 )
shape = SubResource( 9 )
[node name="Tween" type="Tween" parent="HiddenObjectsItems/Weapon" index="1"]
[node name="Apples" type="Node3D" parent="HiddenObjectsItems" index="5"]
[node name="Apple1" type="MeshInstance3D" parent="HiddenObjectsItems/Apples" index="0"]
transform = Transform3D( 0.849809, -0.0462348, 0.525058, 0.0744364, 0.996689, -0.0327109, -0.521807, 0.0668814, 0.850438, -2.20275, -0.0779731, 2.45146 )
use_in_baked_light = true
mesh = ExtResource( 4 )
material/0 = ExtResource( 15 )
surface_material_override/0 = ExtResource( 15 )
[node name="Area3D" type="Area3D" parent="HiddenObjectsItems/Apples/Apple1" index="0"]
collision_mask = 2
@@ -300,13 +286,11 @@ collision_mask = 2
transform = Transform3D( -1.45286e-07, -2.98023e-08, 1, -1, -1.11759e-08, 0, 1.86265e-08, -1, -8.9407e-08, -1.90735e-06, 0.00575864, 0 )
shape = SubResource( 10 )
[node name="Tween" type="Tween" parent="HiddenObjectsItems/Apples/Apple1" index="1"]
[node name="Apple2" type="MeshInstance3D" parent="HiddenObjectsItems/Apples" index="1"]
transform = Transform3D( -0.190449, 0, 0.981697, 0, 1, 0, -0.981697, 0, -0.190449, -1.71166, -0.0869397, -1.29534 )
use_in_baked_light = true
mesh = ExtResource( 4 )
material/0 = ExtResource( 9 )
surface_material_override/0 = ExtResource( 9 )
[node name="Area3D" type="Area3D" parent="HiddenObjectsItems/Apples/Apple2" index="0"]
collision_mask = 2
@@ -315,13 +299,11 @@ collision_mask = 2
transform = Transform3D( -1.49012e-07, 4.47035e-08, 1, -1, -1.49012e-08, 0, 3.72529e-08, -1, -1.49012e-08, -4.76837e-07, -0.00566041, 0 )
shape = SubResource( 11 )
[node name="Tween" type="Tween" parent="HiddenObjectsItems/Apples/Apple2" index="1"]
[node name="Apple3" type="MeshInstance3D" parent="HiddenObjectsItems/Apples" index="2"]
transform = Transform3D( 0.823731, 0.226496, -0.519776, -0.248954, 0.96813, 0.0273319, 0.509401, 0.106886, 0.853865, -0.718663, -0.36046, 1.92043 )
use_in_baked_light = true
mesh = ExtResource( 4 )
material/0 = ExtResource( 20 )
surface_material_override/0 = ExtResource( 20 )
[node name="Area3D" type="Area3D" parent="HiddenObjectsItems/Apples/Apple3" index="0"]
collision_mask = 2
@@ -330,13 +312,11 @@ collision_mask = 2
transform = Transform3D( -1.71363e-07, 0, 1, -1, -3.72529e-08, 1.49012e-08, 2.98023e-08, -1, -1.19209e-07, -3.57628e-07, 0.0142345, 2.38419e-07 )
shape = SubResource( 12 )
[node name="Tween" type="Tween" parent="HiddenObjectsItems/Apples/Apple3" index="1"]
[node name="Apple4" type="MeshInstance3D" parent="HiddenObjectsItems/Apples" index="3"]
transform = Transform3D( 1, 0, 0, 0, 1, 0, 0, 0, 1, -4.38775, -0.940515, 0.233058 )
use_in_baked_light = true
mesh = ExtResource( 4 )
material/0 = ExtResource( 10 )
surface_material_override/0 = ExtResource( 10 )
[node name="Area3D" type="Area3D" parent="HiddenObjectsItems/Apples/Apple4" index="0"]
collision_mask = 2
@@ -345,15 +325,13 @@ collision_mask = 2
transform = Transform3D( -1.49012e-07, 0, 1, -1, -1.49012e-08, 0, 3.72529e-08, -1, -5.21541e-08, -4.76837e-07, 0.00115258, -1.17347e-07 )
shape = SubResource( 13 )
[node name="Tween" type="Tween" parent="HiddenObjectsItems/Apples/Apple4" index="1"]
[node name="Coins" type="Node3D" parent="HiddenObjectsItems" index="6"]
[node name="Coin1" type="MeshInstance3D" parent="HiddenObjectsItems/Coins" index="0"]
transform = Transform3D( -0.958704, -0.0851446, 0.271362, -0.0825332, 0.996367, 0.0210433, -0.272167, -0.00222202, -0.962248, 0.215021, 0.00178671, 0.520763 )
use_in_baked_light = true
mesh = ExtResource( 2 )
material/0 = ExtResource( 18 )
surface_material_override/0 = ExtResource( 18 )
[node name="Area3D" type="Area3D" parent="HiddenObjectsItems/Coins/Coin1" index="0"]
transform = Transform3D( 1, -4.65661e-09, 0, 2.68919e-08, 1, 4.65661e-10, -1.19209e-07, -1.14087e-08, 1, -0.0781975, -0.0532835, -0.0615574 )
@@ -363,14 +341,12 @@ collision_mask = 2
transform = Transform3D( 1, -4.65661e-08, 0, -1.38185e-07, 0.999999, 3.14321e-08, 4.17233e-07, -4.19095e-09, 1, 0.0276761, 0.00212932, 0.0336302 )
shape = SubResource( 14 )
[node name="Tween" type="Tween" parent="HiddenObjectsItems/Coins/Coin1" index="1"]
[node name="Coin2" type="MeshInstance3D" parent="HiddenObjectsItems/Coins" index="1"]
transform = Transform3D( 0.250245, 2.79397e-09, -0.968183, 0.0456076, 0.99889, 0.0117882, 0.967108, -0.0471065, 0.249967, 0.752443, -0.000386238, 1.36745 )
layers = 3
use_in_baked_light = true
mesh = ExtResource( 2 )
material/0 = ExtResource( 16 )
surface_material_override/0 = ExtResource( 16 )
[node name="Area3D" type="Area3D" parent="HiddenObjectsItems/Coins/Coin2" index="0"]
transform = Transform3D( 1, -1.49012e-08, 0, 0, 1, 9.31323e-10, 1.49012e-08, -3.72529e-09, 1, -0.0553267, -0.0679173, -0.0739018 )
@@ -380,13 +356,11 @@ collision_mask = 2
transform = Transform3D( 1, 0, 2.98023e-08, 7.45058e-09, 1, -9.31323e-10, 5.96046e-08, 0, 1, 0.0499306, 1.19209e-07, 0.0191208 )
shape = SubResource( 15 )
[node name="Tween" type="Tween" parent="HiddenObjectsItems/Coins/Coin2" index="1"]
[node name="Coin3" type="MeshInstance3D" parent="HiddenObjectsItems/Coins" index="2"]
transform = Transform3D( 1, 0, 0, 0, 1, 0, 0, 0, 1, -4.74641, -0.885448, -0.198129 )
use_in_baked_light = true
mesh = ExtResource( 2 )
material/0 = ExtResource( 6 )
surface_material_override/0 = ExtResource( 6 )
[node name="Area3D" type="Area3D" parent="HiddenObjectsItems/Coins/Coin3" index="0"]
transform = Transform3D( 1, 0, 0, 0, 1, 0, 0, 0, 1, -0.0744205, -0.0795707, -0.040606 )
@@ -396,8 +370,6 @@ collision_mask = 2
transform = Transform3D( 1, 0, 0, 0, 1, 0, 0, 0, 1, 0.0358186, 0, 0.0109152 )
shape = SubResource( 16 )
[node name="Tween" type="Tween" parent="HiddenObjectsItems/Coins/Coin3" index="1"]
[node name="MainSceneProps" type="Node3D" parent="." index="6"]
[node name="sm_book" parent="MainSceneProps" index="0" instance=ExtResource( 33 )]
@@ -471,19 +443,19 @@ transform = Transform3D( -0.596381, 0.0184557, 0.802489, 0.0225364, 0.999726, -0
transform = Transform3D( -0.927966, 1.10978e-07, -0.372664, 6.91459e-08, 1, 1.25617e-07, 0.372664, 9.08001e-08, -0.927966, 0.457262, 1.00485, -0.058084 )
use_in_baked_light = true
mesh = ExtResource( 25 )
material/0 = null
surface_material_override/0 = null
[node name="sm_candle_top2" type="MeshInstance3D" parent="MainSceneProps" index="19"]
transform = Transform3D( 2.94906, 0, 0, 0, 2.85, 0, 0, 0, 2.94906, 0.347704, 1.00342, 1.16015 )
use_in_baked_light = true
mesh = ExtResource( 26 )
material/0 = null
surface_material_override/0 = null
[node name="sm_candle_b" type="MeshInstance3D" parent="MainSceneProps/sm_candle_top2" index="0"]
transform = Transform3D( 0.553417, 0, 0, 0, 0.553417, 0, 0, 0, 0.553417, 0.0504003, -0.0129334, 0.00162044 )
use_in_baked_light = true
mesh = ExtResource( 27 )
material/0 = null
surface_material_override/0 = null
[node name="Tableleft" parent="." index="7" instance=ExtResource( 28 )]
transform = Transform3D( -0.958482, 0, -0.285153, 0, 1, 0, 0.285153, 0, -0.958482, -2.60247, 0.0491341, 2.15903 )
@@ -520,31 +492,31 @@ transform = Transform3D( -0.236782, -0.0445638, 0.970541, -0.0267146, 0.998868,
transform = Transform3D( 17.6823, 0, 0, 0, -2.06229e-06, 7.98594, 0, -6.6644, -4.9309e-08, -3.48147, 2.21218, 4.82163 )
use_in_baked_light = true
mesh = ExtResource( 36 )
material/0 = ExtResource( 39 )
surface_material_override/0 = ExtResource( 39 )
[node name="wall_roof" type="MeshInstance3D" parent="Building/walls" index="1"]
transform = Transform3D( 19.0333, 0, 0, 0, -2.05553, -1.80384e-05, 0, 1.78061e-06, -20.8236, -3.43417, 4.19346, -0.500263 )
use_in_baked_light = true
mesh = ExtResource( 36 )
material/0 = ExtResource( 39 )
surface_material_override/0 = ExtResource( 39 )
[node name="wall_right" type="MeshInstance3D" parent="Building/walls" index="2"]
transform = Transform3D( -6.12822, -1.14249, -5.98427e-08, 0, -2.8759e-07, 7.88397, -1.08057, 6.47934, 3.39384e-07, -0.343511, 2.21218, -5.27151 )
use_in_baked_light = true
mesh = ExtResource( 36 )
material/0 = ExtResource( 39 )
surface_material_override/0 = ExtResource( 39 )
[node name="wall_right2" type="MeshInstance3D" parent="Building/walls" index="3"]
transform = Transform3D( -6.12822, -1.14249, -5.98427e-08, 0, -2.8759e-07, 7.88397, -1.08057, 6.47934, 3.39384e-07, -5.52464, 2.21218, -6.18509 )
use_in_baked_light = true
mesh = ExtResource( 36 )
material/0 = ExtResource( 39 )
surface_material_override/0 = ExtResource( 39 )
[node name="wall_background" type="MeshInstance3D" parent="Building/walls" index="4"]
transform = Transform3D( -3.92366, 6.98897, 3.66077e-07, 0, -3.1021e-07, 8.50407, 22.2522, 1.23234, 6.45493e-08, -7.48147, 2.21218, -0.975186 )
use_in_baked_light = true
mesh = ExtResource( 36 )
material/0 = ExtResource( 39 )
surface_material_override/0 = ExtResource( 39 )
[node name="GridMapFloor" type="GridMap" parent="Building" index="1"]
mesh_library = ExtResource( 37 )
@@ -564,31 +536,31 @@ __meta__ = {
transform = Transform3D( 0.173648, 0, 0.984808, 0, 1, 0, -0.984808, 0, 0.173648, -6.41226, 0, -3.39909 )
use_in_baked_light = true
mesh = ExtResource( 35 )
material/0 = null
surface_material_override/0 = null
[node name="sm_column2" type="MeshInstance3D" parent="Building" index="3"]
transform = Transform3D( 0.173648, 0, 0.984808, 0, 1, 0, -0.984808, 0, 0.173648, -7.23782, 0, 1.51736 )
use_in_baked_light = true
mesh = ExtResource( 35 )
material/0 = null
surface_material_override/0 = null
[node name="sm_column3" type="MeshInstance3D" parent="Building" index="4"]
transform = Transform3D( 0.173648, 0, 0.984808, 0, 1, 0, -0.984808, 0, 0.173648, -7.73765, 0, 4.20657 )
use_in_baked_light = true
mesh = ExtResource( 35 )
material/0 = null
surface_material_override/0 = null
[node name="sm_column4" type="MeshInstance3D" parent="Building" index="5"]
transform = Transform3D( 0.173648, 0, 0.984808, 0, 1, 0, -0.984808, 0, 0.173648, -5.90352, 0, -6.13626 )
use_in_baked_light = true
mesh = ExtResource( 35 )
material/0 = null
surface_material_override/0 = null
[node name="sm_fireplace" type="MeshInstance3D" parent="Building" index="6"]
transform = Transform3D( 0.173648, 0, 0.984808, 0, 1, 0, -0.984808, 0, 0.173648, -7.17176, -2.38419e-07, -1.02066 )
use_in_baked_light = true
mesh = ExtResource( 38 )
material/0 = null
surface_material_override/0 = null
[node name="FireplaceLight" type="OmniLight3D" parent="Building/sm_fireplace" index="0"]
transform = Transform3D( 0.173304, -0.0109248, -0.984808, 0.0629123, 0.998019, -1.78701e-07, 0.982857, -0.0619565, 0.173648, 0.00967455, 0.654315, 0.510273 )
+10 -4
View File
@@ -5,7 +5,7 @@ var current_material = null
func level_hud_slide(node):
var animation = Animation.new()
var track_index = animation.add_track(Animation.TYPE_BEZIER)
var node_element = String(node.get_path()) + ":position:x"
var node_element = str(node.get_path()) + ":position:x"
animation.track_set_path(track_index, node_element)
animation.bezier_track_insert_key(track_index, 0.0, 0.0, Vector2(-0.25, 0), Vector2(0.031, 190.492))
@@ -16,7 +16,7 @@ func level_hud_slide(node):
func level_hud_warning(node):
var animation = Animation.new()
var track_index = animation.add_track(Animation.TYPE_BEZIER)
var node_element = String(node.get_path()) + ":position:x"
var node_element = str(node.get_path()) + ":position:x"
animation.track_set_path(track_index, node_element)
animation.bezier_track_insert_key(track_index, 0.0, 0.0, Vector2(-0.25, 0), Vector2(0, 78.1))
@@ -29,9 +29,15 @@ func level_hud_warning(node):
return animation
func start_dissolve(node, material):
if material == null:
return
current_material = material
node.interpolate_method(self, "animate_dissolve", 0, 1, 1.5, Tween.TRANS_LINEAR, Tween.EASE_IN_OUT)
node.start()
var tween = node.create_tween()
tween.tween_method(animate_dissolve, 0.0, 1.0, 1.5) \
.set_trans(Tween.TRANS_LINEAR) \
.set_ease(Tween.EASE_IN_OUT)
func animate_dissolve(progress: float) -> void:
if current_material == null:
return
current_material.set_shader_parameter("dissolve_amount", ease(progress, 0.4))
+61
View File
@@ -0,0 +1,61 @@
@tool
extends SceneTree
# One-shot migration tool: walk every .material file, fix Godot 3 shader code
# to Godot 4 syntax, save back.
#
# Run with: godot --headless --script scripts/migrate_shaders.gd
const REPLACEMENTS := [
["depth_draw_alpha_prepass", "depth_prepass_alpha"],
["hint_color", "source_color"],
["hint_albedo", "source_color"],
["hint_black_albedo", "source_color"],
["hint_white", ""],
["hint_black", ""],
["hint_aniso", "hint_anisotropy"],
["NORMALMAP", "NORMAL_MAP"],
]
func _init() -> void:
var fixed := 0
var checked := 0
for path in _find_materials("res://assets"):
checked += 1
var mat = ResourceLoader.load(path, "", ResourceLoader.CACHE_MODE_IGNORE)
if mat == null:
continue
if mat is ShaderMaterial and mat.shader != null:
var old_code: String = mat.shader.code
var new_code := old_code
for pair in REPLACEMENTS:
new_code = new_code.replace(pair[0], pair[1])
if new_code != old_code:
mat.shader.code = new_code
var err = ResourceSaver.save(mat, path)
if err == OK:
fixed += 1
print("FIXED ", path)
else:
push_error("Failed to save " + path + " (err=" + str(err) + ")")
print("Done. checked=", checked, " fixed=", fixed)
quit()
func _find_materials(dir_path: String) -> Array:
var result := []
var dir = DirAccess.open(dir_path)
if dir == null:
return result
dir.list_dir_begin()
var name = dir.get_next()
while name != "":
if name == "." or name == "..":
name = dir.get_next()
continue
var sub = dir_path + "/" + name
if dir.current_is_dir():
result.append_array(_find_materials(sub))
elif name.ends_with(".material") or name.ends_with(".tres"):
result.append(sub)
name = dir.get_next()
return result