diff --git a/assets/mesh_libraries/w1/w1_walls.meshlib b/assets/mesh_libraries/w1/w1_walls.meshlib index 96a852f..8f6b891 100644 Binary files a/assets/mesh_libraries/w1/w1_walls.meshlib and b/assets/mesh_libraries/w1/w1_walls.meshlib differ diff --git a/assets/models/tiles/w1_walls/grey_block.material b/assets/models/tiles/w1_walls/grey_block.material index cd8e04b..2585b56 100644 Binary files a/assets/models/tiles/w1_walls/grey_block.material and b/assets/models/tiles/w1_walls/grey_block.material differ diff --git a/autoloads/scene_manager.gd b/autoloads/scene_manager.gd new file mode 100644 index 0000000..ba17228 --- /dev/null +++ b/autoloads/scene_manager.gd @@ -0,0 +1,30 @@ +extends Node + + +@export var scene_parent: Node + + +var current_scene: Node + + +func _ready() -> void: + var tree = get_tree() + # capture main scene + if tree.current_scene != self: + change_scene(tree.current_scene) + tree.current_scene = self + + +func change_scene(new_scene: Node) -> void: + # avoid infinite recursion :P + if current_scene == new_scene: + return + # remove current scene + if current_scene: + scene_parent.remove_child(current_scene) + current_scene.queue_free() + # add new scene + if new_scene.is_inside_tree(): + new_scene.get_parent().remove_child.call_deferred(new_scene) + scene_parent.add_child.call_deferred(new_scene) + current_scene = new_scene diff --git a/autoloads/scene_manager.tscn b/autoloads/scene_manager.tscn new file mode 100644 index 0000000..fb7b332 --- /dev/null +++ b/autoloads/scene_manager.tscn @@ -0,0 +1,37 @@ +[gd_scene load_steps=2 format=3 uid="uid://dxrvocxjk8vs3"] + +[ext_resource type="Script" path="res://autoloads/scene_manager.gd" id="1_d112a"] + +[node name="SceneManager" type="Node" node_paths=PackedStringArray("scene_parent")] +script = ExtResource("1_d112a") +scene_parent = NodePath("HBoxContainer/MainView/SubViewportContainer/SubViewport") + +[node name="HBoxContainer" type="HBoxContainer" parent="."] +anchors_preset = 15 +anchor_right = 1.0 +anchor_bottom = 1.0 +grow_horizontal = 2 +grow_vertical = 2 + +[node name="SideBar" type="Control" parent="HBoxContainer"] +layout_mode = 2 +size_flags_horizontal = 3 + +[node name="MainView" type="Control" parent="HBoxContainer"] +custom_minimum_size = Vector2(288, 216) +layout_mode = 2 +size_flags_horizontal = 10 + +[node name="SubViewportContainer" type="SubViewportContainer" parent="HBoxContainer/MainView"] +layout_mode = 1 +anchors_preset = 15 +anchor_right = 1.0 +anchor_bottom = 1.0 +grow_horizontal = 2 +grow_vertical = 2 + +[node name="SubViewport" type="SubViewport" parent="HBoxContainer/MainView/SubViewportContainer"] +handle_input_locally = false +audio_listener_enable_3d = true +size = Vector2i(288, 216) +render_target_update_mode = 4 diff --git a/objects/canny_cat.tscn b/objects/canny_cat.tscn index b843a88..019bfee 100644 --- a/objects/canny_cat.tscn +++ b/objects/canny_cat.tscn @@ -213,9 +213,9 @@ delay_in_seconds = "0.0" [connection signal="charge_canceled" from="." to="Sounds/ChargeCancel" method="play"] [connection signal="shot" from="." to="Sounds/Shoot" method="play"] [connection signal="state_physics_processing" from="StateChart/Root/Idle" to="." method="_apply_gravity"] -[connection signal="state_physics_processing" from="StateChart/Root/Moving" to="." method="_apply_gravity"] [connection signal="state_physics_processing" from="StateChart/Root/Moving" to="." method="_bounce_on_walls"] [connection signal="state_physics_processing" from="StateChart/Root/Moving" to="." method="_slow_to_stop"] +[connection signal="state_physics_processing" from="StateChart/Root/Moving" to="." method="_apply_gravity"] [connection signal="state_entered" from="StateChart/Root/Charging" to="." method="_start_charge"] [connection signal="state_entered" from="StateChart/Root/Charging" to="Sounds/ChargeStart" method="play"] [connection signal="state_exited" from="StateChart/Root/Charging" to="." method="_end_charge"] diff --git a/project.godot b/project.godot index c55e805..6fdb7e4 100644 --- a/project.godot +++ b/project.godot @@ -15,10 +15,14 @@ run/main_scene="res://test_scene.tscn" config/features=PackedStringArray("4.3", "GL Compatibility") config/icon="res://icon.svg" +[autoload] + +SceneManager="*res://autoloads/scene_manager.tscn" + [display] -window/size/viewport_width=320 -window/size/viewport_height=240 +window/size/viewport_width=384 +window/size/viewport_height=216 window/stretch/mode="viewport" [editor_plugins]